3-d order derivative
Show older comments
Dear all,
there is the following problem with the calculation of a 3-d order derivative.
I have two vectors of lambda and refractive index, respectively. I take the 3-d order derivative using a gradient().
dndl=gradient(n)./gradient(lambda);
d2ndl2=gradient(dndl)./gradient(lambda);
d3ndl3=gradient(d2ndl2)./gradient(lambda);
When I use a relatively small number of points (for example 3000) , I get a smooth plot.

In the case of more points (30 000) there is some oscillation in the plot.

What is the reason of such behavior?
Thank you a lot.
2 Comments
Matt J
on 13 Feb 2022
What do you mean by "use more points"? If it's a different input array why expect the same results?
Max Demesh
on 13 Feb 2022
Answers (3)
Catalytic
on 13 Feb 2022
1 vote
If the points are too close together, the difference between neighbours will be so small as to be dominated by floating point errors
1 Comment
Max Demesh
on 13 Feb 2022
Matt J
on 13 Feb 2022
0 votes
You could try diff(x,3)
2 Comments
Max Demesh
on 14 Feb 2022
Matt J
on 14 Feb 2022
Why care whether its forward or central? For a smooth curve, it should work out the same.
Max Demesh
on 14 Feb 2022
0 votes
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!