You are on page 1of 37

CENTRO FEDERAL DE EDUCAO TECNOLGICA DE

MINAS GERAIS

Mestrado em Engenharia Eltrica

THASA RODRIGUES LOBACK DURES

2a LISTA DE EXERCCIOS:
Sistemas Lineares

Belo Horizonte
16 deabril de 2015

1. Introduo
Os mtodos numricos bem consolidados para a soluo de sistemas lineares de
equaes lineares esparsas e de grande porte so divididos em mtodos diretos e
interativos. Os mtodos diretos fornecem uma soluo em um nmero fixo de passos,
sujeitos apenas a erros de arredondamento. J os mtodos iterativos, partem de um valor
inicial utilizado como soluo e gera apartir desse ponto uma sequncia de vetores que
converge para a soluo verdadeira do problema.
Na maioria das aplicaes, os mtodos iterativos superam os mtodos diretos
tradicionais, por solucionarem de forma mais eficiente os sistemas lineares de grande
porte, com reduzida capacidade de armagem e menor esforo computacional.
Este relatrio tem o objetivo de demonstrar e testar computacionalmente os
mtodos diretos de decomposio LU, Cholesky, o refinamento desses mtodos, bem
como os mtodos iterativos estacionrios de Jacobi, Gauss-Seidel e a aplicao de cada
um desses mtodos. Pesquisa-se, ainda, sobre mtodos mais especficos e/ou complexos
de obteno da soluo de sistemas lineares, visando o ganho de preciso e o menor
dispndio de processamento computacional em cada caso aplicvel. Utiliza-se o Matlab
para implementao dos mtodos sem a utilizao das funes aplicveis existentes.
Essas funes so, em alguns casos, utilizados para comprovar a eficincia de
determinado mtodo.

2. Exerccios Propostos
Desenvolva algoritmos em C ou MATLAB (escolha livre) para:
1. Soluo de SL de ordem nxn usando decomposio LU com pivotao parcial.
Calcular o determinante.
2. Decomposio de Cholesky
3. Refinamento de soluo de SL (nxn).
4. Calculo da inversa de uma matriz (nxn).
5. Soluo de SL de ordem nxn usando o mtodo iterativo de Jacobi.
6. Soluo de SL de ordem nxn usando o mtodo iterativo de Gauss Seidel.
7. Determinao do maior e do menor auto-valor de uma matriz e calculo do
numero de condicionamento.
8. Determinao de autovalores e autovetores utilizando uma das tcnicas
estudadas.
9. Pesquise sobre sistemas tridiagonais e desenvolva um mtodo para sua soluo.
10. Pesquisa sobre a tcnica de soluo de SL chamada GMRES
11. Estude a resposta dinmica (estvel/no estvel (encontrar e avaliar os
autovalores)) de um sistema real (o aluno dever propor e descrever
completamente o sistema).
TODAS AS QUESTES DEVEM SER BEM COMENTADAS
PARAS OS ALGORTIMOS DESENVOLVIDOS EM MATLAB NO PERMITIDO
O USO DE FUNES PRONTAS (inv, solve, eig, etc).
2

3. Resoluo
1 Exerccio: Decomposio LU com pivotao parcial
Um sistema linear Ax=b pode ser solucionado pelo Mtodo da Decomposio
LU ncom pivotao parcial. Esse mtodo consiste na decomposio da matriz A nas
matrizes L e U, sendo L uma matriz triangular ingerior unitria e a matriz U,
triangular superior sem os elementos da diagonal principal.
Da mesma forma que no Mtodo de Eliminao de Gauss, utiliza-se a estratgia
da pivotao parcial para evitar um piv nulo e que os multiplicadores mij tenham
valores muito grandes. Na pivotao parcial, escolhe-se o maior elemento em mdulo
na coluna dos elementos a serem eliminados, atravs da troca de equaes, para
transformao da matriz A em uma triangular superior. Para tanto, utiliza-se uma matriz
de permutaes P para armazenar as trocas de equaes realizadas. Ento a
decomposio passa a ser da forma PA=LU. Obtm-se, portanto, um sistema na
forma LUx=Pb.
Fazendo Ux=y e Ly=Pb, o problema se transforma inicialmente numa
resoluo de um sistema triangular inferior, seguida da resoluo de um sistema
triangular superior.
O mtodo tambm possibilita o clculo do determinante da matriz A.
Asmesmas propriedades utilizadas no Mtodo de Eliminao de Gauss podem ser
utilizadas:
det() =

det() det()
det()

De forma que se tem uma equao final:

det() =

(1)

,
=1

em que " " so os elementos piv, n a ordem da matriz A e t o nmero


de trocas de linhas necessrias para transformar a matriz de permutaes P em uma
matriz identidade.
A funo de Matlab elaborada para implementao do Mtodo da Decomposio
LU com pivotao e o clculo do determinante mostrada a seguir:

function [L,U,P,PB,X,delta] = decompLU(A,B)


% Funo para solucionar o sistema AX=B e calcular o determinante de A
% pela decomposio LU
ordem = size(A); % Ordem da matriz
% Inicializao de variveis
p= zeros(1,ordem(1,2));
m=zeros(ordem);
a=A;
U=zeros(ordem);
L=eye(ordem);
P=eye(ordem);
for j=1:(ordem(1,1))
% Nova Inicializao
oa=size(a); %ordem de "a"
la=oa(1,1); %linhas de "a"
ca=oa(1,2); %colunas de "a"
linhapivo=1;
pos = abs(a(1,1));
% Identificao do elemento piv e sua posio
for r=1:la
if abs(a(r,j))>=pos
pos=abs(a(r,j));% Identificao do piv
if lembra~=pos
linhapivo=r; %Linha do piv
end
end
end
p(1,j)= linhapivo; % Indices das linhas pivotais para cada "j"
% Obteno de cada linha da Matriz Triangular Superior "U"
U(j,:)=a(linhapivo,:);
% Clculo dos fatores multiplicadores m e Obteno da Submatriz "a"
for k=1:la
if k~=linhapivo
m(k,j)=-a(k,j)/pivo;
a(k,:)= m(k,j).*a(linhapivo,:)+a(k,:);
end
end
% Modificao da ordem de "a"
aux=a;
a=zeros(la-1,ca);
for k=1:la
if k~=linhapivo
a(k,:)=aux(k,:);
end
end
end
% Obteno dos elementos da Matriz Triangular Inferior "L"
lembra=zeros(ordem);
for j=1:(ordem(1,1))
for r=1:(ordem(1,1))
if r>j
L(r,j)= -m(p(1,r),j);
end
end
% Obteno da Matriz de Permutaes "P"
lembra(j,:)= P(p(1,j),:);
end
P=lembra;
PB=P*B;
% Resoluo do Sistema Triangular Inferior
y=STinferior(L,PB);
% Resoluo do Sistema Triangular Superior
X=STsuperior(U,y);
% Clculo do Determinante de "A"
t=0;
o=p;
delta=1;
for n=1:(ordem(1,1))
[minimo,pos]=min(o(1,n:ordem(1,1)));
pos=pos+t;
if o(1,n) > minimo
lembre = o(1,n);
o(1,n)=minimo;
o(1,pos)=lembre;
t=t+1;
end
delta=U(n,n).*delta;
delta=(-1)^t.*delta;
end
end

Para a resoluo dos sistemas triangular inferior e superior foram criadas em


Matlab as funes mostradas a seguir:
function [x] = STinferior(L,c)
%Essa funo resolve o Sistema Linear Inferior Lx=c, com L e c fornecidas
%pelo usurio. O Mtodo utilizado o das Substituies Sucessivas
ordem = size(L);
n= ordem(1,1);
x(n)=c(1)./L(1,1);
for i=2:n
soma=0;
for j=1:i-1
soma=soma+L(i,j).*x(j);
end
x(i)=(c(i)-soma)./L(i,i)
end
end

function [x] = STsuperior(U,d)


