Transcript
Cap´ıtulo 4
Resolu¸ c˜ ao de Sistemas de Equa¸c˜ oes Lineares 4.1
Introdu¸ c˜ ao
A resolu¸c˜ao de sistemas de equa¸c˜oes lineares ´e um dos problemas num´ericos mais comuns em aplica¸c˜oes cient´ıficas. Tais sistemas surgem, por exemplo, em conex˜ ao com a solu¸c˜ao de equa¸c˜oes diferenciais parciais, determina¸c˜ao de caminhos o´timos em redes (grafos) e interpola¸c˜ao de pontos, dentre outros. Consideraremos aqui, inicialmente, a resolu¸c˜ao de um sistema de equa¸c˜oes lineares de n equa¸c˜oes a n vari´ aveis (inc´ ognitas), a11 x1 + a12 x2 + . . . + a1n xn a21 x1 + a22 x2 + . . . + a2n xn .. .
= b1 = b2
an1 x1 + an2 x2 + . . . + ann xn
= bn
ou, escrito na forma matricial, Ax = b onde A ´e uma matriz quadrada, de ordem n, a11 a12 . . . a21 a22 . . . .. .. .. . . . an1
an2
(4.1)
e x e b s˜ao vetores de n elementos, a1n x1 b1 a2n x2 b2 = .. . . . .. ..
. . . ann
xn
bn
A matriz A pode apresentar, dependendo do problema de onde o sistema foi derivado, uma certa estrutura e esparsidade. Uma matriz ´e dita estruturada se os seus elementos est˜ao dispostos de uma determinada forma como, por exemplo, ao longo de algumas diagonais e/ou colunas/linhas (figuras 4.1-a) e 4.1-b), como um triˆ angulo (a matriz em 4.1-c ´e dita triangular inferior) ou, ainda, sem estrutura qualquer (4.1-d). Al´em disso, as matrizes mostradas na figura 4.1 apresentam alguns elementos nulos. Uma matriz ´e dita esparsa se ela cont´em, aproximadamente, em torno de 90% de elementos nulos; caso contr´ ario, ela ´e dita densa. Em conseq¨ uˆencia, pode-se dizer que um sistema ´e esparso ou denso, dependendo de como ´e a matriz de coeficientes do sistema. Uma das principais metas a se atingir, na resolu¸c˜ao de um sistema de equa¸c˜oes lineares, ´e obter a sua solu¸c˜ao no menor espa¸co de tempo e, se poss´ıvel, sem alterar a sua estrutura e/ou esparsidade. Por isso, existem certos m´etodos e/ou algoritmos espec´ıficos para se resolver alguns sistemas particulares, conforme veremos a seguir. 61
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
× × × × (a) ×
×
× , (b) × × × × ×
× × (c) × ×
× ×
× × × , (d) × ×
× × × × ×
× × , × × × ×
× ×
×
Figura 4.1: Estruturas t´ıpicas de matrizes: (a) tridiagonal, (b) flecha, (c) triangular inferior, (d) n˜ ao-estruturada.
4.2
Resolu¸ c˜ ao de Sistemas Triangulares de Equa¸ c˜ oes Lineares
Se o sistema (4.1) apresenta sua matriz de coeficientes A na forma triangular – seja ela inferior, como mostrado na figura 4.1-c, ou superior – ent˜ ao ´e poss´ıvel resolvˆe-lo de forma imediata, atrav´es de substitui¸c˜ ao direta, para matrizes triangulares inferiores, e de retro-substitui¸c˜ ao, para matrizes triangulares superiores. Suponha ent˜ ao um sistema triangular inferior, Lx = b onde
L=
(4.2)
l11 l21 l31 .. .
l22 l32 .. .
l33 .. .
ln1
ln2
ln3
..
. . . . lnn
.
Nesse caso, as inc´ognitas x1 , x2 , . . ., xn , podem ser facilmente determinadas como x1
=
x2
=
x3
= ..
xn
b1 l11 b2 − l21 x1 l22 b3 − l31 x1 − l32 x2 l33
.
=
bn −
n−1
j=1 lnj xj
lnn
O processo acima, denominado de substitui¸c˜ ao direta, pode ser expresso de forma algor´ıtmica como
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
62
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Algoritmo 4.2.1 Substitui¸c˜ ao Direta ao direta(input: L, b; output: x) proc substitui¸c˜ for i = 1, 2, . . . , n do s←0 for j = 1, 2, . . . , i − 1 do s ← s + lij xj endfor xi ← bil−s ii endfor endproc De forma similar, podemos resolver o sistema triangular superior Ux = b
onde
u11
U =
u12 u22
u13 u23 u33
(4.3) ... ... ... .. .
u1n u2n u3n .. .
.
unn Nesse caso, as inc´ognitas x1 , x2 , . . ., xn , podem ser facilmente determinadas como xn
=
xn−1
=
xn−2
= ..
x1
bn unn bn−1 − un−1,n xn un−1,n−1 bn−2 − un−2,1 x1 − un−2,2 x2 un−2,n−2
.
=
b1 −
n j=2
u1j xj
u11
Note que, devido a` estrutura de U , as inc´ognitas s˜ao obtidas na ordem contr´ aria a`quela com que s˜ao obtidas as inc´ ognitas em um sistema triangular inferior. Esse processo ´e denominado de retro-substitui¸c˜ ao e pode ser expresso de forma algor´ıtmica como Algoritmo 4.2.2 Retro-substitui¸c˜ ao ao(input: U , b; output: x) proc retro substitui¸c˜ for i = n, n − 1, . . . , 1 do s←0 for j = i + 1, i + 2, . . . , n do s ← s + uij xj endfor xi ← bui −s ii endfor endproc
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
63
Introdu¸ca ˜o ao C´ alculo Num´erico
4.3
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Resolu¸ c˜ ao de Sistemas de Equa¸ c˜ oes Lineares por Elimina¸ c˜ ao Gaussiana
Se o sistema de equa¸c˜oes lineares n˜ ao apresenta uma forma simples, tal que se possa determinar as inc´ognitas facilmente, ent˜ ao podemos efetuar modifica¸c˜oes no sistema de tal forma que o transformamos em um sistema triangular, preservando a solu¸c˜ao do sistema anterior. Uma vez feitas estas modifica¸c˜oes, a solu¸c˜ao ´e obtida de forma imediata, conforme visto na se¸c˜ao anterior. Um processo desse tipo ´e aquele chamado de elimina¸c˜ ao Gaussiana, o qual consiste em se aplicar opera¸c˜oes elementares – somas e multiplica¸c˜oes – `as linhas da matriz de coeficientes e do vetor independente b, de tal forma que a matriz passe a ser triangular superior. Suponha, por exemplo, o sistema 9 4 2 3 x1 −1 7 3 x2 = 9 x3 12 4 0 8 cuja solu¸c˜ao ´e x1 = x2 = x3 = 1. Para transformarmos a matriz A em uma matriz triangular superior, devemos eliminar os elementos abaixo da diagonal principal de A. Para tanto, se multiplicamos a primeira linha por a21 /a11 = −1/4 e subtra´ımo-la da segunda, temos: 4 2 3 x1 9 0 7, 5 3, 75 x2 = 11, 25 x3 4 0 8 12 Agora, para eliminar o termo a31 , multiplicamos a primeira linha por a31 /a11 = 1/1 e subtra´ımo-la da terceira: 4 2 3 9 x1 0 7, 5 3, 75 x2 = 11, 25 x3 0 −2 5 3 Note que os elementos do vetor independente b s˜ao modificados tamb´em! A matriz agora ´e praticamente triangular superior; falta eliminar o termo a32 . Para tanto, basta multiplicar a segunda linha por a32 /a22 = −2/7, 5 e subtra´ı-la da terceira, de onde 4 2 3 9 x1 0 7, 5 3, 75 x2 = 11, 25 x3 0 0 6 6 Agora, podemos utilizar o algoritmo de retro-substitui¸c˜ao para determinar as inc´ ognitas: x3
=
x2
=
x1
=
1 11, 25 − 3, 75 · 1 =1 7, 5 9 − (2 · 1 + 3 · 1) =1 4
Podemos sumarizar o processo ent˜ao da seguinte forma: para se eliminar os elementos abaixo da diagonal na k-´esima coluna (ou seja, os elementos das linhas k + 1, k + 2, . . ., n na coluna ik o – para calcularmos um multiplicador z = aakk para k), usamos o elemento akk – chamado de pivˆ cada i-´esima linha abaixo da linha k. Esse multiplicador ser´ a utilizado para multiplicar a k-´esima linha e subtra´ı-la da linha i (incluindo, aqui, os elementos do termo independente b). Uma vez eliminados todos os elementos abaixo da diagonal principal de A, resta-nos uma matriz triangular superior, e, ent˜ ao, podemos determinar a solu¸c˜ao x usando o algoritmo da retro-substitui¸c˜ao. O processo de elimina¸c˜ao Gaussiana pode ser descrito de forma algoritmica como
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
64
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Algoritmo 4.3.1 Elimina¸c˜ ao Gaussiana ˜o Gaussiana(input: A, b; output: x) proc elimina¸ca for k = 1, 2, . . . , n − 1 do for i = k + 1, k + 2, . . . , n do ik z ← aakk aik ← 0 for j = k + 1, k + 2, . . . , n do aij ← aij − zakj endfor bi ← bi − zbk endfor endfor call retro substitui¸c˜ ao(A, b, x) endproc
4.3.1
Dificuldades
O processo de elimina¸c˜ao Gaussiana, descrito acima, n˜ ao consegue resolver todo e qualquer sistema. Considere, por exemplo, o sistema 0 1 x1 1 = (4.4) x2 1 1 2 o qual tem como solu¸c˜ao x1 = x2 = 1. No entanto, se formos aplicar elimina¸c˜ao Gaussiana a esse ´ o´bvio, portanto, que os pivˆ os n˜ ao podem ser nulos. sistema, ele falhar´ a, pois o pivˆ o a11 = 0. E O sistema (4.4) pode, no entanto, ser modificado, procedendo-se a uma troca de linhas imediatamente temos um sistema triangular superior. No entanto, ´e poss´ıvel que, ao longo do processo de elimina¸c˜ao Gaussiana, surja um zero na diagonal principal e n˜ ao seja poss´ıvel, por qualquer troca de linhas, removˆe-lo. Nesse caso, o sistema n˜ao tem solu¸c˜ao1 ; o algoritmo para a elimina¸c˜ao Gaussiana deve ser modificado adequadamente para se levar em conta tal possibilidade. O pr´ oximo exemplo mostra uma outra dificuldade associada ao m´etodo: 1 ε 1 x1 = (4.5) x2 2 1 1 onde 0 < ε 1, cuja solu¸c˜ao correta ´e x1 = x2 =
1 1−ε ≈ 1 1−2ε 1−ε ≈ 1
No entanto, se aplicarmos elimina¸c˜ao Gaussiana ao sistema (4.5), obteremos −1
x2 = 2−ε 1−ε−1 ≈ 1 x1 = (1 − x2 )ε−1 ≈ 0 o qual obviamente aproxima bem x2 , mas o valor de x1 ´e completamente errado! Isso acontece porque, se ε ´e pequeno o suficiente em um determinado computador, tanto 2 − ε−1 quanto 1 − ε−1 ser˜ ao calculados como −ε−1 (devido a` perda de d´ıgitos significativos na subtra¸c˜ao). Desse exemplo, tiramos uma outra li¸c˜ao: o pivˆ o deve, sempre, ser escolhido como o maior poss´ıvel, em m´ odulo. O processo de escolha de pivˆ os, chamado de pivotamento, implica na troca de linhas da matriz de coeficientes (bem como do termo independente b). Computacionalmente, no entanto, n˜ ao ´e 1 Esta ´ e, inclusive, uma maneira de se determinar se o sistema ´e singular, isto ´ e, a matriz de coeficientes n˜ ao tem inversa.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
65
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
aconselh´ avel se movimentar dados na mem´oria de forma excessiva, pois o tempo de execu¸c˜ao do algoritmo passa a ser proibitivo. Podemos, no entanto, modificar o algoritmo de elimina¸c˜ao Gaussiana utilizando um vetor auxiliar de ´ındices – chamado de p – o qual implicitamente diz quais linhas foram trocadas; os elementos desse vetor s˜ao utilizados para se acessar convenientemente os elementos da matriz e do termo independente. Note, ainda, que o algoritmo deve ser capaz de tratar o caso no qual n˜ ao ´e necess´ario se efetuar qualquer troca de linhas. No algoritmo a seguir, ´e feito tamb´em um escalonamento das linhas, isto ´e, um fator si = max | aij |, 1≤j≤n
i = 1, 2, . . . , n
´e calculado para cada linha. Esse fator ´e utilizado para se escolher um pivˆ o que seja o maior relativo aos elementos de uma coluna; em outras palavras, na k-´esima coluna, iremos selecionar o maior valor | api k |/spi nas linhas k ≤ i ≤ n. O algoritmo para a elimina¸c˜ao Gaussiana com pivotamento e escalonamento pode ser expresso como segue: Algoritmo 4.3.2 Elimina¸c˜ ao Gaussiana com pivotamento e escalonamento ˜o Gaussiana pivotamento e escalonamento(input: A, b; output: x) proc elimina¸ca for i = 1, 2, . . . , n do pi ← i si ← max1≤j≤n | aij | endfor for k = 1, 2, . . . , n − 1 do j←k for i = k + 1, k + 2, . . . , n do if (| api k |/spi ≥ | apj k |/spj ) then j←i break endif endfor q ← pk pk ← pj pj ← q if (apk k = 0) then break endif for i = k + 1, k + 2, . . . , n do a z ← appi kk k api k ← z for j = k + 1, k + 2, . . . , n do api j ← api j − zapk j endfor bpi ← bpi − zbpk endfor endfor for i = n, n − 1, . . . , 1 do xi ← bpi − nj=i+1 api j xj /api j endfor endproc
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
66
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
a
Note que os fatores appi kk utilizados para se eliminar os elementos abaixo da diagonal s˜ ao k armazenados na matriz A, onde se colocariam zeros (conforme utilizado no algoritmo da elimina¸c˜ao Gaussiana sem pivotamento). Isso ´e feito de forma a se poder obter, a partir do algoritmo acima, a fatora¸c˜ao LU da matriz A, conforme veremos na se¸c˜ao a seguir. O exemplo abaixo mostra o funcionamento do algoritmo descrito acima: Exemplo 4.1 Calcule a solu¸c˜ ao do sistema 2 3 −6 −10 x1 1 −6 8 x2 = 13 x3 3 −2 1 2 Solu¸ c˜ ao: Inicialmente, temos p = (1, 2, 3) (de acordo com o algoritmo) e s = (6, 8, 3) (verifique, por inspe¸c˜ ao). A cada passo, temos: k 1
p i z (3, 2, 1) 2 0, 3333 3 0, 6667 0, 6667 4, 3333 −6, 6667 −11, 3333 7, 6667 b = 12, 3333 A = 0, 3333 −5, 3333 3, 0000 −2, 0000 1, 0000 2, 0000 k 2
j 3
j p i 3 (3, 1, 2) 3
z −1, 2308 0, 6667 4, 3333 −6, 6667 −11, 3333 A = 0, 3333 −1, 2308 −0, 5385 b = −1, 6154 3, 0000 −2, 0000 1, 0000 2, 0000 Uma vez efetuada a elimina¸c˜ ao, procede-se ao c´ alculo das inc´ ognitas: i=3 : i=2 : i=1 :
4.3.2
−1, 6154 =3 −0, 5385 −11, 3333 − (−20) p2 = 1, x2 = =2 4, 3333 2 − (−1) p1 = 3, x1 = =1 3 p3 = 2, x3 =
Elimina¸ c˜ ao Gaussiana e a Fatora¸ c˜ ao LU
Conforme visto na se¸c˜ao anterior, o algoritmo de elimina¸c˜ao Gaussiana com pivotamento e escalonamento produz, de forma impl´ıcita, uma matriz triangular inferior, uma matriz triangular superior e um vetor de permuta¸c˜ao. Como essas matrizes foram obtidas por transforma¸c˜oes sobre a matriz A original, podemos de alguma forma relacion´ a-las entre si. Primeiramente, analisemos o vetor de permuta¸c˜ao; seus elementos indicam qual linha foi trocada com outra, i.e., se pj = k, isso significa que a linha j foi trocada com a linha k. Essa permuta¸c˜ao pode ser expressa, tamb´em, atrav´es de uma matriz de permuta¸c˜ao, P , a qual tem como elementos apenas o 0 e o 1. No exemplo mostrado na se¸c˜ao anterior, obtemos p = (3, 1, 2) ao fim; ou seja, a linha 3 est´ a no lugar da linha 1; a linha 1 est´ a no lugar da linha 2 e, por fim, a linha 2 est´ a na linha 3. A matriz de permuta¸c˜ao correspondente ´e 0 0 1 P = 1 0 0 . 0 1 0
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
67
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
A rela¸c˜ao existente entre A e as matrizes triangular inferior, L; triangular superior, U ; e a matriz de permuta¸c˜ao P ´e a seguinte: P A = LU onde L ´e triangular inferior com diagonal unit´ aria e os seus elementos abaixo da diagonal principal encontram-se armazenados na matriz A, ao final do algoritmo de elimina¸c˜ao Gaussiana com pivotamento e escalonamento, por´em possivelmente permutados. Usando mais uma vez o exemplo anterior, temos:
0 0 1 0 0 1
PA = 1 2 3 −6 0 1 −6 8 = 0 3 −2 1 =
LU
1 0 0 3 0, 6667 1 0 0 0, 3333 −1, 2308 1 0 3 −2 1 2 3 −6 1 −6 8
−2 1 4, 3333 −6, 6667 0 −0, 5385
onde as matrizes L e U foram permutadas adequadamente, usando a matriz P . Pode-se verificar, por inspe¸c˜ao, que o lado direito da igualdade ´e a matriz A com as suas linhas trocadas conforme expresso por P . A fatora¸c˜ao LU ´e u ´ til quando, para uma mesma matriz de coeficientes A, temos de resolver m sistemas de equa¸c˜oes lineares Ax(j) = b(j) , com termos independentes b(1) , b(2) , . . ., b(m) . Basta, ent˜ao, obter a fatora¸c˜ao com o algoritmo de elimina¸c˜ao Gaussiana com pivotamento e ´ ltimas trˆes linhas do algoritmo), obtendo L, U e P . Valendoescalonamento (sem calcular xi – as u se da igualdade P Ax = P b e, como P A = LU , podemos escrever L(U x) = b, de onde a solu¸c˜ao de um sistema Ax = b ´e obtida resolvendo-se dois sistemas triangulares: Ly
= Pb
Ux
= y
A fatora¸c˜ao LU , bem como a solu¸c˜ao dos sistemas triangulares acima, s˜ ao expressas pelos algoritmos 4.3.3 e 4.3.4.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
68
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Algoritmo 4.3.3 Fatora¸ca ˜o LU ao LU(input: A, b; output: A, b, p) proc fatora¸c˜ for i = 1, 2, . . . , n do pi ← i si ← max1≤j≤n | aij | endfor for k = 1, 2, . . . , n − 1 do j←k for i = k + 1, k + 2, . . . , n do if (| api k |/spi ≥ | apj k |/spj ) then j←i break endif endfor q ← pk pk ← pj pj ← q if (apk k = 0) then break endif for i = k + 1, k + 2, . . . , n do a z ← appi kk k api k ← z for j = k + 1, k + 2, . . . , n do api j ← api j − zapk j endfor endfor endfor endproc
Algoritmo 4.3.4 Resolve sistema usando LU proc resolve sistema LU(input: A, b, p; output: x) for i = 1, 2, . . . , n do i−1 zi ← bpi − j=1 api j zj endfor for i = n, n − 1, . . . , 1 do n xi ← zi − j=i+1 api j xj /api i endfor endproc
4.3.3
O Custo Computacional da Fatora¸ c˜ ao LU
O custo computacional de um algoritmo num´erico ´e, normalmente, medido em termos do n´ umero de multiplica¸c˜oes e/ou divis˜oes, j´a que adi¸c˜oes e subtra¸c˜oes s˜ao efetuadas em uma fra¸c˜ao do tempo necess´ario para aquelas outras duas opera¸c˜oes aritm´eticas. Assim, ao nos referirmos a ”opera¸c˜oes”, estaremos nos referindo a multiplica¸c˜oes e/ou divis˜oes. Para se obter a fatora¸c˜ao LU de uma matriz A, vemos que, quando k = 1, no algoritmo respectivo, para cada uma das n − 1 linhas abaixo da linha 1, ´e calculado um multiplicador e, ent˜ ao, um m´ ultiplo da primeira linha ´e subtra´ıdo daquelas n − 1 linhas; isso nos d´ a n opera¸c˜oes. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
69
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Como n − 1 linhas s˜ ao processadas dessa forma, temos um total de n(n − 1) ≈ n2 opera¸c˜oes para a primeira coluna. Para as demais colunas, note que o mesmo racioc´ınio acima ´e v´alido, mas ´e como se a matriz diminu´ısse de uma linha e uma coluna a cada novo valor de k. Assim, para todos os n − 1 pivˆ os a serem calculados, teremos: n2 + (n − 1)2 + . . . + 32 + 22 =
1 1 3 1 2 1 1 n + n + n − 1 ≈ n3 + n2 3 2 6 3 2
a qual ´e obtida usando nk=1 k 2 = 16 n(n + 1)(2n + 1). Para se corrigir o termo independente b, gasta-se n − 1 opera¸c˜oes, depois n − 2, e assim sucessivamente, de onde (n − 1) + (n − 2) + . . . + 1 =
1 2 1 n − n. 2 2
Finalmente, o processo de retro-substitui¸c˜ao custa 1 + 2 + 3 + ...+ n =
1 2 1 n + n 2 2
opera¸c˜oes. Combinando todas as express˜oes, podemos dizer que, para se resolver m sistemas de equa¸c˜oes lineares Ax(i) = b(i) , usando a fatora¸c˜ao LU , apresenta um custo computacional de aproximadamente
1 1 3 n + + m n2 3 2 o que mostra que ´e mais eficiente efetuar a fatora¸c˜ao LU apenas uma vez, e depois resolver os m sistemas lineares, do que se resolvˆessemos cada sistema independentemente, pois o custo, nesse caso, seria da ordem de 13 mn3 .
4.3.4
Resolu¸ c˜ ao de sistemas com m´ ultiplos termos independentes
Existem situa¸c˜oes que requerem a solu¸c˜ao de v´ arios sistemas lineares, todos eles com a mesma matriz de coeficientes, por´em com diferentes termos independentes. Como visto na se¸c˜ao 4.3.3, ´e mais vantajoso, nesse caso, realizar-se a fatora¸c˜ao LU de A, apenas uma vez; a solu¸c˜ao de todos os sistemas ´e obtida, simplesmente, calculando-se as solu¸c˜oes dos sistemas triangulares Ly (i) = P b(i) e U x(i) = y (i) , onde o ´ındice (i) identifica um sistema espec´ıfico. 4.3.4.1
C´ alculo da inversa de uma matriz
Uma dessas situa¸c˜oes ´e o c´alculo da inversa de uma matriz. Note que tal c´alculo n˜ ao ´e realizado com o fim de se resolver um sistema de equa¸c˜oes (utilizando-se a rela¸c˜ao x = A−1 b; aplica¸c˜oes que envolvam certas decomposi¸c˜oes de matrizes exigem que se escreva um vetor v como XDX −1 , onde X e D s˜ao matrizes. Seja ent˜ao a matriz A, cuja inversa A−1 ´e desejada. Como, por defini¸c˜ao, o produto entre uma matriz e a sua inversa ´e a matriz identidade I, AA−1 = I
(4.6)
podemos escrever o problema de determina¸c˜ao da inversa na forma de um sistema de equa¸c˜oes lineares com m´ ultiplos termos independentes (e, conseq¨ uentemente, m´ ultiplas solu¸c˜oes) como AX = I
(4.7)
onde X ≡ A−1 , i.e., as colunas (X)i s˜ao as colunas de A−1 .
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
70
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Dessa forma, obtendo-se a fatora¸c˜ao LU de A, a primeira coluna de A−1 ´e obtida resolvendo-se os sistemas 1 0 (i) 0 (4.8) Ly = P . .. 0 e U (X)1 = y (1) (4.9) e a segunda coluna ´e obtida como Ly
(2)
=P
0
1 0 ..
.
(4.10)
0 e
U (X)2 = y (2)
(4.11)
e as demais colunas s˜ao obtidas similarmente. Note que, computacionalmente, basta usar apenas um vetor y, sendo o mesmo reutilizado a cada novo sistema resolvido. Exemplo 4.2 Obtenha a inversa da matriz 10 −10 20 A = −10 10 −10 20 −10 10 Solu¸c˜ao: Aplicando-se o algoritmo 4.3.3, obtemos os fatores L, U e P : 1 0 0 L = −0, 5 1 0 0, 5 −1 1 20 −10 10 5 −5 U = 0 0 0 10 0 0 1 P = 0 1 0 1 0 0 Agora, aplica-se o algoritmo 4.3.4 usando-se como termo independente o vetor (1, 0, . . . , 0)T , i.e., resolve-se 1 Ly (1) = P 0 0 1 0 0 0 −0, 5 1 0 y (1) = 0 0, 5 −1 1 1 0 (1) y = 0 1 A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
71
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
e U (X)1
=
20 −10 10 0 5 −5 (X)1 0 0 10
=
(X)1
=
y (1) 0 0 1 0 0, 1 0, 1
Para a segunda coluna, temos
Ly (2)
1 0 −0, 5 1 0, 5 −1
0 0 y (2) 1 y (2)
0 = P 1 0 0 = 1 0 0 = 1 1
e U (X)2
=
20 −10 10 0 5 −5 (X)2 0 0 10
=
(X)2
=
y (2) 0 1 1 0, 1 0, 3 0, 1
Finalmente, para a terceira coluna, temos
Ly (3)
1 0 −0, 5 1 0, 5 −1
0 0 y (3) 1 y (3)
0 = P 0 1 1 = 0 0 1 = 0, 5 0
e
U (X)3
=
20 −10 10 0 5 −5 (X)3 0 0 10
=
(X)3
=
y (3)
1 0, 5 0 0, 1 0, 1 0
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
72
Introdu¸ca ˜o ao C´ alculo Num´erico Assim, A−1 ´e dada por
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
A−1
0 0, 1 0, 1 = X = 0, 1 0, 3 0, 1 0, 1 0, 1 0
e pode-se verificar que AA−1 10 −10 20 0 0, 1 0, 1 −10 10 −10 0, 1 0, 3 0, 1 20 −10 10 0, 1 0, 1 0
4.4
= I
0 0 1 0 . 0 1
1 = 0 0
Resolu¸ c˜ ao Iterativa de Sistemas de Equa¸ c˜ oes Lineares
Em certos casos, n˜ao ´e conveniente se resolver o sistema Ax = b atrav´es de um m´etodo direto como a elimina¸c˜ao Gaussiana. Considere, por exemplo, a matriz A derivada da discretiza¸c˜ao em diferen¸cas-finitas (com estˆencil de 5 pontos) do operador diferencial ∇2 , cuja estrutura ´e mostrada na figura 4.2; se aplicarmos a fatora¸c˜ao LU sobre A, alguns dos elementos que eram nulos em A passar˜ ao a ser diferentes de zero, tanto em L como em U (figura 4.3). Note que A tem 64 elementos n˜ ao-nulos, ao passo que L e U apresentam um total de 134 elementos n˜ao-nulos. A Estrutura da matriz A 0
2
4
6
8
10
12
14
16 0
2
4
6
8 10 nz = 64
12
14
16
Figura 4.2: Estrutura da matriz A derivada da discretiza¸c˜ ao em diferen¸cas-finitas do operador diferencial ∇2 . elimina¸c˜ao Gaussiana est´ a, nesse caso, destruindo a estrutura e/ou a esparsidade da matriz, o que n˜ ao ´e aconselh´avel, principalmente para matrizes grandes (n > 10000). Por outro lado, mesmo quando a matriz ´e densa – ou seja, a inser¸c˜ao de elementos n˜ ao-nulos n˜ ao implicar´ a em aumento consider´avel do uso da mem´oria – pode n˜ ao ser aconselh´avel utilizar um m´etodo direto, se a solu¸c˜ao desejada necessita apenas um n´ umero pequeno de d´ıgitos corretos. Estrutura da matriz L
Estrutura da matriz U
0
0
2
2
4
4
6
6
8
8
10
10
12
12
14
14
16
16 0
2
4
6
8 10 nz = 67
12
14
16
0
2
4
6
8 10 nz = 67
12
14
16
Figura 4.3: Estruturas da matriz L (` a esquerda) e U (` a direita), resultantes da fatora¸c˜ ao LU de A. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
73
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Uma outra raz˜ao, que justifica o uso de m´etodos iterativos (ver [13]), ´e o fato de seu custo computacional ser proporcional a n2 (e, `as vezes, at´e mesmo a n), o que os torna bastante competitivos, se comparados a um m´etodo direto (cujo custo ´e proporcional a n3 ).
4.4.1
Normas de vetores e de matrizes
Como todo processo iterativo, ´e necess´ario saber quando se alcan¸cou a convergˆencia do processo – em nosso caso, obteve-se uma estimativa xk que aproxima suficientemente x = A−1 b. Fazendo uma analogia com o m´etodo da bissec¸c˜ao (ver se¸c˜ao 2.2), onde se detectava a convergˆencia quando o comprimento do intervalo era menor do que uma tolerˆ ancia pr´e-especificada, aqui vamos tamb´em calcular um comprimento de um vetor (em IRn ). Para se calcular esse comprimento, utiliza-se uma norma. Uma norma de um vetor x pertencente a um espa¸co vetorial V ´e uma fun¸c˜ao || x || : V −→ IR+ que obedece aos seguintes postulados: || x || > 0, se x = 0, x ∈ V || λx || = | λ | || x ||, || x + y || ≤ || x || + || y ||
se λ ∈ IR, x ∈ V
se x, y ∈ V (desigualdade triangular)
A norma de um vetor ´e o seu ”comprimento” no espa¸co vetorial V ; ´e uma generaliza¸c˜ao da no¸c˜ao de valor absoluto de um n´ umero real. Para o espa¸co vetorial IRn , a norma mais conhecida ´e a chamada norma Euclidiana, definida por || x ||2 =
n
12 x2i
(4.12)
i=1
onde x = (x1 , x2 , . . . , xn )T . Particularmente, em IR2 , temos || x ||2 = x21 + x22 , que ´e a express˜ao para a distˆ ancia de um ponto com coordenadas (x1 , x2 ) em rela¸c˜ao `a origem do sistema de eixos cartesianos. Existem outras normas que s˜ao bastante usadas em c´alculos num´ericos, como a norma-l∞ n
|| x ||∞ = max | xi | i=1
e a norma-l1, || x ||1 =
n
| xi |
(4.13)
(4.14)
i=1
as quais s˜ao bem mais simples e menos onerosas de se calcular do que a norma Euclidiana.
4.4.2
Normas de matrizes
Uma vez especificada uma norma de um vetor, a norma matricial subordinada ´e definida como || A || = sup || Au || : u ∈ IRn , || u || = 1
(4.15)
para uma matriz A n × n. Pode-se verificar que || Ax || ≤ || A || || x ||,
x ∈ IRn
Por exemplo, a norma matricial subordinada da norma vetorial || · ||∞ ´e dada por n
|| A ||∞ = max i=1
n
| aij |
(4.16)
j=1
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
74
Introdu¸ca ˜o ao C´ alculo Num´erico
4.4.3
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
N´ umero de condi¸ c˜ ao de uma matriz
Normas de vetores e de matrizes nos permitem avaliar o qu˜ao suscet´ıvel a erros num´ericos ser´ a uma computa¸c˜ao empregando-se uma dada matriz A. Para tanto, suponha que se deseja resolver o sistema Ax = b, onde A ´e n × n e A−1 existe. Se A−1 tem seus valores perturbados (isto ´e, ligeiramente modificados), gerando uma nova matriz B, a solu¸c˜ao do sistema n˜ ao ´e mais x = A−1 b mas x ˜ = Bb. Essa perturba¸c˜ao pode ser medida em termos do comprimento do vetor x − x ˜, || x − x ˜ || = || x − Bb || = || x − BAx || = || (I − BA)x || ≤ || I − BA || || x || ou
|| x − x ˜ || ≤ || I − BA || || x ||
o que nos d´ a uma no¸c˜ao do erro relativo entre x e x ˜. De forma an´ aloga, suponha que b foi perturbado, gerando um novo vetor ˜b. Se x e x ˜ s˜ao as solu¸c˜oes de Ax = b e A˜ x = ˜b, podemos medir o erro absoluto entre x e x ˜ escrevendo || x − x ˜ || = ≤
|| A−1 b − A−1˜b || = || A−1 (b − ˜b) || || A−1 || || b − ˜b ||
e o erro relativo como || x − x ˜ || ≤
|| x − x ˜ || || x ||
|| A−1 || || b − ˜b || = || A−1 || || Ax ||
|| b − ˜b || || b ||
|| b − ˜b || || b || || b − ˜b ||
≤
|| A−1 || || A || || x ||
≤
|| A−1 || || A ||
|| b ||
o que nos diz que o erro relativo em x ´e limitado pelo n´ umero || A−1 || || A ||. Essa quantidade ´e denominada de n´ umero de condi¸c˜ ao de A, e ´e denotada por κ(A) = || A−1 || || A ||
(4.17)
Vejamos um exemplo do uso de κ(A). Exemplo 4.3 Seja a matriz A e sua inversa A−1 , 1 1 1+ε 1 A= A−1 = 2 1−ε 1 −1 + ε ε ao || A ||∞ = 2 + ε e || A−1 ||∞ = Usando a norma-l∞ , ent˜ κ(A) =
2+ε ε
2 >
1 ε2 (2
−1 − ε 1
.
+ ε), de onde
4 . ε2
Se ε ≤ 0, 01, ent˜ ao κ(A) ≥ 40000. Isso quer dizer que, se b sofrer uma pequena perturba¸c˜ ao, a perturba¸ca ˜o relativa na solu¸c˜ ao do sistema Ax = b ser´ a 40000 vezes maior! Uma matriz que tenha um n´ umero de condi¸c˜ao muito grande ´e dita mal-condicionada, e pequenas varia¸c˜oes nos valores de b induzir˜ ao um grande erro relativo no vetor solu¸c˜ao do sistema.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
75
Introdu¸ca ˜o ao C´ alculo Num´erico
4.4.4
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Erros computacionais e condicionamento
Qualquer solu¸c˜ao de um sistema linear deve ser considerada uma solu¸c˜ao aproximada, em virtude de erros de arredondamento e outros. O m´etodo mais natural para determina¸c˜ao da precis˜ao de uma solu¸c˜ao ´e verificar qu˜ao bem esta solu¸c˜ao satisfaz o sistema original, calculando o vetor res´ıduo. Se a solu¸c˜ao aproximada x ˜ for uma boa aproxima¸c˜ao, pode-se esperar que cada componente de r = b − A˜ x seja pequeno, pelo menos em um conceito relativo. H´a sistemas de equa¸c˜oes, contudo, em que o resto n˜ao proporciona uma boa medida da precis˜ ao da solu¸c˜ao. S˜ ao sistemas nos quais pequenas altera¸c˜oes nos dados de entrada conduzem a mudan¸cas significativas na solu¸c˜ao. Estes s˜ao denominados sistemas inst´ aveis ou mal-condicionados. Exemplo 4.4 A solu¸ca ˜o exata do sistema x1 + x2 = 2 1, 01x1 + x2 = 2, 01 ao calculada fosse ´e x1 = x2 = 1. Supondo que, devido a erros, a solu¸c˜ x1 x2
= =
0 2, 005
o vetor res´ıduo neste caso seria RT = [−0, 005; 0, 005]. Entretanto, o erro em cada resposta, x1 e x2 , ´e de aproximadamente uma unidade. Por outro lado, os coeficientes tamb´em podem conter erros. Supondo que algum tipo de erro tenha mudado as equa¸co ˜es acima para x1 + x2 = 2 1, 0001x1 + x2 = 2, 007 at´e mesmo uma solu¸ca ˜o bem diferente da anterior, como x1 = 100 e x2 = −98 produziria um res´ıduo bem pequeno, RT = [0; −0, 003]. Erros deste tipo, ao contr´ ario daqueles causados pela acumula¸c˜ao de erros de arredondamento, n˜ ao podem ser evitados por uma programa¸c˜ao cuidadosa. Como, ent˜ ao, determinar quando um problema ´e mal-condicionado?
Figura 4.4: Os sistemas que descrevem a intersec¸c˜ ao das retas s˜ ao, da esquerda para a direita: bem-condicionado, mal-condicionado e singular. Em geral, tem-se a situa¸c˜ao mostrada na figura 4.4, para o caso de duas retas. Quando o sistema ´e ordem maior, no entanto, deve-se recorrer a medidas algebricas para se estimar o malcondicionamento do sistema. Uma dessas medidas ´e o chamado determinante normalizado da matriz dos coeficientes. Para obtˆe-lo, normaliza-se a matriz de coeficientes A dividindo-se cada
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
76
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
linha de A pela raiz quadrada da soma dos quadrados dos elementos de cada linha, a11 a12 α · · · aα1n α1 1 a211 a22 a2n · · · |A| α2 α2 α2 norm| A | = . .. .. = .. .. α α 1 2 · . . . · αn . . . an1 an2 · · · ann αn
αn
(4.18)
αn
a2i1 + a2i2 + . . . + a2in . Diz-se, ent˜ao, que uma matriz A ´e mal-condicionada se o onde αi = n´ umero norm| A | for pequeno, comparado com a unidade. Exemplo 4.5 Seja a matriz
A=
1 1 1 1, 01
;
verifique se ela ´e mal-condicionada. √ √ Solu¸c˜ao: Calculando-se α1 = 1 e α2 = 2, 0201, podemos obter 1 1 1 1, 01 norm| A | = ≈ 0, 005 α1 α2 ou seja, A ´e dita ser mal-condicionada.
4.4.5
M´ etodos iterativos
Dado um sistema n˜ao-singular de n equa¸c˜oes lineares Ax = b, um m´etodo iterativo para resolver esse sistema ´e definido por um conjunto de fun¸c˜oes Φk (x0 , x1 , . . . , xk , A, b), onde x0 = Φ0 (A, b) ´e uma estimativa inicial para a solu¸c˜ao x = A−1 b e x1 , x2 , . . . s˜ao as aproxima¸c˜oes sucessivas para a solu¸c˜ao, x1
=
Φ1 (x0 , A, b)
x2
= .. . =
Φ2 (x0 , x1 , A, b)
xk
Φk (x0 , x1 , . . . , xk , A, b)
As fun¸c˜oes Φk nos definem os m´etodos iterativos. Diz-se que um m´etodo ´e estacion´ ario se, ao depende de n para todo n ≥ m, ou seja, Φ = Φm = Φm+1 = . . . Nesse para um m > 0, Φn n˜ caso, xn+1 depende de, no m´aximo, m vetores anteriores, xn , xn−1 , . . ., xn−m+1 . Por exemplo, para m = 2, temos x0
=
Φ0 (A, b)
(4.19)
x1 xk
= =
Φ1 (x0 , A, b) Φ(xk−2 , xk−1 , A, b),
(4.20) (4.21)
k = 2, 3, . . .
O grau de um m´etodo estacion´ario ´e m ˆ (para m ˆ ≤ m) se, para n ≥ m − 1, xn+1 depende de xn , xn−1 , . . ., xn−m+1 mas n˜ a o para k < n − m+. ˆ O grau de um m´etodo iterativo definido pelas ˆ equa¸c˜oes (4.19)-(4.21) ´e 2. Um m´etodo iterativo ´e dito linear se todas as fun¸c˜oes Φi s˜ao fun¸c˜oes lineares de x0 , x1 , . . ., xn−1 . Assim, um m´etodo iterativo estacion´ ario linear de grau 1 pode ser expresso por xk+1 = Gxk + f
(4.22)
onde G ´e uma matriz e f um vetor, escolhidos adequadamente.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
77
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Para um m´etodo como em (4.22), podemos nos referir a um sistema linear relacionado, (I − G)x = f ;
(4.23)
onde I ´e a matriz identidade de ordem n. Por exemplo, se G = I − A, f ≡ b, ent˜ ao (4.23) ´e equivalente a Ax = b. A defini¸c˜ao de um m´etodo iterativo pode tamb´em ser feita a partir de uma matriz separadora, Q. Podemos escrever o sistema Ax = b na forma equivalente Qx = (Q − A)x + b
(4.24)
isto ´e, x = Φ(x, A, b), o que nos leva a escrever um processo iterativo, de aproxima¸c˜oes sucessivas, como (4.25) Qxk = (Q − A)xk−1 + b, k = 0, 1, . . . A matriz Q deve ser escolhida de tal forma que se possa calcular rapidamente os xk e que a seq¨ uˆencia x0 , x1 , . . . convirja rapidamente para a solu¸c˜ao x = A−1 b. A fim de obter uma condi¸c˜ao necess´ aria e suficiente para que haja convergˆencia, reescrevemos (4.25) como (4.26) xk = (I − Q−1 A)xk−1 + Q−1 b A solu¸c˜ao x satisfaz a equa¸c˜ao x = (I − Q−1 A)xk−1 + Q−1 b
(4.27)
x → (I − Q−1 A)xk−1 + Q−1 b
(4.28)
i.e., x ´e um ponto fixo do mapa
Usando as equa¸c˜oes (4.26) e (4.27), podemos obter uma express˜ ao para o erro xk − x como xk − x = (I − Q−1 A)(xk−1 − x)
(4.29)
e, aplicando normas, temos || xk − x ||
≤ || (I − Q−1 A) || || (xk−1 − x) || ≤ || (I − Q−1 A) ||2 || (xk−2 − x) || . ≤ .. ≤ || (I − Q−1 A) ||k || (x0 − x) ||
de onde lim || xk − x || = 0,
k→∞
se || (I − Q−1 A) || < 1
(4.30) (4.31)
desde que A e Q sejam invert´ıveis.
4.4.6
Refinamento iterativo
O primeiro m´etodo iterativo para a solu¸c˜ao de um sistema de equa¸c˜oes lineares Ax = b ´e o chamado refinamento iterativo. Para uma estimativa inicial x0 , definimos o vetor erro e0 como
e o vetor res´ıduo r0 como
e0 = x − x0
(4.32)
r0 = b − Ax0 .
(4.33)
O vetor erro nos diz o quanto x0 est´a distante de x, e o vetor res´ıduo nos diz o quanto Ax0 est´a distante de b. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
78
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Multiplicando r0 por A−1 , temos A−1 r0 = A−1 b − x0 = x − x0 = e0
(4.34)
e, usando essa igualdade, podemos obter uma express˜ ao para x: x = x0 + A−1 r0
(4.35)
Note que a equa¸c˜ao (4.35) envolve A−1 ; mas, obviamente, n˜ ao podemos utiliz´a-la, pois se a calcul´ assemos, a solu¸c˜ao do sistema seria imediata! Por outro lado, a equa¸c˜ao (4.34) nos permite escrever (4.36) Ae0 = r0 e, combinando as equa¸c˜oes (4.33), (4.36) e (4.35), podemos descrever o m´etodo do refinamento iterativo como rk = b − Axk resolve Aek = rk , k = 0, 1, . . . (4.37) xk+1 = xk + ek O m´etodo do refinamento iterativo ´e utilizado em conjunto com um m´etodo direto, como a elimina¸c˜ao Gaussiana. Tendo fatorado A no produto LU e obtido uma solu¸c˜ao x˜ para Ax = b (a qual pode n˜ ao ser muito boa, devido a erros de arredondamento), fazemos x0 = x ˜ e refinamos essa solu¸c˜ao, usando (4.37), at´e que xk seja suficientemente bom. Note que a fatora¸c˜ao LU pode, agora, ser utilizada para resolver Aek = (LU )ek = rk . Se consideramos que a solu¸c˜ao obtida com a fatora¸c˜ao LU de A n˜ ao foi exata, ent˜ ao podemos dizer que U −1 L−1 = B ≈ A−1 . Usando a equa¸c˜ao (4.35), escrevemos xk+1
=
xk + A−1 rk = xk + A−1 b − A−1 Axk ... B ≈ A−1 ...
=
xk + B(b − Axk )
(4.38)
De onde podemos mostrar que o m´etodo converge para uma solu¸c˜ao: subtraindo x de ambos os lados da equa¸c˜ao (4.38), temos xk+1 − x = =
xk − x + B(b − Axk ) ... b = Ax ... xk − x + B(Ax − Axk ) = (I − BA)(xk − x)
e, tomando normas de ambos os lados da igualdade acima, vem, pela desigualdade triangular: || xk+1 − x || ≤ ≤ ≤ ≤
|| I − BA || ||xk − x || ... || xk − x || = || I − BA || || xk−1 − x || ... || I − BA ||2 ||xk−1 − x || .. . || I − BA ||k ||x0 − x ||
o que nos diz que os erros convergem para 0 se || I − BA || < 1. Assim como nos m´etodos de determina¸c˜ao de ra´ızes de fun¸c˜oes, precisamos definir alguns crit´erios de parada do processo de refinamento. O primeiro desses crit´erios ´e a estipula¸c˜ao de um n´ umero m´ aximo de itera¸c˜oes (kmax ); o segundo pode ser baseado na norma do res´ıduo rk , devidamente escalonada por || b || (usando uma norma qualquer, previamente escolhida). Assim, as itera¸c˜oes proceder˜ ao enquanto (4.39) || rk || < ε|| b || n˜ ao for satisfeito; ε ´e um n´ umero real, escolhido de acordo com a exatid˜ao requerida. Um algoritmo que expressa o m´etodo do refinamento iterativo pode ser escrito como:
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
79
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Algoritmo 4.4.1 Refinamento Iterativo proc refinamento iterativo(input: A, L, U , b, x0 , kmax , ε; output: xk ) t ← ε|| b || for k = 0, 1, . . . , kmax do rk ← b − Axk if || rk || < t then break endif resolve (LU )ek = rk , obtendo ek xk+1 ← xk + ek endfor endproc O exemplo abaixo [10] mostra o comportamento desse m´etodo. Exemplo 4.6 Seja o sistema
420 210 140 105 210 140 105 84 140 105 84 70 x = 105 84 70 60
875 539 399 319
cuja solu¸c˜ ao ´e o vetor x = (1, 1, 1, 1)T . Utilizando um computador com apenas 6 casas decimais de precis˜ ao, obtemos como solu¸c˜ ao inicial, atrav´es da elimina¸c˜ ao Gaussiana, com pivotamento, o vetor x = (0, 999988, 1, 000137, 0, 999670, 1, 000215)T Agora, dispondo dos fatores triangulares da fatora¸c˜ ao LU , podemos utilizar o algoritmo 4.4.1 e obter: x = (0, 999994, 1, 000069, 0, 999831, 1, 000110)T x = (0, 999996, 1, 000046, 0, 999891, 1, 000070)T x = (0, 999993, 1, 000080, 0, 999812, 1, 000121)T x = (1, 000000, 1, 000006, 0, 999984, 1, 000011)T
4.4.7
M´ etodo iterativo de Jacobi
Suponha o sistema (4.1), com n = 3, sem perda de generalidade. Se os elementos da diagonal de A s˜ao todos n˜ ao-nulos, ent˜ao pode-se isolar cada vari´ avel x1 , x2 e x3 atrav´es de c12 x2 + c13 x3 + d1 x1 = x2 = c21 x1 + c23 x3 + d2 x3 = c31 x1 + c32 x2 + d3 onde
a
− aij , i = j ii 0, i=j
cij
=
di
= bi /aii
Com essa transforma¸c˜ao, o sistema Ax = b foi transformado em um sistema da forma (I − C)x = d
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
80
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
onde C = D−1 (D − A), d = D−1 b e D = diag(A) (isto ´e, a matriz formada pelos elementos da diagonal de A). De forma equivalente, podemos escrever x = Cx + d o que sugere uma corre¸c˜ao de x por aproxima¸c˜ oes sucessivas, xk+1
= =
Cxk + d = D−1 (D − A)xk + D−1 b = (I − D−1 A)xk + D−1 b, k = 0, 1, . . .
(4.40)
a qual define o m´etodo iterativo de Jacobi. A matriz separadora, aqui, ´e D−1 ; o m´etodo de Jacobi converge se a matriz A for diagonal dominante, i.e., n | aij | (4.41) | aii | > j=1
j=i
e, usando a norma-l∞, || I − D
−1
A ||∞
n aij = max aii 1≤i≤n j=1
j=i
de onde pode-se verificar que a dominˆ ancia diagonal ´e condi¸c˜ao necess´ aria para a convergˆencia do m´etodo. Para obtermos a solu¸c˜ao do sistema Ax = b via o m´etodo iterativo de Jacobi, podemos usar a forma equivalente a (4.40), (4.42) xk+1 = xk − D−1 Axk + D−1 b Note que, do ponto de vista de eficiˆencia do processo, deve-se efetuar as divis˜ oes de cada linha de A e do elemento respectivo de b pelo elemento na diagonal de A antes de se iniciar as itera¸c˜oes. Al´em disso, se o crit´erio de parada envolve o c´ alculo do res´ıduo rk = b − Axk , isso exigiria um produto matriz-vetor a mais por itera¸c˜ao, o que pode ser evitado se usarmos como crit´erio de parada r˜k+1 = D−1 rk+1 , (4.43) || D−1 rk+1 || ≤ ε|| D−1 || || b || pois
r˜k+1 = D−1 rk+1 = D−1 b − D−1 Axk+1
e os termos no lado direito da equa¸c˜ao j´ a foram calculados, anteriormente, para se obter xk+1 . O algoritmo a seguir utiliza essas id´eias:
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
81
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Algoritmo 4.4.2 M´etodo de Jacobi proc jacobi(input: A, b, x0 , kmax , ε; output: xk+1 ) for i = 1, 2, . . . , n do qi ← a−1 ii endfor t ← ε|| q || || b || for i = 1, 2, . . . , n do for j = 1, 2, . . . , n do aij ← aij ∗ qi % sobrescreve A com D−1 A endfor bi ← bi ∗ qi % sobrescreve b com D−1 b endfor for k = 0, 1, . . . , kmax do w ← Axk xk+1 = xk − w + b r˜k+1 ← b − w if || r˜k+1 || < t then break endif endfor endproc O exemplo abaixo ilustra o comportamento t´ıpico do m´etodo de Jacobi: Exemplo 4.7 Resolva o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
0 1 1 0
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T , usando o m´etodo de Jacobi com x0 = T (0, 0, 0, 0) a uma tolerˆ ancia ε = 10−2 . Solu¸c˜ao: Aplicando o m´etodo de Jacobi, obtemos x1
= (0, 0, 25, 0, 25, 0)T
x2 x3
= (0, 125, 0, 25, 0, 25, 0, 125)T = (0, 125, 0, 3125, 0, 3125, 0, 125)T
x4 x5
= (0, 1563, 0, 3125, 0, 3125, 0, 1563)T = (0, 1563, 0, 3281, 0, 3281, 0, 1563)T
x6 x7
= (0, 1641, 0, 3281, 0, 3281, 0, 1641)T = (0, 1641, 0, 3320, 0, 3320, 0, 1641)T
x8
= (0, 1660, 0, 3320, 0, 3320, 0, 1660)T
ou seja, com oito itera¸c˜ oes, obtemos uma aproxima¸ca ˜o para a solu¸c˜ ao dentro da tolerˆ ancia especificada.
4.4.8
M´ etodo iterativo de Gauss-Seidel
Analisando o m´etodo de Jacobi, vˆe-se que, a cada itera¸c˜ao, produzem-se todos os elementos do vetor xk+1 , usando apenas os elementos do vetor xk . No entanto, nada impede que, a` medida
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
82
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
que os elementos de xk+1 s˜ao produzidos, eles possam ser utilizados para produzir os pr´ oximos elementos do pr´ oprio xk+1 . O m´etodo de Gauss-Seidel faz exatamente isso. De forma an´ aloga ao m´etodo de Jacobi, escrevemos, para n = 3, u12 xk,2 + u13 xk,3 + d1 xk+1,1 = xk+1,2 = l21 xk+1,1 + u23 xk,3 + d2 xk+1,3 = l31 xk+1,1 + l32 xk+1,2 + d3 ou, em forma matricial, xk+1 = Lxk+1 + U xk + d −1
−1
(4.44)
−1
onde L = −D AL , U = −D A , D = diag(A), d = D b e AL e AU indicam as por¸c˜oes estritamente inferior e superior de A (isto ´e, sem a diagonal). No caso do m´etodo de Gauss-Seidel, podemos escrever a corre¸c˜ao para xk+1 de forma mais compacta; note que a express˜ao Lxk+1 + U xk pode ser calculada como
n aij xj , i = 1, 2, . . . , n aii j=1 U
j=i
O crit´erio de parada, no entanto, deve ser calculado usando o res´ıduo rk+1 = b − Axk+1 , como mostra o algoritmo 4.4.3. Algoritmo 4.4.3 M´etodo de Gauss-Seidel proc gauss seidel(input: A, b, x0 , kmax , ε; output: xk+1 ) for i = 1, 2, . . . , n do qi ← a−1 ii endfor t ← ε|| q || || b || for i = 1, 2, . . . , n do for j = 1, 2, . . . , n do aij ← aij ∗ qi % sobrescreve A com D−1 A endfor bi ← bi ∗ qi % sobrescreve b com D−1 b endfor for k = 0, 1, . . . , kmax do u ← xk for i = 1, 2, . . . , n do ui ← b − nj=1 aij uj j=i
endfor xk+1 ← u rk+1 ← b − Axk+1 if || r˜k+1 || < t then break endif endfor endproc O exemplo 4.8 ilustra o comportamento t´ıpico do m´etodo de Gauss-Seidel: Exemplo 4.8 Resolva o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
0 1 1 0 83
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T , usando o m´etodo de Gauss-Seidel com x0 = (0, 0, 0, 0)T a uma tolerˆ ancia ε = 10−2 . Solu¸c˜ao: Aplicando o m´etodo de Gauss-Seidel, obtemos x1 x2
= (0, 0, 25, 0, 25, 0, 125)T = (0, 125, 0, 3125, 0, 3125, 0, 1563)T
x3 x4
= (0, 1563, 0, 3281, 0, 3281, 0, 1641)T = (0, 1641, 0, 3320, 0, 3320, 0, 1660)T
ou seja, com quatro itera¸c˜ oes, obtemos uma aproxima¸ca ˜o para a solu¸c˜ ao dentro da tolerˆ ancia especificada. Da mesma forma que o m´etodo de Jacobi, uma condi¸c˜ao necess´ aria e suficiente para a convergˆencia do m´etodo de Gauss-Seidel ´e que a matriz A seja diagonal-dominante (ver equa¸c˜ao 4.41). Existe um crit´erio – de Sassenfeld – que, se atendido, garante a convergˆencia do m´etodo. Para se verificar se uma matriz de coeficientes do sistema satisfaz a tal crit´erio, calcula-se os valores S1 , S2 , . . ., Sn , definidos como S1 S2 Sn
= = .. . =
1 | a11 | (| a12 1 | a22 | (| a21
| + | a13 | + . . . + | a1n | |S1 + | a23 | + . . . + | a2n |
1 | ann | (| an1
(4.45)
|S1 + | an2 |S2 + . . . + | ann−1 |Sn−1
e, se Si < 1,
∀1≤i≤n
ent˜ ao o m´etodo de Gauss-Seidel ir´a convergir. Exemplo 4.9 Para a matriz do exemplo 4.8, verifique se o crit´erio de Sassenfeld ´e atendido. Solu¸c˜ao: Calculando os valores de Si , temos: S1
=
S2
=
S3
=
S4
=
1 (| |4| 1 (| |4| 1 (| |4| 1 (| |4|
− 1 | + | − 1 |) = 0, 5 < 1 − 1 |0, 5 + | − 1 |) = 0, 375 < 1 − 1 |0, 5 + | − 1 |) = 0, 375 < 1 − 1 |0, 375 + | − 1 |0, 375) = 0, 1875 < 1
e, como Si < 1, 1 ≤ i ≤ 4, o crit´erio de Sassenfeld ´e atendido e, por conseguinte, o m´etodo de Gauss-Seidel ´e convergente para um sistema com essa matriz de coeficientes. O crit´erio de Sassenfeld ´e, no entanto, apenas suficiente; uma matriz pode n˜ ao atendˆe-lo e, mesmo assim, o m´etodo de Gauss-Seidel pode convergir, como mostra o exemplo abaixo. Exemplo 4.10 Resolva o sistema
1 1 1 −3
x=
3 −3
Solu¸c˜ao: O crit´erio de Sassenfeld n˜ ao ´e satisfeito pois, calculando os valores de Si , temos S1
=
S2
=
1 (| 1 | = 1 < 1 |1| 1 (| 1 |1) = 0, 333 . . . < 1 | −3|
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
84
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
No entanto, o m´etodo de Gauss-Seidel converge para a solu¸c˜ ao x∗ = (1, 5, 1, 5)T em 11 −4 itera¸co ˜es, a uma tolerˆ ancia de 10 : x0
= (0, 0000, 0, 0000)T
x1 x2
= (3, 0000, 2, 0000)T = (1, 0000, 1, 3333)T
x3 x4
= (1, 6667, 1, 5556)T = (1, 4444, 1, 4815)T
x5 x6
= (1, 5185, 1, 5062)T = (1, 4938, 1, 4979)T
x7 x8
= (1, 5021, 1, 5007)T = (1, 4993, 1, 4998)T
x9 x10
= (1, 5002, 1, 5001)T = (1, 4999, 1, 5000)T
x11
= (1, 5000, 1, 5000)T
Note que a dominˆancia diagonal de uma matriz ´e relacionada com a ordem em que as equa¸c˜oes se apresentam. Uma simples troca entre duas linhas pode ser desastrosa, como mostra o exemplo a seguir. Exemplo 4.11 Seja o sistema apresentado no exemplo 4.10, com as linhas trocadas entre si, i.e. 1 −3 −3 x= 1 1 3 Nesse caso, como a matriz do sistema n˜ ao ´e diagonal-dominante, o m´etodo de Gauss-Seidel diverge, apresentando como primeiras estimativas os vetores x0
= (0, 0000, 0, 0000)T
x1 x2
= (−3, 0000, 6, 0000)T = (15, 0000, −12, 0000)T
x3
= (−39, 0000, 42, 0000)T .. . = (−29523, 0000, 29526, 0000)T
x8 x9
x20
= (88575, 000, −88572, 0000)T .. . = (5, 2302 × 109 , −5, 2302 × 109 )T
apesar do sistema ter a mesma solu¸ca ˜o x∗ = (1, 5, 1, 5)T .
4.4.9
Extrapola¸ c˜ ao de um m´ etodo iterativo
Uma das formas de garantir e/ou acelerar a convergˆencia de um m´etodo iterativo ´e utilizar uma t´ecnica de extrapola¸c˜ ao, a qual consiste em se combinar a corre¸c˜ao da estimativa xk – dada pela equa¸c˜ao governante do m´etodo iterativo – com uma outra corre¸c˜ao, semelhante. Em termos das fun¸c˜oes Φ, isso pode ser expresso como ¯ k (x0 , x1 , . . . , xk , A, b), ω ∈ IR xk+1 = ωΦk (x0 , x1 , . . . , xk , A, b) + (1 − ω)Φ
(4.46)
Note que, se ω = 1, temos o m´etodo iterativo original. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
85
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
¯ k (x0 , x1 , . . . , xk , A, b) = I (ou seja, Por exemplo, no caso do m´etodo de Jacobi, podemos usar Φ a matriz identidade). Assim temos o m´etodo de relaxa¸c˜ ao de Jacobi (JOR), xk+1 = ω(xk − D−1 Axk + D−1 b) + (1 − ω)xk ,
0<ω≤1
(4.47)
e, de forma an´ aloga, temos o m´etodo das relaxa¸c˜ oes sucessivas (SOR), uma variante do m´etodo de Gauss-Seidel, xk+1 = ω(Lxk+1 + U xk + d) + (1 − ω)xk , 0 < ω < 2 (4.48) Exemplo 4.12 Seja o sistema
2 1 0 1
1 2 1 0
0 1 2 1
1 0 x = 1 2
1 3 3 1
cuja solu¸c˜ ao ´e (0, 1, 1, 0)T . Utilizando-se o m´etodo JOR para resolvˆe-lo, com ω = 0, 65, a uma tolerˆ ancia ε = 10−2 , obtemos: x0
= (0, 0000, 0, 0000, 0, 0000, 0, 0000)T
x1 x2
= (0, 3250, 0, 9750, 0, 9750, 0, 3250)T = (0, 0163, 0, 8937, 0, 8937, 0, 0163)T
x3 x4
= (0, 0349, 0, 9921, 0, 9921, 0, 0349)T = (0, 0035, 0, 9884, 0, 9884, 0, 0035)T
x5
= (0, 0038, 0, 9986, 0, 9986, 0, 0038)T
ou seja, com cinco itera¸c˜ oes, obtemos uma aproxima¸c˜ ao para a solu¸c˜ ao dentro da tolerˆ ancia especificada. O m´etodo de Jacobi, se utilizado para resolver o mesmo m´etodo, n˜ ao alcan¸ca a solu¸c˜ ao ap´ os 200 itera¸c˜ oes. Exemplo 4.13 Seja o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
0 1 1 0
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T . Utilizando-se o m´etodo SOR para resolvˆelo, com ω = 1, 1, a uma tolerˆ ancia ε = 10−2 , obtemos: x0
= (0, 0000, 0, 2750, 0, 2750, 0, 1513)T
x1 x2
= (0, 1513, 0, 3307, 0, 3307, 0, 1668)T = (0, 1668, 0, 3336, 0, 3336, 0, 1668)T
ou seja, com trˆes itera¸c˜ oes, obtemos uma aproxima¸c˜ ao para a solu¸c˜ ao dentro da tolerˆ ancia especificada (compare com o exemplo 4.8).
4.5
M´ etodo do Gradiente
O m´etodo do gradiente ´e indicado para resolver um SELA onde A ´e uma matriz sim´etrica, positivodefinida (SPD), i.e. xT Ax > 0, ∀x ∈ IRn (4.49) Uma outra caracter´ıstica de matrizes SPD ´e que todos os seus autovalores s˜ao estritamente positivos. O m´etodo baseia-se na rela¸c˜ao existente entre a solu¸c˜ao de um SELA e a minimiza¸c˜ao da forma quadr´ atica, quando A for SPD. Assim, inicialmente veremos o que ´e a forma quadr´ atica e alguns exemplos da mesma. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
86
Introdu¸ca ˜o ao C´ alculo Num´erico
4.5.1
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Forma Quadr´ atica
A forma quadr´ atica ´e uma fun¸c˜ao vetorial f : n → dada por f (x) =
1 T x Ax − bT x + c 2
onde A ∈ IRn×n , x ∈ IRn , b ∈ IRn e c ∈ IR. Por exemplo, considere o sistema 2 −1 1 x= −1 2 1
(4.50)
(4.51)
cuja solu¸c˜ao ´e x∗ = (1, 1)T . A matriz de coeficientes ´e SPD e a figura 4.5 mostra o gr´ afico e as curvas de n´ıvel da forma quadr´ atica correspondente (com c = 0). Note que o gr´ afico da fun¸c˜ao ´e um parabol´ oide – portanto, com apenas um ponto de m´ınimo – e que aparentemente, o ponto (1, 1) (ou seja, a solu¸c˜ao do sistema) ´e o ponto de m´ınimo da fun¸c˜ao. J´ a as figuras 4.6-4.8 mostram outras situa¸c˜oes poss´ıveis, dependendo dos valores dos elementos de A (todos os sistemas tiveram fixada a sua solu¸c˜ao em (1, 1) e os termos independentes foram calculados adequadamente). Por exemplo, na figura 4.6, temos os gr´ aficos para a matriz negativodefinida −2 −1 −1 −2 afico ´e um parabol´ oide invertido, com apenas um ponto i.e., xT Ax < 0, ∀x; note que a forma do gr´ de m´ aximo – ´e a situa¸c˜ao oposta a` de uma matriz SPD. Na figura 4.7, temos o caso em que a forma quadr´atica assume tanto valores negativos quanto positivos – o gr´ afico da fun¸c˜ao ´e a chamada sela. A matriz em quest˜ao ´e 1 −4 −4 −5 Finalmente, o gr´ afico e as curvas de n´ıvel para a forma quadr´ atica exibidos na figura 4.8 correspondem a uma matriz quase-singular, 1 2 2 3, 8 a qual apresenta infinitas solu¸c˜oes ao longo da reta na base do gr´ afico. Para verificarmos se isso ´e verdade, vamos calcular f (x) = 0. Como f ´e uma fun¸c˜ao vetorial, a sua derivada – ou gradiente – ´e dada por ∂ ∂x1 f (x) ∂ ∂x2 f (x) (4.52) f (x) = . .. ∂ ∂xn f (x) o qual representa um campo vetorial; para um dado ponto x, ele aponta na dire¸c˜ao de maior varia¸c˜ao de f (x). O gr´ afico de f (x) na figura 4.9 ´e t´ıpico da situa¸c˜ao em que A ´e SPD: Aplicando a equa¸c˜ao (4.52) a` (4.50), obtemos f (x) =
1 T 1 A x + Ax − b 2 2
(4.53)
e, se A ´e sim´etrica, A = AT , de onde f (x) = Ax − b. Igualando f (x) a zero, obtemos Ax = b, ou seja, o sistema que queremos resolver. Portanto, podemos dizer que A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
87
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.5: Gr´ afico de f (x) e suas curvas de n´ıvel para A SPD.
Figura 4.6: Gr´ afico de f (x) e suas curvas de n´ıvel para A ND.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
88
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.7: Gr´ afico de f (x) e suas curvas de n´ıvel para A indefinida.
Figura 4.8: Gr´ afico de f (x) e suas curvas de n´ıvel para A singular.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
89
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.9: Gr´ afico de f (x) para A SPD. minimizar a forma quadr´ atica f (x) = 12 xT Ax−bT x+c equivale a resolver o sistema Ax = b se A for sim´etrica. Se a matriz A ´e positivo-definida, al´em de sim´etrica, ent˜ ao a solu¸c˜ao de Ax = b ´e o m´ınimo (´ unico) de f (x); logo, para A SPD, a solu¸c˜ao x = A−1 b ´e o ponto x que minimiza f (x). Isso pode ser mostrado como segue. Suponha A sim´etrica, x um vetor que satisfaz Ax = b, y um vetor similar a x (em termos geom´etricos, y ´e um ponto pr´ oximo a x) e e = y − x o vetor erro; ent˜ ao, f (x + e) = = = =
1 (x + e)T A(x + e) − bT (x + e) + c 2 1 1 T x Ax + eT Ax + eT Ae − bT x − bT e + c 2 2 1 T 1 x Ax − bT x + c + eT b + eT Ae − bT e 2 2 1 T f (x) + e Ae 2
... b = Ax; A = AT ...
(4.54)
e
1 f (x + e) = f (x − x + y) = f (y) = f (x) + (y − x)T A(y − x) 2 Agora, como A ´e SPD, por hip´ otese, ent˜ao (y − x)T A(y − x) > 0,
(4.55)
∀y
e, portanto, f (y) > f (x). Isso mostra que x ´e o m´ınimo de f (x), nesse caso.
4.5.2
Descri¸ c˜ ao do m´ etodo do Gradiente
O gr´ afico da forma quadr´ atica, para A SPD, nos sugere uma estrat´egia para localizarmos a solu¸c˜ao do sistema: basta “escorregar” ao longo das paredes do parabol´oide, pois isso nos levar´a, necessariamente, ao ponto de m´ınimo. A quest˜ ao que se coloca agora ´e: qual dire¸c˜ ao devemos oximo da solu¸c˜ao? tomar, a partir de um xk , para obtermos um xk+1 que seja mais pr´ A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
90
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.10: O vetor erro e0 e o vetor res´ıduo r0 . Lembramos que o gradiente f (x) aponta na dire¸c˜ao de maior aumento de f (x), em sentido ´ natural, portanto, que andemos ao longo da dire¸c˜ao oposta oposto ao “fundo” do parabol´ oide. E ao gradiente, isto ´e, −f (x) = b − Ax. Ora, conforme visto anteriormente, rk = b − Axk , de onde estabelecemos as seguintes rela¸c˜oes entre o vetor res´ıduo e o gradiente de f (x): rk rk
= =
−f (x) b − Axk ... ek = xk − x∗ ...
= =
b − Ax∗ − Aek ... x∗ = A−1 b ... −Aek
(4.56)
(4.57)
A equa¸c˜ao (4.56) nos diz que o res´ıduo tem a mesma dire¸c˜ao do gradiente, por´em sentido oposto; j´ a a equa¸c˜ao (4.57) nos diz que o res´ıduo ´e o vetor erro, transformado por A (e, portanto, no mesmo espa¸co de b). Suponha, ent˜ ao, que temos a seguinte situa¸c˜ao, conforme a figura 4.10. Como decidimos andar ao longo do vetor res´ıduo, a partir de x0 , a nova estimativa x1 ´e um ponto sobre a reta r0 , ou seja x1 = x0 + α0 r0 ,
α0 ∈ IR
(4.58)
O escalar α0 indica o deslocamento sobre r0 . Para determinar o melhor α0 – ou seja, aquele para o qual || x1 − x∗ || ´e m´ınimo – derivamos f (x1 ) em rela¸c˜ao a α0 e igualamo-la a zero: d d f (x1 ) = f (x1 )T x1 = f (x1 )T r0 dα0 dα0
(4.59)
Note que f (x1 )T r0 ´e o produto escalar entre os vetores f (x1 ) e r0 . Como o produto escalar ´e dado por uT v = || u || || v || cos θ onde θ ´e o ˆangulo formado entre os vetores u e v, ao igualarmos f (x1 )T r0 a zero, estamos exigindo que os vetores f (x1 ) e r0 sejam ortogonais entre si. Como f (x1 ) = −r1 , isso implica que dois res´ıduos sucessivos s˜ao ortogonais entre si; a figura 4.11 mostra trˆes situa¸c˜oes t´ıpicas para a solu¸c˜ao do sistema (4.51), com as seq¨ uˆencias de res´ıduos (representados pelas retas) gerados pelo m´etodo do Gradiente a partir de trˆes diferentes estimativas iniciais. A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
91
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.11: Caminhos t´ıpicos no m´etodo do Gradiente. A partir da equa¸c˜ao (4.59), pode-se o obter o valor de α0 : f (x1 )T r0 −r1T r0
= =
0 ... f (x1 ) = −r1 ... 0
(b − Ax1 )T r0 (b − Ax0 − α0 Ar0 )T r0
= =
0 0
(r0 − α0 Ar0 )T r0
=
0
de onde α0 =
r0T r0 r0T Ar0
(4.60)
O que significa minimizar f (x1 )? Os gr´aficos mostrados na figura 4.12 mostram que, para α0 calculado conforme a equa¸c˜ao (4.60), a nova estimativa x1 corresponde ao m´ınimo da par´ abola obtida como se tiv´essemos “cortado” o parabol´ oide f (x) por um plano vertical ao plano x − y que passa pela reta r0 ! Utilizando as equa¸c˜oes (4.58) e (4.60), al´em da express˜ao para o res´ıduo, devidamente generalizadas para a k-´esima itera¸c˜ao, podemos escrever um algoritmo que descreve o m´etodo do Gradiente. Antes, por´em, note que r1 = r0 − α0 Ar0 conforme obtido na deriva¸c˜ao da equa¸c˜ao (4.60); essa express˜ ao nos permite economizar um produto matriz-vetor da forma Axk , pois Ark j´ a ter´a sido calculado previamente para se obter αk . O algoritmo pode ser, ent˜ ao, escrito como segue.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
92
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.12: α ´e escolhido de tal forma que f (x1 ) ´e m´ınima. Algoritmo 4.5.1 M´etodo do Gradiente proc gradiente(input: A, b, x0 , kmax , ε; output: xk+1 ) t ← ε|| b || r0 ← b − Ax0 for k = 0, 1, . . . , kmax do wk ← Ark αk ←
T rk rk Tw rk k
xk+1 ← xk + αk rk rk+1 ← rk − αk wk if || rk+1 || < t then break endif endfor endproc O exemplo seguinte ilustra o comportamento t´ıpico do m´etodo do Gradiente: Exemplo 4.14 Resolva o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
0 1 1 0
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T , usando o m´etodo do Gradiente com x0 = T ancia ε = 10−2 . (0, 0, 0, 0) a uma tolerˆ Solu¸c˜ao: Aplicando o m´etodo do Gradiente, obtemos x1 x2
= (0, 0, 25, 0, 25, 0)T = (0, 125, 0, 25, 0, 25, 0, 125)T
x3 x4
= (0, 125, 0, 3125, 0, 3125, 0, 125)T = (0, 1563, 0, 3125, 0, 3125, 0, 1563)T
x5 x6
= (0, 1563, 0, 3281, 0, 3281, 0, 1563)T = (0, 1641, 0, 3281, 0, 3281, 0, 1641)T
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
93
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Figura 4.13: M´etodo das Dire¸c˜ oes-Conjugadas: a cada itera¸c˜ ao ´e corrigida uma componente do vetor solu¸c˜ ao. ou seja, com seis itera¸co ˜es, obtemos uma aproxima¸c˜ ao para a solu¸c˜ ao dentro da tolerˆ ancia especificada. Um poss´ıvel problema ao se utilizar a f´ ormula de recorrˆencia para rk+1 no m´etodo do Gradiente ´e a perda de ortogonalidade entre os vetores res´ıduo, causada pela acumula¸c˜ao de erros de ponto-flutuante. Isso pode ser detectado atrav´es do c´alculo do produto-interno √ entre dois res´ıduos T rk ; caso essa quantidade seja maior do que, por exemplo, ε (onde ε ´e o ´epsilon sucessivos, rk−1 da m´ aquina), deve-se recalcular rk = b − Axk , e proceder normalmente com o algoritmo.
4.6
M´ etodo das Dire¸c˜ oes-Conjugadas
Conforme visto anteriormente, o m´etodo do Gradiente toma sucessivas dire¸c˜oes – os res´ıduos – que s˜ao ortogonais entre si. Isso significa que a solu¸c˜ao ´e procurada repetindo-se dire¸c˜oes. Ora, se para uma dada dire¸c˜ao, a solu¸c˜ao n˜ ao foi encontrada ao longo dela, ent˜ ao por que utiliz´ a-la novamente? Uma alternativa ´e a seguinte: suponha que tenhamos um conjunto de n dire¸c˜ oes de procura ancia necess´aria para d0 , d1 , . . ., dn−1 . Em cada i-´esima dire¸c˜ao, “caminha-se” exatamente a distˆ se obter a i-´esima componente da solu¸c˜ao, x∗i ; ap´ os termos percorrido todas as n dire¸c˜oes dessa forma, todas as componentes de x∗ estar˜ ao corretas, e a solu¸c˜ao ter´ a sido obtida. Na figura 4.13, a primeira itera¸c˜ao corrige x2 , e a segunda corrige x1 (note que e1 ´e ortogonal a d0 ). De forma semelhante ao m´etodo do Gradiente, as itera¸c˜oes s˜ao da forma xi+1 = xi + αi di ,
αi ∈ IR
(4.61)
ao mais se percorra a dire¸c˜ao e, para determinar αi , tomamos ei+1 ortogonal a di , de forma que n˜ di . Ent˜ ao: dTi ei+1
= 0 ... ei+1 = xi+1 − x∗ = xi + αi di − x∗ = ei + αi di ...
dTi (ei + αi di )
= 0
dTi ei + αi dTi di
= 0
de onde αi =
dTi ei dTi di
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
(4.62)
94
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Infelizmente esta equa¸c˜ao ´e in´ util, pois para calcular αi ´e necess´ario ei ; por´em, se ei fosse conhecido, a solu¸c˜ao seria imediata, por defini¸c˜ao. Podemos corrigir essa situa¸c˜ao se considerarmos a determina¸c˜ao de αi como um problema de minimiza¸c˜ao ao longo da dire¸c˜ao di , de maneira an´ aloga ao m´etodo do Gradiente. Nesse caso, temos: d f (xi+1 ) = dα d f (xi+1 )T xi+1 = dα T di = −ri+1
0 0 ... por (4.56) e (4.61), vem 0 ... por (4.57), vem
dTi Aei+1 = 0
(4.63)
A equa¸c˜ao (4.63) nos diz que o vetor erro ei+1 , transformado para o espa¸co gerado pelas colunas de A, ´e ortogonal a di . Quaisquer dois vetores u e v que satisfa¸cam uT Av = 0 s˜ao ditos A-ortogonais entre si. De posse da equa¸c˜ao (4.63), podemos determinar uma outra express˜ ao para αi , a qual pode, dessa vez, ser calculada:
dTi Aei
+
dTi Aei+1
= 0 ... ei+1 = ei + αi di ...
αi dTi Adi
= 0
αi
= −
αi =
dTi Aei . .. por (4.57), vem dTi Adi
dTi ri dTi Adi
(4.64)
Note que, se di ≡ ri , ent˜ ao temos a mesma f´ormula utilizada para αi no m´etodo do Gradiente. Conforme proposto quando da motiva¸c˜ao do m´etodo das Dire¸c˜oes-Conjugadas, vejamos como o m´etodo converge em n passos. Podemos expressar o vetor erro e0 como combina¸c˜ao linear dos vetores dire¸c˜ao, n−1 e0 = δj dj (4.65) j=0
Para determinarmos as constantes δj , valemo-nos da propriedade de A-ortogonalidade entre os vetores dj ; pr´e-multiplicando (4.65) por dTk A, obtemos dTk Ae0 =
n−1
δj dTk Adj
j=0
e, como dTk Adj = 0, ∀i = j, podemos eliminar todos os termos do somat´ orio, menos o termo para j = k, de onde dTk Ae0
=
δk
=
δk dTk Adk dTk Ae0 dTk Adk
(4.66)
ao envolva δk ; escrevendo as express˜oes Precisamos, ainda, encontrar uma equa¸c˜ao para e0 que n˜ para os vetores erro, temos e0
=
x0 − x∗
e1
=
x1 − x∗ = e0 + α0 d0 = x0 − x + α0 d0 = e0 +
0
αi di
i=0
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
95
Introdu¸ca ˜o ao C´ alculo Num´erico
e2
=
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
x2 − x∗ = e1 + α1 d1 = x0 − x + α1 d1 + α0 d0 = e0 +
1
αi di
i=0
.. .
.. .
..
ek
=
xk − x∗ = ek−1 + αk−1 dk−1 = x0 − x + αk−1 dk−1 + . . . + α0 d0 = e0 +
. k−1
αi di
i=0
de onde e0 = ek −
k−1
αi di
(4.67)
i=0
Agora, substituindo a equa¸c˜ao (4.67) em (4.66), obtemos k−1 αi dTk Adi dTk Aek − i=0 δk = dTk Adk e, como dTk Adi = 0, ∀k = i, o segundo termo no numerador ´e nulo (pois apenas os vetores d0 , d1 , . . ., dk−1 aparecem no somat´orio). Assim, obtemos δk =
dTk Aek dTk Adk
(4.68)
Comparando as equa¸c˜oes (4.68) e (4.64), vemos que αi = −δi . Podemos, ent˜ ao, reescrever (4.67) como ei
= e0 −
k−1
αj dj
j=0
=
n−1
αj dj −
j=0
=
n−1
k−1
αj dj
j=0
αj dj
(4.69)
j=k
A equa¸c˜ao (4.69) pode ser interpretada da seguinte forma: quando k = 0, i.e. na primeira itera¸c˜ao, todas as componentes de x∗ est˜ao erradas (em princ´ıpio), logo e0 ´e combina¸c˜ao linear de todas as dire¸c˜oes de busca di . Na segunda itera¸c˜ao, uma componente j´ a foi corrigida – ao longo da dire¸c˜ao d0 – e, portanto, o erro e1 s´o deve ter componentes diferentes de zero ao longo das dire¸c˜oes d1 , d2 , . . ., dk−1 . Procedendo com esse racioc´ınio at´e en−1 , vemos que o processo de se obter uma componente correta de x∗ a cada itera¸c˜ao equivale a se eliminar a componente correspondente do erro a cada itera¸c˜ao. Neste est´agio, resta-nos determinar as dire¸c˜oes di , de maneira que sejam A-ortogonais entre si. Podemos obter tais dire¸c˜oes se tomarmos um conjunto de vetores linearmente independentes ui , e os A-ortogonalizarmos atrav´es de uma modifica¸c˜ao do processo de Gram-Schmidt. Para se gerar um vetor di , subtraem-se de ui todas as componentes que n˜ao sejam A-ortogonais aos i − 1 vetores d anteriores, ou seja, d0 di
= u0 i−1 = ui + k=0 βik dk ,
i>0
(4.70)
os-multiplicamos a express˜ao para di em (4.70) Para determinarmos os valores das constantes βik , p´ por Adj , de onde dTi Adj
= uTi Adj +
i−1
βik dTk Adj ; |i > j
k=0
0
= uTi Adj + βij dTj Adj
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
96
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
pela A-ortogonalidade entre os vetores di . Assim, podemos escrever βij = −
uTi Adj dTj Adj
(4.71)
O processo acima requer o armazenamento de todos os n vetores di , o que pode n˜ ao ser desej´ avel para sistemas lineares com n grande. Cabe notar que, se os vetores ui s˜ao os vetores canˆ onicos (i.e. a i-´esima componente de ui ´e igual a 1 e todas as demais s˜ao nulas), ent˜ ao o m´etodo das Dire¸c˜oes-Conjugadas reduz-se a` Elimina¸c˜ao Gaussiana. Um algoritmo que expressa o m´etodo das Dire¸c˜oes-Conjugadas, pode ser escrito como segue; cabe ressaltar que, apesar do m´etodo ser considerado um m´etodo direto, por convergir em exatamente n itera¸c˜oes, para um sistema de n equa¸c˜oes lineares, ele pode tamb´em ser considerado um m´etodo iterativo, pois ´e poss´ıvel que, devido a erros de arredondamento, a solu¸c˜ao seja alcan¸cada em menos do que n itera¸c˜oes. Algoritmo 4.6.1 A-ortogonaliza¸c˜ ao proc A ortogonaliza(input: U ; output: D) % U e D s˜ ao matrizes n × n cujas colunas % s˜ ao os vetores ui e di , respectivamente. d0 ← u0 for i ← 1, 2, . . . , n do s←0 for k = 1, 2, . . . , i − 1 do w ← Adk uT w
β ← dTi w k s ← s − βdk endfor di ← di + s endfor endproc
Algoritmo 4.6.2 M´etodo das Dire¸c˜ oes-Conjugadas oes conjugadas(input: A, b, U , x0 , kmax , ε; output: xk+1 ) proc dire¸c˜ call A ortogonaliza(U;D) t ← ε|| b || r0 ← b − Ax0 for k = 0, 1, . . . , kmax do wk ← Adk αk ←
dT k rk dT wk k
xk+1 ← xk + αk dk rk+1 ← rk − αk wk if || rk+1 || < t then break endif endfor endproc O exemplo a seguir ilustra o comportamento t´ıpico do m´etodo das Dire¸c˜oes-Conjugadas:
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
97
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Exemplo 4.15 Resolva o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
0 1 1 0
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T , usando o m´etodo das Dire¸c˜ oes-Conjugadas com x0 = (0, 0, 0, 0)T a uma tolerˆ ancia ε = 10−2 ; os vetores ui s˜ ao tomados como vetores aleat´ orios. Solu¸c˜ao: Aplicando o m´etodo das Dire¸c˜ oes-Conjugadas, obtemos x1 x2
= (0, 2113, 0, 2071, 0, 0927, 0, 2018)T = (0, 1950, 0, 2941, 0, 3595, 0, 1705)T
x3
= (0, 1986, 0, 2961, 0, 3578, 0, 1649)T
x4
= (0, 1667, 0, 3333, 0, 3333, 0, 1667)T
ou seja, com quatro itera¸c˜ oes, obtemos uma aproxima¸c˜ ao para a solu¸c˜ ao, com um res´ıduo da ordem ao obtida ser´ a um n´ umero de 10−15 . Normalmente, no caso desse m´etodo, o res´ıduo da solu¸c˜ pr´ oximo ao ´epsilon da m´ aquina.
4.7
M´ etodo dos Gradientes-Conjugados
O m´etodo dos Gradientes-Conjugados nada mais ´e do que o m´etodo das Dire¸c˜oes-Conjugadas, onde os vetores ui s˜ao tomados como os vetores res´ıduo ri . Essa escolha nos permitir´ a simplificar sobremaneira o processo de Gram-Schmidt descrito anteriormente. Suponha o espa¸co gerado pelos vetores dire¸c˜ao. Pela equa¸c˜ao (4.67), vemos que o i-´esimo vetor ao, derivar ei ´e gerado como combina¸c˜ao linear dos vetores di e pelo vetor erro e0 . Podemos, ent˜ algumas importantes rela¸c˜oes que ser˜ ao utilizadas a seguir. Se pr´e-multiplicarmos a equa¸c˜ao (4.69) por −dTi A, vem n−1 T −di Aej = αj dTi Adj j=i
e, pela A-ortogonalidade entre os vetores di , temos dTi rj = 0,
ij+1
(4.78)
(4.79)
Devido a` A-ortogonalidade entre os vetores dire¸c˜ao e os res´ıduos, a grande maioria dos termos necess´arios a` formula¸c˜ao de βij pode ser descartada. Utilizando as equa¸c˜oes (4.64), (4.75) e (4.76), a equa¸c˜ao (4.79) pode ser simplificada ainda mais: βi
=
dTi−1 Adi−1 riT ri riT ri = = dTi−1 ri−1 dTi−1 Adi−1 dTi−1 ri−1
=
riT ri T ri−1 ri−1
(4.80)
onde o subscrito em j foi descartado, por ser desnecess´ ario. Tendo obtido essa express˜ao para βi , podemos combin´ a-la com as equa¸c˜oes (4.61), (4.64) e (4.77), de forma a escrever um algoritmo que expressa o m´etodo dos Gradientes-Conjugados, conforme ilustrado a seguir. Note que, a partir da equa¸c˜ao (4.70), e considerando que ui ≡ ri , expressamos um vetor dire¸c˜ao como di+1 = ri+1 + βi+1 di
(4.81)
Algoritmo 4.7.1 Gradientes-Conjugados proc gradientes conjugados(input: A, b, x0 , kmax , ε; output: xk+1 ) t ← ε|| b || r0 ← b − Ax0 d0 ← r0 for k = 0, 1, . . . , kmax do wk ← Adk αk ←
T rk rk dT wk k
xk+1 ← xk + αk dk rk+1 ← rk − αk wk if || rk+1 || < t then break endif rT
r
k+1 βk+1 ← k+1 Tr rk k dk+1 ← rk+1 + βk+1 dk endfor endproc
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
99
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
O exemplo seguinte ilustra o comportamento t´ıpico do m´etodo dos Gradientes-Conjugados: Exemplo 4.16 Resolva o sistema
4 −1 −1 −1 4 0 −1 0 4 0 −1 −1
0 −1 x = −1 4
0 1 1 0
cuja solu¸c˜ ao ´e x∗ = (0, 1667, 0, 3333, 0, 3333, 0, 1667)T , usando o m´etodo dos Gradientes-Conjugados com x0 = (0, 0, 0, 0)T a uma tolerˆ ancia ε = 10−2 . Solu¸c˜ao: Aplicando o m´etodo dos Gradientes-Conjugados, obtemos x1
= (0, 0, 25, 0, 25, 0)T
x2
= (0, 1667, 0, 3333, 0, 3333, 0, 1667)T
ou seja, com apenas duas itera¸c˜ oes, obtemos uma aproxima¸c˜ ao para a solu¸c˜ ao dentro da tolerˆ ancia especificada.
4.8
Exerc´ıcios
Exerc´ıcio 4.1 Resolva o sistema
4x1 + 4x2 = 20, 5 7x1 + 6, 99x2 = 34, 97
atrav´es do m´etodo de elimina¸ca ˜o de Gauss, com precis˜ ao de 5 d´ıgitos significativos, refinando a solu¸c˜ ao obtida. Exerc´ıcio 4.2 Calcule norm| A | das matrizes 0, 992 0, 873 (a) , 0, 481 0, 421
(b)
1 5 1, 5 7, 501
e diga se s˜ ao bem ou mal-condicionadas. Exerc´ıcio 4.3 Calcule o n´ umero de condi¸c˜ ao das matrizes do exerc´ıcio 4.2, sabendo que as suas inversas s˜ ao dadas de forma aproximada, respectivamente, por −184, 568 382, 727 7501 −5000 (a) , (b) 210, 872 −434, 897 −1500 1000 Exerc´ıcio 4.4 Resolva o sistema
10x1 + x2 + x3 = 12 x1 + 10x2 + x3 = 12 x1 + x2 + 10x3 = 12
atrav´es do m´etodo de Jacobi, com uma tolerˆ ancia de 10−7 . Exerc´ıcio 4.5 Resolva o sistema do exerc´ıcio 4.4 atrav´es do m´etodo de Gauss-Seidel, com uma tolerˆ ancia de 10−7 . Exerc´ıcio 4.6 Resolva o sistema do exerc´ıcio 4.4 atrav´es do m´etodo SOR, com uma tolerˆ ancia de 10−7 . Determine, experimentando diversos valores, um ω que reduza substancialmente o n´ umero de itera¸co ˜es necess´ arias a ` convergˆencia.
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
100
Introdu¸ca ˜o ao C´ alculo Num´erico
Resolu¸c˜ ao de Sistemas de Equa¸c˜ oes Lineares
Exerc´ıcio 4.7 Verifique que o sistema linear 3 0 1 1 1 −1 0 x = 2 3 1 1 5 n˜ ao ´e diagonal-dominante, apesar do crit´erio de Sassenfeld ser satisfeito. Exerc´ıcio 4.8 Explique o que acontece com a aplica¸c˜ ao do m´etodo de Gauss-Seidel ao sistema 1 1 1 1 2 2 2 x = 2 . 5 5 5 5 Exerc´ıcio 4.9 Utilize o m´etodo do Gradiente e resolva o sistema do exerc´ıcio 4.8; explique o que ocorre. Exerc´ıcio 4.10 Utilize o m´etodo dos Gradientes-Conjugados e resolva o sistema do exerc´ıcio 4.8; explique o que ocorre. Exerc´ıcio 4.11 Mostre, utilizando o sistema 2 −1 −10 x= −1 2 10 que o m´etodo das Dire¸c˜ oes-Conjugadas equivale ao m´etodo da elimina¸c˜ ao Gaussiana, se as dire¸c˜ oes tomadas s˜ ao os vetores u1 = (1, 0)T e u2 = (0, 1)T . Exerc´ıcio 4.12 Resolva o sistema
10−6 1
−1 1
x=
1 1
atrav´es do m´etodo dos Gradientes-Conjugados, para uma tolerˆ ancia de 10−4 .
A.L. de Bortoli, C. Cardoso, M.P.G. Fachin, R.D. da Cunha
101