Preview only show first 10 pages with watermark. For full document please download

Cap4

Resolução de Sistemas Lineares em Cálculo Numérico.

   EMBED


Share

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