%Essa funo resolve o Sistema Linear Superior Ux=d, com U e d fornecidas
%pelo usurio. O Mtodo utilizado o das Substituies Retroativas
ordem = size(U);
n= ordem(1,1);
x(n)=d(n)./U(n,n);
for i=n-1:-1:1
soma=0;
for j=i+1:n
soma=soma+U(i,j).*x(j);
end
x(i)=(d(i)-soma)./U(i,i)
end
end

2 Exerccio: Decomposio Cholesky


O Mtodo de Decomposio Cholesky uma outra tcnica para a resoluo de
um sistema linear Ax=b. O mtodo s aplicvel se a matriz A for simtrica (A
igual a sua transposta) e definida positiva, isto , todos os autovalores da matriz so
positivos:
> 0,

Neste mtodo a matriz A decomposta na multiplicao de uma matriz


triangular inferior L por sua respectiva transposta. Os elementos da matriz L so
obtidos pela seguintes frmulas:
Para os elementos da diagonal principal:
1

= 2 ,

= 1,2, ,

=1

Para os elementos abaixo da diagonal principal de L (mesmos elementos


acima da diagonal principal da transposta):
1

=1
=
, = 1,2, , 1 = + 1, + 2, , ,

em que n a ordem da matriz A, aij so seus elementos e lij,elementos da


matriz L.
Fazendo = e = , essa tcnica tambm faz o sistema se
transformar numa resoluo de um sistema triangular inferior, seguida da resoluo de
um sistema triangular superior. As resoluesso realizadas pelas seguintes equaes:
1
=1
=
, = 1,2, ,

=+1
=
, = , 1, ,1

em que n a ordem da matriz A, lijso elementos da matriz L, bi so


elementos da matriz B, yi so elementos da matriz y e, finalmente, xi so os
elementos procurados da matriz x.
Se em um sistema de equaes algbricas Ax = b , A for matriz no singular,
pode-se transformar o sistema no sistema equivalente Cx = d, com C = ATA; d = ATb,
onde AT a transposta de A. Dessa forma, o ltimo sistema sempre poder ser resolvido
pelo processo de Cholesky (isto , a matriz C satisfaz as condies para a aplicao do
mtodo). Portanto, implementa-se esse mtodo alternativo para que o Mtodo de
Cholesky seja aplicvel a uma maior variedade de sistemas lineares.
A funo de Matlab elaborada para implementao do Mtodo Cholesky para
sistema linear definido positivo mostrada a seguir:
function [L,LT,y,X,r] = Cholesky(A,B)
% Essa funo resolve o sistema AX=B decompondo a matriz "A" na
% multiplicao das matrizes L e LT.
% L uma matriz triangular inferior e LT, sua respectiva matriz
% transposta.
ordem=size(A); % ordem de A
nlinhas=ordem(1,1); % nmero de linhas da matriz A
y=zeros(nlinhas,1);
X=y;
% Teste da simetria e definio positiva da matriz A
if A~= transp(A) C=transp(A)*A;
A=C;
d=transp(A)*B;
B=d;
end
auto=eig(A);
nauto=size(auto);
for k=1:nauto(1,1)
if auto(k,1)<0
disp ('ERRO: essa matriz no definida positiva e esse teorema no compatvel')
end
end
x=0;
L=zeros(ordem);
for j=1:nlinhas
L(j,j)=sqrt(A(j,j)-x);
for i=j+1:nlinhas
if i~=j
L(i,j)= (A(i,j)-sum(L(i,1:j-1).*L(j,1:j-1)))/L(j,j);
x=sum(L(j,1:j-1).^2);
end
end
LT=transp(L);
end
% Resoluo do Sistema AX=B
% Sistema Triangular Inferior Ly=B
y(1,1)=B(1,1)/L(1,1);

for i=2:nlinhas
soma=0;
for j=1:(i-1)
soma= L(i,j)*y(j,1)+soma;
end
y(i,1)=(1/L(i,i))*(B(i,1)-soma);
end
% Sistema Triangular Superior LT*X=y
X(nlinhas,1)=y(nlinhas,1)/L(nlinhas,nlinhas);
for i=(nlinhas-1):-1:1
soma=0;
for j=(i+1):nlinhas
soma= L(j,i)*X(j,1)+soma;
end
X(i,1)=(1/L(i,i))*(y(i,1)-soma);
% Erro
r=B-A*X;
end

3 Exerccio: Refinamento da soluo de Sistemas Lineares


A tcnica de Refinamento da soluo de Sistemas Lineares utilizada para
melhorar a soluo obtida nos Mtodos de Decomposio LU, Cholesky e LDLT. Nessa
tcnica, utiliza-se um vetor temporrio t, obtido pelo mtodo das substituies
sucessivas, e x0, calculado pelas substituies retroativas, a soluo encontrada por
um dos mtodos de decomposio citados.
Para a decomposio LU, realiza-se a seguinte sequncia numrica:
0 = = 0 =
= 0, 1, 2,
= = =

x k+1 = x k + c k
em que k o nmero de iteraes, interrompidas por um critrio de
parada, +1 a soluo melhorada de x aps o refinamento e c k um vetor de
correo.
No caso da decomposio de Cholesky, basta usar em vez de U e P=I
nas equaes da sequncia acima.
A funo de Matlab elaborada para implementao do Refinamento de Soluo
de Sistemas Lineares mostrada a seguir:

function [X,r] = Refin(A, B)


% Essa funo escolhe entre o mtodo LU e o de Cholesky,
% o mais apropriado de acordo com o tipo da matriz (simtrica e definida
% positiva). Em seguida, faz o refinamento da soluo, qualquer um que seja
% dos doois mtodos utilizados
% Escolha pelo mtodo LU ou Cholesky
%Clculos e Valores Iniciais para Refinamento
auto=eig(A);
nauto=size(auto);
% Teste de Simetria e Definio Positiva da Matriz A (Escolha por Choleky):
if A==transp(A)
for k=1:nauto(1,1)
if auto(k,1)>0
disp('Mtodo Utilizado: Cholesky');
[L,LT,y,X,r] = Cholesky(A,B);
c=1;
C=ones(size(B));
ordem=(size(C));
for w=1:20
while c>=10^(-19)
r=B-A*X;
C=(L*LT)\r;
for n=1:ordem(1,2)
if c > abs(C(n,1))
c= abs(C(n,1));
end
end
X=X+C;
end
end
end
end
else
% Escolha por LU
disp('Mtodo Utilizado: LU')
[L,U,P,PB,x,delta] = LU(A,B);
X=x;
c=1;
C=ones(size(B));
ordem=(size(C));
for w=1:20
while c>=10^(-19)
r=B-A*X;
C=(L*U)\P*r;
for n=1:ordem(1,2)
if c > abs(C(n,1))
c= abs(C(n,1));
end
end
X=X+C;
end
end
end
end

Implementa-se tambm uma funo de Matlab elaborada para a implementao


do Refinamento de Soluo por Cholesky que engloba tambm as matrizes assimtricas:
function [X,r,k] = RefCholesky(A, B)
% Essa funo realiza o refinamento do mtodo de Cholesky
for k=1:nauto(1,1)
if auto(k,1)>0
disp('Mtodo Utilizado: Cholesky');
[L,LT,y,X,r] = Cholesky(A,B);
c=1;
C=ones(size(B));
ordem=(size(C));
for w=1:50
if c>=10^(-19)
r=B-A*X;
C=(L*LT)\r;
for n=1:ordem(1,2)
if c > abs(C(n,1))
c= abs(C(n,1));
end
end
X=X+C;
end
end
end
end
end

4 Exerccio: Clculo da Matriz Inversa


A matriz inversa A-1 de uma matriz Asatisfaz seguinte propriedade:
1 = ,
11
21
[
1

12
22

1 11
2 21
][
1

12
22

1
1 0
2
0 1
] = [

0 0

0
0
]

1

onde n a ordem da matriz A, so os elementos da matriz A e , os


elementos da matriz V=A-1, usado para simplificar a notao. A matriz inversa V ,
ento, calculada atravs da resoluo dos n sistemas lineares da forma:
= ,

