Post on 06-Sep-2015
description
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
2
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).
3
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:
4
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
5
Para a resoluo dos sistemas triangular inferior e superior foram criadas em
Matlab as funes mostradas a seguir:
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, 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:
= 2
1
=1
, = 1,2, ,
Para os elementos abaixo da diagonal principal de L (mesmos elementos
acima da diagonal principal da transposta):
=
1=1
, = 1,2, , 1 = + 1, + 2, , ,
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
6
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)
7
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,
= = =
xk+1 = xk + ck
em que k o nmero de iteraes, interrompidas por um critrio de
parada,+1 a soluo melhorada de x aps o refinamento e ck 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:
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
8
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] = 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
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
9
4 Exerccio: Clculo da Matriz Inversa
A matriz inversa A-1 de uma matriz Asatisfaz seguinte propriedade:
1 = ,
[
11 12 121 22 2
1 2
] [
11 12 121 22 2
1 2
] = [
1 0 00 1 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
10
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:
11
[ 1
+1
2+1
3+1
+1
]
=
[ 0
1211
1311
111
2122
0 2322
222
3133
3233
0 333
1
2
,1
0]
[ 1
2
3
]
+
[ 111222333
]
+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
12
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 0 0 021 0 0 0
1,1 1,2 0 0
1 2 ,1 0]
[ 1
+1
2+1
3+1
+1]
+1
[ 0 12 13 10 0 23 2 0 0 0 1,0 0 0 0 ]
[ 1
2
3
]
+
[ 123
]
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:
13
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 auto-
valores e 1,2, ..., seus correspondentes auto-vetores. Supondo-se que os auto-
vetores so linearmente independentes, e que:
|1| > |2| . . . ||.
Seja a sequncia definida por:
+1 = , = 0, 1, 2,
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
14
onde 0 um vetor arbitrrio, que permite a expanso:
0 = ,
com escalares quaisquer e 1 0, ento:
lim
(+1)()
= 1
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.
15
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,
se || o menor auto-valor de A, ento |1| o maior auto-valor de 1, 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
, +1 = max1
|(+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
16
A rotina da funo LU utilizada mostrada a seguir:
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
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);
17
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:
1
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:
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
18
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
i=1
1 <
E os coeficientes de P(x) so dados por:
1 = 1
=
k1
i=1
1 <
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
19
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:
= 1 +
21 + + 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;
20
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 no-
nulos 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 (super-
diagonal e sub-diagonal) e um para o termo independente, como mostrado a seguir:
% 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
21
[ 1 1 0 0 02 2 2 0 00 00 0 1 1 10 0 0 ]
[
12
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:
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)
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
22
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,
= 02
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 minimiza a funo () = 1 2; isto :
= 0 +
23
= arg_min
1 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 pr-especificado 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) Aumento do momento de inrcia da carga mecnica
(ii) 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:
24
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) + ()
25
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
+ 1()
K + 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
26
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:
() = KK (1
1
) , 0
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.
27
4. Resultados
1 Exerccio: Decomposio LU com pivotao parcial
Respostas obtidas com o Matlab:
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.
>> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]
A =
9 6 -3 3
6 20 2 22
-3 2 6 2
3 22 2 28
>> B=[12;64;4;82]
B =
12
64
4
82
>> [L,U,P,PB,X,delta] = decompLU(A,B)
L =
1.0000 0 0 0
0.3333 1.0000 0 0
-0.3333 0.2000 1.0000 0
0.6667 0.8000 0.3636 1.0000
U =
9.0000 6.0000 -3.0000 3.0000
0 20.0000 3.0000 27.0000
0 0 4.4000 -2.4000
0 0 0 -0.7273
P =
1 0 0 0
0 0 0 1
0 0 1 0
0 1 0 0
PB =
12
82
4
64
X =
2.0000
-3.0000
1.0000
5.0000
delta =
576.0000
>> X=inv(A)*B
X =
2.0000
-3.0000
1.0000
5.0000
>> det(A)
ans =
576.0000
28
2 Exerccio: Decomposio Cholesky
Respostas obtidas no Matlab:
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.
>> A=[9 6 -3 3; 6 20 2 22; -3 2 6 2;3 22 2 28]
A =
9 6 -3 3
6 20 2 22
-3 2 6 2
3 22 2 28
>> B=[12;64;4;82]
B =
12
64
4
82
>> [L,LT,y,X,r] = Cholesky(A,B)
L =
3 0 0 0
2 4 0 0
-1 1 2 0
1 5 -1 1
LT =
3 2 -1 1
0 4 1 5
0 0 2 -1
0 0 0 1
y =
4
14
-3
5
X =
2
-3
1
5
r =
0
0
0
0
>> X=inv(A)*B
X =
2.0000
-3.0000
1.0000
5.0000
29
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:
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.
>> A=[2 1 0; 2 5 3; 0 1 6]
A =
2 1 0
2 5 3
0 1 6
>> B=[4;2;3]
B =
4
2
3
>> [X,r,k] = RefinLU( A,B )
Mtodo Utilizado: LU
todo Utilizado: LU
X =
2.5000
-1.0000
0.6667
r =
0
0
0
k =
1
>> A=[2 1 0; 2 5 3; 0 1 6]
A =
2 1 0
2 5 3
0 1 6
>> B=[4;2;3]
B =
4
2
3
[X,r,k] = RefCholesky(A, B)
Mtodo Utilizado: Cholesky
X =
2.5000
-1.0000
0.6667
r =
1.0e-015 *
0.8882
0
0
k =
3
30
Para um sistema a ser resolvido
pelo Mtodo LU:
Para o mesmo sistema a ser
resolvido pelo Mtodo Cholesky:
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 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
>> [V] = InvLU(A)
>> A=[4 -6 2; -6 10 -5; 2 -5 30]
A =
4 -6 2
-6 10 -5
2 -5 30
>> B= [2; 3; 6]
B =
2
3
6
>> [X,r,k] = RefCholesky(A, B)
Mtodo Utilizado: Cholesky
X =
11.2000
7.3600
0.6800
r =
1.0e-014 *
-0.1332
-0.3553
0
k =
3
>> A=[4 -6 2; -6 10 -5; 2 -5 30]
A =
4 -6 2
-6 10 -5
2 -5 30
>> B= [2; 3; 6]
B =
2
3
6
>> [X,r,k] = RefinLU(A, B)
Mtodo Utilizado: LU
X =
11.2000
7.3600
0.6800
r =
1.0e-014 *
0
0.7550
0
k =
500
31
Para uma matriz a ser calculada pelo Mtodo Cholesky:
O resultado da matriz inversa obtido na funo inv() do Matlab.
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.
>> inv(A)
ans =
0.2500 -0.2500 -0.0000 0 -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 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
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
>> 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 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
>> [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
5 Exerccio: Mtodo iterativo
de Jacobi
6 Exerccio: Mtodo iterativo
de Gauss-Seidel
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.
>> A=[10 3 -2; 2 8 -1; 1 1 5]
A =
10 3 -2
2 8 -1
1 1 5
>> B=[57; 20; -4]
B =
57
20
-4
>> [x,k] = Jacobi(A,B,10^-5,50)
x =
5.0000
1.0000
-2.0000
k =
9
>> A=[5 2 0 -1; 1 8 -3 2; 0 1 6 1; 1 -1 2 9]
A =
5 2 0 -1
1 8 -3 2
0 1 6 1
1 -1 2 9
>> B=[6; 10; -5; 0]
B =
6
10
-5
0
>> [x,k] = Gausseidel(A,B,10^-3,50)
x =
0.9529
0.7137
-0.9843
0.1922
k =
6
33
7 Exerccio: Clculo do maior e menor autovalor e do nmero de
condicionamento.
O resultado dos autovalores da matriz A obtido na funo eig() do Matlab.
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 1 0
2 5 3
0 1 6
>> [ lambmax, lambmin ] = maior_menor_autovalor(A)
lambmax =
7.4546
lambmin =
1.3363
>> eig(A)
ans =
1.3375
4.2181
7.4444
>> A = [2 1 0; 2 5 3; 0 1 6]
A =
2 1 0
2 5 3
0 1 6
>> [condnumero] = condnumero(A)
condnumero =
7.2843
34
Resultado do nmero de condicionamento pela funo cond()do Matlab:
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
0 0 1
-1 1 0
>> [P,lambda,Q] = auto(A)
P =
-1 1 2 -2
lambda =
-1.4142
1.4142
1.0000
Q =
-1.4142 1.0000 1.0000 -2.4142 -1.0000 2.4142
0 -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
0 -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
0 -1.0000 0.0000 -1.0000 1.0000 0.0000
-1.0000 -1.0000 1.0000 -1.0000 0.0000 0.0000
>> A = [2 1 0; 2 5 3; 0 1 6]
A =
2 1 0
2 5 3
0 1 6
>> cond (A,'fro')
ans =
7.2843
35
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 0 0 0
-0.2340 0.4320 0.8820 0 0 0
0 0.3120 -0.7240 0.6370 0 0
0 0 0.2240 0.5120 -0.8530 0
0 0 0 0.7370 -0.4920 -0.3330
0 0 0 0 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
36
Resultado em Matlab:
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.
>> x=A\B
x =
0.8263
5.8211
0.7694
4.3028
-3.0769
-3.9489
37
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.