0% found this document useful (0 votes)
711 views

Newton's Method MATLAB Implementation

The document describes implementing Newton's method in MATLAB to solve nonlinear equations. Newton's method is an iterative method that uses the derivative of a function to find successively better approximations to the roots of an equation. The document provides pseudocode for Newton's method and shows how to translate it into MATLAB code. It also gives an example of using Newton's method in MATLAB to solve a single nonlinear equation numerically.

Uploaded by

Orci Albuquerque
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
711 views

Newton's Method MATLAB Implementation

The document describes implementing Newton's method in MATLAB to solve nonlinear equations. Newton's method is an iterative method that uses the derivative of a function to find successively better approximations to the roots of an equation. The document provides pseudocode for Newton's method and shows how to translate it into MATLAB code. It also gives an example of using Newton's method in MATLAB to solve a single nonlinear equation numerically.

Uploaded by

Orci Albuquerque
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 8

06-262

Spring 2014:
Newtons Method in MATLAB
From Pseudo-Code to
ImplementaEon in MATLAB
IntroducEon
Newtons Method (also known as Newton-Raphson Method)
is used to solve nonlinear (system) of equaEons, which can be
represented as follows:

where is a general univariate nonlinear funcEon and is a


(scalar) variable, and


where is a vector of general mulEvariate nonlinear
funcEons and is a vector of variables
Examples
Single nonlinear equa-on

where is the (unknown) extent of reacEon (variable to be solved for) and


is a (known) equilibrium constant (a number)
System of nonlinear equa-ons







where are unknowns and the other symbols are known
Newtons Method: Pseudo-Code
Overview: hTp://en.wikipedia.org/wiki/Newton's_method
Idea: given iniEal guess (crucial, as close to the soluEon as possible),
iterate towards the soluEon of the nonlinear equaEon(s) using rst-order
derivaEve informaEon (makes convergence fast). Method converges to
one soluEon, but mulEple soluEons may exist that depend on the chosen
iniEal guess.
Pseudo-code for the univariate case:

Input: iniEal guess (x0), maximum number of iteraEons (N), convergence criterion (tol)
Output: soluEon to nonlinear equaEon
n 1
while (n N)
fn1 f(xn1)
fn1 f(xn1)
xn xn1 fn1/fn1
if (|fn1| tol) then
break
end
end
Newtons Method: MATLAB Code
Pseudo-Code MATLAB
n 1 n = 2;!
while (n N) while (n <= N + 1)!
fn1 f(xn1) fe = f(x(n - 1));!
fn1 f(xn1) fpe = fp(x(n - 1));!
xn xn1 fn1/fn1 x(n) = x(n - 1) - fe/fpe;!
if (|fn1| tol) then if (abs(fe) <= tol)!
break break;!
end end!
n n + 1 n = n + 1;!
end end!

Note that arrays in MATLAB are one-based, thus x(1) x0
Also note that the funcEon (equaEon) and its rst-order derivaEve
must be provided
You can use anonymous funcEons in MATLAB to avoid creaEng
an M-le for each funcEon
Numeric Example: MATLAB Script
f = @(x) x + x^(4/3); % Equation definition!
fp = @(x) 1 + 4/3*x^(1/3); % First-order derivative of f!
x0 = 1; % Initial guess!
N = 10; % Maximum number of iterations!
tol = 1E-6; % Convergence tolerance!
x = zeros(N + 1,1); % Preallocate solution vector where row => iteration!
x(1) = x0; % Set initial guess!
!
% Newton's Method algorithm!
n = 2;!
nfinal = N + 1; % Store final iteration if tol is reached before N iterations!
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; % Store final iteration!
break;!
end!
n = n + 1;!
end!
!
% Plot evolution of the solution!
figure('Color','White')!
plot(0:nfinal - 1,x(1:nfinal),'o-')!
title('Newton''s Method Solution: $f(x) = x + x^{\frac{4}{3}}$','FontSize',
20,'Interpreter','latex')!
xlabel('Iteration','FontSize',16)!
ylabel('$x$','FontSize',16,'Interpreter','latex')!
Numeric Example: Plot
MATLAB BuilEn FuncEons
For univariate nonlinear equaEons, you may use the
funcEon fzero
hTp://www.mathworks.com/help/matlab/ref/fzero.html

For a system of nonlinear equaEons, you may use


the funcEon fsolve
hTp://www.mathworks.com/help/opEm/ug/fsolve.html

They are more robust and rigorous than the simple


implementaEon shown in the previous slides

You might also like