Solving a Nonlinear Equation using Newton-Raphson Method
古いコメントを表示
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 件のコメント
DEBADITYA GUPTA
2017 年 9 月 29 日
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
2021 年 7 月 5 日
Write a code in matlab of newton rephson method to solve cos(x)+2sin(x)+x^2 any one can answer me quickly
Rajesh
2022 年 12 月 10 日
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
2022 年 12 月 10 日
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
採用された回答
その他の回答 (4 件)
Dhruv Bhavsar
2020 年 8 月 28 日
- 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 件のコメント
Juan Sebastian Castro Barrero
2021 年 2 月 12 日
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
2021 年 4 月 13 日
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
2023 年 2 月 13 日
編集済み: Munish Jindal
2023 年 2 月 13 日
Got this error.
unrecognized function or variable 'NewtonRaphson_nl_print'.
Walter Roberson
2023 年 2 月 13 日
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
2013 年 11 月 25 日
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
2021 年 5 月 21 日
編集済み: Walter Roberson
2022 年 2 月 12 日
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 件のコメント
Taha Anum
2023 年 10 月 22 日
can i have a generic code which may ask user for the equation
Vicki
2026 年 1 月 6 日
What is the role of the "syms" function here?
Torsten
2026 年 1 月 6 日
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
2025 年 11 月 16 日
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
カテゴリ
ヘルプ センター および File Exchange で Symbolic Math Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
