SOLUÇÕES NUMÉRICAS DE SISTEMAS LINEARES PROF. EDÉZIO
Considere o sistema de n equações e n incógnitas: onde E : a x + a x +... + a n x n = b E : a x + a x +... + a n x n = b. =. () E n : a n x + a n x +... + a nn x n = b n x j : a ij, b j : j =,,..., n são incógnitas, i, j =,,..., n são constantes dadas. o sistema linear acima pode ser representado matricialmente por onde Ax = b () A = [a ij ] matriz dos coeficientes b = [b j ] vetor constante x = [x j ] vetor solução
Para resolver (), existem duas classes de métodos: Métodos Diretos: encontram a solução exata do sistema, caso ela exista, após um número finito de operações; Métodos Iterativos: geram uma seqüencia de vetores {x k }, a partir de uma aproximação inicial x 0. Sob certas condições esta seqüencia converge para a solução exata x, caso ela exista.
MÉTODOS DIRETOS Estudados no o grau; n grande gera um número grande de operações. Exemplo: Regra de Cramer. Precisamos de métodos mais eficientes, pois na prática temos sistemas lineares que envolvem um grande número de equações e variáveis.
Método de eliminação de Gauss Para obtermos uma solução de (), assumiremos que a matriz A é invertível (det(a) 0). A idéia básica do método consiste em transformar o sistema () num sistema equivalente A (n) x = b (n) onde A (n) é uma matriz triangular superior. Essa transformação é obtida utilizando as operações elementares: i) E i λe j E i substituição de E i pela combinação linear de E i e E j ; ii) λe i E i substituição de E i por λe i, λ 0; iii) E i E j substituição de E i por E j. 4
EXEMPLO:Seja o sistema linear 4 9 4 4 x x x = Para resolvê-lo, procedemos como segue:. a = 4 0 podemos colocar zeros abaixo de a. m = a a = 4 = m = a a = 4 Efetuando as operações: { L = L m L L = L m L obtém-se o sistema equivalente: A () x = b () onde 4 9. 0 /. 0 /4 5/. / 5
. a () = / 0 podemos colocar zeros abaixo de a (). m = a() a () = /4 / = 4 = e efetuando a operação L = L m L obtémse o sistema equivalente A () x = b (). 4 9. 0 /. 0 0 4. 5/ Portanto, o sistema original foi transformado no sistema equivalente: 4 9 0 / 0 0 4 x x x 5/ que tem como solução x = 5/8, x = /4 e x = /4. 6
são chama- Os elementos a (0), a(),..., a(n ) nn dos de pivot e os números m ij = a(k ) ik a (k ) kk, i = k +,..., n. são chamados de multiplicadores. Existem dois problemas neste método que é instável: (i) pivot nulo; (ii) pivot próximo de zero. Nestes casos, para reduzir os erros de arredondamentos, tomamos para pivot o maior elemento (em módulo) da coluna, ou seja, antes de cada etapa trocamos a ordem das linhas. Esta estratégia é chamada de pivoteamento parcial. 7
Generalização do método de eliminação de Gauss o Passo: Ax = b A () x = b () Se a 0 efetuam-se as seguintes operações: { mi = a i /a L i = L i m i L, i =,,..., n. e obtém-se o sistema equivalente: a a... a n. b a a... a n. b...... a n a n... a nn. b n a (0) a (0)... a (0) n 0 a ()... a () n. a ()... a () n.... 0 a () n... a () nn. b (0). b (). b ()... b () n 8
Generalização do método de eliminação de Gauss o Passo: A () x = b () A () x = b () Se a () 0 efetuam-se as seguintes operações: { m i = a () i /a(), ı =, 4,..., n L i = L i m i L, i =, 4,..., n. e obtém-se o sistema equivalente: a (0) a (0) a (0)... a (0) n 0 a () a ()... a () n 0 0 a ()... a () n..... 0 0 a () n... a () nn. b (0). b (). b ()... b () n 9
Prosseguindo o processo, chegamos, no passo (n ), ao sistema A (n) x = b (n), onde [A (n) : b (n) ] = a (0) a (0) a (0)...... a (0) n 0 a () a ()...... a () n 0 0 a ()...... a () n.. 0..... 0 0 0... 0 a (n) nn. b (0). b (). b ()... b (n) n Conduzindo a um sistema linear equivalente ao sistema inicial, cuja matriz é triangular superior. Este sistema é facilmente resolvido, começando com: x n = b (n) n /a (n) nn e calculando-se x n, x n,..., x, sucessivamente. 0
Algorítmo Seja o sistema linear (). Temos o seguinte algorítmo para fornecer a solução: Supor a (k ) kk 0, k =,,..., n ; Para k =,..., n, faça Fim-Para Para i = k +,..., n, faça m ik = a(k ) ik a (k ) kk a (k ) ik = 0; Para j = k +,..., n, faça a (k) ij = a (k ) ij m jk.a (k ) kj Fim-Para b (k) i Fim-Para = b (k ) i Para l = n,...,,, faça m jk.b (k ) j x l = b l n j=l+ a lj.x j a ll
Decomposição LU Consiste em decompor a matriz A num produto de duas matrizes LU, ou seja, A = LU, onde L é uma matriz triangular inferior e U é uma matriz triangular superior. (LU)x = b L(Ux) = b Fazendo Ux = c tem-se Ly = b () Dado o sistema linear Ax = b, podemos escrever que é um sistema triangular inferior. Resolvendo (), a solução x é obtida resolvendo-se Ux = y (4) que é um sistema triangular superior. Portanto para resolver o sistema Ax = b, basta resolver os ois sistemas triangulares definidos por () e (4).
Pode mostrar-se que se o método de Eliminação de Gauss for aplicado ao sistema Ax = b sem troca de linhas então A = LU onde L = U = A (n) = 0......... 0 m 0...... 0 m m... 0........... 0........ 0 m n m n...... m n(n ) a (0) a (0) a (0)...... a (0) n 0 a () a ()...... a () n 0 0 a ()...... a () n.................. 0 0 0... 0 a (n) nn Importância: resolução de sistemas que têm a mesma matriz dos coeficientes...
Exemplo: Resolva o sistema abaixo pelo método de Eliminação de Gauss com pivoteamento parcial utilizando arredondamento por simetria com casas decimais. x + 6x x = 5x x + x = 9 x 4x + x = 5 Temos a matriz associada ao sistema: 6. 5. 9 4. 5 Fazendo o pivoteamento parcial obtemos: L = L L = L L = L 5. 9 6. 4. 5 Agora calculando os multiplicadores: m = a a = 5 = 0.4 m = a a = 5 = 0.6 4
obtemos: L = L L = L 0.4L L = L + 0.6L 5. 9 0 6.4.8..6 0 4.6...4 Calculando m = a = 4.6 a 6.4 = 0.7875 0.79, obtemos L = L L = L L = L + 0.79L ou seja, 5. 9 0 6.4.8..6 0 0 0.906. 5.4 5x x + x = 9 6.4x.8x =.6 0.906x = 5.4 5
Logo, x = 5.4 0.906 = 5.995584989 5.996 x =.807 6.4.4 +.8 5.996 6.4 = =.000975.00 9 + (.00) 5.996 x = = 5 9.00.99 = 5.007 =.004.00 5 5 6
MÉTODOS ITERATIVOS PARA SISTEMAS LINEARES Para resolver o sistema Ax = b, começamos com uma aproximação inicial x (0) da solução x e é gerada uma sucessão de aproximações {x (k) } k=0. Os métodos iterativos são em geral usados para sistemas de grande dimensão (n=0000) onde A tem uma grande percentagem de elementos nulos (matriz esparsa). Sistemas deste tipo surgem por exemplo depois da aplicação de métodos numéricos a problemas de valores na fronteira de equações diferenciais parciais. No sistema Ax = b fazemos uma decomposição da matriz A, que nos permite reescrever o sistema numa forma equivalente Ax = b x = Cx + d onde C é uma certa matriz apropriada e d um vetor. Temos assim o seguinte método iterativo: x (k+) = Cx (k) + d, k = 0,,,... (5) 7
Seja x (0) = [x (0) x (0)... x (0) n um vetor aproximação inicial para x = [x x... x n ] T, onde x (0) é uma aproximação para x, x (0) é uma aproximação para x,... x (0) n é uma aproximação para x n, aplicando sucessivamente a fórmula (5), ou seja, fazendo: x () = Cx (0) + d x () = Cx () + d x () = Cx () + d. =. ] T 8
Então construímos aproximações: x () = [x () x () x ()... x() n x () = [x () x () x ()... x() n. =. ] T ] T O objetivo é determinar aproximações (iteradas) até se chegar suficientemente próximo de x. Interessa-nos que as distâncias (medidas por intermédio duma norma) de x às sucessivas iteradas x (k) tenda para zero: lim k x(k) = x (6) Existem diferentes escolhas para a matriz C (e conseqüentemente o vetor d). Essas dife- rentes escolhas conduzem a métodos diferentes para a equação matricial dada. Em particular veremos os métodos de Jacobi e Gauss-Seidel. 9
Obtenção de Métodos Iterativos Dado os sistema linear Ax = b, vamos descrever uma maneira de se obterem métodos iterativos da forma x (k+) = Cx (k) + d Começamos decompondo a matriz A na soma de outras duas: A = M + N, onde M é uma matriz invertível, donde resulta Ax = b (M + N)x = b Mx = b Nx x = M }{{ N} x + M}{{ b} x = Cx + d e somos C d naturalmente conduzidos a métodos iterativos da forma x (k+) = Cx (k) + d, k = 0,,,..., onde x (0) é um vetor dado. Diferentes escolhas das matrizes M, N conduzem a diferentes métodos iterativos. A matriz C é chamada matriz de iteração. 0
Método de Jacobi Exemplo: Seja o sistema: 0x + x + x = 7 x + 5x + x = 8 x + x + 0x = 6 que tem solução exata x =, x = e x =. Resolvendo a primeira equação em ordem a x, a segunda em ordem a x e a terceira em ordem a x, obtém-se o sistema equivalente x = (7 x x )/0 x = ( 8 x x )/5 x = (6 x x )/0 Substituindo no lado esquerdo das equações cada x i por x (k+) i e, no lado direito, por x (k) i. Obtém-se assim o chamado método de Jacobi, definido por x (k+) = 0.7 0.x (k) 0.x(k) x (k+) =.6 0.x (k) 0.x(k) x (k+) = 0.6 0.x (k) 0.x(k)
com k = 0,,,.... Suponhamos que se começa com uma aproximação inicial x (0) = [0.7.6 0.6] T. Para se obter as iteradas damos sucessivos valores a k: K = 0 (cálculo de x () ) x () = 0.7 0.x (0) 0.x (0) x () =.6 0.x (0) 0.x (0) x () = 0.6 0.x (0) 0.x (0) o que acarreta x () = 0. (.6) (0.) (0.6) + 0.7 = 0.9600 x () = 0. (0.7) (0.) (0.6).6 =.8600 x () = 0. (0.7) (0.) (.6) + 0.6 = 0.9400
K = (cálculo de x () ) x () = 0.7 0.x () 0.x () x () =.6 0.x () 0.x () x () = 0.6 0.x () 0.x () o que acarreta x () = 0. (.86) (0.) (0.94) + 0.7 x () = 0. (0.96) (0.) (0.94).6 x () = 0. (0.96) (0.) (.86) + 0.6 ou seja, x () = [0.9780.9800 0.9600] T K = (cálculo de x () ) x () = 0.7 0.x () 0.x () x () =.6 0.x () 0.x () x () = 0.6 0.x () 0.x () o que acarreta x () = 0. (.98) (0.) (0.966) + 0.7 x () = 0. (0.978) (0.) (0.966).6 x () = 0. (0.978) (0.) (.98) + 0.6
ou seja, x () = [0.9994.9988 0.9984] T Método de Gauss-Seidel Pode ser considerado como uma modificação do método de Jacobi. É dada a aproximação inicial x (0). No cálculo da iterada seguinte, x (), pelo método de Jacobi, começa-se por obter a primeira componente x (). Em seguida, para determinar a componente x (), são usados x (0), x(0). No método de Gauss-Seidel substituise x (0) por x (), que já se conhece nesta altura. Também no cálculo de x (), o método de Gauss-Seidel usa as aproximações mais recentes x (), x(), em vez de x(0), x(0), respectivamente. Assim, para o método de Gauss- Seidel, viria Cálculo de x () : x () = 0.7 0.x (0) 0.x (0) x () =.6 0.x () 0.x (0) x () = 0.6 0.x () 0.x () 4
obtendo assim: x () = 0. (.6) (0.) (0.6) + 0.7 x () = 0.9600 x () = 0. (0.9600) (0.) (0.6).6 x () =.9 x () = 0. (0.9600) (0.) (.9) + 0.6 x () = 0.986 Fórmula geral para obtenção de x (k+) : A expressão da componente x (k+) fica como no método de Jacobi. Na expressão da componente x (k+), substitui-se x (k) por x (k+). Na expressão da componente x (k+) substitui-se x (k) por x (k+) e x (k) por x (k+). 5
Com base nessas observações, o método de Gauss-Seidel para o exemplo é o método iterativo definido por: x (k+) = 0.7 0.x (k) 0.x(k) x (k+) =.6 0.x (k+) 0.x (k) x (k+) = 0.6 0.x (k+) 0.x (k+) com k = 0,,,... Vemos que o método de Gauss-Seidel se distingue do método de Jacobi no fato de utilizar os novos elementos à medida que eles vão sendo calculados. observação: Embora pareça natural, o método de Gauss-Seidel não é mais rápido (chega a solução exata num menor número de iterações) do que o método de Jacobi. Há casos em que o método de Jacobi converge e o de Gauss- Seidel diverge. 6
Critério de Parada Usaremos a seguinte norma vetorial de lr n : x = max x n { x i } Exemplo: Seja x = [ 4] T. Então x = max{,, 4 } = 4. Defina: x (k) = [x (k), x(k),..., x(k) n ] T x (k+) = [x (k+), x (k+),..., x (k+) n M k = x (k) x (k+) = max i n { x(k) i ] T x (k+) i } Dada uma tolerância ɛ e um número máximo de iterações N, paramos o processo quando: (i) M K ɛ; (ii) não ocorrer M k iteração N. ɛ mas atingirmos a 7
No caso (i) dizemos que x (k) é a aproximação procurada e no caso (ii) dizemos que não houve convergência. Exemplo: Utilize o método de Gauss-Seidel para encontrar uma solução do sistema abaixo com ɛ = 0.5, N = (trabalhar com duas casas decimais). 4x + y z = 5 x 5y + z = x + y + 6z = 0 8
Norma de Matrizes Vamos considerar a norma induzida pela norma vetorial. Então tem-se: A = max x 0 Ax x Nesse caso, pode-se provar que: A = max i n n j= a ij conhecida como norma das linhas. 5 Exemplo: Se A = 4 6 5 7 A = max + + 5 = 9; + 4 + = 7; 6 + 5 + 7 = 8 = 8 9
Convergência Teorema: Seja o sistema linear Ax = b (7) que foi transformado no sistema equivalente x = Cx + d onde C é uma matriz quadrada e d é um vetor, e consideremos o método iterativo x (k+) = Cx (k) + d (8) com x (0) um vetor qualquer do lr n. Se existe alguma norma induzida (ou natural) de matrizes tal que C <, então o método iterativo (8) converge para solução x do sistema (7) qualquer que seja o vetor x (0) dado. E têm-se a fórmula de erro x x (k+) C C x(k+) x (k) Obs.: (i) Pode ser que C >, mas se encontrarmos outra norma satisfazendo a condição do teorema, então garantimos a convergência. 0
(ii) Pode-se ter C e mesmo assim o sistema convergir para a solução. Definição : Uma matriz A = [a ij ] n n é chamada matriz diagonal dominante se: (i) a ii n j= j i a ij i =,,..., n diagonal dominante por linhas; (ii) a jj n i= i j a ij j =,,..., n diagonal dominante por colunas. Definição : Se nas desigualdades acima o sinal for substituído por > (ou seja, desigualdade estrita sempre) então dizemos que a matriz é de diagonal estritamente dominante por linhas (ou por colunas). Exemplo: Considere a matriz A = 4 0 4 4
Tem-se: 4 > + 0, 4 > + e 4 = +, donde vemos que esta matriz é de diagonal dominante por linhas, mas não é de diagonal estritamente dominante por linhas. Por outro lado, A é de diagonal estritamente dominante por colunas: 4 > +, 4 > + e 4 > + 0. Teorema: Se a matriz A dos coeficientes é uma matriz de diagonal estritamente dominante por linhas ou por colunas então os métodos de Jacobi e de Gauss-Seidel convergem para a solução de Ax = b qualquer que seja o vetor inicial x (0). Observação: Se a matriz A não é diagonal dominante pode ocorrer a convergência ou não.
Exemplo: Seja o sistema 4 4 8 5 x x x = 7 5 Conclua sobre a convergência ou não dos métodos de Jacobi e Gauss-Seidel. A matriz A não é de diagonal estritamente dominante por colunas, pois falha na primeira coluna: a i = 4 < 4 +. Contudo, A é de diagonal estritamente dominante por linhas: a = 4 > + = ; a = 8 > 4 + = 5 e a = 5 > + =. Pelo teorema anterior podemos concluir que os métodos de Jacobi e Gauss-Seidel convergem para a solução exata do sistema qualquer que seja x (0).
Exemplo : Seja o sistema de equações lineares: { x + x = x x = A = [ A não é uma matriz diagonal estritamente dominante, entretanto o Método de Jacobi gera uma seqüência convergente para a solução exata x = [/ /] T. Exemplo : Considere o sistema linear: Vemos a matriz x + x + x = 5x + x + x = 6x + 8x = 6 A = 5 0 6 8 não é diagonal estritamente dominante. ] 4
Se permutarmos a primeira equação com a segunda equação temos: A = 5 0 6 8 que é diagonal estritamente dominante garantindo assim a convergência para qualquer vetor inicial. Este tipo de procedimento nem sempre é possível. 5
CRITÉRIO DE SASSENFIELD Seja o sistema linear Ax = b, com A de dimensão n n e seja β = a + a + a 4 + + a n a e para j =,,, n : β j = a j β + a j β + + a jj β j + a jj+ + + a jn a jj Define-se β = max β j. Se β <, então o j=,,n Método de Gauss-Seidel gera uma seqüencia convergente para a solução do sistema, qualquer que seja o vetor inicial. Além disso, quanto menor for o valor de β mais rápida é a convergência. 6
Exemplo: Verificar as condições de convergência do Método de Gauss-Seidel no sistema a abaixo: x + x + x = x + x = x + x = Vemos que a matriz dos coeficientes é: A = 0 0 que não é diagonal estritamente dominante e o critério de Sassenfeld falha pois β = + = >. Trocando-se a primeira equação pela terceira equação: x + x = x + x = x + x + x = novamente vemos que a matriz não é diagonal dominante e o critério de Sassenfeld falha pois β = 0+ = >. 7
Trocando-se a primeira coluna pela terceira coluna (do último sistema) obtemos: x + x = x x = x + x + x = e vemos que a matriz dos coeficientes não é diagonal estritamente dominante mas pelo critério de Sassenfeld obtemos: β = < β = < + β = = 4 6 < e o sistema passa a ser convergente para qualquer vetor inicial. 8