# Solving a Nonlinear Equation using Newton-Raphson Method

5,350 views (last 30 days)
Hassan Mohamed on 25 Nov 2013
It's required to solve that equation: f(x) = x.^3 - 0.165*x.^2 + 3.993*10.^-4 using Newton-Raphson Method with initial guess (x0 = 0.05) to 3 iterations and also, plot that function.
Please help me with the code (i have MATLAB R2010a) ... I want the code to be with steps and iterations and if possible calculate the error also, please
##### 2 CommentsShowHide 1 older comment
Syed nisar Abbas on 5 Jul 2021
Write a code in matlab of newton rephson method to solve cos(x)+2sin(x)+x^2 any one can answer me quickly

Bruno Pop-Stefanov on 25 Nov 2013
Edited: MathWorks Support Team on 27 Sep 2022
The following code implements the Newton-Raphson method for your problem:
fun = @(x)x^3 - 0.165*x^2 + 3.993e-4;
x_true = fzero(fun,[0.01 0.1],optimset("Display","iter"));
Func-count x f(x) Procedure 2 0.1 -0.0002507 initial 3 0.0644397 -1.82743e-05 interpolation 4 0.0617709 5.41455e-06 interpolation 5 0.0623809 -2.96286e-08 interpolation 6 0.0623776 -4.33628e-11 interpolation 7 0.0623776 1.0842e-17 interpolation 8 0.0623776 0 interpolation Zero found in the interval [0.01, 0.1]
x = 0.1;
x_old = 100;
iter = 0;
while abs(x_old-x) > 1e-10 && iter <= 10 % x ~= 0
x_old = x;
x = x - (x^3 - 0.165*x^2 + 3.993e-4)/(3*x^2 - 0.33*x);
iter = iter + 1;
fprintf('Iteration %d: x=%.18f, err=%.18f\n', iter, x, x_true-x);
pause(1);
end
Iteration 1: x=0.016433333333333161, err=0.045944248180416342 Iteration 2: x=0.094298416648742320, err=-0.031920835134992817 Iteration 3: x=0.042655687778369436, err=0.019721893735380067 Iteration 4: x=0.063158887832661437, err=-0.000781306318911934 Iteration 5: x=0.062375951756182137, err=0.000001629757567366 Iteration 6: x=0.062377581507153931, err=0.000000000006595571 Iteration 7: x=0.062377581513749496, err=0.000000000000000007
You can plot the function with, for example:
x = linspace(0,0.1);
f = x.^3 - 0.165*x.^2 + 3.993*10^-4;
figure;
plot(x,f,'b',x,zeros(size(x)),'r--')
grid on
Cesar Castro on 21 Sep 2021
It did not work , May you help me, please? My F = x(1)^4+x(2)^4+2*x(1)^2*x(2)^2-4*x(1)+3 I Know the root is 1.
I do not know why, it did not work. Thanks in advance.

Dhruv Bhavsar on 28 Aug 2020
1. Solve the system of non-linear equations.
x^2 + y^2 = 2z
x^2 + z^2 =1/3
x^2 + y^2 + z^2 = 1
using Newton’s method having tolerance = 10^(−5) and maximum iterations upto 20
%Function NewtonRaphson_nl() is given below.
fn = @(v) [v(1)^2+v(2)^2-2*v(3) ; v(1)^2+v(3)^2-(1/3);v(1)^2+v(2)^2+v(3)^2-1];
jacob_fn = @(v) [2*v(1) 2*v(2) -2 ; 2*v(1) 0 2*v(3) ; 2*v(1) 2*v(2) 2*v(3)];
error = 10^-5 ;
v = [1 ;1 ;0.1] ;
no_itr = 20 ;
[point,no_itr,error_out]=NewtonRaphson_nl(v,fn,jacob_fn,no_itr,error)
NewtonRaphson_nl_print(v,fn,jacob_fn,no_itr,error);
# OUTPUT.
Functions Below.
function [v1 , no_itr, norm1] = NewtonRaphson_nl(v,fn,jacob_fn,no_itr,error)
% nargin = no. of input arguments
if nargin <5 , no_itr = 20 ; end
if nargin <4 , error = 10^-5;no_itr = 20 ; end
if nargin <3 ,no_itr = 20;error = 10^-5; v = [1;1;1]; end
v1 = v;
fnv1 = feval(fn,v1);
i = 0;
while true
jacob_fnv1 = feval(jacob_fn,v1);
H = jacob_fnv1\fnv1;
v1 = v1 - H;
fnv1 = feval(fn,v1);
i = i + 1 ;
norm1 = norm(fnv1);
if i > no_itr && norm1 < error, break , end
%if norm(fnv1) < error , break , end
end
end
function [v1 , no_itr, norm1] = NewtonRaphson_nl_print(v,fn,jacob_fn,no_itr,error)
v1 = v;
fnv1 = feval(fn,v1);
i = 0;
fprintf(' Iteration| x | y | z | Error | \n')
while true
norm1 = norm(fnv1);
fprintf('%10d |%10.4f| %10.4f | %10.4f| %10.4d |\n',i,v1(1),v1(2),v1(3),norm1)
jacob_fnv1 = feval(jacob_fn,v1);
H = jacob_fnv1\fnv1;
v1 = v1 - H;
fnv1 = feval(fn,v1);
i = i + 1 ;
norm1 = norm(fnv1);
if i > no_itr && norm1 < error, break , end
%if norm(fnv1) < error , break , end
end
end
##### 2 CommentsShowHide 1 older comment
Upendra Kumar on 13 Apr 2021
i need to solve 5 non linear equations with 5 unknowns in matlab so how i can write program for solving those equations

