SlideShare a Scribd company logo
2
Most read
4
Most read
10
Most read
Islamic Azad University
Qazvin Branch
Faculty of Industrial and Mechanics , Department of Mechanical
Engineering
Subject
Compare Some Algorithms for Solving Nonlinear Equation
Thesis Advisor
Dr.Marufi
By
Parham Sagharichi Ha
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 1
Problem
The speed v of a Saturn V rocket in vertical flight near the surface of earth can
be approximated by
𝑣 = 𝑢 ln
𝑀0
𝑀0 − 𝑚̇ 𝑡
− 𝑔𝑡
𝑢 = 2510
𝑚
𝑠
= 𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦 𝑜𝑓 𝑒𝑥ℎ𝑎𝑢𝑠𝑡 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑒 𝑡𝑜 𝑡ℎ𝑒 𝑟𝑜𝑐𝑘𝑒𝑡
𝑀0 = 2.8 ∗ 106
𝑘𝑔 = 𝑚𝑎𝑠𝑠 𝑜𝑓 𝑟𝑜𝑐𝑘𝑒𝑡 𝑎𝑡 𝑙𝑖𝑓𝑡𝑜𝑓𝑓
𝑚̇ = 13.3 ∗ 103
𝑘𝑔
𝑠
= 𝑟𝑎𝑡𝑒 𝑜𝑓 𝑓𝑢𝑒𝑙 𝑐𝑜𝑛𝑠𝑢𝑚𝑝𝑡𝑖𝑜𝑛
𝑔 = 9.81
𝑚
𝑠2
= 𝑔𝑟𝑎𝑣𝑖𝑡𝑎𝑡𝑖𝑜𝑛𝑎𝑙 𝑎𝑐𝑐𝑒𝑙𝑒𝑟𝑎𝑡𝑖𝑜𝑛
𝑡 = 𝑡𝑖𝑚𝑒
Determine the time when the rocket reaches the speed of sound (335 m/s).
Solution
𝑢 𝑙𝑛
𝑀0
𝑀0 − 𝑚̇ 𝑡
− 𝑔𝑡 − 𝑣 = 0
Now we want to determine time in the above equation
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 2
Matlab
1) Bisection Method
Script :
clc
close all
clear all
%%
% Subject : Bisect Algorithm
% Author: Parham Sagharichi Ha Email :
parhamsagharchi@gmail.com
%%
%-------------------S------T------A------R------T------------
-------------%
global tolerance
tolerance = 1e-4; % for example : 1e-4 = 10^-4
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
xlower = 0;
xupper = 100;
myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v);
[root,iflag] = fbisect(myfun,xlower,xupper);
switch iflag
case -2
disp('Initial range does not only contain one root')
otherwise
disp([' Root = ' num2str(root) ...
' found in ' num2str(iflag) ' iterations'])
end
%---------------F------I------N------I------S------H---------
-------------%
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 3
Function :
function [root,iflag] = fbisect(myfun,a,b)
if a>=b
disp(' attention b>a in [a b] ')
return
end
global tolerance
x = a:0.001:b;
y = feval(myfun,x);
fa = y(1);
fb = y(end);
ymax = max(y);
ymin = min(y);
figure
plot(x,y)
grid on
hold on
plot([a a],[ymin ymax])
plot([b b],[ymin ymax])
iflag = 0;
iterations = 0 ;
while (fa*fb<0) & (b-a)>tolerance
iterations = iterations + 1;
c = (a+b)/2;
fc = feval(myfun,c);
plot([c c],[ymin ymax])
pause
if fa*fc<0
b = c; fb = fc;
elseif fa*fc>0
a = c; fa = fc;
else
iflag = 1;
root = c
return
end
end
switch iterations
case 0
iflag = -2; root = NaN;
otherwise
iflag = iterations; root = c;
end
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 4
Result :
Root = 70.8779 found in 20 iterations
2) Linear Interpolation (False Position) Method :
Script :
clc
close all
clear all
%%
% Subject : False Postion Algorithm
% Author: Parham Sagharichi Ha Email :
parhamsagharchi@gmail.com
%%
%-------------------S------T------A------R------T------------
-------------%
global tolerance
tolerance = 1e-4; % for example : 1e-4 = 10^-4
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
xlower = 0;
xupper = 100;
myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v);
[root,iflag] = finter(myfun,xlower,xupper);
switch iflag
case -2
disp('Initial range does not only contain one root')
otherwise
disp([' Root = ' num2str(root) ...
' found in ' num2str(iflag) ' iterations'])
end
%---------------F------I------N------I------S------H---------
-------------%
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 5
Function :
function [root,iflag] = finter(myfun,a,b)
if a>=b
disp(' attention b>a in [a b] ')
return
end
global tolerance
x = a:0.001:b;
y = feval(myfun,x);
fa = y(1);
fb = y(end);
ymax = max(y);
ymin = min(y);
figure
plot(x,y)
grid on
hold on
plot([a a],[ymin ymax])
plot([b b],[ymin ymax])
iflag = 0;
iterations = 0 ;
while (fa*fb<0) & (b-a)>tolerance
iterations = iterations + 1;
c = b - (fb)*(a-b)/(fa-fb);
fc = feval(myfun,c);
plot([c c],[ymin ymax])
pause
if fa*fc<0
b = c; fb = fc;
elseif fa*fc>0
a = c; fa = fc;
else
iflag = 1;
root = c
return
end
end
switch iterations
case 0
iflag = -2; root = NaN;
otherwise
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 6
iflag = iterations; root = c;
end
Result :
Root = 70.878 found in 24 iterations
3) Newton-Raphson Method :
Script :
clc
close all
clear all
%%
% Subject : Newton_Raphson Algorithm
% Author: Parham Sagharichi Ha Email :
parhamsagharchi@gmail.com
%%
%-------------------S------T------A------R------T------------
-------------%
format short E
tolerance = 1e-4; % for example : 1e-4 = 10^-4
xlower = 0;
xupper = 100;
xguess = 45;
if (xguess>xupper)||(xlower>xguess)
disp(' error , repate again ')
return
end
xrange = xlower:0.1:xupper;
s = size(xrange);
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
syms x
myfun = u.*log(M0./(M0-mdot.*x))-g.*x-v;
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 7
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
for i = 1:s(2);
y(i) = double(subs(myfun,[x],[xrange(i)]));
end
fa = y(1);
fb = y(end);
ymax = max(y);
ymin = min(y);
figure
plot(xrange,y)
grid on
hold on
plot([xlower xlower],[ymin ymax])
plot([xupper xupper],[ymin ymax])
plot([xlower xupper],[0 0])
iflag = 0;
iterations = 1 ;
f = double(subs(myfun,[x],xguess));
myfun_prime = jacobian(myfun,x);
fprime = double(subs(myfun_prime,[x],xguess));
xn = xguess;
xnew = xn - f/fprime;
plot([xn xn],[0 f])
pause
plot([xn xnew],[f 0])
while (abs(xnew-xn)>tolerance) & (iterations<30)
iterations = iterations + 1;
xn = xnew;
f = double(subs(myfun,[x],xn));
fprime = double(subs(myfun_prime,[x],xn));
xnew = xn - f/fprime;
root = xnew;
pause
plot([xn xn],[0 f])
pause
plot([xn xnew],[f 0])
end
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 8
switch iterations
case 30
disp(' Not root found ');
otherwise
disp([' Root = ' num2str(root) ...
' found in ' num2str(iterations) ' iterations
'])
end
%---------------F------I------N------I------S------H---------
-------------%
Result :
Root = 70.878 found in 5 iterations
4) Mueller’s Method :
Script :
clc
close all
clear all
%%
% Subject : Mueller’s Algorithm
% Author: Parham Sagharichi Ha Email :
parhamsagharchi@gmail.com
%%
%-------------------S------T------A------R------T------------
-------------%
tolerance = 1e-4; % for example : 1e-4 = 10^-4
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
xlower = 0;
xupper = 100;
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 9
xguess = 45;
if (xguess>xupper)||(xlower>xguess)
disp(' error , repate again ')
return
end
myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v);
x = [xlower xguess xupper]';%[x2 x0 x1]
xe = xlower:0.1:xupper;
ye = feval(myfun,xe);
ymax = max(ye);
ymin = min(ye);
figure
plot(xe,ye)
grid on
hold on
rline = plot([xlower xlower],[ymin ymax]);
mline = plot([xguess xguess],[ymin ymax]);
fline = plot([xupper xupper],[ymin ymax]);
pause
iterations = 0;
while (true)
iterations = iterations +1;
y = feval(myfun,x);%[f2 f0 f1]
h1 = x(3)-x(2);
h2 = x(2)-x(1);
gamma = h2/h1;
c = y(2);
a = (gamma*y(3)-y(2)*(1+gamma)+y(1))/(gamma*h1^2*(1+gamma));
b = (y(3)-y(2)-a*h1^2)/h1;
if b>0
root = x(2)-(2*c)/(b+sqrt(b^2-4*a*c));
else
root = x(2)-(2*c)/(b-sqrt(b^2-4*a*c));
end
pause
rootline = plot([root root],[ymin ymax]);
if root>x(2)
x = [x(2) root x(3)];
else
x = [x(1) root x(2)];
end
pause
delete(rootline)
delete(rline)
delete(mline)
delete(fline)
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 10
rline = plot([x(1) x(1)],[ymin ymax]);
mline = plot([x(2) x(2)],[ymin ymax]);
fline = plot([x(3) x(3)],[ymin ymax]);
if (abs(feval(myfun,root))<(10^-8))&(iterations<30)
break
end
end
switch iterations
case 30
disp(' Not root found ');
otherwise
disp([' Root = ' num2str(root) ...
' found in ' num2str(iterations) ' iterations
'])
end
Result :
Root = 70.878 found in 5 iterations
5) 𝑥 = 𝑔(𝑥) Method :
𝑢 𝑙𝑛
𝑀0
𝑀0 − 𝑚̇ 𝑡
− 𝑔𝑡 − 𝑣 = 0
First Equation :
𝑡 =
𝑢
𝑔
𝑙𝑛
𝑀0
𝑀0 − 𝑚̇ 𝑡
−
𝑣
𝑔
Second Equation :
𝑡 =
𝑀0
𝑚̇
(
exp (
𝑔𝑡 + 𝑣
𝑢
) − 1
exp (
𝑔𝑡 + 𝑣
𝑢
)
)
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 11
Script :
clc
close all
clear all
%%
% Subject : x=g(x) Algorithm
% Author: Parham Sagharichi Ha Email :
parhamsagharchi@gmail.com
%%
%-------------------S------T------A------R------T------------
-------------%
tolerance = 1e-4; % for example : 1e-4 = 10^-4
u = 2510;
M0 = 2.8*10^6;
mdot = 13.3*10^3;
g = 9.81;
v = 335;
xlower = 0;
xupper = 100;
xguess = 45;
if (xguess>xupper)||(xlower>xguess)
disp(' error , repate again ')
return
end
myfun1 = @(t)((u/g).*log(M0./(M0-mdot.*t))-v/g);
myfun2 = @(t)((M0/mdot).*(exp((g.*t+v)/u)-
1)./exp((g.*t+v)/u));
xold1 = xguess;
xnew1 = feval(myfun1,xold1);
iterations1 = 0;
while (abs(xnew1-xold1)>tolerance)&(iterations1<30)
iterations1 = iterations1 + 1;
xold1 = xnew1;
xnew1 = feval(myfun1,xold1);
Assignment of Numerical Analysis Parham Sagharichi Ha
parhamsagharchi@gmail.com 12
end
root1 = xnew1(end);
switch iterations1
case 30
disp(' Not root found ');
otherwise
disp([' Root1 = ' num2str(root1) ...
' found in ' num2str(iterations1) ' iterations1
'])
end
xold2 = xguess;
xnew2 = feval(myfun2,xold2);
iterations2 = 0;
while (abs(xnew2-xold2)>tolerance)&(iterations2<30)
iterations2 = iterations2 + 1;
xold2 = xnew2;
xnew2 = feval(myfun2,xold2);
end
root2 = xnew2(end)
switch iterations2
case 30
disp(' Not root found ');
otherwise
disp([' Root2 = ' num2str(root2) ...
' found in ' num2str(iterations2) ' iterations2
'])
end
Result :
Not root found
root2 =
7.0878e+01
Root2 = 70.8779 found in 20 iterations2
References
Kiusalaas, J. (2009) Numerical Methods in Engineering with MATLAB®

More Related Content

PPTX
Numerical integration
PPTX
PPTX
PDF
Convex optimization methods
PPTX
Numerical integration;Gaussian integration one point, two point and three poi...
DOCX
Numerical methods and analysis problems/Examples
PPTX
Planar graph
PPTX
Laplace Transform And Its Applications
Numerical integration
Convex optimization methods
Numerical integration;Gaussian integration one point, two point and three poi...
Numerical methods and analysis problems/Examples
Planar graph
Laplace Transform And Its Applications

What's hot (20)

PPT
Newton raphson method
PPT
Lu decomposition
PPT
Optics Fourier Transform Ii
PPTX
Solving Laplace differential equation using finite element method
PPTX
Mean Value Theorem | Mathematics
PPTX
Finite difference method
PPT
Linear algebra03fallleturenotes01
PPT
Numerical method
PDF
fourier series
PDF
Lesson 16: Exponential Growth and Decay
PPTX
the fourier series
PPT
Direct method for soliton solution
PPTX
Direct Methods to Solve Linear Equations Systems
PDF
Regula Falsi (False position) Method
PDF
Krylov Subspace Methods in Model Order Reduction
PDF
Cayley-Hamilton Theorem, Eigenvalues, Eigenvectors and Eigenspace.
PDF
Graph Theory Introduction
PPT
PPTX
Bisection method
PDF
Linear Convolution using Matlab Code
Newton raphson method
Lu decomposition
Optics Fourier Transform Ii
Solving Laplace differential equation using finite element method
Mean Value Theorem | Mathematics
Finite difference method
Linear algebra03fallleturenotes01
Numerical method
fourier series
Lesson 16: Exponential Growth and Decay
the fourier series
Direct method for soliton solution
Direct Methods to Solve Linear Equations Systems
Regula Falsi (False position) Method
Krylov Subspace Methods in Model Order Reduction
Cayley-Hamilton Theorem, Eigenvalues, Eigenvectors and Eigenspace.
Graph Theory Introduction
Bisection method
Linear Convolution using Matlab Code
Ad

Viewers also liked (20)

DOCX
Exp 5 (1)5. Newton Raphson load flow analysis Matlab Software
PDF
MATLAB programs Power System Simulation lab (Electrical Engineer)
DOCX
Matlab code for Bisection Method
PPTX
Matlab simpowersystem
DOC
Sbma 4603 numerical methods Assignment
DOCX
Numerical methods
DOCX
PPTX
Bracketing or closed methods
PDF
Load Flow Analysis of Jamshoro Thermal Power Station (JTPS) Pakistan Using MA...
PDF
Introduction to Electrical Engineering Laboratory
PPTX
The False-Position Method
PPTX
PDF
269010454 electrical-machines-lab-manual-for-petrochemaical
DOCX
PLC SCADA report Paras Singhal
PPTX
Regula falsi method
PDF
POWER SYSTEM SIMULATION LAB-1 MANUAL (ELECTRICAL - POWER SYSTEM ENGINEERING )
DOCX
Exp 3 (1)3. To Formulate YBUS Matrix By Singular Transformation.
PPTX
Resistor color coding
DOC
Em ii lab manual 28.10.08 latest
PPTX
Bisection & Regual falsi methods
Exp 5 (1)5. Newton Raphson load flow analysis Matlab Software
MATLAB programs Power System Simulation lab (Electrical Engineer)
Matlab code for Bisection Method
Matlab simpowersystem
Sbma 4603 numerical methods Assignment
Numerical methods
Bracketing or closed methods
Load Flow Analysis of Jamshoro Thermal Power Station (JTPS) Pakistan Using MA...
Introduction to Electrical Engineering Laboratory
The False-Position Method
269010454 electrical-machines-lab-manual-for-petrochemaical
PLC SCADA report Paras Singhal
Regula falsi method
POWER SYSTEM SIMULATION LAB-1 MANUAL (ELECTRICAL - POWER SYSTEM ENGINEERING )
Exp 3 (1)3. To Formulate YBUS Matrix By Singular Transformation.
Resistor color coding
Em ii lab manual 28.10.08 latest
Bisection & Regual falsi methods
Ad

Similar to NUMERICAL METHODS WITH MATLAB : bisection,mueller's,newton-raphson,false point,x=g(x) (20)

PDF
Incorporate the SOR method in the multigridTest-m and apply the multig.pdf
PDF
Solutions_Manual_to_accompany_Applied_Nu.pdf
PDF
Natural and Clamped Cubic Splines
DOCX
Banco de preguntas para el ap
PPT
Raices de ecuaciones
PPT
Raices de ecuaciones
PDF
Numerical Algorithm for a few Special Functions
PDF
System dynamics 3rd edition palm solutions manual
PPT
Learn Matlab
PPT
Taylor and maclaurian series
DOCX
Recursion in C
PPTX
C PROGRAMS - SARASWATHI RAMALINGAM
DOCX
Fourier series example
PDF
Applied numerical methods lec10
DOCX
Bca3010 computer oreineted numerical methods
PPTX
Scilab presentation
PDF
Econometric Analysis 8th Edition Greene Solutions Manual
DOCX
Mid-Term ExamName___________________________________MU.docx
Incorporate the SOR method in the multigridTest-m and apply the multig.pdf
Solutions_Manual_to_accompany_Applied_Nu.pdf
Natural and Clamped Cubic Splines
Banco de preguntas para el ap
Raices de ecuaciones
Raices de ecuaciones
Numerical Algorithm for a few Special Functions
System dynamics 3rd edition palm solutions manual
Learn Matlab
Taylor and maclaurian series
Recursion in C
C PROGRAMS - SARASWATHI RAMALINGAM
Fourier series example
Applied numerical methods lec10
Bca3010 computer oreineted numerical methods
Scilab presentation
Econometric Analysis 8th Edition Greene Solutions Manual
Mid-Term ExamName___________________________________MU.docx

Recently uploaded (20)

PPTX
202450812 BayCHI UCSC-SV 20250812 v17.pptx
PDF
Supply Chain Operations Speaking Notes -ICLT Program
PPTX
human mycosis Human fungal infections are called human mycosis..pptx
PPTX
Presentation on HIE in infants and its manifestations
PPTX
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
PPTX
Lesson notes of climatology university.
PDF
RMMM.pdf make it easy to upload and study
PDF
O7-L3 Supply Chain Operations - ICLT Program
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
Microbial disease of the cardiovascular and lymphatic systems
PDF
Abdominal Access Techniques with Prof. Dr. R K Mishra
PDF
Chinmaya Tiranga quiz Grand Finale.pdf
PPTX
Institutional Correction lecture only . . .
PDF
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
PDF
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
PDF
Anesthesia in Laparoscopic Surgery in India
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PPTX
master seminar digital applications in india
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
202450812 BayCHI UCSC-SV 20250812 v17.pptx
Supply Chain Operations Speaking Notes -ICLT Program
human mycosis Human fungal infections are called human mycosis..pptx
Presentation on HIE in infants and its manifestations
school management -TNTEU- B.Ed., Semester II Unit 1.pptx
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
Lesson notes of climatology university.
RMMM.pdf make it easy to upload and study
O7-L3 Supply Chain Operations - ICLT Program
Final Presentation General Medicine 03-08-2024.pptx
Microbial disease of the cardiovascular and lymphatic systems
Abdominal Access Techniques with Prof. Dr. R K Mishra
Chinmaya Tiranga quiz Grand Finale.pdf
Institutional Correction lecture only . . .
A GUIDE TO GENETICS FOR UNDERGRADUATE MEDICAL STUDENTS
grade 11-chemistry_fetena_net_5883.pdf teacher guide for all student
Anesthesia in Laparoscopic Surgery in India
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
master seminar digital applications in india
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf

NUMERICAL METHODS WITH MATLAB : bisection,mueller's,newton-raphson,false point,x=g(x)

  • 1. Islamic Azad University Qazvin Branch Faculty of Industrial and Mechanics , Department of Mechanical Engineering Subject Compare Some Algorithms for Solving Nonlinear Equation Thesis Advisor Dr.Marufi By Parham Sagharichi Ha
  • 2. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 1 Problem The speed v of a Saturn V rocket in vertical flight near the surface of earth can be approximated by 𝑣 = 𝑢 ln 𝑀0 𝑀0 − 𝑚̇ 𝑡 − 𝑔𝑡 𝑢 = 2510 𝑚 𝑠 = 𝑣𝑒𝑙𝑜𝑐𝑖𝑡𝑦 𝑜𝑓 𝑒𝑥ℎ𝑎𝑢𝑠𝑡 𝑟𝑒𝑙𝑎𝑡𝑖𝑣𝑒 𝑡𝑜 𝑡ℎ𝑒 𝑟𝑜𝑐𝑘𝑒𝑡 𝑀0 = 2.8 ∗ 106 𝑘𝑔 = 𝑚𝑎𝑠𝑠 𝑜𝑓 𝑟𝑜𝑐𝑘𝑒𝑡 𝑎𝑡 𝑙𝑖𝑓𝑡𝑜𝑓𝑓 𝑚̇ = 13.3 ∗ 103 𝑘𝑔 𝑠 = 𝑟𝑎𝑡𝑒 𝑜𝑓 𝑓𝑢𝑒𝑙 𝑐𝑜𝑛𝑠𝑢𝑚𝑝𝑡𝑖𝑜𝑛 𝑔 = 9.81 𝑚 𝑠2 = 𝑔𝑟𝑎𝑣𝑖𝑡𝑎𝑡𝑖𝑜𝑛𝑎𝑙 𝑎𝑐𝑐𝑒𝑙𝑒𝑟𝑎𝑡𝑖𝑜𝑛 𝑡 = 𝑡𝑖𝑚𝑒 Determine the time when the rocket reaches the speed of sound (335 m/s). Solution 𝑢 𝑙𝑛 𝑀0 𝑀0 − 𝑚̇ 𝑡 − 𝑔𝑡 − 𝑣 = 0 Now we want to determine time in the above equation
  • 3. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 2 Matlab 1) Bisection Method Script : clc close all clear all %% % Subject : Bisect Algorithm % Author: Parham Sagharichi Ha Email : [email protected] %% %-------------------S------T------A------R------T------------ -------------% global tolerance tolerance = 1e-4; % for example : 1e-4 = 10^-4 u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; xlower = 0; xupper = 100; myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v); [root,iflag] = fbisect(myfun,xlower,xupper); switch iflag case -2 disp('Initial range does not only contain one root') otherwise disp([' Root = ' num2str(root) ... ' found in ' num2str(iflag) ' iterations']) end %---------------F------I------N------I------S------H--------- -------------%
  • 4. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 3 Function : function [root,iflag] = fbisect(myfun,a,b) if a>=b disp(' attention b>a in [a b] ') return end global tolerance x = a:0.001:b; y = feval(myfun,x); fa = y(1); fb = y(end); ymax = max(y); ymin = min(y); figure plot(x,y) grid on hold on plot([a a],[ymin ymax]) plot([b b],[ymin ymax]) iflag = 0; iterations = 0 ; while (fa*fb<0) & (b-a)>tolerance iterations = iterations + 1; c = (a+b)/2; fc = feval(myfun,c); plot([c c],[ymin ymax]) pause if fa*fc<0 b = c; fb = fc; elseif fa*fc>0 a = c; fa = fc; else iflag = 1; root = c return end end switch iterations case 0 iflag = -2; root = NaN; otherwise iflag = iterations; root = c; end
  • 5. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 4 Result : Root = 70.8779 found in 20 iterations 2) Linear Interpolation (False Position) Method : Script : clc close all clear all %% % Subject : False Postion Algorithm % Author: Parham Sagharichi Ha Email : [email protected] %% %-------------------S------T------A------R------T------------ -------------% global tolerance tolerance = 1e-4; % for example : 1e-4 = 10^-4 u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; xlower = 0; xupper = 100; myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v); [root,iflag] = finter(myfun,xlower,xupper); switch iflag case -2 disp('Initial range does not only contain one root') otherwise disp([' Root = ' num2str(root) ... ' found in ' num2str(iflag) ' iterations']) end %---------------F------I------N------I------S------H--------- -------------%
  • 6. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 5 Function : function [root,iflag] = finter(myfun,a,b) if a>=b disp(' attention b>a in [a b] ') return end global tolerance x = a:0.001:b; y = feval(myfun,x); fa = y(1); fb = y(end); ymax = max(y); ymin = min(y); figure plot(x,y) grid on hold on plot([a a],[ymin ymax]) plot([b b],[ymin ymax]) iflag = 0; iterations = 0 ; while (fa*fb<0) & (b-a)>tolerance iterations = iterations + 1; c = b - (fb)*(a-b)/(fa-fb); fc = feval(myfun,c); plot([c c],[ymin ymax]) pause if fa*fc<0 b = c; fb = fc; elseif fa*fc>0 a = c; fa = fc; else iflag = 1; root = c return end end switch iterations case 0 iflag = -2; root = NaN; otherwise
  • 7. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 6 iflag = iterations; root = c; end Result : Root = 70.878 found in 24 iterations 3) Newton-Raphson Method : Script : clc close all clear all %% % Subject : Newton_Raphson Algorithm % Author: Parham Sagharichi Ha Email : [email protected] %% %-------------------S------T------A------R------T------------ -------------% format short E tolerance = 1e-4; % for example : 1e-4 = 10^-4 xlower = 0; xupper = 100; xguess = 45; if (xguess>xupper)||(xlower>xguess) disp(' error , repate again ') return end xrange = xlower:0.1:xupper; s = size(xrange); u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; syms x myfun = u.*log(M0./(M0-mdot.*x))-g.*x-v;
  • 8. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 7 u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; for i = 1:s(2); y(i) = double(subs(myfun,[x],[xrange(i)])); end fa = y(1); fb = y(end); ymax = max(y); ymin = min(y); figure plot(xrange,y) grid on hold on plot([xlower xlower],[ymin ymax]) plot([xupper xupper],[ymin ymax]) plot([xlower xupper],[0 0]) iflag = 0; iterations = 1 ; f = double(subs(myfun,[x],xguess)); myfun_prime = jacobian(myfun,x); fprime = double(subs(myfun_prime,[x],xguess)); xn = xguess; xnew = xn - f/fprime; plot([xn xn],[0 f]) pause plot([xn xnew],[f 0]) while (abs(xnew-xn)>tolerance) & (iterations<30) iterations = iterations + 1; xn = xnew; f = double(subs(myfun,[x],xn)); fprime = double(subs(myfun_prime,[x],xn)); xnew = xn - f/fprime; root = xnew; pause plot([xn xn],[0 f]) pause plot([xn xnew],[f 0]) end
  • 9. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 8 switch iterations case 30 disp(' Not root found '); otherwise disp([' Root = ' num2str(root) ... ' found in ' num2str(iterations) ' iterations ']) end %---------------F------I------N------I------S------H--------- -------------% Result : Root = 70.878 found in 5 iterations 4) Mueller’s Method : Script : clc close all clear all %% % Subject : Mueller’s Algorithm % Author: Parham Sagharichi Ha Email : [email protected] %% %-------------------S------T------A------R------T------------ -------------% tolerance = 1e-4; % for example : 1e-4 = 10^-4 u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; xlower = 0; xupper = 100;
  • 10. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 9 xguess = 45; if (xguess>xupper)||(xlower>xguess) disp(' error , repate again ') return end myfun = @(t)(u.*log(M0./(M0-mdot.*t))-g.*t-v); x = [xlower xguess xupper]';%[x2 x0 x1] xe = xlower:0.1:xupper; ye = feval(myfun,xe); ymax = max(ye); ymin = min(ye); figure plot(xe,ye) grid on hold on rline = plot([xlower xlower],[ymin ymax]); mline = plot([xguess xguess],[ymin ymax]); fline = plot([xupper xupper],[ymin ymax]); pause iterations = 0; while (true) iterations = iterations +1; y = feval(myfun,x);%[f2 f0 f1] h1 = x(3)-x(2); h2 = x(2)-x(1); gamma = h2/h1; c = y(2); a = (gamma*y(3)-y(2)*(1+gamma)+y(1))/(gamma*h1^2*(1+gamma)); b = (y(3)-y(2)-a*h1^2)/h1; if b>0 root = x(2)-(2*c)/(b+sqrt(b^2-4*a*c)); else root = x(2)-(2*c)/(b-sqrt(b^2-4*a*c)); end pause rootline = plot([root root],[ymin ymax]); if root>x(2) x = [x(2) root x(3)]; else x = [x(1) root x(2)]; end pause delete(rootline) delete(rline) delete(mline) delete(fline)
  • 11. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 10 rline = plot([x(1) x(1)],[ymin ymax]); mline = plot([x(2) x(2)],[ymin ymax]); fline = plot([x(3) x(3)],[ymin ymax]); if (abs(feval(myfun,root))<(10^-8))&(iterations<30) break end end switch iterations case 30 disp(' Not root found '); otherwise disp([' Root = ' num2str(root) ... ' found in ' num2str(iterations) ' iterations ']) end Result : Root = 70.878 found in 5 iterations 5) 𝑥 = 𝑔(𝑥) Method : 𝑢 𝑙𝑛 𝑀0 𝑀0 − 𝑚̇ 𝑡 − 𝑔𝑡 − 𝑣 = 0 First Equation : 𝑡 = 𝑢 𝑔 𝑙𝑛 𝑀0 𝑀0 − 𝑚̇ 𝑡 − 𝑣 𝑔 Second Equation : 𝑡 = 𝑀0 𝑚̇ ( exp ( 𝑔𝑡 + 𝑣 𝑢 ) − 1 exp ( 𝑔𝑡 + 𝑣 𝑢 ) )
  • 12. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 11 Script : clc close all clear all %% % Subject : x=g(x) Algorithm % Author: Parham Sagharichi Ha Email : [email protected] %% %-------------------S------T------A------R------T------------ -------------% tolerance = 1e-4; % for example : 1e-4 = 10^-4 u = 2510; M0 = 2.8*10^6; mdot = 13.3*10^3; g = 9.81; v = 335; xlower = 0; xupper = 100; xguess = 45; if (xguess>xupper)||(xlower>xguess) disp(' error , repate again ') return end myfun1 = @(t)((u/g).*log(M0./(M0-mdot.*t))-v/g); myfun2 = @(t)((M0/mdot).*(exp((g.*t+v)/u)- 1)./exp((g.*t+v)/u)); xold1 = xguess; xnew1 = feval(myfun1,xold1); iterations1 = 0; while (abs(xnew1-xold1)>tolerance)&(iterations1<30) iterations1 = iterations1 + 1; xold1 = xnew1; xnew1 = feval(myfun1,xold1);
  • 13. Assignment of Numerical Analysis Parham Sagharichi Ha [email protected] 12 end root1 = xnew1(end); switch iterations1 case 30 disp(' Not root found '); otherwise disp([' Root1 = ' num2str(root1) ... ' found in ' num2str(iterations1) ' iterations1 ']) end xold2 = xguess; xnew2 = feval(myfun2,xold2); iterations2 = 0; while (abs(xnew2-xold2)>tolerance)&(iterations2<30) iterations2 = iterations2 + 1; xold2 = xnew2; xnew2 = feval(myfun2,xold2); end root2 = xnew2(end) switch iterations2 case 30 disp(' Not root found '); otherwise disp([' Root2 = ' num2str(root2) ... ' found in ' num2str(iterations2) ' iterations2 ']) end Result : Not root found root2 = 7.0878e+01 Root2 = 70.8779 found in 20 iterations2 References Kiusalaas, J. (2009) Numerical Methods in Engineering with MATLAB®