3-d order derivative

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 comentarios

Matt J
Matt J el 13 de Feb. de 2022
What do you mean by "use more points"? If it's a different input array why expect the same results?
Max Demesh
Max Demesh el 13 de Feb. de 2022
What do you mean by "use more points"?
I mean, that I make the differences smaller and increase the accuracy.
Moreover, if I find the analytical function and then take the 3-d order derivative, I obtain smooth plots in any case.

Iniciar sesión para comentar.

Respuestas (3)

Catalytic
Catalytic el 13 de Feb. de 2022

1 voto

If the points are too close together, the difference between neighbours will be so small as to be dominated by floating point errors

1 comentario

Max Demesh
Max Demesh el 13 de Feb. de 2022
It seems to be true. Using non SI base units do not help.
I guess in this case there is no way to solve this issue.
P.S. For the 2-nd derivative there is no problem for any number of points.

Iniciar sesión para comentar.

Matt J
Matt J el 13 de Feb. de 2022

0 votos

You could try diff(x,3)

2 comentarios

Max Demesh
Max Demesh el 14 de Feb. de 2022
It does not work too, because diff() uses a forward difference, but the gradient() uses a central difference.
Matt J
Matt J el 14 de Feb. de 2022
Why care whether its forward or central? For a smooth curve, it should work out the same.

Iniciar sesión para comentar.

Categorías

Más información sobre Linear Algebra en Centro de ayuda y File Exchange.

Preguntada:

el 13 de Feb. de 2022

Comentada:

el 14 de Feb. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by