When I am doing Newton's Method with a tolerance, how do I only get the values up until it reaches the tolerance?
36 views (last 30 days)
Show older comments
Using Newton's method, I was wondering if I was using the while loop correctly because it keeps running and doesn't stop even though I have a tolerance put into the code.
function [R,E] = myNewton(f, df, x0, tol)
R=myNewton(f,df,x0-f(x0)/df(x0),tol);
E=myNewton(f,df,(x0-R)*df(x0),tol);
while abs(f®)>tol
R=R+(x0-f(x0)/df(x0));
E=E+((x0-R)*df(x0));
end
end
1 Comment
Carlos
on 18 Mar 2014
Sorry but what does abs(f®)mean? I cannot distinguish the symbols inside abs. If you edit your code, perhaps we could see more clearly.
Regards
Answers (2)
Mischa Kim
on 18 Mar 2014
Christopher, I am not quite sure I understand your code.
- What's the reason for executing myNewton twice, once for R once for E?
- Why are you calling myNewton from whithin myNewton?
The code below shows a simple example on how to implement Newton's method.
function myMain()
tol = 1e-4;
f = @(x) x^2 - 2;
x0 = 1;
xsol = myNewton(f, x0, tol);
end
function x = myNewton(f, x0, tol)
dx = 1e-8;
df = @(x,dx) (f(x + dx/2) - f(x - dx/2))/dx;
x = x0;
while abs(f(x))>tol
x = x - f(x)/df(x,dx);
end
end
Jammi
on 23 Sep 2022
function myMain()
tol = 1e-4;
f = @(x) x^2 - 2;
x0 = 1;
xsol = myNewton(f, x0, tol);
end
function x = myNewton(f, x0, tol)
dx = 1e-8;
df = @(x,dx) (f(x + dx/2) - f(x - dx/2))/dx;
x = x0;
while abs(f(x))>tol
x = x - f(x)/df(x,dx);
end
end
0 Comments
See Also
Categories
Find more on Calculus 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!