Newton-Raphson algorithm stuck running after 4 or 5 iterations

Illustration
eqq - 2023-03-29T11:26:31+00:00
Question: Newton-Raphson algorithm stuck running after 4 or 5 iterations

Code:   %% initial setup syms x real f = x^5-2*x^3+4*x+2; error_lim = 1e-5; %% newton raphson d_f = diff(f); m = 5; disp(m) % iterate till root is found with certain accuracy more off; while true e = m - subs(f,m)/subs(d_f,m); err = abs(e-m); fprintf("error = %g\n", err) if err < error_lim break end m = e; fprintf("x_p = %g\n", m) end fprintf("the root newton raphson method is %g\n", e) and the output is: >> stat3_b 5 error = 0.972474 x_p = 4.02753 error = 0.774926 x_p = 3.2526 error = 0.620288 x_p = 2.63231 error = 0.505877 x_p = 2.12643 error = 0.439351 x_p = 1.68708 error = 0.467107 x_p = 1.21998 error = 0.968289 x_p = 0.251687 error = 0.817551 x_p = -0.565863 After 8th iterations matlab is busy, but nothing prints. It runs and gives appropriate solution of the function when initial m is set to 1 or 2 but problem arises when m is set to 3 or higher. What is wrong with the above allgorithm?

Expert Answer

Profile picture of Neeta Dsouza Neeta Dsouza answered . 2025-11-20

Converting to numeric data type is much faster than using symbolic values

 

syms x real
%I have defined f to be an explicit function of x, so that you can directly input 
%the value to get the output instead of using subs()
f(x) = x^5-2*x^3+4*x+2;
error_lim = 1e-5;
%% newton raphson
%as a result, d_f is also an explicit function of x
d_f = diff(f)
d_f(x) = 

m = 5;
while true
    %conversion to double
    e = m - double(f(m)/d_f(m));
    err = abs(e-m);
    %fprintf("error = %g\n", err)
    if err < error_lim
        break
    end
    m = e;
    %fprintf("x_p = %g\n", m)
end
%Succesful completion of while loop and result is obtained
fprintf("the root newton raphson method is %g\n", e)
the root newton raphson method is -0.581803

 


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!