Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ca´lculo Nume´rico Resoluc¸a˜o de Sistemas de Equac¸o˜es Lineares Heder S. Bernardino Heder S. Bernardino Ca´lculo Nume´rico Suma´rio 1 Aula Anterior 2 Eliminac¸a˜o de Gauss 3 Estrate´gias de Pivotamento 4 Decomposic¸a˜o LU 5 Revisa˜o Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior – Alterac¸a˜o de Data de Avaliac¸o˜es ◮ Lab2a – 05/12 (quinta-feira) ◮ Lab2b – 09/12 (segunda-feira) ◮ TVC2 – 12/12 (quinta-feira) ◮ Excepcionalmente, pela alterac¸a˜o da data do TVC2 e pela dificuldade em determinar uma nova data, aqueles que realizara˜o outra avaliac¸a˜o no dia 12/12 podera˜o solicitar a segunda chamada do TVC2 ◮ A segunda chamada sera´ realizada no dia 19/12 a`s 12h na sala 3501 ◮ Neste caso, deve-se entregar ate´ o dia 29/11 uma requisic¸a˜o de segunda chamada indicando a disciplina (com o co´digo) e o hora´rio da avaliac¸a˜o que fara˜o no dia 12/12 Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior ◮ Introduc¸a˜o ◮ Alguns Conceitos de A´lgebra Linear ◮ Sistemas Lineares ◮ Classificac¸a˜o ◮ Existeˆncia e unicidade de soluc¸a˜o ◮ Me´todos Computacionais ◮ Me´todos Diretos ◮ Me´todos Iterativos Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Aula Anterior ◮ Sistemas Triangulares ◮ Substituic¸o˜es Sucessivas xi = bi − ∑i−1 j=1 lijxj lii , i = 1, . . . , n ◮ Substituic¸o˜es Retroativas xi = bi − ∑n j=i+1 uijxj uii , i = n, . . . , 1 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ O sistema e´ transformado em um sistema equivalente com a matriz de coeficientes A sendo triangular superior ◮ Operac¸o˜es elementares sa˜o utilizadas para zerar os elementos abaixo da diagonal principal da matriz de coeficientes A ◮ Ilustrac¸a˜o do procedimento: a a a a b a a a a b a a a a b a a a a b ⇒ a a a a b 0 a a a b 0 a a a b 0 a a a b ⇒ a a a a b 0 a a a b 0 0 a a b 0 0 a a b ⇒ a a a a b 0 a a a b 0 0 a a b 0 0 0 a b ◮ Finalmente, o sistema resultante pode ser resolvido por meio de substituic¸o˜es retroativas Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Definic¸a˜o (Sistema Equivalente): Dois sistemas de equac¸o˜es lineares Ax = b e Aˆx = bˆ sa˜o equivalentes quando possuem a mesma soluc¸a˜o x∗. ◮ Teorema: Seja Ax = b um sistema linear. Um sistema Aˆx = bˆ equivalente pode ser obtido aplicando as seguintes operac¸o˜es elementares: ◮ trocar a ordem de duas equac¸o˜es ◮ multiplicar uma equac¸a˜o por uma constante na˜o nula ◮ somar uma equac¸a˜o com um mu´ltiplo de outra Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Por exemplo { x1 + x2 = 2 x1 − x2 = 0 0.0 0.5 1.0 1.5 2.0 2.5 3.0 x 1 −1.0 −0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 x 2 x 1 +x 2 =2 x 1 −x 2 =0 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Fazendo L′2 = L2 − L1, obte´m-se o seguinte sistema equivalente{ x1 + x2 = 2 −2x2 = −2 0.0 0.5 1.0 1.5 2.0 2.5 3.0 x 1 −1.0 −0.5 0.0 0.5 1.0 1.5 2.0 2.5 3.0 x 2 x 1 +x 2 =2 −2x 2 =−2 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Seja o sistema Ax = b representado por uma matriz estendida na forma a11 a12 a13 . . . a1n b1 a21 a22 a23 . . . a2n b2 a31 a32 a33 . . . a3n b3 ... ... ... . . . ... ... an1 an2 an3 . . . ann bn ◮ Os passos que seguem podem ser realizados para obter um sistema linear equivalente com a matriz de coeficientes triangular superior Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Passo 1 (k=1): os elementos abaixo da diagonal principal na primeira coluna sa˜o eliminados fazendo m21 = a21 a11 (supo˜em-se que a11 6= 0) m31 = a31 a11 ... mn1 = an1 a11 , ◮ ou seja, mi1 = ai1 a11 ; i = 2, . . . , n ◮ O elemento utilizado nos denominadores e´ chamado de pivoˆ ◮ a11, neste caso Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Em seguida faz-se L (1) i = L (0) i −mi1L (0) 1 ; L (k) i e´ a linha i no passo k ◮ ou seja, a (1) ij = a (0) ij −mi1a (0) 1j ; j = 1, . . . , n b (1) i = b (0) i −mi1b (0) 1 ◮ Assim, apo´s a primeira etapa tem-se a (0) 11 a (0) 12 a (0) 13 . . . a (0) 1n b (0) 1 0 a (1) 22 a (1) 23 . . . a (1) 2n b (1) 2 0 a (1) 32 a (1) 33 . . . a (1) 3n b (1) 3 ... ... ... . . . . . . ... 0 a (1) n2 a (1) n3 . . . a (1) nn b (1) n Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Passo 2 (k=2): os elementos abaixo da diagonal principal na coluna 2 sa˜o eliminados fazendo mi2 = ai2 a22 ; i = 3, . . . , n e assumindo a22 6= 0 ◮ Em seguida faz-se L (2) i = L (1) i −mi2L (1) 2 ◮ ou seja, a (2) ij = a (1) ij −mi2a (1) 2j ; j = 2, . . . , n b (2) i = b (1) i −mi2b (1) 2 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Assim, apo´s a segunda etapa tem-se a (0) 11 a (0) 12 a (0) 13 . . . a (0) 1n b (0) 1 0 a (1) 22 a (1) 23 . . . a (1) 2n b (1) 2 0 0 a (2) 33 . . . a (2) 3n b (2) 3 ... ... ... . . . . . . ... 0 0 a (2) n3 . . . a (2) nn b (2) n ◮ O procedimento e´ enta˜o repetido ate´ o passo n− 1 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss ◮ Passo k (k=1, . . . , n-1): mik = aik akk ; i = k + 1, . . . , n e supondo akk 6= 0 ◮ Em seguida faz-se L (k) i = L (k−1) i −mikL (k−1) k ◮ ou seja, a (k) ij = a (k−1) ij −mika (k−1) kj ; j = k, . . . , n b (k) i = b (k−1) i −mikb (k−1) k ◮ Nota-se que as linhas 1, . . . , k na˜o sa˜o alteradas ◮ Por fim, aplica-se o me´todo de substituic¸o˜es retroativas ao sistema equivalente Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss Entrada: Matriz A, vetor b, n 1 inicio 2 para k = 1, . . . , n− 1 fac¸a /* Para cada passo */ 3 para i = k + 1, . . . , n fac¸a /* Linhas abaixo da k-e´sima */ 4 m←− A[i][k]/A[k][k] ; 5 para j = k, . . . , n fac¸a /* Colunas */ 6 A[i][j]←− A[i][j]−m ∗A[k][j] ; 7 b[i]←− b[i]−m ∗ b[k] ; 8 x←− retroSubstituicao(A,b, n) ; /* Resolve o sistema */ 9 retorna x Algoritmo 1: Eliminac¸a˜o de Gauss - Complexidade O(n3) Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Exemplo ◮ Exemplo 1 Resolva o sistema linear que segue utilizando o Me´todo de Eliminac¸a˜o de Gauss. 1 0 11 1 0 2 3 1 x1x2 x3 = 01 1 ◮ Soluc¸a˜o: x = 10 −1 Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss – Exemplo em Python 1 from pylab import * 2 3 def gauss(A,b): 4 n = b.shape[ 0 ] 5 # Etapa de eliminacao 6 for k in range(0,n-1): 7 for i in range(k+1,n): 8 if A[i,k] != 0.0: 9 m = A[i,k]/A[k,k] 10 for j in range(k,n): 11 A[i,j] = A[i, j] - m * A[k,j] 12 b[i] = b[i] - m * b[k] 13 14 # Resolve o sistema triangular (funcao deve ser definida) 15 x = substituicoesRetroativas(A, b ) 16 return x Heder S. Bernardino Ca´lculo Nume´rico Eliminac¸a˜o de Gauss Eliminac¸a˜o de Gauss – Exemplo em Python – cont. 1 # inicializa o vetor de coeficientes A 2 A = np.matrix([[ 1, 0, 1 ], 3 [ 1, 1, 0 ], 4 [ 2, 3, 1 ]]) 5 6 # inicializa o vetor b 7 b = np.matrix( [ [0.0], [1.0], [1.0] ] ) 8 9 #Resolve o sistema 10 x = gauss( A, b ) 11 12 print( x ) Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Estrate´gias de Pivotamento Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Estrate´gias de Pivotamento ◮ O Me´todo de Eliminac¸a˜o de Gauss requer o calculo de mik = aik akk ◮ O pivoˆ akk pode ser escolhido adequadamente ◮ Estrate´gias de pivotamento ajudam a evitar ◮ que o pivoˆ seja nulo ◮ a propagac¸a˜o de erros nume´ricos ◮ se akk for um nu´mero muito pequeno (em mo´dulo), o multiplicador mik pode ficar muito grande, ampliando erros de arredondamento ao multiplicar mik ou gerando erros ao subtrair/somar nu´meros pequenos de grandes ◮ O pivotamento garante que |mik| ≤ 1 ◮ Existem duas formas de pivotamento ◮ Pivotamento Parcial ◮ Pivotamento Total Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Pivotamento Parcial ◮ No in´ıcio de cada passo k procura-se r tal que |ark| = max i∈[k,n] |aik| ◮ Em seguida, as linhas k e r sa˜o trocadas e o algoritmo continua ◮ Ou seja, o pivoˆ e´ escolhido de modo que seja o elemento de maior valor absoluto na coluna k ◮ considerando as linhas (i ≥ k) que ainda podem ser operadas ◮ Nota-se que se houver apenas candidatos a pivoˆ nulos enta˜o ◮ det(U) = 0⇒ U e´ singular ⇒ A e´ singular U = a a a0 0 a 0 0 a Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Exemplo ◮ Exemplo 2 O sistema linear que segue na˜o pode ser resolvido utilizando o Me´todo de Eliminac¸a˜o de Gauss sem Pivotamento (verifique). Resolva esse sistema linear via o Me´todo de Eliminac¸a˜o de Gauss com Pivotamento Parcial. 2 2 −13 3 1 1 −1 5 x1x2 x3 = 37 5 ◮ Soluc¸a˜o: x = 11 1 Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Exemplo ◮ Exemplo 3 As operac¸o˜es aritme´ticas devem ser realizadas numa ma´quina F (10, 3,−10, 10) com arredondamento e com representac¸a˜o para o zero. Ao resolver o sistema linear que segue utilizando o Me´todo de Eliminac¸a˜o de Gauss sem Pivotamento obte´m-se xT = [0 2,5] (verifique). Entretanto, essa soluc¸a˜o e´ inva´lida. Resolva o sistema usando o Me´todo de Eliminac¸a˜o de Gauss com Pivotamento Parcial.[ 0,0002 2 2 2 ] [ x1 x2 ] = [ 5 6 ] ◮ Soluc¸a˜o: x = [ 0,5 2,5 ] Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Pivotamento Total ◮ O pivoˆ e´ o maior elemento (em mo´dulo) entre os que ainda atuam no processo de eliminac¸a˜o ◮ No in´ıcio de cada passo k procura-se a linha r e a coluna s tal que |ars| = max i∈[k,n],j∈[k,n] |aij | ◮ Em seguida, as linhas k e r, e as colunas k e s sa˜o trocadas e o algoritmo continua ◮ Observac¸o˜es ◮ a troca das colunas afeta a ordem das varia´veis ◮ o pivotamento total na˜o e´ muito adotado por causa do alto esforc¸o computacional requerido na busca pelo pivoˆ ◮ o pivotamento parcial e´ geralmente satisfato´rio Heder S. Bernardino Ca´lculo Nume´rico Estrate´gias de Pivotamento Estrate´gias de Pivotamento Pivotamento Parcial Pivotamento Total Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Uma matriz quadrada A pode ser decomposta como A = LU onde ◮ L e´ uma matriz triangular inferior com diagonal principal unita´ria ◮ U e´ uma matriz triangular superior ◮ Assim, Ax = b⇒ LUx = b ◮ Definindo Ux = y, enta˜o pode-se resolver Ly = b (por substituic¸o˜es sucessivas) ◮ e depois Ux = y (por substituic¸o˜es retroativas) Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Teorema (LU): Sejam A uma matriz quadrada de ordem n e Ak o menor principal, constitu´ıdo das k primeiras linhas e k primeiras colunas de A. Sendo det(Ak) 6= 0 para k = 1, . . . , n− 1, enta˜o existe ◮ uma u´nica matriz triangular inferior L com elementos da diagonal principal iguais a 1 ◮ uma u´nica matriz triangular superior U tal que A = LU. ◮ Ale´m disso, det(A) = u11u22 . . . unn Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Demonstrac¸a˜o (por induc¸a˜o): ◮ Para n = 1 tem-se que a11 = 1 a11 = 1 u11 ⇒ u11 = a11 e l11 = 1 ◮ Ale´m disso, det(A) = u11 ◮ Assumindo que o teorema e´ va´lido para n = k − 1, ou seja, Ak−1 = Lk−1Uk−1 ◮ Sera´ mostrado que A pode ser decomposta em LU para n = k Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Demonstrac¸a˜o ◮ Seja A uma matriz de ordem k e escrita na forma A = [ Ak−1 r s akk ] ◮ Pela hipo´tese de induc¸a˜o Ak−1 = Lk−1Uk−1 ◮ Fazendo LU = [ Lk−1 0 m 1 ] [ Uk−1 p 0 ukk ] = [ Lk−1Uk−1 Lk−1p mUk−1 mp+ ukk ] Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Demonstrac¸a˜o ◮ Ao igualar A com LU, obte´m-se A = [ Ak−1 r s akk ] = [ Lk−1Uk−1 Lk−1p mUk−1 mp+ ukk ] ◮ Assim, Ak−1 = Lk−1Uk−1 r = Lk−1p s = mUk−1 akk = mp+ ukk Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Demonstrac¸a˜o ◮ Sendo Lk−1 e Uk−1 ◮ unicamente determinadas (pela hipo´tese de induc¸a˜o) ◮ na˜o singulares (Ak−1 e´ na˜o singular) enta˜o r = Lk−1p ⇒ p = L −1 k−1r s = mUk−1 ⇒ m = sU −1 k−1 akk = mp+ ukk ⇒ ukk = akk −mp Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Demonstrac¸a˜o ◮ Assim, p, m e ukk podem ser unicamente determinados e, consequentemente, L e U sa˜o unicamente determinados ◮ Ale´m disso, det(A) = det(LU) = det(L) det(U) = 1 det(U) = u11u22 . . . unn Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Obtenc¸a˜o das Matrizes L e U ◮ As matrizes L e U podem ser obtidas pela definic¸a˜o de produto e igualdade de matrizes a11 a12 a13 . . . a1n a21 a22 a23 . . . a2n a31 a32 a33 . . . a3n ... ... ... . . . ... an1 an2 an3 . . . ann = 1 0 0 . . . 0 l21 1 0 . . . 0 l31 l32 1 . . . 0 ... ... ... . . . ... ln1 ln2 ln3 . . . 1 u11 u12 u13 . . . u1n 0 u22 u23 . . . u2n 0 0 u33 . . . u3n ... ... ... . . . ... 0 0 0 . . . unn ◮ As matrizes podem enta˜o ser obtidas na ordem: ◮ 1a linha de U ◮ 1a coluna de L ◮ 2a linha de U ◮ 2a coluna de L ◮ ... Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Obtenc¸a˜o das Matrizes L e U ◮ 1a linha de U a11 = 1u11 ⇒ u11 = a11 a12 = 1u12 ⇒ u12 = a12 ... a1n = 1u1n ⇒ u1n = a1n ◮ 1a coluna de L a21 = l21u11 ⇒ l21 = a21 u11 a31 = l31u11 ⇒ l31 = a31 u11 ... an1 = ln1u11 ⇒ ln1 = an1 u11 Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Obtenc¸a˜o das Matrizes L e U ◮ 2a linha de U a22 = l21u12 + 1u22 ⇒ u22 = a22 − l21u12 a23 = l21u13 + 1u23 ⇒ u23 = a23 − l21u13 ... a2n = l21u1n + 1u2n ⇒ u2n = a2n − l21u1n ◮ 2a coluna de L a32 = l31u12 + l32u22 ⇒ l32 = a32 − l31u12 u22 a42 = l41u12 + l42u22 ⇒ l42 = a42 − l41u12 u22 ... an2 = ln1u12 + ln2u22 ⇒ ln2 = an2 − ln1u12 u22 Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜oLU – Obtenc¸a˜o das Matrizes L e U ◮ De forma geral, tem-se que uij = aij − i−1∑ k=1 likukj ; i ≤ j lij = aij − j−1∑ k=1 likukj ujj ; i > j Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU Entrada: Matriz A, n 1 inicio 2 para i = 1, . . . , n fac¸a 3 para j = i, . . . , n fac¸a 4 uij ←− aij − i−1∑ k=1 likukj ; 5 para j = i+ 1, . . . , n fac¸a 6 lij ←− aij− j−1∑ k=1 likukj ujj ; Algoritmo 2: Decomposic¸a˜o LU - Complexidade O(n3) ◮ Na pra´tica, L e U podem ser armazenadas sobre a matriz A Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Via Eliminac¸a˜o de Gauss ◮ A Eliminac¸a˜o de Gauss pode ser utilizada para decompor A nas matrizes L e U ◮ Seja M1 = 1 0 0 . . . 0 −m21 1 0 . . . 0 −m31 0 1 . . . 0 ... ... ... . . . ... −mn1 0 0 . . . 1 onde mij os multiplicadores gerados durante a eliminac¸a˜o de Gauss ◮ O primeiro passo da Eliminac¸a˜o de Gauss e´ equivalente a multiplicar (A|b)(0) por M1 ◮ Obte´m-se assim (A|b)(1) Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Via Eliminac¸a˜o de Gauss ◮ Ou seja M1 (A|b) (0) = 1 0 0 . . . 0 −m21 1 0 . . . 0 −m31 0 1 . . . 0 ... ... ... . . . ... −mn1 0 0 . . . 1 a11 a12 a13 . . . a1n b1 a21 a22 a23 . . . a2n b2 a31 a32 a33 . . . a3n b3 ... ... ... . . . ... ... an1 an2 an3 . . . ann bn = a (0) 11 a (0) 12 a (0) 13 . . . a (0) 1n b (0) 1 0 a (1) 22 a (1) 23 . . . a (1) 2n b (1) 2 0 a (1) 32 a (1) 33 . . . a (1) 3n b (1) 3 ... ... ... . . . . . . ... 0 a (1) n2 a (1) n3 . . . a (1) nn b (1) n = (A|b)(1) Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Via Eliminac¸a˜o de Gauss ◮ No passo seguinte, tem-se que M2 (A|b) (1) = 1 0 0 . . . 0 0 1 0 . . . 0 0 −m32 1 . . . 0 ... ... ... . . . ... 0 −mn2 0 . . . 1 a (0) 11 a (0) 12 a (0) 13 . . . a (0) 1n b (0) 1 0 a (1) 22 a (1) 23 . . . a (1) 2n b (1) 2 0 a (1) 32 a (1) 33 . . . a (1) 3n b (1) 3 ... ... ... . . . . . . ... 0 a (1) n2 a (1) n3 . . . a (1) nn b (1) n = a (0) 11 a (0) 12 a (0) 13 . . . a (0) 1n b (0) 1 0 a (1) 22 a (1) 23 . . . a (1) 2n b (1) 2 0 0 a (2) 33 . . . a (2) 3n b (2) 3 ... ... ... . . . . . . ... 0 0 a (2) n3 . . . a (2) nn b (2) n = (A|b)(2) Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Via Eliminac¸a˜o de Gauss ◮ Ao fim do processo obte´m-se (A|b)(n−1), de modo que (A|b)(n−1) = Mn−1 (A|b) (n−2) = · · · = Mn−1Mn−2 . . .M2M1︸ ︷︷ ︸ M (A|b)(0) ◮ Portanto, tem-se que MA = (A)(n−1) = U onde U e´ a matriz triangular superior da decomposic¸a˜o LU ◮ Sendo M e´ um produto de matrizes na˜o singulares, enta˜o M e´ na˜o singular ◮ Logo, M e´ invers´ıvel Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Via Eliminac¸a˜o de Gauss ◮ Assim, MA = U⇒ A = M−1︸ ︷︷ ︸ L U onde M−1 = L = 1 0 0 . . . 0 m21 1 0 . . . 0 m31 m32 1 . . . 0 ... ... ... . . . ... mn1 mn2 mn3 . . . 1 ◮ Logo, as matrizes L e U podem ser obtidas aplicando a Eliminac¸a˜o de Gauss sobre a matriz A ◮ U e´ a matriz triangular superior resultante ◮ L e´ a matriz triangular inferior formada pelos multiplicadores mij e com diagonal principal unita´ria Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU ◮ Nota-se que ◮ A decomposic¸a˜o e´ realizada com complexidade O(n3) ◮ Os sistemas lineares com matrizes de coeficientes triangulares podem ser resolvidos com complexidade O(n2) ◮ A vantagem da Decomposic¸a˜o LU e´ que a matriz A somente precisa ser decomposta uma vez para resolver diversos sistemas na forma Ax = b1 Ax = b2 ... Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Exemplo ◮ Exemplo 4 Decomponha a matriz de coeficientes que segue em matrizes L e U usando a Eliminac¸a˜o de Gauss. A = 2 1 1 0 4 3 3 1 8 7 9 5 6 7 9 8 ◮ Soluc¸a˜o: L = 1 0 0 0 2 1 0 0 4 3 1 0 3 4 1 1 e U = 2 1 1 0 0 1 1 1 0 0 2 2 0 0 0 2 Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Exemplo ◮ Exemplo 5 Resolva o sistema linear que segue utilizando a Decomposic¸a˜o LU e calcule o determinante da matriz de coeficientes utilizando a decomposic¸a˜o. 1 2 −12 3 −2 1 −2 1 x1x2 x3 = 23 0 ◮ Soluc¸a˜o: L = 1 0 02 1 0 1 4 1 , U = 1 2 −10 −1 0 0 0 2 , x = 11 1 e det(A) = u11u22u33 = −2 Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Exemplo em Python 1 from pylab import * 2 3 def lu(A): 4 n = A.shape[ 0 ] 5 for k in range(0,n-1): 6 for i in range(k+1,n): 7 if A[i,k] != 0.0: 8 m = A[i,k]/A[k,k] 9 A[i,k] = m 10 for j in range(k+1,n): 11 A[i,j] = A[i, j] - m * A[k,j] 12 return x Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Exemplo em Python – cont. 1 def substituicoesSucessivasDiagonalUnitaria(A, b): 2 n = len(b) 3 x = zeros(n) 4 for i in range(n): 5 soma = 0 6 for j in range(i): 7 soma += A[i,j] * x[j] 8 x[i] = b[i] - soma 9 return np.matrix(x).transpose() Heder S. Bernardino Ca´lculo Nume´rico Decomposic¸a˜o LU Decomposic¸a˜o LU – Exemplo em Python – cont. 1 #inicializa a matriz A 2 A = np.matrix([[ 1, 2, -1 ], 3 [ 2, 3, -2 ], 4 [ 1, -2, 1 ]]) 5 6 # inicializa o vetor b 7 b = np.matrix( [ [2.0], [3.0], [0.0] ] ) 8 9 #Decomposicao LU 10 lu( A ) 11 12 #Resolve o sistema Ly=b 13 y = substituicoesSucessivasDiagonalUnitaria( A, b ) 14 15 #Resolve o sistema Ux=y 16 x = substituicoesRetroativas( A, y ) 17 18 print( x ) Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Revisa˜o Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Revisa˜o ◮ Eliminac¸a˜o de Gauss ◮ Transforma o sistema linear num sistema equivalente com matriz de coeficientes triangular superior ◮ Resolve o sistema equivalente utilizando substituic¸o˜es retroativas ◮ Eliminac¸a˜o de Gauss com estrate´gias de pivotamento ◮ Evita que o pivoˆ seja nulo e evita efeitos nume´ricos Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Revisa˜o ◮ Decomposic¸a˜o LU ◮ A matriz de coeficientes e´ decomposta em L e U ◮ L e´ uma matriz triangular inferior com elementos da diagonal principal unita´rios ◮ U e´ uma matriz triangular superior ◮ Substituindo A por LU enta˜o a soluc¸a˜o pode ser obtida resolvendo dois sistemas triangulares ◮ Ly = b ◮ Ux = y ◮ A decomposic¸a˜o na˜o envolve o vetor b Heder S. Bernardino Ca´lculo Nume´rico Revisa˜o Du´vidas? Heder S. Bernardino Ca´lculo Nume´rico Aula Anterior Eliminação de Gauss Estratégias de Pivotamento Decomposição LU Revisão
Compartilhar