When I am doing Newton's Method with a tolerance, how do I only get the values up until it reaches the tolerance?

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 commentaire

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

Connectez-vous pour commenter.

Réponses (2)

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

1 commentaire

R(i) is the Newton estimation of the root of f for the i-th iteration.
E(i) is the value of abs(f(R(i))) for the i-th iteration of the Newton method.
I understand how to get get a value for Newton's Method, but I am uncertain how to iterate the code until I obtain a value that is less than the tolerance.

Connectez-vous pour commenter.

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

Catégories

En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by