1,583 views (last 30 days)

Show older comments

f = @(x) exp(x)-3*x;

fp = @(x) exp(x)-3;

x0 = 1;

N = 10;

tol = 1E-10;

x(1) = x0; % Set initial guess

n = 2;

nfinal = N + 1;

while (n <= N + 1)

fe = f(x(n - 1));

fpe = fp(x(n - 1));

x(n) = x(n - 1) - fe/fpe;

if (abs(fe) <= tol)

nfinal = n;

break;

end

n = n + 1;

end

plot(0:nfinal - 1,x(1:nfinal),'o-')

title('Solution:')

xlabel('Iterations')

ylabel('X')

I have a few questions about my code. What is happening with variable n during execution? And how could I make my code printing an iteration table? I can see iterations in the graphic but I need to print a table also.

Geoff Hayes
on 5 Mar 2018

Adomas - your code is using n as an index into x. On each iteration of the loop, you increment n by one in preparation for the next iteration. n will be the length of your array x and so will tell you how many iterations have occurred until the tolerance has been satisfied (or until the maximum N has been reached).

As for displaying the data in a table, do you mean your x? Something like

table([1:length(x)]',x']

I'm using the ' so that the data is transposed (into a column).

Jan
on 5 Mar 2018

What is happening with variable n during execution?

It is increased by 1 in each iteration. It counts the number of iterations.

how could I make my code printing an iteration table?

Insert a command to display the current values:

...

x(n) = x(n - 1) - fe/fpe;

fprintf('%3d: %20g %20g\n', n, x(n), abs(fe));

if (abs(fe) <= tol)

...

Mohamed Elsayed Abo Heiba
on 18 Oct 2019

f = @(x) exp(x)-3*x;

fp = @(x) exp(x)-3;

x0 = 1;

N = 10;

tol = 1E-10;

x(1) = x0; % Set initial guess

n = 2;

nfinal = N + 1;

while (n <= N + 1)

fe = f(x(n - 1));

fpe = fp(x(n - 1));

x(n) = x(n - 1) - fe/fpe;

if (abs(fe) <= tol)

nfinal = n;

break;

end

n = n + 1;

end

plot(0:nfinal - 1,x(1:nfinal),'o-')

title('Solution:')

xlabel('Iterations')

ylabel('X')

Hamza saeed khan
on 24 Nov 2020

f = @(x) exp(x)-3*x;

fp = @(x) exp(x)-3;

x0 = 1;

N = 10;

tol = 1E-10;

x(1) = x0; % Set initial guess

n = 2;

nfinal = N + 1;

while (n <= N + 1)

fe = f(x(n - 1));

fpe = fp(x(n - 1));

x(n) = x(n - 1) - fe/fpe;

if (abs(fe) <= tol)

nfinal = n;

break;

end

n = n + 1;

end

plot(0:nfinal - 1,x(1:nfinal),'o-')

title('Solution:')

xlabel('Iterations')

ylabel('X')

table([1:length(x)]',x']

x(n) = x(n - 1) - fe/fpe;

fprintf('%3d: %20g %20g\n', n, x(n), abs(fe));

if (abs(fe) <= tol)

Aristi Christoforou
on 10 Apr 2021

function[root]=newtonmethod(f,df,xo,tol,n)

xn=xo;

for k=1:n

xn1=xn-f(xn)/df(xn);

dx=abs(xn1-xn);

xn=xn1;

if dx<tol

dis("newton method has converged")

root=xn;

return

end

end

disp("no convergence after n interactions")

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

Start Hunting!