Escolar Documentos
Profissional Documentos
Cultura Documentos
UNIFEI
Clculo Numrico
SUMRIO
1.
1.2.
Eliminao de Gauss...................................................................................................... 4
1.3.
1.4.
Newton-Raphson: ......................................................................................................... 8
1.5.
1.6.
1.7.
1.8.
1.9.
Dicotomia ou Bisseo
clear all
clc
fprintf('%s\n','===============================');
fprintf('%s\n','Mtodo de Dicotomia ou Bisseo');
fprintf('%s\n','===============================');
fprintf('\nFuno:\n');
fx = input('f(x) = ', 's');
fprintf('\nLimite inferior do intervalo:\n');
a = input('a = ', 's');
fprintf('Limite superior do intervalo:\n');
b = input('b = ', 's');
fprintf('Tolerncia:\n');
E = input('E = ', 's');
a=str2num(a);
b=str2num(b);
E=str2num(E);
y = zeros(j,1);
k=0;
fprintf('%s\n',' ');
fprintf('%s\n','-----------------------------------------------------------------------');
fprintf('%s\n',' iterao
f(x)
');
fprintf('%s\n','-----------------------------------------------------------------------');
c=(b-a)/2;
while c>=E
c=(b-a)/2;
y(k+1,1) = (a+b)/2;
x = y(k+1,1);
fx1 = eval (fx);
fprintf('
%2d
x = a;
fa = eval (fx);
x = b;
fb = eval (fx);
if (fa*fx1<0)
4
b = y(k+1,1);
end;
if (fx1*fb<0)
a = y(k+1,1);
end;
k = k+1;
end;
1.2.
Eliminao de Gauss
clear all
clc
fprintf('%s\n','=============================');
fprintf('%s\n','Mtodo da Eliminao de Gauss');
fprintf('%s\n','=============================');
fprintf('\nNmero de Variveis:\n');
n = input('
n = ', 's');
n = str2num(n);
for j=1:n
for i=1:n
if i==1
fprintf('| ')
end
fprintf('%10.5f ', A(j,i))
if i==n
5
fprintf('|')
end
if i==n
fprintf(' | x(%d) |
| %10.5f |',j,B(j,1))
end
end
fprintf('\n')
end
detA = det(A);
fprintf('\nDeterminante >> detA = %10.4f\n',detA);
if (detA == 0)
fprintf('\nDeterminante igual a ZERO!\n');
fprintf('Podem existir infinitas solues ou ainda nenhuma soluo!\n');
else
for j=1:(n-1)
fprintf('\nEliminao %d:\n',j);
for i=(j+1):n
if A(j,j)== 0 && j<n
troca
= A(j,:);
A(j,:) = A(j+1,:);
A(j+1,:) = troca;
troca
= B(j,1);
B(j,1) = B(j+1,1);
B(j+1,1) = troca;
fprintf('\nPiv igual a ZERO. Troca-se a linha "i" com a linha "i+1":\n');
for k=1:n
for l=1:n
if l==1
fprintf('| ')
end
fprintf('%10.5f ', A(k,l))
if l==n
fprintf('|')
end
if l==n
fprintf(' | x(%d) |
end
end
fprintf('\n')
end
end
m = (A(i,j)/A(j,j));
A(i,:) = A(i,:) - m*A(j,:);
B(i,1) = B(i,1) - m*B(j,1);
| %10.5f |',k,B(k,1))
6
fprintf('\n m(%d,%d) = %10.4f',i,j,m);
end
fprintf('\n Piv =
%10.4f\n\n',A(j,j));
for j=1:n
for i=1:n
if i==1
fprintf('| ')
end
fprintf('%10.5f ', A(j,i))
if i==n
fprintf('|')
end
if i==n
fprintf(' | x(%d) |
| %10.5f |',j,B(j,1))
end
end
fprintf('\n')
end
end
X = B;
X(n,1) = B(n,1)/A(n,n);
for i=(n-1):-1:1
soma=0;
for j=(i+1):n
soma = soma + A(i,j)*X(j,1);
end
X(i,1)=(B(i,1)-soma)/A(i,i);
end
fprintf('\nRazes:\n\n');
for i=1:n
fprintf('
x(%d) = %10.4f\n',i,X(i,1));
end
end
1.3.
Falsa Posio
clear all
clc
fprintf('%s\n','=======================');
fprintf('%s\n','Mtodo da Falsa Posio');
fprintf('%s\n','=======================');
fprintf('\nFuno:\n');
7
fx = input('f(x) = ', 's');
fprintf('\nLimite inferior do intervalo:\n');
a = input('a = ', 's');
fprintf('Limite superior do intervalo:\n');
b = input('b = ', 's');
fprintf('Tolerncia:\n');
E = input('E = ', 's');
a=str2num(a);
b=str2num(b);
E=str2num(E);
fprintf('%s\n',' ');
fprintf('%s\n','-------------------------------------------------------------------------');
fprintf('%s\n',' iterao
f(x)
b-a
');
fprintf('%s\n','-------------------------------------------------------------------------');
k=0;
x = a;
fa = eval (fx);
x = b;
fb = eval (fx);
x = (a*fb-b*fa)/(fb-fa);
fx1 = eval(fx);
c = b-a;
fprintf('
%2d
while abs(fx1)>=E
if (fa*fx1<0)
b = x;
end;
if (fx1*fb<0)
a = x;
end;
k = k+1;
x = a;
fa = eval (fx);
x = b;
fb = eval (fx);
x = (a*fb-b*fa)/(fb-fa);
fx1 = eval(fx);
c = b-a;
fprintf('
%2d
8
end;
1.4.
Newton-Raphson:
clear all
clc
fprintf('%s\n','========================');
fprintf('%s\n','Mtodo de Newton-Raphson');
fprintf('%s\n','========================');
fprintf('\nFuno:\n');
fx = input('f(x) = ', 's');
fprintf('Tolerncia de |f(x)|:\n');
delta = input('? = ', 's');
fprintf('Tolerncia de |x(k) - x(k-1)|:\n');
E = input('E = ', 's');
fprintf('Aproximao inicial:\n');
x0 = input('x(0) = ', 's');
delta=str2num(delta);
x0=str2num(x0);
E=str2num(E);
dx = diff(fx);
k=0;
x = x0;
fx1 = eval (fx);
dx1 = eval (dx);
if (abs(fx1)<delta)
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
else
fprintf('%s\n','-------------------------------------------------------------------------');
fprintf('%s\n',' iterao
f(x)
df(x)/dx
|x(k)-x(k-1)|
');
fprintf('%s\n','-------------------------------------------------------------------------');
fprintf(' %2d
%10.8f
%10.8f
%10.8f
x1 = x - fx1/dx1;
c = x1 - x;
k=1;
x = x1;
fx1 = eval(fx);
dx1 = eval (dx);
\n',k,x0,fx1,dx1);
fprintf(' %2d
%10.8f
%10.8f
%10.8f
%10.8f \n',k,x,fx1,dx1,c);
x1 = x - fx1/dx1;
c = (x1 - x);
k = k+1;
end;
k = k-1;
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
fprintf('%s\n','-------------------------------------------------------------------------');
end
1.5.
Newton Modificado
clear all
clc
fprintf('%s\n','===========================');
fprintf('%s\n','Mtodo de Newton Modificado');
fprintf('%s\n','===========================');
fprintf('\nFuno:\n');
fx = input('f(x) = ', 's');
fprintf('Tolerncia de |f(x)|:\n');
delta = input('d = ', 's');
fprintf('Tolerncia de |x(k) - x(k-1)|:\n');
E = input('E = ', 's');
fprintf('Aproximao inicial:\n');
x0 = input('x(0) = ', 's');
delta=str2num(delta);
x0=str2num(x0);
E=str2num(E);
dx = diff(fx);
k=0;
x = x0;
fx1 = eval (fx);
dx0 = eval (dx);
if (abs(fx1)<delta)
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
else
fprintf('%s\n','---------------------------------------------------------');
fprintf('%s\n',' iterao
f(x)
|x(k)-x(k-1)|
');
fprintf('%s\n','---------------------------------------------------------');
10
fprintf(' %2d
%10.8f
%10.8f
\n',k,x0,fx1);
x1 = x - fx1/dx0;
c = x1 - x;
k=1;
x = x1;
fx1 = eval(fx);
fprintf(' %2d
%10.8f
%10.8f
%10.8f \n',k,x,fx1,abs(c));
x1 = x - fx1/dx0;
c = (x1 - x);
k = k+1;
end;
k = k-1;
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
fprintf('%s\n','---------------------------------------------------------');
end
1.6.
fprintf('%s\n','=========================================');
fprintf('%s\n','Mtodo de Newton Modificado para Sistemas');
fprintf('%s\n','=========================================');
x = sym('x');
y = sym('y');
fprintf('\n1 Funo:\n');
fxy = input('
fprintf('2 Funo:\n');
gxy = input('
? = ', 's');
E = ', 's');
fprintf('\nAproximao inicial:\n');
x0 = input('
y0 = input('
11
dfx = diff(fxy);
dfy = diff(fxy,y);
dgx = diff(gxy);
dgy = diff(gxy,y);
delta=str2num(delta);
x0=str2num(x0);
y0=str2num(y0);
E=str2num(E);
x = x0;
y = y0;
k = 0;
X = [x0 ; y0];
FX = [fxy0 ; gxy0];
JX = [dfx0 dfy0 ; dgx0 dgy0]
J = inv(JX);
f(x,y)
g(x,y)
|x(k)-x(k-1)|
|y(k)-y(k-1)|');
fprintf('%s\n','----------------------------------------------------------------------------------------------------');
fprintf(' %2d
% 10.8f
% 10.8f
% 10.8f
X1 = X - J*FX;
c = X1(1,1)-X(1,1);
d = X1(2,1)-X(2,1);
k=k+1;
x = X1(1,1);
y = X1(2,1);
% 10.8f\n',k,x0,y0,fxy0,gxy0);
12
X = [X1(1,1) ; X1(2,1)];
FX = [fxy0 ; gxy0];
fprintf(' %2d
% 10.8f
% 10.8f
% 10.8f
% 10.8f
% 10.8f
% 10.8f\n',k,x,y,fxy0,gxy0,c,d);
X1 = X - J*FX;
c = X1(1,1)-X(1,1);
d = X1(2,1)-X(2,1);
k=k+1;
end;
k = k-1;
fprintf('\nRaz aproximada => x(%d) = %10.8f', k, x);
fprintf('\n
fprintf('%s\n','----------------------------------------------------------------------------------------------------');
end
1.7.
fprintf('%s\n','======================================');
fprintf('%s\n','Mtodo de Newton-Raphson para Sistemas');
fprintf('%s\n','======================================');
x = sym('x');
y = sym('y');
fprintf('\n1 Funo:\n');
fxy = input('
fprintf('2 Funo:\n');
gxy = input('
? = ', 's');
E = ', 's');
fprintf('\nAproximao inicial:\n');
x0 = input('
y0 = input('
dfx = diff(fxy);
dfy = diff(fxy,y);
dgx = diff(gxy);
13
dgy = diff(gxy,y);
delta=str2num(delta);
x0=str2num(x0);
y0=str2num(y0);
E=str2num(E);
x = x0;
y = y0;
k = 0;
X = [x0 ; y0];
FX = [fxy0 ; gxy0];
JX = [dfx0 dfy0 ; dgx0 dgy0];
J = inv(JX);
f(x,y)
g(x,y)
|x(k)-x(k-1)|
|y(k)-y(k-1)|');
fprintf('%s\n','----------------------------------------------------------------------------------------------------');
fprintf(' %2d
% 10.8f
% 10.8f
% 10.8f
X1 = X - J*FX;
c = X1(1,1)-X(1,1);
d = X1(2,1)-X(2,1);
k=k+1;
x = X1(1,1);
y = X1(2,1);
% 10.8f\n',k,x0,y0,fxy0,gxy0);
14
X = [X1(1,1) ; X1(2,1)];
FX = [fxy0 ; gxy0];
JX = [dfx0 dfy0 ; dgx0 dgy0];
J = inv(JX);
fprintf(' %2d
% 10.8f
% 10.8f
% 10.8f
% 10.8f
% 10.8f
% 10.8f\n',k,x,y,fxy0,gxy0,c,d);
X1 = X - J*FX;
c = X1(1,1)-X(1,1);
d = X1(2,1)-X(2,1);
k=k+1;
end;
k = k-1;
fprintf('\nRaz aproximada => x(%d) = %10.8f', k, x);
fprintf('\n
fprintf('%s\n','----------------------------------------------------------------------------------------------------');
end
1.8.
fprintf('%s\n','=======================================');
fprintf('%s\n','Mtodo do Ponto Fixo ou Iterao Linear');
fprintf('%s\n','=======================================');
fprintf('\nFuno:\n');
fx = input('f(x) = ', 's');
fprintf('Funo equivalente:\n');
fix = input('x = ?(x) = ', 's');
fprintf('Tolerncia de |f(x)|:\n');
delta = input('d = ', 's');
fprintf('Tolerncia de |x(k) - x(k-1)|:\n');
E = input('E = ', 's');
fprintf('Aproximao inicial:\n');
x0 = input('x(0) = ', 's');
delta=str2num(delta);
x0=str2num(x0);
E=str2num(E);
k=0;
x = x0;
fx1 = eval (fx);
fix1 = eval (fix);
15
if (abs(fx1)<delta)
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
else
fprintf('%s\n','-------------------------------------------------------------------------');
fprintf('%s\n',' iterao
f(x)
fi(x)
|x(k)-x(k-1)|
');
fprintf('%s\n','-------------------------------------------------------------------------');
fprintf(' %2d
%10.8f
%10.8f
%10.8f
\n',k,x0,fx1,fix1);
c = x-fix1;
k=1;
%10.8f
%10.8f
%10.8f
%10.8f \n',k,x,fx1,fix1,c);
c = (x-fix1);
k = k+1;
end;
x = fix1;
fx1 = eval (fx);
fix1 = eval (fix);
fprintf(' %2d
%.8f
%.8f
%.8f
%.8f \n',k,x,fx1,fix1,c);
end
1.9.
Mtodo da Secante
clear all
clc
fprintf('%s\n','=================');
fprintf('%s\n','Mtodo da Secante');
fprintf('%s\n','=================');
fprintf('\nFuno:\n');
fx = input('f(x) = ', 's');
fprintf('Tolerncia de |f(x)|:\n');
delta = input('d = ', 's');
fprintf('Tolerncia de |x(k) - x(k-1)|:\n');
E = input('E = ', 's');
fprintf('Aproximao inicial:\n');
x0 = input('x(0) = ', 's');
x1 = input('x(1) = ', 's');
16
delta=str2num(delta);
x0=str2num(x0);
x1=str2num(x1);
E=str2num(E);
k=0;
x = x0;
fx0 = eval (fx);
x = x1;
fx1 = eval (fx);
if (abs(fx1)<delta)
k=0;
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x0);
elseif (abs(fx0)<delta)
k=1;
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x1);
else
fprintf('%s\n','---------------------------------------------------------');
fprintf('%s\n',' aproximao
f(x)
|x(k)-x(k-1)|
');
fprintf('%s\n','---------------------------------------------------------');
fprintf(' %2d
% 10.8f % 10.8f
\n',k,x0,fx0);
fprintf(' %2d
% 10.8f % 10.8f
\n',(k+1),x1,fx1);
xk = x1 - fx1*(x1-x0)/(fx1-fx0);
x = xk;
fxk = eval (fx);
k=2;
c = (xk-x1);
fprintf(' %2d
% 10.8f % 10.8f
% 10.8f \n',k,x,fxk,abs(c));
x0 = x1;
x1 = xk;
x = x0;
fx0 = eval (fx);
x = x1;
fx1 = eval (fx);
xk = x1 - fx1*(x1-x0)/(fx1-fx0);
c = abs(xk - x1);
x = xk;
fxk = eval (fx);
k=k+1;
fprintf(' %2d
%10.8f %10.8f
%10.8f \n',k,x,fxk,abs(c));
end
fprintf('\nRaz aproximada => x(%d) = %10.8f\n', k, x);
fprintf('%s\n','---------------------------------------------------------');
17
end