Professional Documents
Culture Documents
MINAS GERAIS
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()
det() =
(1)
,
=1
= 2 ,
= 1,2, ,
=1
=1
=
, = 1,2, , 1 = + 1, + 2, , ,
=+1
=
, = , 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
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:
12
22
1 11
2 21
][
1
12
22
1
1 0
2
0 1
] = [
0 0
0
0
]
1
= 1,2, ,
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 =
11
+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
0 = ,
(+1 )
( )
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
< ,
14
+1
, +1 = max |(+1 ) |,
1
+1
e portanto:
1
=
(+1 )
( )
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
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
()
17
= 1 <
i=1
= 1 <
i=1
18
(1 )
,2 = 2 2
2
= 1 , =
( )
, = ,
19
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
] [ ]
dada por:
= [ ] , = (0, , 0, +1, ) ,
= arg_min1
2
23
()
+ (),
()
()
( + 1)( + 1) +
( + 1)/
()
( + 1)( + 1) +
24
()
()
+ 1
+ 1
() =
onde
= /( )
e
= /( )
e
= /( ). Nota-se ainda que, como () = (), a equao acima
pode ser escrita como:
() =
()
()
+ 1
+ 1
K
K
()
(),
+ 1
+ 1
0,
,
< 0
0
25
K
()
+ 1
() = K K (1 ) ,
()
K
=
() + 1
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 =
-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
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
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
-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
>> 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
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
29
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
Mtodo Utilizado: LU
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
10
11
12
13
14
15
13
16
17
18
10
14
17
19
20
11
15
18
20
21
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
10
11
12
13
14
15
13
16
17
18
10
14
17
19
20
11
15
18
20
21
-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
-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
10
-2
-1
-1
-3
-1
-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
33
-1
-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
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
35
Resultado em Matlab:
>> x=A\B
x =
0.8263
5.8211
0.7694
4.3028
-3.0769
-3.9489
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