I am unable to understand this. I was trying to solve a non linear eqation with newton raphson and modified newton raphson method. Both methods give different results. Below is my code. can you find the error. Both are separate files.
Show older comments
%%Newton raphson method
clc
clear all
close all
%%Initial condition
x0 =0.92;
maxiteration = 50;
tolX = 1e-04;
f = @(x) x^2-2*x+1; %function to be solved
%%Computation
x = x0;
xold = x0;
for i = 1:maxiteration;
df = 2*x-2;
x = x-f(x)/df;
err(i) = norm(x-xold);
xold = x;
if (err(i)<tolX)
break;
end
end
msg = ['The solution converged in ', num2str(i),'th iterations.'];
disp(msg)
msg1 = ['converged numerical solution(critical values):'];
disp(msg1)
fprintf('x = %.4f\n',x);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%Modified newton Raphson method
clc
clear all
close all
%%Initial condition
x0 =0.92;
maxiteration = 50;
tolX = 1e-04;
f = @(x) x^2-2*x+1;
%%Computation
x = x0;
xold = x0;
for i = 1:maxiteration;
df = 2*x0-2;
x = x-f(x)/df;
err(i) = norm(x-xold);
xold = x;
if (err(i)<tolX)
break;
end
end
msg = ['The solution converged in ', num2str(i),'th iterations.'];
disp(msg)
msg1 = ['converged numerical solution:'];
disp(msg1)
fprintf('x = %.4f\n',x)
Answers (1)
Walter Roberson
on 24 Dec 2019
df = 2*x0-2;
That is incorrect. You are creating the slope based upon the initial point, not based upon the current point.
4 Comments
Hrishikesh Das
on 24 Dec 2019
Walter Roberson
on 24 Dec 2019
Look at the code for your other method. How do you calculate df there?
Hrishikesh Das
on 24 Dec 2019
Walter Roberson
on 24 Dec 2019
Look at your existing code that works. It says
df = 2*x-2;
Now how can you use the ideas there to modify the non-working line,
df = 2*x0-2;
Categories
Find more on Newton-Raphson Method 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!