= 1,2, ,

onde e so as -simas colunas das matrizes inversa e identidade,


respectivamente. Como a matriz dos coeficientes a mesma para os n sistemas,
realizou-se, nesse trabalho, a decomposio de A por Cholesky no caso em que A
fosse simtrica definida positiva ou LU se A no fosse simtrica. Em seguida foram
calculados os n vetores que compem a inversa atravs dos mtodos das substituies
sucessivas e retroativas.
A seguir so mostradas as funes de Matlab elaboradas para implementao do
clculo de matriz inversa pelo Mtodo LU e pelo Mtodo de Cholesky:
function [V] = InvLU(A)
% Essa funo calcula a inversa da matriz A, dada pelo usurio,
% pelo Mtodo LU.
ordem=size(A);
n=ordem(1,1);
V=zeros(ordem);
I=eye(ordem);
% Verificao se a Matriz Quadrada
if ordem(1,1)~=ordem(1,2)
disp('ERRO: essa matriz no quadrada, portanto a funo no aplicvel')
else
for i=1:n
[L,U,P,PB,X,delta]=decompLU(A,I(:,i));
V(:,i)=X(:,1);
end
end
end

function [V] = InvCholesky(A)


% Essa funo calcula a inversa da matriz A, dada pelo usurio,
% pelo Mtodo de Cholesky
ordem=size(A);
n=ordem(1,1);
V=zeros(ordem);
I=eye(ordem);
% Verificao se a Matriz Quadrada
if ordem(1,1)~=ordem(1,2)
disp('ERRO: essa matriz no quadrada, portanto a funo no aplicvel')
else
for i=1:n
[L,LT,y,X,r]= Cholesky(A,I(:,i));
V(:,i)=X(:,1);
end
end
end

5 Exerccio: Mtodo iterativo de Jacobi


Ao contrrio dos mtodos diretos, em que as operaes so realizadas apenas
uma vez, os mtodos iterativos so assim chamados por repetir uma srie de operaes
vrias vezes.Os mtodos iterativos so mais econmicos que os mtodos diretos por
utilizarem menos a memria do computador.Alm disso, possuem a vantagem de se
auto corrigir se um erro cometido. Eles fornecem uma sequncia de aproximantes da
soluo, cada uma das quais obtidas das anteriores.
Na resoluo de um sistema linear Ax=b, os mtodos iterativos utilizam uma
soluo inicial x0, a partir da qual gerada uma sequncia de vetores, obtida por uma
srie de operaes repetida vrias vezes. As operaes so interrompidas apenas por um
critrio de parada devidamente estabelecido, seja pelo nmero mximo de iteraes e
seu custo computacional, seja pelo menor valor de erro aceitvel. A equao utilizada
para essas operaes mostrada a seguir:
+1 = + ,
em que k o nmero de cada iterao do mtodo, M a matriz de iterao e
c um vetor constante.Quando a matriz M for fixa, ou seja, no sofrer alterao
durante o processo, o mtodo iterativo chamado estacionrio. Dessa forma, cada
aproximante obtido do anterior sempre pelo mesmo processo. Nesse exerccio o
mtodo iterativo estacionrio alvo de estudo o mtodo de Jacobi. O exerccio posterior
implementa outro desse tipo de mtodo, o de Gauss-Seidel.
No Mtodo de Jacobi, a matriz A do sistema a ser resolvido (Ax=b) deve ser
decomposta em trs outras matrizes:
= + + ,

onde D uma matriz diagonal e E e F so matrizes com diagonais nulas,


triangular inferior e superior respectivamente. Portanto, escreve-se o sistema da seguinte
forma:
( + + ) = = ( + ) +

para o processo iterativo, tm-se portanto:


+1 = (1 ( + )) + 1 +1 = + ,
tal que a matriz = 1 ( + ) a matriz de iterao do Mtodo de Jacobi,
que pode ser escrito da seguinte forma matricial:

10

1+1

21
22
+1 =
31
3

33

1
+1

[
] [
2+1

12
11
0

32
33

13
11
23

22

,1

1
1 1
11
11

2 2
2

22
22
3 3 + 3

33
33

0
] [ ] [ ]

+1
Nos mtodos iterativos desse trabalho utilizado 0 = 0 como valor inicial.
Portanto, tm-se:
1 = 1 =
0 =

A funo de Matlab elaborada para implementao do Mtodo iterativo de


Jacobi mostrada a seguir:
function [x,k] = Jacobi(A,B,eps,kmax)
% Resolve o sistema Ax=B pelo Mtodo de Jacobi, com critrio de parada
% estabelecido pelo erro ou pelo nmero mximo de iteraes, fornecidos
% pelo usurio.
ordem=size(A);
n=ordem(1,1);
J=zeros(ordem);
X=zeros(n,kmax);
Xk=X;
c=zeros(n,1);
for i=1:n
r=1/A(i,i);
for j=1:n
if i~=j
J(i,j)= -A(i,j)*r;
end
end
c(i,1)= B(i,1)*r;
X(i,1)= c(i,1);
end
for k=1:kmax
Xk(:,k)=J*X(:,k)+c;
%Critrio de parada
difer=Xk(:,k)-X(:,k);
num=norm(difer,inf);
den=norm(Xk(:,k),inf);
cp=num/den;
X(:,k+1)=Xk(:,k);
ifcp<=eps
x=X(:,k);
break;
end
end
end

11

6 Exerccio: Mtodo iterativo de Gauss-Seidel


Como descrito no exerccio anterior, o Mtodo de Gauss-Seidel tambm um
processo iterativo estacionrio.
Na resoluo de Ax=b, a decomposio da matrz A na soma de trs matrizes
idntica ao do Mtodo de Jacobi. Os mtodos se diferem somente na converso do
sistema em processo iterativo, sendo diferentes as matrizes de iterao e os vetores
constantes, conforme mostrado a seguir:
+1 = (( + )1 ) + ( + )1 +1 = + ,
tal que a matriz = ( + )1 a matriz de iterao do Gauss-Seidel. Para
no utilizar a matriz inversa da matriz de iterao, o processo iterativo acima mostrado
de um modo mais prtico:
( + ) +1 = + +1 = +1 + ,
ou na forma matricial:

+1 =

0
21

1,1
[ 1

0
0

1,2
2

0
,1

0 1+1
0 2+1
+1
3
0

0] [+1 ]

+1
0
0

0
[0

12
0

0
0

13
23

1 1

2 2

3 + 3
0 1,

0
0 ] [ ] [ ]


Pode-se perceber que, enquanto +1, no Mtodo de Jacobi calculado usando
domente valores da iterao anterior, no mtodo de Gauss-Seidel, esse vetor obtido
a partir dos elementos mais recentes, incluindo os prprios +1 e .
A funo de Matlab elaborada para implementao do Mtodo iterativo de
Gauss-Seidel mostrada a seguir:

12

function [x,k] = Gausseidel(A,B,eps,kmax)


% Resolve o sistema Ax=B pelo Mtodo de Gauss-Seidel, com critrio de parada
% estabelecido pelo erro ou pelo nmero mximo de iteraes, fornecidos
% pelo usurio.
ordem=size(A);
n=ordem(1,1);
S=zeros(ordem);
X=zeros(n,kmax);
Xk=X;
d=zeros(n,1);
for i=1:n
r=1/A(i,i);
for j=1:n
if i~=j
S(i,j)=-A(i,j)*r;
end
end
d(i,1)= B(i,1)*r;
X(i,1)= d(i,1);
end
% Iteraes de Gauss-Seidel
for k=1:kmax
Xk(:,k)=X(:,k);
for i=1:n
X(i,k)=S(i,:)*X(:,k)+d(i,:);
end
%Critrio de parada
difer=X(:,k)-Xk(:,k);
num=norm(difer,inf);
den=norm(Xk(:,k),inf);
cp=num/den;
X(:,k+1)=X(:,k);
ifcp<=eps
x=X(:,k);
break;
else
if k==kmax
x=X(:,k);
end
end
end
end

