Sei sulla pagina 1di 38

MTODOS NUMRICOS

APLICAO NO MATLAB



Professor: Lissandro Brito Viena
e-mail: lissandroviena@gmail.com
vienalissandro@yahoo.com.br
Site: www.ifba.edu.br/professores/lissandro
EQUAES ALGBRICAS LINEARES E MATRIZES

1) NOTAO MATRICIAL

Uma matriz consiste de um arranjo retangular de elementos.






A matriz que tem m linhas e n colunas tem dimenso m x n.

A matriz que possui apenas linhas ou colunas, denominada de
vetor linha ou vetor coluna respectivamente.


11 1n
n1 nn
a a
A
a a
(
(
=
(
(

EQUAES ALGBRICAS LINEARES E MATRIZES

Exemplo de matriz linha denominada de vetor linha:


Exemplo de matriz coluna denominada de vetor coluna:





Matriz quadrada aquela que o nmero de linhas igual ao nmero
de colunas. (m = n).

Matrizes quadradas so importantes no momento da resoluo de
um conjunto equaes algbricas lineares. Para tais sistemas, o
nmero de equaes (linhas) e o nmero de variveis (colunas)










1 n
b [b b ] =
1
m
c
c
c
(
(
=
(
(

Matrizes quadradas so importantes no momento da resoluo de
um conjunto equaes algbricas lineares. Para tais sistemas, o
nmero de equaes (linhas) e o nmero de variveis (colunas)
devem ser iguais para que exista apenas uma soluo.

Matriz simtrica: uma matriz do tipo quadrada em que os
elementos a
ij
= a
ji
.

Matriz diagonal: uma matriz do tipo quadrada em que todos os
elementos fora da diagonal principal so nulos.

Matriz identidade: matriz diagonal em que os elementos da
diagonal principal so iguais a 1.













Matriz triangular superior: aquela matriz em que os elementos
abaixo da diagonal principal so nulos.

Matriz triangular inferior: aquela matriz em que os elementos
acima da diagonal principal so nulos.

Para saber a dimenso de uma matruz no MATLAB usa-se o
seguinte comando (size):

[m, n] = size(matriz)

Representando equaes algbricas lineares na forma matricial

Considere o sistema 3 x 3 abaixo:
















Representando equaes algbricas lineares na forma matricial

Considere o sistema 3 x 3 abaixo:





O sistema acima pode ser representado pela seguinte notao:



A matriz denominada de matriz dos coeficientes, a matriz b
consiste de um vetor coluna de constantes e a matriz x consiste de
um vetor coluna de variveis.














11 1 12 2 13 3 1
21 1 22 2 23 2 2
31 1 32 2 33 3 3
a x a x a x b
a x a x a x b
a x a x a x b
+ + =


+ + =
`

+ + =
)
| || | | |
A x b =
Representando equaes algbricas lineares na forma matricial

Uma forma de resolver esse sistema multiplicar ambos lados pela
inversa da matriz dos coeficientes:






Para resolver equaes algbricas lineares com MATLAB aplica-se
o seguinte comando:



A segunda forma usar matriz inversa:























| || | | |
A x b =
| | | || | | | | |
| | | | | |
1 1
1
A A x A b
x A b

=
=
| | | |
x A \ b =
x inv(A) b =
NOES SOBRE ELMINAO DE GAUSS

Para explicar o procedimento de resolver equaes algbricas
lineares pela eliminao de Gauss, o exemplo seguinte ser usado:





O primeiro passo na soluo do sistema multiplicar a primeira
equao por 0,1/3 e subtraia da segunda, resultando em:


Ao multiplicar a primeira equao por 0,3/3 e subtrair da ltima
equao resulta no seguinte sistema:



























1 2 3
1 2 3
1 2 3
3x 0,1x 0, 2x 7,85
0,1x 7x 0, 3x 19, 3
0, 3x 0, 2x 10x 71, 4
=
+ =
+ =
2 3
7, 0033x 0, 293333x 19, 5617 =
NOES SOBRE ELMINAO DE GAUSS





Para completar a operao, x
2
deve ser removida da terceira
equao restando apenas x
3
que pode ser encontrada
facilmente.







Aps isso, necessrio retornar nas outras equaes para
calcular as outras variveis.




































1 2 3
2 3
2 3
3x 0,1x 0, 2x 7,85
7, 0033x 0, 293333x 19, 5617
0,19x 10, 0200x 70, 6150
=
=
+ =
1 2 3
2 3
3
3x 0,1x 0, 2x 7,85
7, 0033x 0, 293333x 19, 5617
10, 0120x 70, 0843
=
=
=
3
70, 0843
x 7, 00003
10, 0120
= =
NOES SOBRE ELMINAO DE GAUSS

Aps isso, necessrio retornar nas outras equaes para
calcular as outras variveis.

function [a_ampliada,x] = eliminagauss_lissandro(a,b)
% a- matriz dos coeficientes
% b - matriz dos termos independentes
% x- vetor das variveis
[m,n]=size(a);
nb=n+1;
a_ampliada=[a b];
for k=1:(n-1)
for h=(k+1):(n)
a_ampliada(h,k:nb)=((a_ampliada(h,k))/(a_ampliada(k,k)))*a_ampliada(k,k:nb)- a_ampliada(h,k:nb);
end

end
x=zeros(n,1); % define inicialmente um vetor soluo de zeros, para depois serem atualizados
% serve tambm para estabelecer que o vetor soluo do tipo coluna
x(n)=a_ampliada(n,nb)/a_ampliada(n,n);
for l=n-1:-1:1
for g =((l+1):n)

x(l)=(a_ampliada(l,nb))/(a_ampliada(l,l))-((a_ampliada(l,l+1:n))*x(l+1:n))/((a_ampliada(l,l)));
end

end



































MTODOS ITERATIVOS

Os mtodos iterativos ou mtodos aproximados constituem um
caminho alternativo aos mtodos de eliminao.

Sistemas lineares Gauss Seidel

o mtodo iterativo mais comumente usado para resolver equaes
algbricas lineares. Assuma que foi fornecido um conjunto de n
equaes na forma:



Para entender melhor esse mtodo, limitaremos o sistema a 3 x 3:









































| || | | |
A x b =
MTODOS ITERATIVOS





Se os elementos da diagonal so todos no nulos, a primeira
equao pode ser resolvida para x
1,
a segunda equao para x
2
, e a
terceira

para x
3
.








































11 1 12 2 13 3 1
21 1 22 2 23 3 2
31 1 32 2 33 3 3
a x a x a x b
a x a x a x b
a x a x a x b
+ + =

+ + =

+ + =

j 1 j 1
j
1 12 2 13 3
1
11
j j 1
j
2 21 1 23 3
2
22
j j
j
3 31 1 32 2
3
33
b a x a x
x
a
b a x a x
x
a
b a x a x
x
a


=

=

=
MTODOS ITERATIVOS

Em que j e j-1 so iterao atual e a anterior respectivamente.

Para comear o processo uma estimativa chute inicial deve dado
para o valor das variveis. Uma aproximao simples considerar
que todos valores so nulos.

Para a convergncia necessrio que:



Exemplo prtico: Use o mtodo de Gauss Seidel para obter a
soluo do seguinte sistema:










































j j 1
i i
x x

s c
MTODOS ITERATIVOS





A soluo para o sistema :[3 -2.5 7]

Soluo: Inicialmente deve-se resolver cada equao para varivel
da diagonal principal.









































1 2 3
1 2 3
1 2 3
3x 0.1x 0.2x 7,85
0,1x 7x 0, 3x 19, 3
0, 3x 0, 2x 10x 71, 4
=

+ =

+ =

2 3
1
1 3
2
1 2
3
7,85 0.1x 0.2x
x
3
19, 3 0,1x 0, 3x
x
7
71, 4 0, 3x 0, 2x
x
10
+ +
=
+
=
+
=
MTODOS ITERATIVOS

Assumindo x
2
e x
3
iguais a zero e substituindo na primeira equao
para calcular a varivel x
1
.



O valor acima juntamente com o valor definido para x
3
, encontra-se
a varivel x
2
.




A primeira iterao finalizada substituindo os valores x
1
e x
2
para
o clculo de x
3
.

O slide seguinte mostra o clculo.









































2 3
1
7,85 0.1x 0.2x 7,85 0,1 (0) 0, 2 (0)
x
3 3
+ + + +
= =
1 3
2
2
19, 3 0,1x 0, 3x 19, 3 0,1 (2, 616667) 0, 3 (0)
x
7 7
x 2, 794524
+ +
= =
=
MTODOS ITERATIVOS
O valor da varivel x
3
pode ser calculado da seguinte forma:







Para a segunda iterao, tem-se que:













































( ) ( )
1 2
3
3
3
71, 4 0, 3x 0, 2x
x
10
71, 4 0, 3 2, 616667 0, 2 2, 794524
x
10
x 7, 005610
+
=
+
=
=
2 3
1
1
1
7,85 0.1x 0.2x
x
3
7,85 0,1 ( 2, 794524) 0, 2 (7, 005610)
x
3
x 2, 990557
+ +
=
+ +
=
=
MTODOS ITERATIVOS
Para a segunda iterao, tem-se que:













































2 3
1
1
1
7,85 0.1x 0.2x
x
3
7,85 0,1 ( 2, 794524) 0, 2 (7, 005610)
x
3
x 2, 990557
+ +
=
+ +
=
=
O valor da varivel x
2
na segunda iterao:
1 3
2
2
2
19, 3 0,1x 0, 3x
x
7
19, 3 0,1 ( 2, 990557) 0, 3 (7, 005610)
x
7
x 2, 499625
+
=
+
=
=
MTODOS ITERATIVOS
O valor da varivel x
3
na segunda iterao:








OBS: A CADA NOVO VALOR DE x CALCULADO PELO
MTODO DE GAUSS-SEIDEL IMEDIATAMENTE
USADO NA PRXIMA EQUAO PARA ENCONTRAR O
OUTRO VALOR DE x.
























































( ) ( )
1 2
3
3
3
71, 4 0, 3x 0, 2x
x
10
71, 4 0, 3 2, 990557 0, 2 2, 499625
x
10
x 7, 000291
+
=
+
=
=
MTODOS ITERATIVOS

























































function x = gseidel(a,b,es,maxit)
% x=gseidel(a,b)
% a- matriz dos coefientes
% b- matriz dos termos independentes
% es - critrio de parada
% maxit - mxima quantidade de iteraes
% x - vetor com a soluo do sistema de equaes
% error - funo matlab que mostra
%uma mensagem de erro e cancela a funo
% nargin - nmero de argumentos de
%entrada de uma determinada funo.
MTODOS ITERATIVOS


























































%BIBLIOTECA DE FUNES DO MATLAB COM AS RESPECTIVAS
APLICAES

% error - funo matlab que mostra uma mensagem de erro e cancela a funo
% nargin - nmero de argumentos de entrada de uma determinada funo. O
% nargin retorna o nmero de argumentos de entrada que foi usado para
% chamar a funo.
% nargout - retorna o nmero de argumentos de sada da funo.
% isempty - isemty(y) retorna 1 se y um array sem elemento e 0 caso
% contrrio

if nargin<2
error('pelo menos dois argumentos de entrada so necessrios')
end
if nargin <4 || isempty(maxit)
maxit=50;
end
if nargin<3 ||isempty(es)
es = 0.00001;
end
MTODOS ITERATIVOS


























































[m,n]=size(a);
if m~=n
error('a matriz deve ser quadrada')
end
c=a;
% x=xp;
for i =1:n
c(i,i)=0;
x(i)=0;
end
x=x';
for i=1:n
d(i)=b(i)/a(i,i);
end


for i=1:n
c(i,1:n)=c(i,1:n)/a(i,i);
end
iter = 0;
ea=1;
% format long
while ea>=es
xvelho=x;
for i=1:n
x(i)=d(i)-c(i,:)*x;
if x(i)~=0
ea(i)=abs(x(i)-xvelho(i));
end
iter=iter+1;
end
x
end

MTODOS ITERATIVOS

MTODO DE NEWTON-RAPHSON

A expanso em srie de Taylor de primeira ordem dada por:









A equao acima corresponde ao mtodo de Newton Raphson para
apenas uma equao.

















































( ) ( )
'
i 1 i i 1 i i
f x f x (x x )f (x )
+ +
= +
Estimativa
inicial
Equivale ao ponto em que ocorre a interseco com eixo x. Nesse
ponto f(x
i+1
) = 0.
( )
i
i 1 i
'
i
f x
x x
f (x )
+
=
MTODO DE NEWTON-RAPHSON

























































1k 2k
1k 2k
1k 2k
1k 2k
1
1 1 2 1 1k 2k 1 1k
1
( x ,x )
1
2 2k
2
( x ,x )
2
2 1 2 2 1k 2k 1 1k
1
( x ,x )
2
2 2k
2
( x ,x )
f
f (x , x ) f (x , x ) (x x )
x
f
(x x ) 0
x
f
f (x , x ) f (x , x ) (x x )
x
f
(x x ) 0
x
c
~ +
c
c
+ =
c
c
~ +
c
c
+ =
c
MTODO DE NEWTON-RAPHSON
Na forma vetorial as equaes ficam da seguinte maneira:









Podemos resolver a equao acima para (x
1
, x
2
).



















































1k 2k
1 1
1 2 1 1 2 1 1k 2k 1 1k
2 1 2 2 1k 2k 2 2k 2 2
1 2
( x ,x )
f f
x x f (x , x ) f (x , x ) (x x )
f (x , x ) f (x , x ) (x x ) f f
x x
0
0
c c
(
(
c c
( ( (
(
~ + =
( ( (
c c
(

(
c c

(
(

1k 2k
1
1 1
1,k 1 1 2 1k 1 1k 2k
2,k 1
2k 2 1k 2k 2 2
1 2
( x ,x )
f f
x x x x f (x , x )
x
x f (x , x ) f f
x x

+
+
c c
(
(
c c (
( (
(
=
(
( (
c c
(


(
c c

MTODO DE NEWTON-RAPHSON
A seguir a notao resumida:



Em que a matriz jacobiana das funes do sistema de equaes
algbricas.

Podemos tambm fazer as seguintes consideraes sobre o mtodo
de Newton.

Considere a soluo de uma equao de uma nica varivel dada
por:



























































| | | | | | ( )
1
k
k 1 k K
x x J f x

+
( =

| |
J
f (x) c =
MTODO DE NEWTON-RAPHSON
Se x
o
a estimativa inicial da soluo e um pequeno desvio
da soluo correta, ento:



Expandindo o lado esquerdo da equao por srie de Taylor, tem-se
que:




Assumindo um erro muito pequeno resulta que:



Em que:
















































o
x A
o o
f (x x ) c + A =
( )
2
2
(0) (0) (0)
2
df 1 d f
f (x ) x x c
dx 2! dx
| |
| |
+ A + A =
| |
\ .
\ .
(0)
x A
(0)
(0) (0)
df
c x
dx
| |
A ~ A
|
\ .
( )
(0) (0)
c c f x A =
MTODO DE NEWTON-RAPHSON
O algoritmo de Newton Raphson ento colocado abaixo:









Para ilustrar a aplicao do mtodo de Newton-Raphson, o seguinte
exemplo ser utilizado:

















































( )
(k) (k)
c c f x A =
(k)
(k)
(k)
c
x
df
dx
A
A =
| |
|
\ .
(k 1) (k) (k)
x x x
+
= + A
( )
3 2
f x x 6x 9x 4 = +
MTODO DE NEWTON-RAPHSON

Inicialmente calcula-se a derivada da funo:






















































( )
3 2
2
f x x 6x 9x 4
df
3x 12x 9
dx
= +
= +
( )
(0) (k)
(0) 3 2
c c f x
c 0 6 6(6) 9(6) 4 50
A =
(
A = + =

( ) ( )
0
2 df
3 6 12 6 9 45
dx
| |
= + =
|
\ .
(0)
(0)
0
c 50
x 1,1111
45
df
dx
A
A = = =
| |
|
\ .
MTODO DE NEWTON-RAPHSON

O resultado no final da primeira iterao :




As iteraes subsequentes resultam em:





















































(1) (0) (0)
(1)
x x x
x 6 1,1111 4,8889
= + A
= =
(2) (1) (1)
(3) (2) (2)
(4) (3) (3)
(5) (4) (4)
13, 4431
x x x 4,8889 4, 2789
22, 037
2, 9981
x x x 4, 2789 4, 0405
12, 5797
0, 3748
x x x 4, 0405 4, 0011
9, 4914
0, 0095
x x x 4, 0011 4, 000
9, 0126
= + A = =
= + A = =
= + A = =
= + A = =
MTODO DE NEWTON-RAPHSON

Agora considere o problema que envolve uma quantidade maior de
variveis:






























































1 1 2 n 1
2 1 2 n 2
n 1 2 n n
f (x , x , x ) c
f (x , x , x ) c
f (x , x , x ) c
=
|
|
=
|
|
|
=
.
MTODO DE NEWTON-RAPHSON
Aplicando srie de Taylor e desprezando os termos de ordem
elevada resulta em:









Colocando na forma matricial:















































1 2 n
1 2 n
(0) (0) (0) (0)
1 1 1
1 1
1 2 n
(0) (0) (0) (0)
n n n
n n
1 2 n
f f f
f x x x c
x x x
f f f
f x x x c
x x x
| | | | | |
c c c
+ A + A A =
| | |
c c c
\ . \ . \ .
| | | | | |
c c c
+ A + A A =
| | |
c c c
\ . \ . \ .
MTODO DE NEWTON-RAPHSON

Colocando na forma matricial:









Numa forma mais compacta, a notao seguinte torna-se mais
apropriada.
























































1
1
n
n
(0) (0) (0)
1 1 1
(0)
0 1 2 n
1
0
n
(0)
(0) (0) (0)
n n n
1 2 n
f f f
x x x x
c f (x)
c f (x)
x
f f f
x x x
(
| | | | | |
c c c
(
| | |
(
A c c c
(
\ . \ . \ .
(

(
(
(
(
(
=
(
(
(
(
(
(

A
(
| | | | | |
c c c
(
| | |
(
c c c
\ . \ . \ .

| | | | | |
(k) (k) (k)
C J x A = A
MTODO DE NEWTON-RAPHSON

Colocando na forma matricial:







A atualizao das variveis feita da seguinte maneira:































































| | | | | |
| | | | | |
(k) (k) (k)
(k) 1(k) (k)
C J x
x J C

A = A
A = A
| | | | | |
k 1 k (k)
x x x
+
= + A
MTODO DE NEWTON-RAPHSON

Em que:













- MATRIZ JACOBIANA








































































| |
| |
( )
( )
( )
(k)
1
(k)
(k)
2
(k)
n
(k)
1 1
(k)
(k)
2 2
(k)
n n
x
x
x
x
c f
c f
C
c f
(
A
(
A
(
A =
(
(
A

(

(
(
A =
(
(
(


(k) (k) (k)
1 1 1
1 2 n
(k)
(k) (k) (k)
n n n
1 2 n
f f f
x x x
J
f f f
x x x
(
| | | | | |
c c c
(
| | |
c c c
(
\ . \ . \ .
(
(
(
=

(
(
| | | | | |
c c c
(
| | |
(
c c c
\ . \ . \ .

(k)
J
(

MTODO DE NEWTON-RAPHSON

Exemplo de aplicao do mtodo de Newton-Raphson

1) Encontre a soluo do seguinte sistema de equaes




Passo 1: Construo da matriz jacobiana




Passo 2: Preparar o algoritmo





















































































1
2 2
1 2
x
2
x x 4
e x 1
+ =
+ =
1
1 2
x
2x 2x
j
e 1
(
=
(

MTODO DE NEWTON-RAPHSON
Exemplo de aplicao do mtodo de Newton-Raphson
deltax=1; % incremento da varivel ajustado em um valor alto
x=input('Entre com a estimativa inicial -> ');
iter = 0;
disp(' iter deltac j deltax x')
while abs(deltax)>0.0001 & iter<100
iter=iter+1;
deltac=0-(x^3-6*x^2+9*x-4);
j=3*x^2-12*x+9;
deltax=deltac/j;
x=x+deltax;
% fprintf('%g', iter)
disp([iter , deltac, j, deltax, x])
end



























































































MTODO DE NEWTON-RAPHSON
Exemplo de aplicao do mtodo de Newton-Raphson
iter = 0;
x=input('Entre com a estimativa inicial da soluo - vetor coluna x=[x1;x2] - >
');
deltax=[1;1];
c=[4;1];
disp('iter deltac jacobiana deltax x')
while max(abs(deltax))>=0.0001 & iter<10
iter=iter+1;
f=[x(1)^2+x(2)^2; exp(x(1))+x(2)];
deltac=c-f;
j=[2*x(1) 2*x(2);exp(x(1)) 1];
deltax=j\deltac;
x=x+deltax;
fprintf('%g', iter)
disp([ deltac, j, deltax, x]



























































































MTODO DE NEWTON-RAPHSON
Exemplo de aplicao do mtodo de Newton-Raphson
Atividade: Partindo com valores iniciais x
1
, x
2
, x
3
resolva o
seguinte sistema de equaes pelo mtodo de Newton Raphson:




























































































2 2 2
1 2 3
2
1 2 2 3
1 1 3 2 3
x x x 11
x x x 3x 3
x x x x x 6
+ =
+ =
+ =