Pourya Alinezhad on 25 Nov 2013
you can use the following line of code;
x = fzero(@(x)x.^3 - 0.165*x.^2 + 3.993*10.^-4,0.05)
Brian Reinhard on 15 Mar 2021
gabisa bahasa enggresss

Eduardo on 13 Apr 2014
Hello,
I am trying to make a program using the Newton-Raphson method for complex equations, but I am in a infinite loop.
If I change the expression,
x = x - (x^3 - 0.165*x^2 + 3.993*10^-4)/(3*x^2 - 0.33*x);
For this:
x = x - (sqrt(-x))/(-0.5.*(1./sqrt(-x)));
The algorithm does not work.
how can I use a complex equation in this case ??
Thank you very much.

Mohamed Hakim on 21 May 2021
Edited: Walter Roberson on 12 Feb 2022
function NewtonRaphsonMethod
%Implmentaton of Newton-Raphson method to determine a solution.
%to approximate solution to x = cos(x), we let f(x) = x - cos(x)
i = 1;
p0 = 0.5*pi; %initial conditions
N = 100; %maximum number of iterations
error = 0.0001; %precision required
syms 'x'
f(x) = x - cos(x); %function we are solving
df = diff(f); %differential of f(x)
while i <= N
p = p0 - (f(p0)/df(p0)); %Newton-Raphson method
if (abs(p - p0)/abs(p)) < error %stopping criterion when difference between iterations is below tolerance
fprintf('Solution is %f \n', double(p))
return
end
i = i + 1;
p0 = p; %update p0
end
fprintf('Solution did not coverge within %d iterations at a required precision of %d \n', N, error) %error for non-convergence within N iterations
end

Mark Mikofski on 16 May 2014

Valdes Corleone on 1 Sep 2018
Hi ! I want to solved an système of three equations non-linear with three variables ,discretised with finit differential and solved with newton raphson. Please can I have a code matlab

Sayeed on 21 Oct 2018
How can i Code it?
u=0.23 y=0.3 v=0.00001
u/u’=5*log(u’*y/v)-3.05
u’=?
I need to find the value of u’.
madhan ravi on 21 Oct 2018

Sayeed on 21 Oct 2018
Thanks, I did. Can u help with that?

ali raza on 28 Mar 2021
function [v1 , no_itr, norm1] = NewtonRaphson_nl(v,fn,jacob_fn,no_itr,error) % nargin = no. of input arguments if nargin <5 , no_itr = 20 ; end if nargin <4 , error = 10^-5;no_itr = 20 ; end if nargin <3 ,no_itr = 20;error = 10^-5; v = [1;1;1]; end
v1 = v;
fnv1 = feval(fn,v1);
i = 0;
while true
jacob_fnv1 = feval(jacob_fn,v1);
H = jacob_fnv1\fnv1;
v1 = v1 - H;
fnv1 = feval(fn,v1);
i = i + 1 ;
norm1 = norm(fnv1);
if i > no_itr && norm1 < error, break , end
%if norm(fnv1) < error , break , end
end
end
function [v1 , no_itr, norm1] = NewtonRaphson_nl_print(v,fn,jacob_fn,no_itr,error) v1 = v; fnv1 = feval(fn,v1); i = 0; fprintf(' Iteration| x | y | z | Error | \n') while true norm1 = norm(fnv1); fprintf('%10d %10.4f %10.4f | %10.4f| %10.4d |\n',i,v1(1),v1(2),v1(3),norm1) jacob_fnv1 = feval(jacob_fn,v1); H = jacob_fnv1\fnv1; v1 = v1 - H; fnv1 = feval(fn,v1); i = i + 1 ; norm1 = norm(fnv1); if i > no_itr && norm1 < error, break , end %if norm(fnv1) < error , break , end
end
end

Christine Joy Africa on 23 Mar 2022
function NewtonRaphsonMethod
%Implmentaton of Newton-Raphson method to determine a solution.
%to approximate solution to x = cos(x), we let f(x) = x - cos(x)
i = 1;
p0 = 0.5*pi; %initial conditions
N = 100; %maximum number of iterations
error = 0.0001; %precision required
syms 'x'
f(x) = x - cos(x); %function we are solving
df = diff(f); %differential of f(x)
while i <= N
p = p0 - (f(p0)/df(p0)); %Newton-Raphson method
if (abs(p - p0)/abs(p)) < error %stopping criterion when difference between iterations is below tolerance
fprintf('Solution is %f \n', double(p))
return
end
i = i + 1;
p0 = p; %update p0
end
fprintf('Solution did not coverge within %d iterations at a required precision of %d \n', N, error) %error for non-convergence within N iterations
end

rendel deligos on 28 May 2022
calculate the root of the function g(x) = (X^3 -X) sinX
##### 2 CommentsShowHide 1 older comment
Walter Roberson on 28 May 2022
factor. You can see from examination that it has a root when X=-1 or X=0 or X=1 or anywhere sin(X)=0 which is all the integer multiples of π

Fethi Ds on 29 May 2022
hello everyone.
Can you please help me to creat a program Newton Raphson for tcsc (Thyristor-Controlled Series Capacitor) to control the active power flow in transmission lines in the power system to specific values.

Jefte on 8 Sep 2022
Newton-Raphson method to approximate the root of the nonlinear equation Compute and presets the results of five iterates for each of the initial guesses x0=1, x0=2, x0=100