7 Exerccio: Maior e Menor autovalor e nmero de condicionamento de


uma matriz
O maior autovalor de uma matriz pode ser obtido pelo Mtodo das Potncias e o
menor, pelo Mtodo das Potncias Inversas.
O Mtodo das Potncias determina o autovalor de maior valor absoluto de uma
matriz A, e seu correspondente autovetor, sem determinar o polinmio caracterstico. O
mtodo til na prtica desde que se tenha interesse em determinar apenas alguns
autovalores de mdulo grande, e que estejam bem separados, em mdulo, dos demais.
Podem surgir complicaes caso a matriz A no possua auto-vetores linearmente
independentes, pois o mtodo se baseia no seguintes teorema:
Teorema: Seja A uma matriz real de ordem n e sejam 1 , 2 ,..., seus autovalores e 1 ,2 , ..., seus correspondentes auto-vetores. Supondo-se que os autovetores so linearmente independentes, e que:
|1 | > |2 | . . . | |.
Seja a sequncia definida por:
+1 = , = 0, 1, 2,
13

onde 0 um vetor arbitrrio, que permite a expanso:

0 = ,

com escalares quaisquer e 1 0, ento:


(+1 )
= 1
( )
lim

onde o ndice r indica a r-sima componente. Alm disso, quando ,


tende ao auto-vetor correspondente a 1 .
No limite, todas as componentes de

(+1 )

tendem a 1 . Entretanto, na prtica,

( )

uma das componentes converge mais rapidamente do que as outras. Assim, quando uma
das componentes satisfizer a preciso desejada teremos o auto-valor procrado. Alm
disso, a velocidade de convergncia depende de

2
1

. Portanto, quando maior for |1 |,

quando comparado com |2 |, mais rpida ser a convergncia.


Para obtermos 1 com uma preciso , em cada passo, calcula-se aproximaes
para 1 usando a frmula anterior. O teste do erro relativo para cada componente de 1 ,
isto :
|+1
1 |
1
|1+1 |

< ,

usado como critrio de parada. Quando todas as componentes forem iguais,


ento o vetor dessa iterao o auto-vetor correspondente ao auto-valor 1 . Se
algum vetor resultar no vetor nulo, o mtodo falha. Tal ancontecimento deve ocorrer se
as hipteses no foram satisfeitas.
No teorema enunciado, feita a hiptese de 1 0. Se 1 = 0, ento,
teoricamente, o vetor converge para 2 . Entretanto, na prtica, para matrizes de
ordem 3, que satisfaam as demais condies do citado teorema, o mtodo
funciona sempre, pois, mesmo que o vetor 0 no tenha componentes na direo de 1 ,
e desde que o mtodo envolve a cada iterao uma diviso, os erros de arredondamento
da mquina faro com que 1 passe a ter componente nessa direo, aps uma ou duas
iteraes.
A desvantagem do mtodo das potncias que ele fornece apenas um auto-valor
de cada vez. Se todos os auto-valores so procurados, deve-se aplicar outros mtodos
que so muito mais eficientes.

14

Enquanto o mtodo das potncias determina o de maior, o Mtodo da Potncia


Inversa determina o auto-valor de menor valor absoluto e seu correspondente auto-vetor
de uma matriz A. O mtodo til na prtica, desde que se tenha interesse em determinar
apenas o auto-valor de menor mdulo e, que este esteja bem separado dos demais.
Novamente, o mtodo pode no funcionar caso a matriz A no possua auto-vetores
linearmente independentes. O mtodo da potncia inversa semelhante ao mtodo das
potmcias, com a diferena que agora assumimos:
|1 | |2 | . . . |1 | > | |,
e deseja-se determinar .
Sabe-se que se auto-valor de A, ento 1 auto-valor de 1. Alm disso,
1
se | | o menor auto-valor de A, ento |1
| o maior auto-valor de , pois assim
se tem o menor auto-valor, em mdulo, de A. Portanto, dado , constri-se dois outros
vetores +1 e +1 da seguinte forma:
+1 = 1
+1 =

+1
, +1 = max |(+1 ) |,
1
+1

e portanto:
1
=

(+1 )
( )

Na prtica no necessrio calcular 1, pois de:


+1 = 1 +1 = ,
e, ento, resolve-se o ltimo sistema atravs da Decomposio LU. Este mtodo
particularmente conveniente desde que as matrizes L e U so idependentes de k e,
portanto, basta obt-las uma nica vez.
A funo de Matlab elaborada para o clculo do maior e do menor autovalores
mostrada a seguir:
function [ lambmax, lambmin ] = maior_menor_autovalor(A)
% Retorna o maior e o menor autovalor de uma matriz A
n=length(A);
y=ones(n,1);
y2=y;
lamb=ones(n,1);
lamb2=lamb;
e=ones(n,1);
e2=e;
[L,U]= LU(A);
% Mtodos das Potncias
% e das Potncias Inversas
for k=1:1000
lambanterior=lamb;
lambant2=lamb2;
o=STinferior(L,y2);
z2=STsuperior(U,o);
z=A*y;
lamb=z./y;
lamb2=z2./y2;
% Obteno da matriz de erros e
for p=1:n
e(p,1)=abs(lamb(p,1)-lambanterior(p,1))/abs(lamb(p,1));
e2(p,1)=abs(lamb2(p,1)-lambant2(p,1))/abs(lamb2(p,1));
end

15

j=0;
j2=0;
% Obteno do maior erro j da matriz e
for p=1:n
if abs(e(p,1))>=abs(j)
j=e(p,1);
end
if abs(e2(p,1))>=abs(j2)
j2=e2(p,1);
end
end
a=0.01;
a2=a;
if j>0.01
for r=1:n
if abs(z(r,1))>=abs(a)
a= z(r,1);
end
end
y=z/a;
else
break;
end
if j2>0.01
for r=1:n
if abs(z2(r,1))>=abs(a2)
a2= z2(r,1);
end
end
y2=z2/a2;
else
break;
end
end
lambmax=0;
lambmax2=0;
for r=1:n
if abs(lamb(r,1))>=lambmax
lambmax=lamb(r,1);
end
if abs(lamb2(r,1))>=lambmax2
lambmax2=lamb2(r,1);
end
end
lambmin= 1/lambmax2;
end

A rotina da funo LU utilizada mostrada a seguir:


function [L,U,P] = LU(A)
% Funo para transformar a matriz A em LU, em que L uma matriz
% triangular superior e U, uma triangular inferior
ordem = size(A); % Ordem da matriz
% Inicializao de variveis
p= zeros(1,ordem(1,2));
m=zeros(ordem);
a=A;
U=zeros(ordem);
L=eye(ordem);
P=eye(ordem);
for j=1:(ordem(1,1))
% Nova Inicializao
oa=size(a); %ordem de "a"
la=oa(1,1); %linhas de "a"
ca=oa(1,2); %colunas de "a"
linhapivo=1;
pos = abs(a(1,1));
lembrar=pos;
% Identificao do elemento piv e sua posio
for r=1:la
if abs(a(r,j))>=pos
pos=abs(a(r,j));% Identificao do piv
pivo=a(r,j); %Elemento piv
if lembrar~=pos
linhapivo=r; %Linha do piv
end
end
end
p(1,j)= linhapivo; % Indices das linhas pivotais para cada "j"
% Obteno de cada linha da Matriz Triangular Superior "U"
U(j,:)=a(linhapivo,:);
% Clculo dos fatores multiplicadores m e Obteno da Submatriz "a"
for k=1:la
if k~=linhapivo
m(k,j)=-a(k,j)/pivo;
a(k,:)= m(k,j).*a(linhapivo,:)+a(k,:);
end
end
% Modificao da ordem de "a"
aux=a;
a=zeros(la-1,ca);

16

for k=1:la
if k~=linhapivo
a(k,:)=aux(k,:);
end
end
lembra=zeros(ordem);
end
% Obteno dos elementos da Matriz Triangular Inferior "L"
for j=1:(ordem(1,1))
for r=1:(ordem(1,1))
if r>j
L(r,j)= -m(p(1,r),j);
end
end
% Obteno da Matriz de Permutaes "P"
lembra(j,:)= P(p(1,j),:);
end
P=lembra;
end

