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

Calculo Numerico:sistemas Lineares :eliminação De Gauss

Notas de aula sobre sistemas lineares

   EMBED


Share

Transcript

Resolu¸c˜ ao de Sistemas Lineares – Parte 1 Jorge C. Lucero 17 de Maio de 2010 1 Introdu¸c˜ ao Consideramos a resolu¸ca˜o do sistema de equa¸c˜oes lineares ⎧ a11 x1 + a12 x2 + · · · + a1n xn = b1 ⎪ ⎪ ⎪ ⎨ a21 x1 + a22 x2 + · · · + a2n xn = b2 .. .. ⎪ . . ⎪ ⎪ ⎩ an1 x1 + an2 x2 + · · · + ann xn = bn Se definimos as matrizes ⎡ a11 ⎢ a21 ⎢ A=⎢ . ⎣ .. a12 a22 .. . ··· ··· an1 an2 · · · ⎤ a1n a2n ⎥ ⎥ .. ⎥ , . ⎦ ⎡ ⎤ b1 ⎢ b2 ⎥ ⎢ ⎥ b = ⎢ . ⎥, ⎣ .. ⎦ ann bn (1) ⎡ ⎤ x1 ⎢ x2 ⎥ ⎢ ⎥ x=⎢ . ⎥ ⎣ .. ⎦ xn podemos representar o sistema acima na forma matricial Ax = b onde A ´e a matriz de coeficientes do sistema. Sabemos que: • Se det A =, o sistema tem solu¸c˜ao u ´ nica. • Se det A = 0, o sistema n˜ao tem solu¸c˜ao, ou tem infinitas solu¸c˜oes. A matriz A n˜ ao tem inversa (A ´e uma matriz singular). Nos interessam aqui os sistemas com solu¸c˜ao u ´ nica. Da ´algebra linear, sabemos que podemos escrever x = A−1 b onde A−1 ´e a matriz inversa de A (supomos que existe). Por que n˜ao resolver o sistema por este m´etodo? Vejamos um exemplo trivial de apenas uma equa¸c˜ao e uma inc´ognita[Mol04]: Exemplo 1. Resolver 7x = 21. Se efetuamos divis˜ao direta, x= 21 = 3. 7 1 Entretanto, se calculamos a “matriz” inversa x = 7−1 × 21 1 × 21 = 7 = 0,142857 × 21 = 2,99997.  Como o exemplo mostra, o uso da matriz inversa requer mais opera¸c˜oes (uma multiplica¸c˜ao a mais que a divis˜ ao direta), e produz um resultado com maior erro. Estas mesmas desvantagens tamb´em se aplicam ao caso geral de n equa¸c˜oes. Outro m´etodo de resolu¸c˜ ao que conhecemos da a´lgebra linear ´e a Regra de Cramer. Neste m´etodo, calculamos a inc´ognita xi na forma det Ai det A onde Ai ´e a matriz que resulta de substituir a coluna i de A pelo vetor-coluna b. Para calcular os determinantes, podemos usar a f´ormula de Laplace se n = 1, a11 det A = n Δ a se n > 1, ∀i = 1,2, . . . ,n ij ij j=1 xi = onde Δij = (−1)i+j det Aij , e Aij ´e a matriz que resulta de eliminar a linha i e coluna j da matriz A. Estimemos as quantidades Mn de multiplica¸co˜es e Sn de somas/substra¸c˜oes para calcular um determinante de orden n por esta f´ormula. No caso de n = 2 (e tomando sempre i = 1 na f´ormula de Laplace)   a11 a12   = a11 a22 − a12 a21 ,  det A =  a21 a22  e devemos realizar duas multiplica¸c˜ oes, M2 = 2, e uma substra¸c˜ao, S2 = 1. Por conveniˆencia dos pr´oximos c´alculos, escrevemos S2 = 2 − 1. Para de n = 3,         a11 a12 a13  a22 a23  a21 a23  a21 a22         .   − a12  + a13  det A = a21 a22 a23  = a11  a32 a33  a31 a33  a31 a32  a31 a32 a33  Neste caso, temos que calcular trˆes determinantes de ordem 2, e fazer mais trˆes multiplica¸c˜oes e duas somas/substra¸c˜ oes. Assim, M3 = 3M2 +3 = 3·2+3 e S3 = 3S2 +2 = 3·2−1. Prosseguindo da mesma forma, para n = 4 devemos calcular quatro determinantes de ordem 3, e fazer mais quatro multiplica¸c˜oes e trˆes somas/substra¸c˜oes. Portanto, M4 = 4M3 + 4 = 4 · 3 · 2 + 4 · 3 + 4 e S4 = 4S3 + 3 = 4 · 3 · 2 − 1. Em geral, para n arbitr´ario, a quantidade de multiplica¸c˜oes ´e Mn = n(n − 1) · · · 3 · 2 + n(n − 1) · · · 3 + · · · + n(n − 1) + n   1 1 1 + = n! 1 + + · · · + + 2! (n − 2)! (n − 1)! n−1  1 = n! k! k=1 2 e a quantidade de somas Sn = n(n − 1) · · · 3 · 2 − 1 = n! − 1 Quanto tempo demoraria um computador para fazer essa quantidade de opera¸c˜oes? A quantidade de opera¸c˜oes de ponto flutuante (n´ umeros n˜ ao inteiros) que uma m´aquina faz por segundo se mede em flops. Em maio 2010, o supercomputador mais r´apido ´e o Jaguar da empresa Cray Inc., instalado no Oak Ridge National Laboratory (laborat´orio do Departamento de Energia dos EUA), capaz de atingir 2,331 Pflops (1 petaflop= 1015 f lops) [MSSD]. A seguinte tabela mostra o tempo que esse computador precisaria para fazer esses c´alculos. n 10 20 30 Sn 3.628.799 2,43 × 1018 2,65 × 1032 Mn 6.235.300 4,18 × 1018 4,56 × 1032 Jaguar 0,42 ns 47m 16s 9,81 × 109 anos Para compreender melhor a u ´ ltima linha da tabela, lembre que a idade do Universo est´a 9 estimada em torno a 14 × 10 anos. Como vemos, esta t´ecnica de resolu¸c˜ao de sistemas ´e invi´avel quando a quantidade de equa¸c˜oes n˜ao ´e pequena. O que procuramos aqui ´e um m´etodo para resolver sistemas de qualquer tamanho (considere n = 10.000, por exemplo), rapidamente e com erros pequenos. 2 Resolu¸c˜ ao de um sistema triangular superior Um sistema de equa¸c˜ oes da forma ⎧ a11 x1 + a12 x2 ⎪ ⎪ ⎪ ⎨ a22 x2 ⎪ ⎪ ⎪ ⎩ + ··· + ··· .. . + a1n xn + a2n xn .. . = b1 = b2 .. . (2) + ann xn = bn ´e chamado de sistema triangular superior, e sua ⎡ a11 a12 ⎢ 0 a22 ⎢ A=⎢ . .. ⎣ .. . 0 matriz de coeficientes associada ⎤ · · · a1n · · · a2n ⎥ ⎥ .. ⎥ .. . . ⎦ ··· 0 ann ´e uma matriz triangular superior. As matrizes triangulares s˜ao muito utilizadas na ´algebra linear computacional, pois possuem propriedades u ´ teis. Note, por exemplo, que seu determinante pode ser facilmente calculado pelo produto dos elementos na diagonal principal: det A = n  aii i=1 Se todos os elementos aii s˜ ao diferentes de zero, conclu´ımos que o determinante tamb´em ´e. Nesse caso, a matriz possui inversa, que tamb´em ´e triangular superior. 3 A solu¸c˜ ao de um sistema triangular superior pode ser calculada rapidamente por substitui¸c˜ao, come¸cando pelo c´ alculo de xn a partir da n-´esima equa¸c˜ao xn = bn ann Substituindo xn na equa¸c˜ ao n − 1 e resolvendo para xn−1 obtemos xn−1 = bn − an−1,n xnn an−1,n−1 Continuando com este processo, calculamos todas as inc´ognitas xi = = bi − ain xn − ai,n−1xn−1 − · · · − ai,i+1 xi+1 aii bi − nj=i+1 aij xj aii para cada i = n − 1,n − 2, . . . ,2,1. Algoritmo 1 (Resolu¸c˜ ao de um sistema triangular superior). Dada uma matriz triangular superior A n × n e um vetor coluna b n × 1, este algoritmo calcula uma solu¸ca˜o de Ax = b. xn = bn /ann for i = n − 1 to 1 step -1 bi − nj=i+1 aij xj xi = aii end  3 Elimina¸c˜ ao de Gauss A elimina¸c˜ ao de Gauss ´e um algoritmo que transforma um sistema qualquer em um triangular superior, sem alterar sua solu¸c˜ ao. Para isso, utiliza as seguintes opera¸c˜oes com as equa¸co˜es (linhas) do sistema: 1. Adicionar a equa¸ca˜o j ` a equa¸ca˜o i, multiplicada por uma constante k. Nota¸ca˜o: Li ← Li + kLj . 2. Permutar a equa¸c˜ ao i com a equa¸c˜ao j. Nota¸c˜ao: Li ↔ Lj . ´ simples demonstrar que ambas opera¸c˜oes n˜ao alteram a solu¸c˜ao de um sistema dado. E Seja o sistema dado pela Eq. (1). Realizando a primeira opera¸c˜ao acima, o sistema ´e transformado em ⎧ + a12 x2 + ··· + a1n xn = b1 a11 x1 ⎪ ⎪ ⎪ ⎪ a x + a x + · · · + a x = b2 ⎪ 21 1 22 2 2n n ⎪ ⎪ ⎪ . . ⎨ .. .. ⎪(ai1 + kaj1 )x1 + (ai2 + kaj2 )x2 + · · · + (ain + kajn )xn = bi + kbj ⎪ ⎪ ⎪ .. .. ⎪ ⎪ . . ⎪ ⎪ ⎩ + an2 x2 + ··· + ann xn = bn an1 x1 4 Note que apenas a i-´esima equa¸c˜ao foi alterada. Se x = (x1 , x2 , . . . , xn )T satisfaz o sistema (1), ent˜ao tamb´em satisfaz as equa¸c˜oes n − 1 equa¸c˜oes inalteradas do sistema (3). Consideremos agora a i-´esima equa¸c˜ao: (ai1 + kaj1 )x1 + (ai2 + kaj2 )x2 + · · · + (ain + kajn )xn = bi + kbj que pode ser reescrita na forma (ai1 x1 + ai2 x2 + · · · + ain xn ) + k(aj1 x1 + aj2 x2 + · · · + ajn xn ) = bi + kbj (3) Das equa¸c˜ oes i e j do sistema (1), sabemos que ai1 x1 + ai2 x2 + · · · + ain xn ) = bi e aj1 x1 + aj2 x2 + · · · + ajn xn ) = bj . Substituindo ambas express˜ oes na Eq. (3) obtemos a identidade bi + kbj = bi + kbj , o que prova que x tamb´em satisfaz a i-´esima equa¸c˜ao do sistema (3). Exemplo 2. Seja o sistema ⎧ 2x1 ⎪ ⎪ ⎨ x1 3x ⎪ ⎪ ⎩ 1 −4x1 + x2 + 3x3 − 3x4 − 2x2 + x4 + 2x2 + x3 − 2x2 + 13x3 + 3x4 = 0 = 5 = 4 = −3 Para simplificar a nota¸ca˜o, representemos-lo com a matriz aumentada ⎤ ⎡ 2 1 3 −3 0 ⎢ 1 −2 0 5 ⎥ 1 ⎥ ⎢ ⎣ 3 4 ⎦ 2 1 0 −4 −2 13 3 −3 Queremos transformar este sistema em um triangular superior, sem alterar a solu¸c˜ao, e usando apenas as duas opera¸c˜ oes mencionadas acima. Existem infinitas maneiras de fazer isso. No entanto, queremos proceder de uma forma sistem´ atica, para obtermos um algoritmo capaz de resolver qualquer sistema (que possua solu¸c˜ao). Etapa 1: nesta etapa zeramos os elementos da matriz que est˜ao na primeira coluna, abaixo da diagonal principal. Para isso, realizamos as opera¸c˜oes L2 ← L2 − 12 L1 , L3 ← L3 − 32 L1 , L4 ← L4 + 2L1 , com o resultado ⎤ ⎡ 2 1 3 −3 0 ⎢ 0 −2,5 −1,5 2,5 5 ⎥ ⎥ ⎢ ⎣ 0 0,5 −3,5 4,5 4 ⎦ 0 0 19 −3 −3 Etapa 2: nesta etapa zeramos os elementos que est˜ao na segunda coluna, abaixo da diagonal principal. Para isso, realizamos a opera¸c˜ao L3 ← L3 + 15 L2 , com o resultado ⎤ ⎡ 2 1 3 −3 0 ⎢ 0 −2,5 −1,5 2,5 5 ⎥ ⎥ ⎢ ⎣ 0 5 ⎦ 0 −3,8 5 0 0 19 −3 −3 5 Etapa 3: nesta u ´ ltima etapa zeramos o elemento que est´a na terceira coluna, abaixo da diagonal principal. Para isso, realizamos a opera¸c˜ao L4 ← L4 + 5L3 , com o resultado ⎤ ⎡ 2 1 3 −3 0 ⎢ 0 −2,5 −1,5 2,5 5 ⎥ ⎥ ⎢ ⎣ 0 5 ⎦ 0 −3,8 5 0 0 0 22 22 Esta u ´ ltima matriz representa o sistema triangular superior ⎧ x2 + 3x3 − 3x4 = 0 2x1 + ⎪ ⎪ ⎨ − 2,5x2 − 1,5x3 + 2,5x4 = 5 − 3,8x3 + 5x4 = 5 ⎪ ⎪ ⎩ 22x4 = 22 que j´a sabemos resolver x4 x3 x2 x1 = (22)/22 = 1 = (5 − 5x4 )/(−3,8) = 0 = (5 + 1,5x3 − 2,5x4 )/(−2,5) = −1 = (−x2 − 3x3 + 3x4 )/2 = 2 Portanto a solu¸c˜ ao do sistema dado ´e x = (2, −1, 0, 1)T (verifique!).  Consideremos agora a resolu¸ca˜o de um sistema de n equa¸c˜oes, representado pela matriz aumentada ⎤ ⎡ a11 a12 · · · a1n b1 ⎢ a21 a22 · · · a2n b2 ⎥ ⎥ ⎢ ⎢ .. .. .. .. ⎥ ⎣ . . . . ⎦ an1 an2 · · · ann bn Como o exemplo anterior ilustra, o algoritmo procede por etapas. Na primeira etapa, zera os elementos da primeira coluna, nas linhas 2,3, . . . ,n. Para zerar o elemento a21 , subtra´ımos ´ f´acil ver que essa constante da linha 2 a linha 1, multiplicada por uma constante apropriada. E deve ser a21 /a11 (suponhamos que a11 = 0). Da mesma forma, zeramos os outros elementos com as opera¸c˜ oes Li ← Li − (ai1 /a11 )L1 , i = 2,3, . . . ,n. O resultado da etapa ´e ⎤ ⎡ a11 a12 · · · a1n b1 ⎢ 0 a22 · · · a2n b2 ⎥ ⎥ ⎢ ⎢ .. .. .. .. ⎥ ⎣ . . . . ⎦ 0 an2 · · · ann bn Os elementos nas linhas 2 a n ter˜ao valores diferentes aos originais, entretanto, mantemos os mesmos s´ımbolos para simplicidade da nota¸c˜ao. Na segunda etapa, o algoritmo zera os elementos da segunda coluna, nas linhas 3,4 . . . ,n, por meio das opera¸c˜oes Li ← Li −(ai2 /a22 )L2 , i = 3,4, . . . ,n (supondo a22 = 0), com o resultado ⎤ ⎡ a11 a12 a13 · · · a1n b1 ⎢ 0 a22 a23 · · · a2n b2 ⎥ ⎥ ⎢ ⎢ 0 0 a33 · · · a3n b3 ⎥ ⎥ ⎢ ⎢ .. .. .. .. .. ⎥ ⎣ . . . . . ⎦ 0 0 an3 · · · ann bn 6 O algoritmo continua dessa forma, at´e a etapa n − 1, onde zera o elementos da coluna n − 1, na linha n, por meio da opera¸c˜ ao Ln ← Ln − (an,n−1 /an−1,n−1 )Ln−1 , (supondo an−1,n−1 = 0), com o resultado ⎤ ⎡ a11 a12 · · · a1n b1 ⎢ 0 a22 · · · a2n b2 ⎥ ⎥ ⎢ ⎢ .. .. .. ⎥ . . . . ⎣ . . . . . ⎦ 0 ··· 0 ann bn A matriz acima representa um sistema triangular superior, que ´e resolvido por substitui¸ca˜o. Note que, na etapa k, o algoritmo sempre subtrai a linha k, chamada de linha pivˆo. No coeficiente que multiplicador, o denominador ´e sempre o elemento akk , chamado de elemento pivˆo. Dizemos que, em cada etapa, o algoritmo pivota sobre o elemento pivˆ o. Algoritmo 2 (Elimina¸c˜ao de Gauss). Dada uma matriz A n × n n˜ao singular e um vetor coluna b n × 1, este algoritmo realiza a elimina¸c˜ao de Gauss sobre a matriz aumentada C = [A|b]. C = [A|b] for i = 1 to n − 1 for j = i + 1 to n cji = 0 for k = i + 1 to n cjk = cjk − cji cii cik end end end  O algoritmo acima falha se, na etapa k, o elemento pivˆ o akk for zero. No in´ıcio dessa etapa, a matriz aumentada tem a forma ⎤ ⎡ a11 a12 · · · a1,k · · · a1n b1 ⎢ 0 a22 · · · a2,k · · · a2n b2 ⎥ ⎥ ⎢ ⎥ ⎢ .. . . . . . . . . ⎢ . . . . . ⎥ ⎥ ⎢ ⎥ ⎢ 0 ··· · · · a b 0 a kk kn k ⎥ ⎢ ⎢ .. .. .. .. .. ⎥ ⎣ . . . . . ⎦ 0 ··· 0 ank · · · ann bn Nesta etapa, o algoritmo deve zerar os elementos da coluna k, nas linhas k + 1 a n, com a Li ← Li − (aik /akk )Lk , i = k + 1,k + 2, . . . ,n. Se o pivˆo akk = 0, ent˜ao podemos usar a opera¸c˜ao de permuta de linhas para obter um pivˆo diferente de zero. Para isso, procuramos na coluna k, da linha k + 1 `a linha n, pelo primeiro elemento diferente de zero. Suponha que tal elemento est´a na linha l (i.e., alk = 0); ent˜ao, fazemos a permuta Lk ↔ Ll . Se o sistema de equa¸c˜oes admite solu¸ca˜o u ´ nica (i.e., o determinante da matriz de coeficientes ´e det A = 0), ent˜ ao sempre poderemos obter pivˆos diferentes de zero. Caso um pivˆo seja zero, e n˜ao exista uma permuta que produza um pivˆ o diferente de zero, ent˜ ao o sistema ´e 7 indeterminado ou imposs´ıvel (i.e., det A = 0). Da mesma forma, se ao final das n − 1 etapas o elemento ann = 0, ent˜ao o sistema ´e indeterminado ou imposs´ıvel. Exemplo 3. Seja o sistema ⎧ − 2x2 − 5x3 = 9 ⎨ x1 2x1 − 4x2 + 3x3 = −8 ⎩ −3x1 + 6x2 − 24x3 = 51 Ap´os a primeira etapa da elimina¸c˜ao de Gauss, obtemos a matriz ⎤ ⎡ 9 1 −2 −5 ⎣ 0 0 13 −26 ⎦ 0 0 −39 78 ´ nico elemento abaixo dele, na mesma coluna, O pivˆo da segunda etapa ´e a22 = 0, e o u tamb´em ´e zero. A elimina¸c˜ ao de Gauss deve ser ent˜ao abortada. A matriz acima representa o sistema ⎧ 9 ⎨x1 − 2x2 − 5x3 = 13x3 = −26 ⎩ − 39x3 = 78 ao, A segunda e terceira equa¸c˜ ao tˆem a solu¸c˜ao x3 = −2. Substituindo na primeira equa¸c˜ obtemos x1 = −1 + 2x2 . Conclu´ımos ent˜ao que o sistema dado possui infinitas solu¸c˜oes, da forma x = (−1 + 2a, a, −2)T , onde a ´e uma constante arbitr´aria.  4 Estrat´ egias de pivotamento Se, durante o c´alculo da elimina¸ca˜o de Gauss, algum elemento pivˆo for zero, devemos permutar linhas para evitar uma divis˜ao por zero. Consideremos agora o que acontece se algum pivˆ o ´e muito pequeno, em compara¸c˜ ao com os outros coeficientes do sistema. Exemplo 4. Seja o sistema −0,0001x1 + 6,4578x2 = 6,4579 2,6534x1 + 5,3068x2 = 2,6534 (4) A matriz aumentada correspondente ´e   −0,0001 6,4578 6,4579 2,6534 5,3068 2,6534 Aplicando a elimina¸c˜ ao de Gauss, e fazendo todos os c´alculos com 5 d´ıgitos significativos, obtemos, para os elementos da segunda linha: a21 = 0, a22 = 5,3068 − 6,4578(−2,6534 × 104 ) = 5,3068 + 1,7135 × 105 = 1,7136 × 105 b2 = 2,6534 − 6,4579(−2,6534 × 104 ) = 2,6534 + 1,7135 × 105 = 1,7135 × 105 8 o que resulta no sistema triangular −0,0001x1 + 6,4578x2 = 6,4579 5 1,7136 × 10 x2 = 1,7135 × 105 (5) Resolvendo por substitui¸c˜ ao x2 = (1,7135 × 105 )/(1,7136 × 105 ) = 0,99994 x1 = = = = (6,4579 − 6,4578x2 )/(−0,0001) (6,4579 − 6,4574)/(−0,0001) 0,0005/(−0,0001) −5 Comparemos agora este resultado com a solu¸c˜ao exata do sistema (6): x1 = −1, x2 = 1. O resultado para x2 tem um erro de 0,00006, que era de se esperar, como consequˆencia de ter arredondado para cinco d´ıgitos nos c´alculos. Entretanto, o resultado para x1 possui um erro muito grande. Por que? Note que na resolu¸c˜ao do sistema triangular final, o denominador umero muito pequeno (−0,0001). da equa¸c˜ ao para o c´alculo de x1 (o elemento pivˆo) ´e um n´ Quando o valor de x2 ´e substitu´ıdo no numerador dessa equa¸c˜ao, qualquer erro que esse valor possua ´e amplificado, como consequˆencia da divis˜ao por um n´ umero muito pequeno. Se permutamos a ordem das equa¸co˜es no sistema original 2,6534x1 + 5,3068x2 = 2,6534 (6) −0,0001x1 + 6,4578x2 = 6,4579 e aplicamos a elimina¸c˜ ao de Gauss, trabalhando novamente com cinco d´ıgitos, obtemos o sistema 2,6534x1 + 5,3068x2 = 2,6534 6,4580x2 = 6,4580 cuja solu¸c˜ao calculamos como x2 = 6,4580/6,4580 = 1 x1 = (2,5634 − 5,3068x2 )/2,6534 = −1  Como o exemplo ilustra, elementos pivˆos muito pequenos podem causar erros muito grandes no c´alculo. Pivotamento parcial O m´etodo mais simples para evitar pivˆ os pequenos ´e permutar as linhas da matriz aumentada (ou equa¸c˜ oes do sistema), de forma a selecionar o maior pivˆo poss´ıvel para cada etapa do algoritmo. Suponha que estamos na etapa k da elimina¸c˜ao de Gauss, com a matriz 9 ⎡ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ a11 a12 · · · 0 a22 · · · .. .. .. . . . 0 ··· 0 .. .. . . 0 ··· 0 a1,k · · · a2,k · · · akk .. . ··· ank ··· a1n a2n .. . b1 b2 .. . akn bk .. .. . . ann bn ⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ Ent˜ao, comparamos os elementos na coluna k, da linha k `a linha n, para identificar aquele com maior valor absoluto. Se tal elemento est´a na linha i, com k ≤ i ≤ n, ent˜ao permutamos as linhas k e i (Lk ↔ Li ). Exemplo 5. Considere o sistema [KC02] εx1 + x2 = 1 x1 + x2 = 2 onde ε  1. A elimina¸ca˜o de Gauss produz o sistema triangular (verifique!) x2 = 1 εx1 + (1 − ε−1 )x2 = 2 − ε−1 e portanto x2 = (2 − ε−1 )/(1 − ε−1 ) x1 = (1 − x2 )ε−1 Se ε  1, ent˜ao ε−1  1 (e tamb´em ε−1  2) e obtemos assim x2 = 1, e logo x1 = 0 (verifique com sua calculadora fazendo, e.g. ε = 10−20 ). Note que este resultado satisfaz a primeira equa¸c˜ao do sistema, mas n˜ ao a segunda. A solu¸c˜ao exata do sistema ´e x2 = 1 − ε/(1 − ε) ≈ 1 x1 = 1/(1 − ε) ≈ 1 Permutando as equa¸c˜ oes, obtemos x1 + e agora x2 = 2 (1 − ε)x2 = 1 − 2ε x2 = (1 − 2ε)/(1 − ε) x1 = 2 − x2 Para ε  1, esta vez obtemos x1 = 1 e x2 = 1, que aproxima a solu¸c˜ao exata. Exemplo 6. Resolvamos o sistema ⎧ − 3x2 + x3 x1 ⎪ ⎪ ⎨ + 6x3 + x4 3x1 − 5x2 + 7x3 − x4 ⎪ ⎪ ⎩ − 5x4 −4x1 − x2 10 = −2 = 16 = −4 = −19  usando pivotamento parcial. A matriz ⎡ 1 ⎢ 3 ⎢ ⎣ 0 −4 aumentada inicial ´e ⎤ −2 −3 1 0 16 ⎥ 0 6 1 ⎥ −5 7 −1 −4 ⎦ −1 0 −5 −19 Etapa 1: Na primeira coluna, o elemento com maior valor absoluto est´ a na linha 4, e portanto permutamos a linha 1 e a linha 4. ⎤ ⎡ −4 −1 0 −5 −19 ⎢ 3 16 ⎥ 0 6 1 ⎥ ⎢ ⎣ 0 −5 7 −1 −4 ⎦ −2 1 −3 1 0 Realizamos as opera¸c˜ oes L2 ← L2 − 3 −4 L1 , L4 ← L4 − 1 −4 L1 , ⎤ −19 −4 −1 0 −5 ⎢ 0 −0,75 6 −2,75 1,75 ⎥ ⎥ ⎢ ⎣ 0 −4 ⎦ −5 7 −1 0 −3,25 1 −1,25 −6,75 ⎡ Etapa 2: Na segunda coluna, da linha 2 `a linha 4, o elemento de maior valor absoluto est´a na linha 3, portanto permutamos as linhas 2 e 3. ⎤ ⎡ −19 −4 −1 0 −5 ⎢ 0 −4 ⎥ −5 7 −1 ⎥ ⎢ ⎣ 0 −0,75 6 −2,75 1,75 ⎦ 0 −3,25 1 −1,25 −6,75 Realizamos as opera¸c˜ oes L3 ← L3 − −0,75 −5 L2 , L4 ← L4 − −3,25 −5 L2 com o resultado ⎤ −19 −4 −1 0 −5 ⎢ 0 −5 −4 ⎥ 7 −1 ⎥ ⎢ ⎣ 0 0 4,95 −2,6 2,35 ⎦ 0 0 −3,55 −0,6 −4,15 ⎡ Etapa 3: Na terceira coluna, linhas 3 e 4, o elemento de maior valor absoluto est´a na posi¸c˜ao pivˆo, portanto n˜ao permutamos linhas. Realizamos a opera¸c˜ao L4 ← L4 − −3,55 4,95 L3 , com o resultado ⎤ ⎡ −19 −4 −1 0 −5 ⎥ ⎢ 0 −5 −4 7 −1 ⎥ ⎢ ⎣ 0 2,35 ⎦ 0 4,95 −2,6 0 0 0 −2,4646 −2,4646 Obtemos assim um sistema triangular superior, que resolvemos por substitui¸c˜ao obtendo  x = (3, 2, 1, 1)T . 11 Pivotamento completo Existem casos onde, mesmo realizando pivotamento parcial, os erros ainda s˜ao grandes. Exemplo 7. Seja o sistema representado pela matriz   −10 6,4578 × 105 6,4579 × 105 2,6534 5,3068 2,6534 Note que este sistema resulta de multiplicar por 105 a primeira equa¸c˜ao do sistema no exemplo 4. A solu¸c˜ao exata ´e a mesma: x1 = −1, x2 = 1. O elemento na primeira linha da primeira coluna ´e maior que o da segunda linha, portanto o pivotamento parcial n˜ao exige a permuta das equa¸c˜oes. No entanto, a elimina¸c˜ ao de Gauss resulta novamente em x1 = −5, x2 = 0,99994, com um erro grande para x1 . O problema ´e que, ainda quando o pivˆ o seja o elemento de maior valor absoluto na primeira coluna da matriz correspondente, ele ainda ´e muito pequeno em compara¸c˜ao com os outros elementos.  Na estrat´egia de pivotamento completo, em cada etapa permutamos linhas e colunas de forma de obter o pivˆ o de maior valor absoluto poss´ıvel. Na etapa k da elimina¸c˜ao de Gauss, temos a matriz ⎡ ⎤ a11 a12 · · · a1,k · · · a1n b1 ⎢ 0 a22 · · · a2,k · · · a2n b2 ⎥ ⎢ ⎥ ⎢ .. .. .. ⎥ .. .. ⎢ . . . . . ⎥ ⎢ ⎥ ⎢ 0 ··· 0 akk · · · akn bk ⎥ ⎢ ⎥ ⎢ .. .. .. .. .. ⎥ ⎣ . . . . . ⎦ 0 ··· 0 ank · · · ann bn Ent˜ao, comparamos os elementos nas coluna k a n, e linhas k a n, para identificar quele com maior valor absoluto. Se tal elemento est´a na linha i e coluna j, com k ≤ i ≤ n, k ≤ i ≤ n, ent˜ao permutamos as linhas k e i e colunas k ej. No entanto, note que permutar colunas equivale a permutar os nomes das vari´aveis. Se permutamos as colunas k e j, no final do c´alculo devemos lembrar que as vari´aveis xk e xj ter˜ao seus valores permutados. Exemplo 8. Resolvamos o sistema do ⎡ 1 ⎢ 3 ⎢ ⎣ 0 −4 exemplo 6 usando pivotamento completo ⎤ −2 −3 1 0 16 ⎥ 0 6 1 ⎥ −5 7 −1 −4 ⎦ −1 0 −5 −19 Etapa 1: Nas linhas 1 a 4 e colunas 1 a 4, o elemento com maior valor absoluto est´a na linha 3 e coluna 3. Portanto, permutamos as linhas 1 e 3, e colunas 1 e 3. ⎤ ⎡ 7 −5 0 −1 −4 ⎢ 6 0 16 ⎥ 3 1 ⎥ ⎢ ⎣ 1 −3 1 −2 ⎦ 0 0 −1 −4 −5 −19 12 Realizamos as opera¸c˜ oes L2 ← L2 − 67 L1 , L3 ← L3 − 17 L1 , ⎤ −4 7 −5 0 −1 ⎢ 0 4,2857 3 1,8571 19,4286 ⎥ ⎥ ⎢ ⎣ 0 −2,2857 1 0,1429 −1,4286 ⎦ −19 0 −1 −4 −5 ⎡ Etapa 2: Nas linhas 2 a 4, e colunas 2 a 4, o elemento de maior valor absoluto est´a na linha 4 e coluna 4, portanto permutamos as linhas 2 e 4 e colunas 2 e 4. ⎤ ⎡ −4 7 −1 0 −5 ⎢ 0 −5 −4 −1 −19 ⎥ ⎥ ⎢ ⎣ 0 0,1429 1 −2,2857 −1,4286 ⎦ 0 1,8571 3 4,2857 19,4286 Realizamos as opera¸c˜ oes L3 ← L3 − 0,1429 −5 L2 , L4 ← L4 − 1,8571 −5 L2 com o resultado ⎤ −4 7 −1 0 −5 ⎢ 0 −5 −19 ⎥ −4 −1 ⎥ ⎢ ⎣ 0 0 0,8857 −2,3143 −1,9716 ⎦ 0 0 1,5143 3,9143 12,3716 ⎡ Etapa 3: Nas linhas 3 e 4 e colunas 3 e 4, o elemento de maior valor absoluto est´a na linha 4 e coluna 4, portanto permutamos as linhas 3 e 4 e colunas 3 e 4. ⎤ ⎡ −4 7 −1 −5 0 ⎢ 0 −5 −19 ⎥ −1 −4 ⎥ ⎢ ⎣ 0 0 3,9143 1,5143 12,3716 ⎦ 0 0 −2,3143 0,8857 −1,9716 Realizamos a opera¸c˜ao L4 ← L4 − −2,3143 3,9143 L3 , com o resultado ⎤ −4 7 −1 −5 0 ⎢ 0 −5 −19 ⎥ −1 −4 ⎥ ⎢ ⎣ 0 0 3,9143 1,5143 12,3716 ⎦ 0 0 0 1,7811 5,3434 ⎡ A solu¸c˜ ao deste sistema triangular superior ´e x = (1, 1, 2, 3)T . Para obter a solu¸ca˜o do sistema original, devemos “desfazer” as trocas de colunas, aplicando nas inc´ognitas as mesmas permutas de colunas realizadas, em ordem inversa. Permutando ent˜ ao x3 ↔ x4 , x2 ↔ x4 e T  x1 ↔ x3 , obtemos x = (3, 2, 1, 1) , que ´e a solu¸c˜ao procurada. 5 Quantidade de opera¸c˜ oes ´ poss´ıvel mostrar que a quantidade total de opera¸co˜es para transformar um sistema de ordem E n em um sistema triangular superior equivalente, usando o algoritmo de Elimina¸c˜ao de Gauss, oes e n3 /3 somas/substra¸c˜oes. A para n grande, ´e aproximadamente n3 /3 multiplica¸c˜oes/divis˜ resolu¸c˜ao do sistema triangular, por substitui¸c˜ao, exige aproximadamente n2 opera¸c˜oes. No 13 entanto, note que se n ´e grande, ent˜ao n2 ´e desprez´ıvel frente a n3 . Podemos ent˜ao afirmar que o total de opera¸c˜ oes ´e de aproximadamente (2/3)n3 . O pivoteamento parcial exige n − 1 compara¸c˜oes na primeira etapa, n − 2 compara¸co˜es na segunda etapa, e assim at´e a etapa n − 1 onde ´e realizada 1 compara¸c˜ao. O total de compara¸c˜oes ´e, portanto (n − 1) + (n − 2) + · · · + 1 = n−1  k k=1 = ≈ n(n − 1) 2 n2 , 2 para n grande. O tempo gasto para fazer uma compara¸c˜ao ´e similar ao de uma soma/substra¸c˜ao[BF08]. Assim, o pivoteamento parcial n˜ao representa um aumento significativo do tempo gasto para resolver un sistema grande. O pivoteamento completo exige n2 − 1 compara¸c˜oes na primeira etapa, (n − 1)2 − 1 compara¸co˜es na segunda etapa, e assim at´e a etapa n − 1 onde s˜ao realizadas (22 − 1) compara¸co˜es. O total de compara¸c˜ oes ´e, portanto (n2 − 1) + [(n − 1)2 − 1] + · · · + (22 − 1) = = n  (k2 − 1) k=2 n  k=2 = ≈ k2 − n  1 k=2 n(n + 1)(2n + 1) − 1 − (n − 1) 6 n3 , 3 para n grande. Assim, o pivoteamento completo aproximadamente duplica o tempo gasto em somas/substra¸c˜ oes, e portanto implica em um aumento significativo sobre o tempo total para resolver um sistema. Exemplo 9. Quanto demora um computador para resolver um sistema usando a Elimina¸ca˜o de Gauss? Por exemplo, consideremos um computador notebook como o utilizado para escrever estas notas, com processador Intel Core 2 a 1,67 GHz, mem´oria RAM de 2 GB, e sistema operativo Windows Vista de 32 bits. Seja o sistema Ax = b de ordem n = 1.000, onde os elementos da matriz A (aij ) tˆem valores aleat´orios em distribui¸c˜ao normal com m´edia zero e varian¸ca um, e os elementos do vetor-coluna b s˜ao bi = n  aij , para i = 1, 2, · · · ,n j=1 [a solu¸ca˜o deste sistema ´e simplesmente x = (1, 1, 1, · · · , 1)T ]. Para resolver este sistema usando a Elimina¸c˜ao de Gauss com pivoteamento parcial, implementado no software Octave, o notebook demora em torno a 0,38 s. Compare este tempo com os calculados para a Regra de Cramer na Introdu¸c˜ ao. 14 A resolu¸c˜ ao do sistema linear acima pelo m´etodo de Elimina¸c˜ao de Gauss com pivoteamento parcial ´e justamente o teste utilizado para medir a velocidade, em flops, de um processador (LINPACK benchmark [DLP01]).  Referˆ encias [BF08] Richard L. Burden e J. Douglas Faires. An´ alise Num´erica. Cengage Learning, S˜ao Paulo, 2008. [DLP01] Jack J. Dongarra, Piotr Luszczek, e Antoine Petitet. The linpack benchmark: past, present and future. 2001. Online em ´ http://www.netlib.org/utk/people/JackDongarra/PAPERS/hpl.pdf. Ultimo acesso: 18/08/2009. [KC02] David Kincaid e Ward Cheney. Numerical Analysis: Mathematics of Scientific Computing. Brooks/Cole (Thomson Learning), Pacific Grove, EUA, 3a. edi¸c˜ao, 2002. [Mol04] Cleve Moler. Numerical Computing with MATLAB. The Mathworks, 2004. Online em http://www.mathworks.com/academia, u ´ ltimo acesso em 27/05/2007. [MSSD] Hans Meuer, Erich Strohmaier, Horst Simon, e Jack Dongarra. TOP500. Top500.org. Online em http://www.top500.org/, u ´ltimo acesso: 17/08/2009. 15