フィルターのクリア

3-d order derivative

1 回表示 (過去 30 日間)
Max Demesh
Max Demesh 2022 年 2 月 13 日
コメント済み: Matt J 2022 年 2 月 14 日
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 件のコメント
Matt J
Matt J 2022 年 2 月 13 日
What do you mean by "use more points"? If it's a different input array why expect the same results?
Max Demesh
Max Demesh 2022 年 2 月 13 日
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.

サインインしてコメントする。

回答 (3 件)

Catalytic
Catalytic 2022 年 2 月 13 日
If the points are too close together, the difference between neighbours will be so small as to be dominated by floating point errors
  1 件のコメント
Max Demesh
Max Demesh 2022 年 2 月 13 日
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.

サインインしてコメントする。


Matt J
Matt J 2022 年 2 月 13 日
You could try diff(x,3)
  2 件のコメント
Max Demesh
Max Demesh 2022 年 2 月 14 日
It does not work too, because diff() uses a forward difference, but the gradient() uses a central difference.
Matt J
Matt J 2022 年 2 月 14 日
Why care whether its forward or central? For a smooth curve, it should work out the same.

サインインしてコメントする。


Max Demesh
Max Demesh 2022 年 2 月 14 日

カテゴリ

Help Center および File ExchangeSpatial Search についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by