O nmero de condicionamento obtido a partir da anlise de perturbao. Nessa


anlise, considera-se, para a condio de um sistema no singular = , uma
perturbao do vetor da forma + , desde que seja conhecida exatamente. Dessa
forma, a soluo tambm ser perturbada, isto , tem-se + .
A questo para se estabelecer a condio como relacionar com . A partir
de manipulaes algbricas, chega-se a seguinte inequao:

Assim a perturbao relativa em est relacionada com a perturbao relativa


em pela constante multiplicativa 1 . Portanto, o nmero de condio de
definido como:
() = 1 ,
e obtem-se:

()

Tem-se que () 1. De fato:


() = 1 1 = = 1.

pode ser interpretada como uma medida do erro relativo em . O erro em

depender do valor do nmero de condio que maior ou igual a 1. Se ()

grande, ento pequenas perturbaes relativas em produziro grandes perturbaes


relativas em , e o problema de resolver = mal condicionado. () ser
considerado grande quando valer 104 ou mais.
A rotina em Matlab para o clculo do nmero de condicionamento mostrada
abaixo, seguida da funo para o clculo da Norma 2, utilizada na rotina:

17

function [condnumero] = condnumero(A )


% Calcula o nmero de condicionamento de uma dada matriz A
a= norma2(A);
Ainv=Inversa(A);
ainv=norma2(Ainv);
condnumero=a*ainv;
end

function [norma2] = norma2(A)


