Newton Raphson method - Symbolic function
12 ビュー (過去 30 日間)
古いコメントを表示
Hello, I made a calculation according to Newton Raphson method, but using syms feature for taking derivative. I believe this is where my problem begins, I only need 4 iterations at total when solved, and parameter k is supposed to be 0,567 as a final value. But my result in terms of iteration is above 10000+ and result is -9 something.
Could you please spot my error/s and correct them?
%%
% finding root of f = (e^-x) - x with Newton Raphson method
clc,clear
syms x
f = (exp(-x))-x; % f = (e^-x) - x
df = diff(f);
k=0; %initial value of x0 (k in my notation) is defined as 0 in the problem
ep = 100;
t = 10^-8; % result of epsilon value is supposed to be near this value for iterations to stop.
% epsilon = absolute val of 100 * [(xi+1 - xi) / xi+1]
i=0;
while ep > t
a = vpa(subs(df,x,i));
b = vpa(subs(f,x,i));
k_New = k-a/b;
ep = 100 * abs(k-k_New)/abs(k_New);
k = k_New;
i = i+1;
end
disp(k)
4 件のコメント
J. Alex Lee
2020 年 11 月 6 日
That's a sensible response. For 1D problems though, you might consider testing your general solution against things like built-in fzero(), and then ask and answer if you gained any benefit with your custom solution.
For real world problems, I doubt that taking derivatives will be your true bottle neck.
I don't think there's anything wrong intrinsically with symbolic toolbox, I'm sure it's useful. I would just be weary of mixing it in with numerical methods, especially if the objective is efficient numerical solutions. Of course best choice comes down to what are your objectives and constraints.
Anyway, good for you for going through this exercise!
採用された回答
Alan Stevens
2020 年 11 月 6 日
You have
a = vpa(subs(df,x,i));
b = vpa(subs(f,x,i));
k_New = k-a/b; % but this is k - diff(f)/f
% you should have k - f/diff(f) or k - b/a for Newton-Raphson
5 件のコメント
Alan Stevens
2020 年 11 月 6 日
Come to think of it, I suspect your symbolics should have
a = vpa(subs(df,x,k)); % i.e. k not i
b = vpa(subs(f,x,k));
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Symbolic Math Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
