Engineering Computation: Exercises
Engineering Computation: Exercises
Computation
Part 2:
Exercises
E. T. S. I. Caminos, Canales y Puertos
1
Bisection Method
% This is the MainBisection program
xl=0.0000001;
xu=1;
es=0.00002;
imax=50;
xx=linspace(xl,xu,20);
yy=f(xx);
plot(xx,yy);
hold on
[Bisect ea iter]=Bisection(xl,xu,es,imax);
fprintf('Solution: %18.12f Relative error: %18.12f Iterations: %5d\n',Bisect,ea,iter);
function [res]=f(x)
res=7500-1000.*(1-(1+x).^(-20))./x;
Bisection Method
function [Bisect ea iter]=Bisection(xl,xu,es,imax);
iter=0;
fl=f(xl);
ea=2*es;
xr=xl;
while ea>es && iter<=imax
xrold=xr;
xr=(xl+xu)/2;
fr=f(xr);
iter=iter+1;
if xr ~= 0
ea=abs((xr-xrold)/xr)*100;
end
test=fl*fr;
if test<0
xu=xr;
else if test>0
xl=xr;
fl=fr;
else
ea=0;
end
end
fprintf(' xl= %18.8f xu= %18.8f\n',xl,xu);
end
Bisect=xr;
function [res]=f(x)
res=7500-1000.*(1-(1+x).^(-20))./x;
Newton-Raphson Method
x0=0.2;
es=0.00002;
imax=30;
[xr ea iter]=NewtonRaphson(x0,es,imax);
fprintf('Solution: %18.12f Relative error: %18.12f Iterations:
%5d\n',xr,ea,iter);
function [xr ea iter]=NewtonRaphson(x0,es,imax)
xr=x0;
iter=0;
function [res]=f1(x);
ea=2*es;
res=1000*((1-(1+x).^(-20))./x-20.*(1+i).^(-21))./x;
while ea>es && iter<=imax
xrold=xr;
xr=xr-f(xr)/f1(xr);
iter=iter+1;
function [res]=f(x)
if xr ~= 0
res=7500-1000.*(1-(1+x).^(-20))./x;
ea=abs((xr-xrold)/xr)*100;
end
fprintf(' xr= %18.8f ea= %18.8f\n',xr,ea);
end;