% Calcula a norma 2 de uma dada matriz A
n=size(A);
soma = 0;
Matriz=zeros(n);
for k=1:n(1,1)
for j=(1:n(1,2)
soma=soma+ (Matriz(k,j))^2;
end
end
norma2=sqrt(soma);
end

8 Exerccio: Clculo de autovalores e autovetores


Em seu significado matemtico, os autovetores so vetores que, sob a ao de
um operador linear, resultam num vetor de mesma direo. Eles esto sempre
relacionados com o operador linear, ou seja, cada operador linear admite um conjunto
especfico de autovetores.
Para cada autovalor , podem existir vrios autovetores v, tais que () = .
Esses so autovetores associados ao autovalor . Haver infinitos autovetores
associados a cada autovalor, exceto no caso de um espao vetorial finito.
Nesse trabalho, utiliza-se o Mtodo de Leverrier-Faddeev para o clculo dos
autovalores e autovetores de uma matriz A, qualquer que seja a sua ordem n. Esse
mtodo nada mais que uma modificao do Mtodo de Leverrier, que determina os
coeficientes do polinmio caracterstico a partir dos traos das potncias da matriz A.
Como equao generalizada de um polinmio caracterstico da matriz A de ordem
n, tem-se: () = 0 + 1 1 + + 1 + , em que so os coeficientes
do polinmio.
Tem-se tambm os traos das potncias de A, como a seguir:
n

= 1 <
i=1

E os coeficientes de P(x) so dados por:


1 = 1
k1

= 1 <
i=1

18

O Mtodo de Leverrier-Faddeev tambm obtm os coeficientes de P(x) com a


frmula acima. A diferena para o Mtodo de Leverrier que, ao invs de utilizar o
clculo dos traos das potncias da matriz A, os clculos so simplificados atravs da
seguinte sequncia de operaes:
1 = ,1 = (1 ),1 = 1 1
2 = 1 ,2 =

(1 )
,2 = 2 2
2

= 1 , =

( )
, = ,

onde so os coeficientes do polinmio caracterstico P(x). Para obteno


dos autovetores relacionados a cada autovalor , determina-se cada coluna k da matriz
, cuja frmula mostrada a seguir:
2
= 1
+ 1 + + 2 + 1

Cada coluna de pode ser calculada da seguinte maneira:


0 =
= 1 + , = 1,2, , 1
onde e uma coluna adotada da matriz identidade, a sua correspondente
coluna da matriz , = 1 o autovetor correspondente ao autovalor e o ndice
varia de 1 at n-1, pois = 0.
Neste trabalho, calcula-se a matriz atravs do clculo de suas colunas (acima
mostrado). As colunas que resultem no vetor nulo devem ser ignoradas, pois por
definio o autovetor um vetor no nulo.
A funo de Matlab elaborada para implementao do clculo de autovalores e
autovetores mostrada a seguir:
function [norma2] = norma2(A)
% Calcula a norma 2 de uma dada matriz A
n=size(A);
soma = 0;
Matriz=zeros(n);
for k=1:n(1,1)
for j=(1:n(1,2)
soma=soma+ (Matriz(k,j))^2;
end
end
norma2=sqrt(soma);
end
%Clculo de qi, Bi e Ai
q=traco/i;
b=AB-q*eye(n);
h=i-1;
for g=(h*n+1):(i*n)
j=g-h*n;
B(g,:)=b(j,:);
end
AB=A*b;

19

% Coeficientes do Polinmio Caracterstico


P(1,1)=(-1)^n;
k=i+1;
P(1,k)=q;
end
% Autovalores
lambda= roots(P);
% Autovetores
e=eye(n);
for v=1:n
for i=1:(n-1)
w=i-1;
for g=(w*n+1):(i*n)
j=g-w*n;
bi(j,i)= B(g,v);
end
end
for k=1:n
for i=1:(n-1)
u(:,i)=e(:,v);
end
for i=1:(n-1)
if i>1
u(:,i)=lambda(k,1)*u(:,i-1)+bi(:,i);
else
u(:,i)=lambda(k,1)*u(:,i)+bi(:,i);
end
end
h=k-1;
y=v-1;
for g=(h*n+1):(k*n)
j=g-h*n;
for w=(y*(n-1)+1):(v*(n-1))
i=w-y*(n-1);
Q(g,w)=u(j,i);
end
end
end
end
end

9 Exerccio:Sistemas Tridiagonais
Na soluo numrica de equaes diferenciais, assim como em outras
aplicaes, a matriz associada discretizao esparsa, isto , a quantidade de
elementos no-nulos pequena, quando comparada com o nmero total de elementos da
matriz. Se, alm de esparsa, a matriz tem os elementos no-nulos concentrados em torno
da diagonal, ela chamada matriz de banda.
Pode-se formalizar a definio ao considerar que = [ ] uma matriz de
banda p+q+1, se = 0 se > + ou < .
A estrutura de banda oferece vantagens na triangularizao, pois em cada coluna
necessrio eliminar no mximo elementos. Se isto for incorporado ao algoritmo,
haver uma substancial reduo no esforo computacional.
No caso particular dos sistemas tridiagonais ( = = 1), os elementos nonulos est nas trs diagonais centrais. Neste caso, a eliminao em cada coluna ser de
um elemento. Alm disso, o sistema tridiagonal pode ser armazenado usando quatro
vetores, um para a diagonal principal, dois para as diagonais secundrias (superdiagonal e sub-diagonal) e um para o termo independente, como mostrado a seguir:

20

1
2
0
0
[0

1
2

0
0

0
2

1
0

0
0

0
0
0

1
2

1 1
] [ ]

Uma importante aplicao de sistemas tridiagonais so aqueles resultantes da


discretizao de equaes diferenciais, unidimensionais na varivel espacial. Esses
sistemas, alm de tridiagonais, so diagonalmente dominantes.
A funo de Matlab elaborada para implementao da soluo de sistemas
tridiagonais mostrada a seguir:
function [X] = tridiagonal(A,B)
% Resolve o Sistema AX=B, para uma dada matriz tridiagonal A
ordem=size(A);
n=ordem(1,1);
a=zeros(n,1);% Elementos da diagonal inferior
d=zeros(n,1); % Elementos da diagonal principal
c=zeros(n,1); % Elementos da diagonal superior
X=zeros(n,1);
for k=1:n-1
a(k+1,1)=A(k+1,k);
c(k,1)=A(k,k+1);
end
for k=1:ordem
d(k,1)=A(k,k);
end
% Resoluo do Sistema
for k=1:(n-1)
d(k+1,1)=d(k+1,1)-(a(k+1,1)/d(k,1))*c(k,1);
B(k+1,1)=B(k+1,1)-(a(k+1,1)/d(k,1))*B(k,1);
end
X(n,1)=B(n,1)/d(n,1);
for k=(n-1):-1:1
X(k,1)=(B(k,1)-c(k,1)*X(k+1))/d(k,1);
end
end

10 Exerccio: Pesquisa sobre a tcnica de soluo de SL chamada GMRES

GMRES (Mtodo do Resduo Mnimo Generalizado)


O GMRES, sigla em ingls para Mtodo do Resduo Mnimo Generalizado,
um mtodo iterativo muito utilizado para a resoluo de sistemas lineares de grande
porte. Criado em 1986, por Saad e Schultz, trata-se de um Mtodo de Projeo em
Subespaos de Krylov.
Para a soluo de Ax=b, parte-se de um valor inicial x0 e calcula-se o
resduo inicial 0 = 0 . o subespao de Krylov (, 0 ), ou seja:
( 0 ) (, 0 )
e o espao de restries = (, 0 ),e, assim o resduo ortogonal a
(,
0 ).
(, 0 )
21

Com isso, o GMRES assegura que o resduo, a cada iterao, no aumentar, no


pior caso o resduo das novas iteraes ser igual ao(s) da(s) anteriore(s). Como a cada
passo o espao de busca est aumentando em algum, mesmo depois de alguma
estagnao, o mtodo deve encontrar um ponto melhor.
O clculo da soluo feito em k iteraes tais que = 1 + , onde =
um vetor escolido no subespao de Krylov, tal que = 0 e = 0 + , e o
sistema especificado por norma Euclidiana na seguinte condio:
2 = min 0 2

A base ortonormal do subespao Krylov ( ) construda usando-se o processo


de Arnaldi, resultando numa matriz de dimenso n x L e uma matriz (superior) de
Hessenberg ( ) de dimenso L x L, tal que:
= =
IL uma matriz identidade L x L. Se os vetores que compem o subespao
Krylov forem linearmente independentes, a dimenso de +1 L+1, ento a matriz

dada por:

= [ ] , = (0, , 0, +1, ) ,

e juntamente com a matriz+1 satisfazem a:


= +1

Portanto, qualquer vetor 0 + pode ser escrito como:


= 0 ,
onde um vetor m-dimensional. Definindo:
() = 2 = (0 + )2
Resultando em:
= (0 + )
Como o lado esquerdo da equao acima corresponde ao resduo da soluo
iterativa e uma vez que os vetores coluna de +1 so ortonomais, ento:
,
() = (0 + )2 = 1
2
= 0 2
onde 1 vetor unitrio em +1. A aproximao do GMRES feita atravs de
um vetor nico 0 + , que minimiza a equao acima. Com as equaes acima,
obtm-se essa aproximao simplesmente como = 0 + , onde o vetor
; isto :
minimiza a funo () = 1
2
= 0 +
22


= arg_min1
2

O GMRES no precisa computar e armazenar a matriz de iterao de forma


explcita, uma vez que o processo envolve apenas sua multiplicao pelo vetor . Por
outro lado, este mtodo se torna ineficiente quando L for grande, pois o espao de
memria e o custo computacional so diretamente proporcionais a sua dimenso. Para
superar esse problema, deve-se reiniciar o processo iterativo aps um nmero k prespecificado de iteraes.
As informaes acumuladas so eliminadas e os resultados mais recentes so
usados como valores iniciais para as prximas k iteraes. No existem regras para se
estabelecer um valor timo de iteraes e se esse for muito pequeno, o processo de
convergncia pode ser lento, ou at mesmo falhar. Por outro lado, se excessivo, um
considervel espao de memria ser utilizado.

11 Exerccio: Resposta dinmica de um sistema real


Modelo de um grupo motor-gerador
A figura abaixo mostra o circuito equivalente de um grupo motor gerador:

A modelagem do grupo motor-gerador realizada pela modelagem de um motor


CC controlado pela armadura. A influncia do gerador CC no modelo do motor ser
levada em conta pelos seguintes fatores:
(i)
(ii)

Aumento do momento de inrcia da carga mecnica


Aparecimento de um torque de perturbao, resultado da introduo de
cargas de natureza eltrica nos terminais do gerador. Isto mostra que o
fato de termos um gerador CC no lugar de um CA, como seria o caso de
um sistema real, no traz qualquer alterao no que se refere
modelagem do sistema.

O circuito equivalente de um motor-CC controlado pela armadura mostrado a


seguir:

23

onde () e () denotam, respectivamente, a corrente e a tenso de armadura,


e representam, respectivamente, a tenso e a corrente de campo (constantes, por
hiptese), () a velocidade angular do motor e e so o momento de inrcia da
carga e o coeficiente de atrito nos mancais, respectivamente.
Sabe-se que o torque produzido pelo motor () proporcional ao fluxo
magntico no entreferro (()) e corrente de armadura ( ()), isto ,
() = () () = ()
onde = = , com , e constantes. Aplicando-se a lei
das tenses de Kirchhoff ao circuito da armadura, obtm-se:
() = () +

()
+ (),

onde () representa a fora contra-eletromotriz, que proporcional


velocidade angular do motor, sendo dada por:
() = ()
Finalmente, usando-se a lei de Newton para o movimento rotacional, pode-se
escrever:
() () () =

()

onde () representa um torque externo (perturbao). As equaes anteriores


nos permitem obter a funo de transferncia que relaciona as transformadas de Laplace
da entrada ( () da sada (()). Para tanto, aplicando-se a transformada de Laplace a
ambos os membros das equaes, resulta:
() = ()
() = () + () + ()
() = ()
() () () = ()
e aps alguma manipulao algbrica, obtm-se:
() =


()
( + 1)( + 1) +

( + 1)/
()
( + 1)( + 1) +
24

onde = / e = /. Nota-se que a funo de transferncia da ltima


equao modela o motor CC como um sistema de 2 ordem. Porm, este sistema pode
ser bem aproximado por um modelo de 1 ordem, se levarmos em conta que /
1 e portanto, + 1 1 para as frequncias de interesse. Desta forma, o modelo
matemtico do grupo motor-gerador que geralmente se adota o seguinte:

()
()
+ 1
+ 1

() =

onde
= /( )
e
= /( )
e
= /( ). Nota-se ainda que, como () = (), a equao acima
pode ser escrita como:
() =

()
()
+ 1
+ 1

onde = . importante ressaltar que a medio da velocidade angular


feita por meio de tacmetros. Um tacmetro nada mais do que um gerador CC de
pequena potncia, cuja tenso gerada constante e proporcional velocidade do eixo ao
qual ele est acoplado. Desta forma, a tenso nos terminais do tacmetro, (t), ser:
(t) = K (),
onde K uma constante. Portanto, a relao entre (), () e () pode ser
expressa pela seguinte equao:
() =

K
K
()
(),
+ 1
+ 1

cujo diagrama de blocos est representado na figura a seguir:

Uma vez que se dispe de um modelo matemtico da planta, o prximo passo


a identificao dos ganhos K , e e da constante de tempo . Os ganhos so
identificados a partir da resposta em estado permanente a uma entrada igual ao degrau.
A identificao de feita utilizando-se mtodos de resposta em frequncia, em
particular o diagrama de mdulo de Bode e o diagrama polar. Supondose que um
degrau de tenso de amplitude seja aplicado aos terminais do motor, isto :
() = {

0,
,

< 0
0
25

Assume-se, inicialmente, que no h cargas conectadas nos terminais do


gerador. Neste caso () = / e () = 0, e portanto a relao entre (), ()
e () pode ser reescrita da seguinte forma:
() =

K
()
+ 1

A resposta do sistema entrada em degrau pode ser obtida calculando-se a


transformada inversa de Laplace da equao anterior. Procedendo-se dessa forma,
obtm-se:
1

() = K K (1 ) ,

Quando t , a equao acima se reduz a


() = = K ,
o que mostra que quando uma tenso de valor constante aplicada a um motor
CC, a tenso em regime permanente nos terminais do tacmetro acoplado ao eixo deste
motor tambm ser constante e proporcional ao valor da tenso aplicada. Definindo-se
K = K
pode-se escrever:
= K
onde K ajustado pelo mtodo dos mnimos quadrados.
Fazendo-se () = 0, na relao entre (), () e (), obtm-se:
() =

()
K
=
() + 1

que representa a funo de transferncia de um sistema de 1 ordem com plo


em 1 . Sendo uma constante de tempo, no pode assumir valores negativos.
Portanto, esse sistema s pode ser assitoticamente estvel, qualquer que seja o valor de
.
Uma maneira imediata de se obter a partir do traado das assntotas da curva
de mdulo dos diagramas de Bode determinando-se, portanto, a frequncia de canto
= 1 . Deve ser ressaltado ainda que a assntota de baixa frequncia (20 log(K ))
deve ser traada utilizando-se os valores de K , obtidos pelo mtodo dos mnimos
quadrados.

26

4. Resultados
1 Exerccio: Decomposio LU com pivotao parcial
>> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]
A =

Respostas obtidas com o Matlab:


>> X=inv(A)*B

-3

20

22

2.0000

-3

-3.0000

22

28

1.0000

X =

>> B=[12;64;4;82]

5.0000

B =
12

>> det(A)

64

ans =

576.0000

82

>> [L,U,P,PB,X,delta] = decompLU(A,B)


L =
1.0000

0
0

0.3333

1.0000

-0.3333

0.2000

1.0000

0.6667

0.8000

0.3636

1.0000

9.0000

6.0000

-3.0000

3.0000

20.0000

3.0000

27.0000

4.4000

-2.4000

-0.7273

U =

P =
1

O resultado do algoritmo
composto pelas matrizes obtidas na
resoluo do sistema linear, o valor
de x, principal resultado da
decomposio LU e o valor do
determinante da matriz. Como pode
se perceber, o resultado desse ltimo
valor foi identico ao encontrado pela
funo para clculo do determinante
no Matlab. Todos os resultados
atingiram os valores esperados para
a resoluo desse exemplo de
sistema linear.

PB =
12
82
4
64

X =
2.0000
-3.0000
1.0000
5.0000

delta =
576.0000

27

2 Exerccio: Decomposio Cholesky


>> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]

Respostas obtidas no Matlab:


>> X=inv(A)*B

A =

X =

-3

20

22

2.0000

-3

-3.0000

22

28

1.0000
5.0000

>> B=[12;64;4;82]
B =
12
64
4
82

>> [L,LT,y,X,r] = Cholesky(A,B)


L =
3

-1

-1

-1

-1

LT =

O resultado do algoritmo
mostra as matrizes L e sua
transposta, obtidas na resoluo do
sistema linear. Aps a resoluo
pelos mtodos das substituies
sucessivas e retroativas, obteve-se as
matrizes y e x respectivamente,
bem como a matriz que representa o
erro encontrado na resposta. Dos
resultados obtidos, comprova-se a
aplicabilidade do mtodo e espera-se
melhor-lo no prximo exerccio,
atravs do refinamento da soluo.

y =
4
14
-3
5

X =
2
-3
1
5

r =
0
0
0
0

28

3 Exerccio: Refinamento da soluo de Sistemas Lineares

Para um sistema a ser resolvido


pelo Mtodo LU:

Para o mesmo sistema a ser


resolvido pelo Mtodo Cholesky:

>> A=[2 1 0; 2 5 3; 0 1 6]

>> A=[2 1 0; 2 5 3; 0 1 6]

A =

A =
2

>> B=[4;2;3]

>> B=[4;2;3]

B =

B =
4

2
3

3
>> [X,r,k] = RefinLU( A,B )

[X,r,k] = RefCholesky(A, B)

Mtodo Utilizado: LU

Mtodo Utilizado: Cholesky

todo Utilizado: LU
X =

X =
2.5000

2.5000

-1.0000

-1.0000

0.6667

0.6667

r =

r =
0

1.0e-015 *

0.8882

0
0
k =

k =
1

Observa-se que para uma matriz definida positiva assimtrica o refinamento do


Mtodo LU converge mais rpido do que o do Mtodo de Cholesky. Mesmo depois do
refinamento, ainda houve um erro desprezvel no Mtodo de Cholesky, menor que o
solicitado pelo algoritmo. No Mtodo LU, o refinamento foi totalmente eficiente, pois
foram obtidos resduos de erro exatamente iguais a zero.

29

Para um sistema a ser resolvido


pelo Mtodo LU:

Para o mesmo sistema a ser


resolvido pelo Mtodo Cholesky:

>> A=[4 -6 2; -6 10 -5; 2 -5 30]

>> A=[4 -6 2; -6 10 -5; 2 -5 30]

A =

A =
4

-6

-6

10

-5

-5

30

-6

10

-5

-6

-5

30

>> B= [2; 3; 6]

>> B= [2; 3; 6]

B =

B =
2

>> [X,r,k] = RefinLU(A, B)

>> [X,r,k] = RefCholesky(A, B)

Mtodo Utilizado: LU

Mtodo Utilizado: Cholesky

X =

X =

11.2000

11.2000

7.3600

7.3600

0.6800

0.6800

r =

r =

1.0e-014 *

1.0e-014 *
0

-0.1332

0.7550

-0.3553
0

0
k =

k =

500

J para uma matriz definida positiva simtrica o refinamento do Mtodo de


Cholesky converge mais rpido do que o do Mtodo LU. Mesmo depois do
refinamento, ainda houve um erro desprezvel em ambos mtodos, menor que o
solicitado pelo algoritmo.

4 Exerccio: Clculo da Matriz Inversa

Para uma matriz a ser calculada pelo Mtodo LU:


>> A=[1 2 3 4 5 6; 2 7 8 9 10 11; 3 8 12 13 14 15; 4 9 13 16 17 18; 5 10 14 17 19 20; 6 11 15 18 20 21]
A =
1

10

11

12

13

14

15

13

16

17

18

10

14

17

19

20

11

15

18

20

21

>> [V] = InvLU(A)

30

V =
0.2500

-0.2500

0.0000

0.0000

-1.2500

1.2500

-0.2500

0.5833

-0.3333

0.0000

-0.0833

0.0833

-0.0000

-0.3333

0.8333

-0.5000

-0.1667

0.1667

0.0000

-0.0000

-0.5000

1.5000

-1.5000

0.5000

-1.2500

-0.0833

-0.1667

-1.5000

4.0833

-2.0833

1.2500

0.0833

0.1667

0.5000

-2.0833

1.0833

Para uma matriz a ser calculada pelo Mtodo Cholesky:

>> A=[1 2 3 4 5 6; 2 7 8 9 10 11; 3 8 12 13 14 15; 4 9 13 16 17 18; 5 10 14 17 19 20; 6 11 15 18 20 21]


A =
1

10

11

12

13

14

15

13

16

17

18

10

14

17

19

20

11

15

18

20

21

>> [V] = InvCholesky(A)


V =
0.2500

-0.2500

-0.0000

-0.0000

-1.2500

1.2500

-0.2500

0.5833

-0.3333

0.0000

-0.0833

0.0833

-0.0000

-0.3333

0.8333

-0.5000

-0.1667

0.1667

-0.0000

-0.0000

-0.5000

1.5000

-1.5000

0.5000

-1.2500

-0.0833

-0.1667

-1.5000

4.0833

-2.0833

1.2500

0.0833

0.1667

0.5000

-2.0833

1.0833

O resultado da matriz inversa obtido na funo inv() do Matlab.


>> inv(A)
ans =
0.2500

-0.2500

-0.0000

-1.2500

1.2500

-0.2500

0.5833

-0.3333

0.0000

-0.0833

0.0833

-0.0000

-0.3333

0.8333

-0.5000

-0.1667

0.1667

0.0000

-0.5000

1.5000

-1.5000

0.5000

-1.2500

-0.0833

-0.1667

-1.5000

4.0833

-2.0833

1.2500

0.0833

0.1667

0.5000

-2.0833

1.0833

Tanto o resultado da matriz inversa, obtida pelo Mtodo Cholesky, quanto obtida pelo
Mtodo LU foi idntico ao resultado obtido na funo inv() do Matlab. Conclui-se
que o algoritmo desenvolvido eficiente para o clculo da inversa de matrizes
simtricas.

31

5 Exerccio: Mtodo iterativo


de Jacobi
>> A=[10 3 -2; 2 8 -1; 1 1 5]
A =

6 Exerccio: Mtodo iterativo


de Gauss-Seidel
>> A=[5 2 0 -1; 1 8 -3 2; 0 1 6 1; 1 -1 2 9]
A =

10

-2

-1

-1

-3

-1

>> B=[57; 20; -4]


B =
57
20

>> B=[6; 10; -5; 0]

-4
>> [x,k] = Jacobi(A,B,10^-5,50)

B =

x =

6
5.0000
10

1.0000

-5

-2.0000
k =

0
9
>> [x,k] = Gausseidel(A,B,10^-3,50)
x =
0.9529
0.7137
-0.9843
0.1922
k =
6

Tanto no algoritmo que implementa o mtodo de Jacobi, quanto no do mtodo


de Gauss-Seidel, o usurio informa as matrizes A e B do sistema a ser resolvido e
tambm o erro tolerado e o nmero mximo de iteraes desejadas.
Em ambos algoritmos foram utilizados para teste sistemas lineares apresentados
em sala de aula, obtendo-se os resultados conforme os esperados.

7 Exerccio: Clculo do maior e menor autovalor e do nmero de


condicionamento.
>> A=[2 1 0; 2 5 3; 0 1 6]
A =
2

>> [ lambmax, lambmin ] = maior_menor_autovalor(A)


lambmax =
7.4546
lambmin =
1.3363

O resultado dos autovalores da matriz A obtido na funo eig() do Matlab.


>> eig(A)
ans =
1.3375
4.2181
7.4444

Observa-se que os algoritmos implementados, tanto pelo Mtodo LU, quanto


teve resultados bem prximos ao maior e menor autovalores obtidos na funo eig()
do Matlab.
Resultado do algoritmo que calcula o nmero de condicionamento:
>> A = [2 1 0; 2 5 3; 0 1 6]
A =
2

>> [condnumero] = condnumero(A)


condnumero =
7.2843

33

Resultado do nmero de condicionamento pela funo cond()do Matlab:


>> A = [2 1 0; 2 5 3; 0 1 6]
A =
2

>> cond (A,'fro')


ans =
7.2843

Observa-se que o algoritmo implementado para o clculo do nmero de


condicionamento obteve resultado idntico ao da funo do Matlab

8 Exerccio: Clculo de autovalores e autovetores


>> A=[1 1 -1; 0 0 1; -1 1 0]
A =
1

-1

-1

>> [P,lambda,Q] = auto(A)


P =
-1

-2

lambda =
-1.4142
1.4142
1.0000
Q =
-1.4142

1.0000

1.0000

-2.4142

-1.0000

2.4142

-1.0000

-2.4142

2.4142

1.0000

-2.4142

-1.0000

1.4142

1.0000

-3.4142

-2.4142

3.4142

1.4142

1.0000

1.0000

0.4142

-1.0000

-0.4142

-1.0000

0.4142

-0.4142

1.0000

0.4142

-1.0000

-1.4142

1.0000

-0.5858

0.4142

0.5858

1.0000

0.0000

1.0000

0.0000

-1.0000

-0.0000

-1.0000

0.0000

-1.0000

1.0000

0.0000

-1.0000

-1.0000

1.0000

-1.0000

0.0000

0.0000

34

Nesse algoritmo, o usurio fornece a matriz cujos autovalores e autovetores so


procurados. Como resposta, tm-se, portanto, o polinmio caracterstico associado a
essa matriz, um vetor que contm os autovalores e a matriz Q, composta do autovetores.
Embora a matriz Q possa conter vetores nulos, sabe-se que esses no podem ser
autovetores por definio. Basta, portanto, ignor-los e considerar os outros vetores,
associados em colunas com o mesmo nmero de linhas da matriz original, sendo cada
linha de vetores correspondente ao autovalor correspondente no vetor de autovalores.
As diferentes colunas esto relacionadas com as diferentes colunas consideradas da
matriz identidade.

9 Exerccio: Sistemas Tridiagonais


>> A=[0.624 0.255 0 0 0 0; -0.234 0.432 0.882 0 0 0; 0 0.312 -0.724 0.637 0 0; 0 0 0.224 0.512 -0.853 0; 0 0 0
0.737 -0.492 -0.333; 0 0 0 0 0.386 -0.554]
A =
0.6240

0.2550

-0.2340

0.4320

0.8820

0.3120

-0.7240

0.6370

0.2240

0.5120

-0.8530

0.7370

-0.4920

-0.3330

0.3860

-0.5540

>> B=[2; 3; 4; 5; 6; 1];


>> [X] = tridiagonal(A,B)
X =
0.8263
5.8211
0.7694
4.3028
-3.0769
-3.9489

35

Resultado em Matlab:
>> x=A\B
x =
0.8263
5.8211
0.7694
4.3028
-3.0769
-3.9489

A soluo obtida para a implementao da soluo de sistemas tridiagonais foi a


mesma que a soluo simples, realizada pelo Matlab. Confirma-se, dessa forma, a
aplicabilidade e confiabilidade do algoritmo apresentado na resoluo de sistemas
tridiagonais.

5. Concluses
As implementaes realizadas ao longo desse relatrio permitiram a identificao
detalhada dos mtodos de sistemas lineares diretos e iterativos. Verificou-se no apenas
a sua aplicabilidade, mas cada detalhe do funcionamento. O trabalho tambm
possibilitou o bom discernimento entre os mtodos existentes tanto na sua utilizao,
quanto na sua implementao. Houve bastante ateno tambm na busca pela preciso e
pela reduo do custo computacional.
Aliado ao conhecimento de mtodos numricos, houve um bom aprimoramento das
habilidades de programao. Os exerccios atingiram o objetivos de familiarizao e
implementao das tcnicas numricas. Eles podem servir de auxlio em pesquisas que
necessitem dessas ferramentas.

6. Referncias Bibliogrficas
CAMPOS, Frederico Ferreira. Algoritmos Numricos. 2 edio.
Belo Horizonte, MG: LTC Editora, 2007.
CUNHA, Maria Cristina C. Mtodos Numricos. 2 edio.
Campinas, SP: Ed. Unicamp, 2000.
FRANCO, Neide Maria Bertoldi. Clculo Numrico. Prentice Hall, 2006
CARVALHO, Luiz M. Avanos em Mtodos de Krylov para Soluo de Sistemas
Lineares de Grande Porte. So Carlos, SP: Ed CIENCIA MODERNA, 2009.
36

PESSANHA, Jos E. O.; PAZ, Alex A.; PRADA, Ricardo. Aplicao do mtodo
GMRES em estudos de estabilidade de sistemas de energia eltrica.
Rio de Janeiro, Maio e Junho de 2012. Revista Controle & Automao/Vol.23.
FELCIO, Luiz C. Modelagem da dinmca de sistemas e estudo da resposta.
2 edio. So Carlos, SP: RiMa, 2010.
RESENDE, Profa. rsula do Carmo. Sistemas de Equaes Lineares (continuao)
MN_SL2, SL3 e SL4, Notas de aula de Mtodos Numricos, Programa de Ps
Graduao em Engenharia Eltrica, CEFET-MG 2015.
BASLIO, Joo Carlos. Laboratrio de Sistemas de Controle I, Apostila de, UFRJ,
Escola de Engenharia, Departamento de Eletrotcnica. 3 Edio, Rio de Janeiro, RJ,
2014.

37

You might also like