Derivative of a function in a particular point
4 ビュー (過去 30 日間)
古いコメントを表示
george veropoulos
2021 年 7 月 16 日
コメント済み: george veropoulos
2021 年 7 月 19 日
Hi
I have an external function y= function fa(x)
y=sin(x./pi)
end
i want in the main program to find the derivative of fa in numerical point
thank you
George
0 件のコメント
採用された回答
george veropoulos
2021 年 7 月 16 日
2 件のコメント
Walter Roberson
2021 年 7 月 16 日
format long
x = 2 ;
h = sqrt(eps(x)) ;
f1=(sin(x + h)./(x+h) - sin(x)./x) / h
f2=cos(x)./x-sin(x)./x^2
その他の回答 (1 件)
Jan
2021 年 7 月 16 日
Use one of the quotients of differences to get a numerical approximation of the derivative:
x = 1.2345;
h = sqrt(eps);
dy_right = (fa(x + h) - fa(x)) / (h)
dy_left = (fa(x) - fa(x - h)) / (h)
dy_both = (fa(x + h) - fa(x - h)) / (2 * h)
function y = fa(x)
y = sin(x./pi)
end
9 件のコメント
Jan
2021 年 7 月 18 日
@george veropoulos: The numerical analysis for the optimal choice of h is still worth to write a PhD thesis. As said before, the 2nd derivative of the function matters. To estimate this, you need a further small variation. Because this is expensive, if the function to be evaluated is huge, some heuristics are useful. This can be an important part of the processing time if you optimize an expensive function. A related field is the optimal choice of temproal and spatial steps sizes in finite element problems, e.g. the simulation of the earth clima.
The rule of thumb: If the function and the argument are about 1 and do not explode nearby, sqrt(eps) is a fair choice between the cancellation and discretization error. The "fairness" can be checkd by testing 10*sqrt(eps) and 0.1*sqrt(eps): If they reply the same derivative, you can assume to be on the right side. For a professional simulation, the explanation must sound more seriously. ;-)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!