Solving a Nonlinear Equation using Newton-Raphson Method
Show older comments
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
4 Comments
DEBADITYA GUPTA
on 29 Sep 2017
suppose I need to solve f(x)=a*x.^3+b*x.^2+c using Newton-Raphson method where a,b,c are to be import from excel file or user defined, the what i need to do?
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
Rajesh
on 10 Dec 2022
to solve the given equation (x^2-1)/(x-1) taking minimum values for x and draw the stem graph and step graph
Walter Roberson
on 10 Dec 2022
You should open your own Question, after reading http://www.mathworks.com/matlabcentral/answers/6200-tutorial-how-to-ask-a-question-on-answers-and-get-a-fast-answer
Accepted Answer
More Answers (4)
Dhruv Bhavsar
on 28 Aug 2020
- 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
This covers answer to your question and also queries for some comments I read in this thread.
4 Comments
Juan Sebastian Castro Barrero
on 12 Feb 2021
i need make a program in matlab to solve
F(1)=1+(x(1)^2)-(x(2)^2)+((exp(x(1)))*cos(x(2)));
F(2)=(2*(x(1))*(x(2)))+((exp(x(1)))*sin(x(2)));
starting initials (-1,4)
5 iterations.
can you help me?
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
Munish Jindal
on 13 Feb 2023
Edited: Munish Jindal
on 13 Feb 2023
Got this error.
unrecognized function or variable 'NewtonRaphson_nl_print'.
Walter Roberson
on 13 Feb 2023
the code is given above starting at the line
function [v1 , no_itr, norm1] = NewtonRaphson_nl_print(v,fn,jacob_fn,no_itr,error)
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)
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
3 Comments
Taha Anum
on 22 Oct 2023
can i have a generic code which may ask user for the equation
Vicki
on 6 Jan 2026
What is the role of the "syms" function here?
Torsten
on 6 Jan 2026
By using x as a symbolic variable, f is a symbolic function. The "diff" command can analytically differentiate symbolic functions. Thus if you are not able to compute the derivative of x-cos(x), symbolic math and the diff command will do it for you.
Equivalently, you could just set
f = @(x) x-cos(x);
df = @(x)1+sin(x);
without the
syms x
line.
likhith krishna
on 16 Nov 2025
function [y, exitflag, iter_count] = newton(R, J, x0, tol, maxit)
y = x0;
iter_count = 0;
exitflag = 0;
R_val = R(y);
if norm(R_val, 2) < tol
exitflag = 1;
return;
end
for k = 1:maxit-1
J_val = J(y);
if rcond(J_val) < 1e-12
exitflag = -1;
iter_count = k - 1;
return;
end
dx = -J_val \ R_val;
y = y + dx;
iter_count = k;
R_val = R(y);
if norm(R_val, 2) < tol
exitflag = 1;
return;
end
end
exitflag = 0;
iter_count = maxit;
end
Categories
Find more on Symbolic Math Toolbox 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!