Métodos de decomposição LU A decomposição LU é das técnicas mais usadas para resolver sistemas de equações algébricas. Vamos abordar dois tipos de decomposição LU: por eliminação de Gauss e pelo método de Crout. 1. Eliminação de Gauss e decomposição LU A eliminação de Gauss pode ser usada para decompor uma matriz dos coeficientes [A], em duas matrizes [L] e [U], onde [U] é uma matriz triangular superior (todos os elementos abaixo da diagonal principal são nulos), e [L] é uma matriz triangular inferior. Seja [A] uma matriz quadrada, por exemplo 3x3, a11 A = a 21 a 31 a12 a 22 a 32 a13 a 23 a 33 Através de passos de eliminação, podemos reduzir a matriz original dos coeficientes, [A], numa matriz [U] a11 A = a 21 a 31 a12 a 22 a 32 a13 a 23 a 33 a11 ⇔ U = 0 0 a12 a' 22 0 a13 a´23 a' 33 O 1º passo na eliminação de Gauss é multiplicar a 1ª linha da matriz [A] pelo factor f21= a 21 e subtrair este resultado à 2ª linha de [A], eliminando a 21 . Igualmente, a11 multiplica-se a 1ª linha pelo factor f 31= a 31 , e subtrai-se este resultado à 3ª linha de a11 modo a eliminar a31 . O passo final (note-se que é uma matriz 3x3) consiste em multiplicar a 2ª linha pelo factor f 32= a ' 32 , e subtrair à 3ª linha eliminando a' 32 . a' 22 A matriz [L]é uma matriz triangular inferior, cujos os elementos da diagonal principal são 1’s e os restantes elementos são os factores f21, f31, f32 1 L = f 21 f 31 0 1 f 32 0 0 1 Multiplicando as matrizes [L] e [U], obtemos a matriz original [A]. A eliminação de Gauss representa uma decomposição LU de [A]. O exemplo seguinte mostra uma aplicação deste método. Considerando um sistema de três equações: 2x + y + 4z = 2 6 x + y = −10 − x + 2 y − 10 z = −4 Este sistema pode ser representado matricialmente por Ax = b, ou seja 4 2 1 6 1 0 − 1 2 − 10 x 2 y = − 10 z − 4 Aplicando os passos de eliminação, que consistem em subtrair a certas linhas múltiplos de outras linhas, obteve-se um sistema Ux = d 4 2 1 0 − 2 − 12 0 0 − 23 x 2 y = − 16 z − 23 O 1º passo da eliminação consistiu em subtrair à 2ª linha a 1ª multiplicada por 3. No 2º passo multiplicou-se a 1ª linha por –1/2 e subtraiu-se à 3ª linha. O último passo (neste caso por ser uma matriz 3x3), consistiu em subtrair à 3ª linha a 2ª multiplicada por –5/4. A matriz [L] será: 0 0 1 1 0 L= 3 − 1 / 2 − 5 / 4 1 Note-se que os elementos por baixo da diagonal principal são exactamente os multiplicadores 3,-1/2, -5/4, utilizados nos passos do processo de eliminação, e verificase a seguinte igualdade: [L]{ Ux – d } = Ax – b, de onde se conclui que: 4 4 0 0 2 1 1 2 1 LU = A ⇔ 3 0 1 0 0 − 2 − 12 = 6 1 − 1 2 − 10 − 1 / 2 − 5 / 4 1 0 0 − 23 e que 0 0 2 1 2 Ld = b ⇔ 3 1 0 − 16 = − 10 − 1 / 2 − 5 / 4 1 − 23 − 4 2. Método de decomposição de Crout Esta decomposição é um algoritmo eficiente para decompor a matriz [A] nas matrizes [L] e [U]. Seja [U] uma matriz 4x4, triangular superior com 1’s na diagonal principal: 1 u12 u13 u14 0 1 u u24 23 U= 0 0 1 u34 0 1 0 0 e [L] uma matriz triangular inferior l11 0 l l L = 21 22 l31 l32 l41 l42 0 0 l33 l43 0 0 0 l44 Poderemos então escrever LU = A, l11 l 21 l 31 l 41 0 l 22 l 32 l 42 0 0 l 33 l 43 l 44 0 0 0 1 u12 0 1 0 0 0 0 u13 u 23 1 0 u14 a11 a u24 = 21 a 31 u34 1 a 41 a12 a 22 a 32 a 42 a13 a 23 a 33 a 43 a14 a 24 a 34 a 44 O método de Crout derivado através da multiplicação de matrizes do lado esquerdo ( L e U ) e depois equacionando os resultados para o lado direito. Recorrendo às regras de multiplicação de matrizes, e para matrizes 4x4 temos os seguintes passos: 1º passo - Multiplicar as linhas de [L] pela 1ª coluna de [U]. l11 = a11 , l 21 = a 21 , l 31 = a31 , l41 = a 41 Como se pode observar a 1ª coluna de [L] é a 1ª coluna de [A]. Generalizando este resultado temos : li1 = ai1 , para i = 1,2,...,n 2º passo – A seguir a 1ª linha de [L] pode ser multiplicada pelas colunas de [U]. l11 = a11 , l11u12 = a12 , l11u13 = a13 , l11u14 = a14 O primeiro resultado ( l11 = a11 ) já foi estabelecido anteriormente. As restantes relações podem ser generalizadas por: a u1 j = 1 j , para j = 2,3, ... ,n l11 3º passo – Da 2ª à 4ª linha da matriz [L], vamos multiplicá-las pela 2ª coluna de [U]. l21u12 + l22 = a22 , l31u12 + l32 = a32 , l41u12 + l42 = a42 Resolvendo estas equações em ordem a l22 , l32 , l42 e generalizando temos: l i 2 = a i 2 − l i1u12 , para i = 2,3, ... ,n 4º passo – A seguir, os coeficientes da 2ª linha de [U] podem ser calculados multiplicando a 2ª linha de [L] pela 3ª e 4ª coluna de [U]. l21u13 + l22 u23 = a23 , l 21 u14 + l 22 u 24 = a 24 Para o caso geral temos, a −l u u2 j = 2 j 21 1 j , para j =3,3, ... ,n l22 Repetindo o processo podemos calcular os outros elementos das matrizes. li 3 = ai 3 − li1u13 − li 2u 23 u3 j = , para i = 3,4, ... , n a3 j − l31u1 j − l32 u2 j , para j = 4,5, ..., n l33 li 4 = ai 4 − li1u14 − li 2u24 − li 3u34 , para i = 4,5, ... , n Inspeccionando as equações referentes aos termos gerais, refira-se as seguintes fórmulas concisas para a implementação do método: (1). li1 = ai1 , para i = 1,2, ... ,n a (2). u1 j = 1 j , para j = 2,3, ... , n l11 Para j = 2,3, ... ,n-1 (3). lij = aij − j −1 ∑l k =1 ik ukj , para i = j, ... , n j −1 (4). u jk = a jk − ∑l ji uik i =1 l jj , para k = j+1, j+2, ... , n n−1 (5). lnn = ann − ∑ lnkukn k =1 Observe-se o exemplo seguinte para melhor compreensão deste método. 2 x − 5 y + z = 12 − x + 3 y − z = −8 3 x − 4 y + 2 z = 16 De acordo com (1), a 1ª coluna de [L] é idêntica à 1ª coluna de [A]. l 11 = 2 ; l 21 = -1 ; l 31 = 3 A equação (2) pode ser usada para calcular a 1ª coluna de [U]. u12 = a13 a12 = -5/2 ; u13 = = 1/2 l11 l11 Usando a equação (3), podemos calcular: l 22 = a22 − l 21u12 = 1/2 ; l 32 = a 32 − l 31u12 = 7/2 Usando a equação (4), podemos calcular o último elemento da matriz [U]. a −l u u 23 = 23 21 13 = -1 l 22 Pela equação (5), vamos calcular o último elemento de [L]. l 33 = a 33 − l 31 u13 − l 32 u 23 = 4 0 0 2 então pode-se escrever L = − 1 1 / 2 0 e U = 3 7 / 2 4 1 − 5 / 2 1 / 2 0 1 − 1 . 0 0 1 Facilmente se verifica que o produto entre estas duas matrizes é igual á matriz [A]. Cadeira: Fisica Aplicada à Computação – 2000/2001 – 4º Ano - 2º Semestre Autor: Manuel Eduardo Clemente Silva