MATLAB CODE NEWTON METHOD
    23 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.
0 Comments
Answers (5)
  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).
0 Comments
  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)
  ...
0 Comments
  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')
0 Comments
  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)
0 Comments
  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")
0 Comments
See Also
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!




