Métodos Numéricos Renato Martins Assunção DCC - UFMG 9 de agosto de 2016 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 1 / 99
Sistema diagonal Solução de sistema diagonal O sistema definido por é equivalente a A = A solução é muito simples 1 0 0 0 3 0 0 0 5 b = 1x 1 = 1 3x 2 = 6 5x 3 = 15 1 6 15 x 1 = 1 1 = 1 x 2 = 6 3 = 2 x 3 = 15 = 3 5 Note que precisamos ter todos os elementos da diagonal 0. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 2 / 99
Sistema diagonal Algoritmo para sistema diagonal Listagem 1: Solução de sistema diagonal dado A, b for i = 1,..., n x i = b i /a ii end Devemos ter a ii 0 para todo i para fazer a divisão. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 3 / 99
Sistema triangular Matrizes triangulares Dois exemplos de matrizes triangulares 4 4: L = 3 0 0 0 1 1 0 0 0 1 2 0 1 0 7 1 e U = 2 1 0 2 0 2 4 3 0 0 1 1 0 0 0 0 Triangular inferior: somente os elementos abaixo da diagonal principal podem ser 0. Triangular superior: somente aqueles acima podem ser 0. PODEM SER 0: não é obrigatório que sejam todos 0. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 4 / 99
Sistema triangular Matrizes triangulares As matrizes triangulares inferior e superior (genéricas) são l 11 0... 0 u 11 u 12... u 1n l 21 l 22... 0 0 u 22... u 2n L =..... e U =....... l n1 l n2... l nn 0 0... u nn com l ii 0 e u ii 0 para todo i. L: Lower U: Upper Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 5 / 99
Sistema triangular Matrizes triangulares Sistemas triangulares também são resolvidos facilmente: O sistema triangular inferior Ly = b e o sistema triangular superior são facilmente resolvidos por: Ux = c substituição sucessiva (forward) (sistema inferior) substituição reversa (retroativa ou backward) (sistema superior) IMPORTANTE: Nós não precisamos inverter as matrizes L e U. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 6 / 99
Sistema triangular Solução de sistemas triangulares A = é equivalente a 2 1 2 0 3 2 0 0 4 b = 9 1 8 Ax = b ou 2x 1 + x 2 + 2x 3 = 9 3x 2 + 2x 3 = 1 4x 3 = 8 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 7 / 99
Sistema triangular Solução de sistemas triangulares 2x 1 + x 2 + 2x 3 = 9 3x 2 + 2x 3 = 1 4x 3 = 8 ou 2 1 2 0 3 2 0 0 4 x 1 x 2 x 3 = 9 1 8 Resolva em ordem reversa, a última equação sendo resolvida primeiro: x 3 = 8 4 = 2 x 2 = 1 3 ( 1 + 2x 3) = 1 3 ( 1 + 2 2) = 3 3 = 1 x 1 = 1 2 (9 x 2 2x 3 ) = 1 4 (9 1 2 2) = 2 2 = 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 8 / 99
Sistema triangular Solução de sistemas triangulares Resolver um sistema triangular superior para obter x 1, x 2,..., x n : substituição reversa, retroativa ou backward. Listagem 2: substituição reversa dado A ( superior), b x n = b n /a nn for i = n 1,..., 1 s = b i for j = i + 1,..., n s = s a ij x j end x i = s/a ii end Note que precisamos ter a ii 0 para fazermos a divisão. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 9 / 99
Scilab: Sistema triangular for i = (n-1):-1:1 s = b(i); for j = (i+1):n s = s - U(i,j)*x(j); end x(i) = s/u(i,i); end Renato endfunction Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 10 / 99 Backward Substitution no Scilab Melhor trocar para o Scilab function x = TriSup(U,b) // Sistema triangular superior: Substituicao retroativa // Input: Matriz triangular superior U, e vetor b // Output x = solucao de U*x = b. n = length(b); x = zeros(n,1); x(n) = b(n)/u(n,n);
Scilab: Sistema triangular Usando a função subsretro A = [5 5 6; 0 4 3; 0 0 1]; b = [5; 3; 1]; // note: vetor coluna sol = TriSup(A,b) sol = - 0.2 0. 1. E se entrarmos com matriz A que tenha um zero na diagonal? Ou com matriz A que não seja quadrada? Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 11 / 99
Scilab: Sistema triangular Usando a função subsretro A = [5 5 6; 0 0 3; 0 0 1]; // Diagonal com elemento nulo b = [5; 3; 1]; sol = TriSup(A,b);!--error 27 Divis~A o por zero... at line 10 of function TriSup called by : sol = TriSup(A,b); Vamos modificar a função para verificar este possível erro na entrada. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 12 / 99
Scilab: Sistema triangular Acrescentando checks e mensagens de erro function x = TriSup(U,b)... n = length(b); [m,p] = size(u); if p ~= m, error("a matriz de entrada nao eh quadrada.") end if n ~= m, error("matriz e vetor tem dimensoes incompativeis.") end if prod(diag(u))==0 error("diagonal da matriz tem elemento nulo.") end x = zeros(n,1); x(n) = b(n)/u(n,n); for i = (n-1):-1:1 (etc) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 13 / 99
Scilab: Sistema triangular Acrescentando checks e mensagens de erro -->A=[5 5 6; 0 0 3; 0 0 1]; b=[5; 3; 1; 4]; sol=trisup(a,b);!--error 10000 Matriz e vetor tem dimensoes incompativeis. at line 12 of function TriSup called by : sol = TriSup(A,b); -->A=[5 5 6; 0 4 3; 0 0 1]; b=[5; 3; 1; 4]; sol=trisup(a,b);!--error 10000 Matriz e vetor tem dimensoes incompativeis. at line 12 of function TriSup called by : sol = TriSup(A,b); -->A=[5 5 6; 0 4 3; 0 0 1; 3 2 1]; b=[5; 3; 4]; sol=trisup(a,b);!--error 10000 A matriz de entrada nao eh quadrada. at line 9 of function TriSup called by : sol = TriSup(A,b); Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 14 / 99
Scilab: Sistema triangular Vetorizando em Scilab Algoritmo e sua implementação: explorando particularidades da linguagem Scilab O laço (loop) for j = (i+1):n vai embora e j vira um vetor!...(omitindo cabecalho e mensagens de erro) n = length(b); x = zeros(n,1); x(n) = b(n)/u(n,n); for k = (n-1):-1:1 j = k+1:n; // indice j eh um VETOR de indices x(k) = (b(k) - U(k,j)*x(j))/U(k,k); end endfunction Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 15 / 99
Scilab: Sistema triangular Vetorizando em Scilab Mesmo a instrução x(n) = b(n)/u(n,n); pode ser omitida. Fazemos k começar em n. Quando k=n, temos j = [], um objeto vazio, de efeito nulo e assim U(n,j)*x(j) não acrescenta nada no numerador de x(k) quando k=n....(omitindo cabecalho e mensagens de erro) x = zeros(n,1); for k = n:-1:1 j = k+1:n; x(k) = (b(k) - U(k,j)*x(j))/U(k,k); end endfunction Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 16 / 99
FLOPS em sistema triangular Número de operações para resolver um sistema triangular floating point operation = adição, subtração, multiplicação ou divisão. FLOP Considere um sistema com n equações e n incógnitas. Quanto tempo (FLOPS) toma? O tempo exato depende da máquina. O que nos interessa é comparar diferentes algoritmos na mesma máquina: só nos interessam as diferenças relativas, que serão as mesmas em todas as máquinas. Triangular superior ou inferior: n 2 FLOPS Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 17 / 99
FLOPS em sistema triangular Soma dos primeiros ímpares Do livro Proofs Without Words, de Roger Nelsen Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 18 / 99
FLOPS em sistema triangular De novo, soma dos primeiros ímpares Do livro Proofs Without Words, de Roger Nelsen Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 19 / 99
FLOPS em sistema triangular Número de operações para resolver um sistema triangular superior Comece no canto inferior: 1 div (ou floating point operation = FLOP) linha -2: 1 mult, 1 adi, 1 div, ou 3 FLOPS = (2 2 1) linha -3: 2 mult, 2 adi, 1 div, ou 5 FLOPS = (2 3 1) linha -4: 3 mult, 3 adi, 1 div, ou 7 FLOPS = (2 4 1). linha -n: 2n 1 FLOPS Total de FLOPS: soma dos primeiros ímpares: 1 + 3 +... + (2n 1) n j=1 (2j 1) = 2 n j=1 j n j=1 1 = 2 n(n+1) 2 n = n 2. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 20 / 99
FLOPS em sistema triangular FLOPS para resolver um sistema triangular com n equaçôes Sistema triangular superior ou inferior com n equaçôes: precisamos de n 2 FLOPS. Suponha que uma máquina toma x segundos para resolver um sistema triangular com n equações. O que acontece se o sistema dobrar de tamanho passando a ter 2n equações. Ele vai tomar (2n) 2 FLOPS, o que significa 2 2 = 4 vezes mais que o sistema com n. Se o sistema tiver 10n equações ele vai demorar 10 2 n 2 FLOPS, ou 10 2 = 100 vezes mais. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 21 / 99
Eliminação gaussiana E quando A não for triangular? Eliminação gaussiana (ou método de escalonamento) O objetivo é transformar um sistema quadrado arbitrário em um sistema triangular superior equivalente, de modo que possa ser facilmente resolvido com substituição reversa. A solução formal para Ax = b, em que A é uma matriz n n é x = A 1 b Nós NÃO VAMOS calcular diretamente a matriz inversa A 1. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 22 / 99
Eliminação gaussiana Solucionar x 1 + 3x 2 = 5 2x 1 + 4x 2 = 6 Vamos subtrair 2 vezes a primeira equação da segunda equação x 1 + 3x 2 = 5 2x 2 = 4 Este novo sistema é equivalente ao primeiro. Isto é, os dois sistemas possuem as mesmas soluções. O segundo está na forma triangular superior, e pode ser resolvido por substituição reversa. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 23 / 99
Eliminação gaussiana Ao realizar a eliminação gaussiana à mão, podemos evitar copiar o x i usando uma notação abreviada. Por exemplo, para resolver: 3 2 1 1 A = 6 6 7 b = 7 3 4 4 6 Forme o sistema aumentado à = [A b] = 3 2 1 1 6 6 7 7 3 4 4 6 A barra vertical dentro da matriz aumentada é apenas um lembrete de que a última coluna é o vetor b. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 24 / 99
Eliminação gaussiana Some 2 vezes a linha 1 à linha 2, e some (1 vez) a linha 1 à linha 3 Ã (1) = Subtraia (1 vez) a linha 2 da linha 3 Ã (2) = 3 2 1 1 0 2 5 9 0 2 3 7 3 2 1 1 0 2 5 9 0 0 2 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 25 / 99
Eliminação gaussiana O sistema transformado está agora na forma triangular superior 3 2 1 1 Ã (2) = 0 2 5 9 0 0 2 2 Solucione por substituição reversa para obter x 3 = 2 2 = 1 x 2 = 1 2 ( 9 5x 3) = 2 x 1 = 1 3 ( 1 2x 2 + x 3 ) = 2 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 26 / 99
Eliminação gaussiana Resumo: Eliminação gaussiana Usamos eliminação gaussiana quando a matriz A do sistema A não for triangular. Resolver um sistema via eliminação gaussiana implica em dar DOIS passos. Primeiro: Elimine elementos para reduzir à forma triangular superior. Segundo: Resolva o sistema triangular superior (que precisa de n 2 flops). Vamos rever estes dois passos de forma genérica. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 27 / 99
Eliminação gaussiana Comece com a matriz aumentada [A b]: x x x x x x x x x x x x x x x x x x x x Os x s representam números, e não são necessariamente os mesmos valores. Comece a eliminação usando a primeira linha como a linha pivô e o primeiro elemento da primeira linha como o elemento pivô: x x x x x x x x x x x x x x x x x x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 28 / 99
Eliminação gaussiana Elimine elementos abaixo do elemento pivô na primeira coluna. x indica um valor que foi alterado uma vez. x x x x x x x x x x x x x x x x x x x x = = = x x x x x 0 x x x x x x x x x x x x x x x x x x x 0 x x x x 0 x x x x x x x x x x x x x x 0 x x x x 0 x x x x 0 x x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 29 / 99
Eliminação gaussiana O elemento pivô é agora o elemento da diagonal na segunda linha. Elimine elementos abaixo do elemento pivô na segunda coluna. x indica um valor que foi alterado duas vezes. x x x x x 0 x x x x 0 x x x x 0 x x x x = = x x x x x 0 x x x x 0 0 x x x 0 x x x x x x x x x 0 x x x x 0 0 x x x 0 0 x x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 30 / 99
Eliminação gaussiana O elemento pivô é agora o elemento da diagonal na terceira linha. Elimine elementos abaixo do elemento pivôna terceira coluna. x indica um valor que foi alterado três vezes. x x x x x 0 x x x x 0 0 x x x 0 0 x x x = x x x x x 0 x x x x 0 0 x x x 0 0 0 x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 31 / 99
Eliminação gaussiana Resumo Eliminação gaussiana é um processo ordenado para transformar uma matriz aumentada em uma forma triangular superior equivalente. A operação de eliminação no k-ésimo passo é ã ij = ã ij (ã ik /ã kk )ã kj, i > k, j k Eliminação requer três loops aninhados. O resultado da fase de eliminação é representada pela imagem a seguir. x x x x x x x x x x x x x x x x x x x x = x x x x x 0 x x x x 0 0 x x x 0 0 0 x x Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 32 / 99
Eliminação gaussiana Listagem 3: eliminação sucessiva (forward) input A, b for k = 1,..., n 1 for i = k + 1,..., n for j = k + 1,..., n a ij = a ij (a ik /a kk )a kj end b i = b i (a ik /a kk )b k a ik = 0 end end Não há necessidade de realmente calcular zeros: a ik = 0 sempre. Esta é uma das razões para tomarmos j = k + 1,..., n. O termo (a ik /a kk ) é chamado de multiplicador. Ele pode ficar fora do loop-j, evitando recalculá-lo a cada iteração do loop-j. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 33 / 99
Eliminação gaussiana Listagem 4: eliminação sucessiva (forward) dado A, b for k = 1,..., n 1 for i = k + 1,..., n xmult = a ik /a kk for j = k + 1,..., n a ij = a ij (xmult)a kj end b i = b i (xmult)b k a ik = 0 end end Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 34 / 99
Eliminação gaussiana em Scilab Implementando em Scilab Melhor trocar para o Scilab function x = ElimGauss(A,b)... (cabecalho e mensagens de erro)... Aum = [A,b]; // matriz aumentada for j = 1:n-1 for i = j+1:n xmult = Aum(i,j)/Aum(j,j); // pivo eh A(j,j) Aum(i,j:n+1) = Aum(i,j:n+1)-xmult*Aum(j,j:n+1); // alteramos toda a linha i de Aum end end x = TriSup(Aum(:,1:n), Aum(:,n+1)) endfunction Basta usar sol = ElimGauss(A,b) Usamos apenas DOIS laços for acima; no algoritmo, temos 3 laços. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 35 / 99
FLOPS em eliminação gaussiana FLOPS para resolver um sistema via EG Considere o sistema Ax = b onde A tem dimensão n n. Para zerar o termo na posição (2, 1) de A: calcule o multiplicador xmult: 1 FLOP multiplique cada um dos n 1 termos da primeira linha de A por xmult e subtraia da segunda linha: 2 (n 1) FLOPS multiplique b 1 por xmult e subtraia de b 2. Total: 1 + 2(n 1) + 2 = 2n + 1 Para zerar o termo na posição (3, 1) de A: também 2n + 1 FLOPS O mesmo em todas as demais linhas. Assim, para zerar os termos da primeira coluna na EG: (2n + 1)(n 1) FLOPS. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 36 / 99
FLOPS em eliminação gaussiana FLOPS para zerar a segunda coluna em EG Zeramos os termos da 1a. coluna na EG com (2n + 1)(n 1) FLOPS. Para zerar os n 2 termos da 2a coluna precisamos de (2n 1)(n 2) FLOPS Para zerar os n 3 termos da 3a coluna precisamos de (2n 3)(n 3) FLOPS Etc. até a penúltima quando vamos precisar de (2 2 + 1)(1) FLOPS Total: n 1 (n i)(2n + 1 2(i 1)) = 2 3 n3 + 1 2 n2 7 6 n i=1 onde usamos que n i=1 i 2 = 1 n(n + 1)(2n + 1) 6 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 37 / 99
FLOPS em eliminação gaussiana FLOPS para resolver sistema via EG Para reduzir o sistema a um sistema triangular via EG: 2 3 n3 + 1 2 n2 7 6 n Para resolver o sistema triangular resultante: mais n 2 FLOPS TOTAL: 2 3 n3 + 3 2 n2 7 6 n Se n é grande o primeiro termo é o dominante: 2n 3 /3 = O(n 3 ). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 38 / 99
FLOPS em eliminação gaussiana RESUMO: FLOPS para resolver sistema via EG Considere um sistema com n equações e n incógnitas. Quanto tempo (FLOPS) toma? Triangular superior ou inferior: n 2 FLOPS. Matriz genérica: da ordem de n 3 FLOPS. Se matriz dobrar de tamanho passando a ter 2n equações, número de FLOPS fica 2 3 = 8 vezes maior. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 39 / 99
Pivotação parcial Necessidade de pivotar Resolver: A = 2 4 2 2 1 2 4 3 3 3 8 2 1 1 6 3 b = 4 5 7 7 Não há nada errado com este sistema. A é de posto completo existe A 1 e portanto x = A 1 b. A solução existe e é única: x = [1; 2; 3; 4]. O problema é que, no algoritmo de eliminação gaussiana, aparecem zeros nas posições dos pivôs e portanto não podemos usá-los como divisores. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 40 / 99
Pivotação parcial Necessidade de pivotar Forme o sistema aumentado. Ã = 2 4 2 2 4 1 2 4 3 5 3 3 8 2 7 1 1 6 3 7 Vamos proceder com a eliminação gaussiana e ver onde nos levará. Multiplicar 1/2 pela primeira linha e subtrair da segunda linha. Multiplicar 3/2 pela primeira linha e subtrair da terceira linha. Multiplicar 1/2 pela primeira linha e subtrair da quarta linha. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 41 / 99
Pivotação parcial Resultado de zerar a primeira coluna da matriz aumentada com o pivô a 11 2 4 2 2 4 Ã = 0 0 5 2 7 0 3 5 5 1 0 3 5 4 5 O próximo passo da eliminação gaussiana não irá funcionar porque há um zero na posição pivô, ã 22. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 42 / 99
Pivotação parcial Tentando eliminação gaussiana em Scilab Melhor trocar para o Scilab Vamos usar a função ElimGauss(A,b) -->A = [2, 4, -2, -2; 1, 2,4,-3;-3,-3,8,-2; -1,1,6,-3]; -->b = [-4; 5; 7; 7]; -->ElimGauss(A,b)!--error 27 Divisao por zero... at line 17 of function ElimGauss called by : ElimGauss(A,b) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 43 / 99
Pivotação parcial Vamos trocar a segunda e a quarta linhas da matriz aumentada. Isto não pode modificar a solução do sistema. Ã = 2 4 2 2 4 0 3 5 4 5 0 3 5 5 1 0 0 5 2 7 Continue com a eliminação: multiplicar a linha 2 por 1 e a seguir subtrair da linha 3. 2 4 2 2 4 Ã = 0 3 5 4 5 0 0 0 1 4 0 0 5 2 7 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 44 / 99
Pivotação parcial Outro zero apareceu na posição pivô. Troque as linhas 3 e 4. 2 4 2 2 4 Ã = 0 3 5 4 5 0 0 5 2 7 0 0 0 1 4 O sistema aumentado agora está pronto para substituição reversa. A solução do sistema reduzido pela eliminação gaussiana COM TROCA das linhas da matriz AUMENTADA é a mesma solução do sistema original: x = [1; 2; 3; 4]. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 45 / 99
Pivotação parcial Tentando eliminação gaussiana em Scilab Melhor trocar para o Scilab Vamos usar a função ElimGauss(A,b) -->A = [2, 4, -2, -2; 1, 2,4,-3;-3,-3,8,-2; -1,1,6,-3]; -->b = [-4; 5; 7; 7]; -->ElimGauss(A,b)!--error 27 Divisao por zero... at line 17 of function ElimGauss called by : ElimGauss(A,b) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 46 / 99
Pivotação parcial No meio do processo de eliminação gaussiana, tivemos de trocar a 2 a. linha pela 4 a. e, a seguir, a 3 a. pela 4 a.. Isto é equivalente a trabalhar desde o início com a matriz aumentada ORI- GINAL com as linhas na seguinte ordem: 1, 4, 2, 3. Podemos usar uma matriz de permutação P para colocar as linhas de A na ordem desejada. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 47 / 99
Pivotação parcial Seja P a seguinte matriz de permutação P = 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 Se multiplicarmos à por P teremos o sistema aumentado com as linhas na ordem correta: PÃ. Este novo sistema aumentado está pronto para eliminação gaussiana usual, sem necessidade de trocar as linhas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 48 / 99
Pivotação parcial Operações elementares A eliminação gaussiana é um método sistemático de realizar operações elementares de linhas na matriz aumentada. O objetivo é terminar com uma matriz triangular superior. As operações elementares por linhas são as seguintes: (1) multiplicar uma linha por um escalar não nulo; (2) somar a i-ésima linha multiplicada por algum escalar r R a j-ésima linha; (3) intercambiar duas linhas. Observação. Linhas são somadas e multiplicadas por escalares como vetores (isto é, vetores linha). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 49 / 99
Pivotação parcial Operação elementar e matrizes Toda operação elementar por linha é idêntica a multiplicar pela esquerda por uma certa matriz. Por exemplo, para multiplicar os elementos de uma linha da matriz A por um escalar r = 2 e deixar todas as outras linhas idênticas, podemos fazer o seguinte: 1 0 0 0 2 0 0 0 1 a 1 a 2 a 3 b 1 b 2 b 3 c 1 c 2 c 3 = a 1 a 2 a 3 2b 1 2b 2 2b 3 c 1 c 2 c 3 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 50 / 99
Pivotação parcial Matrizes elementares Seja à uma matriz aumentada n (n + 1). Considere a matriz E n n dada por 1... O 1 E = r 1. O.. 1 linha #i O produto matricial Eà gera uma matriz idêntica a à exceto pela linha i. Os elementos da linha i da matriz Eà são iguais aos elementos correspondentes da linha i de à multiplicados por r. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 51 / 99
Pivotação parcial Matrizes elementares Para trocar duas linhas de lugar: 1 0 0 a 1 a 2 a 3 0 0 1 b 1 b 2 b 3 0 1 0 c 1 c 2 c 3 = Basta multiplicar por uma matriz de permutação P. a 1 a 2 a 3 c 1 c 2 c 3 b 1 b 2 b 3 Esta matriz de permutação é a matriz identidade com suas linhas permutadas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 52 / 99
Pivotação parcial Matrizes elementares Seja à a matriz aumentada n (n + 1) de um sistema linear. Seja P a matriz n n dada por 1 O... 0 1 P =..... 1 0... O 1 1 1 linha #i 1 linha #j 1 1 P é a matriz identidade com as linhas i e j permutadas. A matriz Pà é a matriz aumentada à com suas linhas i e j permutadas. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 53 / 99
Pivotação parcial Matrizes elementares Finalmente, a última operação elementar. Criar uma nova matriz onde a segunda linha de A é substituï 1 2 da pela segunda linha somada a 3 vezes a primeira linha: 1 0 0 a 1 a 2 a 3 a 1 a 2 a 3 3 1 0 b 1 b 2 b 3 = b 1 + 3a 1 b 2 + 3a 2 b 3 + 3a 3 0 0 1 c 1 c 2 c 3 c 1 c 2 c 3 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 54 / 99
Pivotação parcial Matrizes elementares Seja à a matriz aumentada n (n + 1) de um sistema linear. Seja E a matriz n n dada por 1.... O 0 1 E =..... 0 r 1...... 0 0 0 1 O produto Eà subsitui a linha L j de à por L j + rl i. 1 1 linha #i 1 linha #j 1 1 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 55 / 99
Pivotação parcial Produto de matrizes elementares A eliminação gaussiana pode ser vista como um processo de multiplicação da matriz aumentada por matrizes elementares. Seja à a matriz n (n + 1) aumentada de um sistema linear. A matriz escalonada final (a matriz triangular superior) é a matriz B obtida como B = E k E k 1... E 2 E 1 à Onde cada matriz E j é uma matriz elementar. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 56 / 99
Pivotação parcial Um exemplo Considere o sistema linear Ax = b onde 3 2 1 A = 6 6 7 b = 3 4 4 1 7 6 Forme o sistema aumentado à = [A b] = 3 2 1 1 6 6 7 7 3 4 4 6 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 57 / 99
Pivotação parcial Começando com a matriz aumentada 3 2 1 1 à = [A b] = 6 6 7 7 3 4 4 6 Some 2 vezes a linha 1 à linha 2, e some (1 vez) a linha 1 à linha 3 3 2 1 1 à (1) = 0 2 5 9 0 2 3 7 Isto pode ser obtido da seguinte maneira: Sejam 1 0 0 E 1 = 2 1 0 E 2 = 0 0 1 1 0 0 0 1 0 1 0 1 Se multiplicarmos à por E 1 e a seguir por E 2 teremos à (1). Verifique isto por você mesmo. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 58 / 99
Pivotação parcial Assim à (1) = 3 2 1 1 0 2 5 9 0 2 3 7 = E 2 E 1 à Queremos agora zerar o elemento 32 de à (1). Para isto, some ( 1 linha 2) à linha 3. Vamos representar isto como uma matriz elementar multiplicando à (1). Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 59 / 99
Pivotação parcial Multiplicando por teremos à (2) = à (1) = E 3 = 3 2 1 1 0 2 5 9 0 2 3 7 3 2 1 1 0 2 5 9 0 0 2 2 1 0 0 0 1 0 0 1 1 = E 3 à (1) = E 3 E 2 E 1 à Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 60 / 99
Pivotação parcial Se temos Ax = b, e efetuamos EG, acabamos com x x x x A = x x x x x x x x = x x x x x x x x 0 x x x 0 0 x x 0 0 0 x A eliminação gaussiana é obtida por meio da multiplicação de uma séquência de matrizes elementares: E k E k 1... E 1 Ax = E k E k 1... E 1 b MAx = Mb Ux = Mb MA é uma matriz triangular superior e denotada por U. M é a matriz eliminação, resultado da multiplicação das matrizes elementares: M = E k E k 1... E 1. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 61 / 99
Pivotação parcial O truque LU Vamos agora fazer algo bizarro. Vamos reverter a operação de eliminação gaussiana que deu tanto trabalho!! Transformamos o sistema Ax = b no sistema equivalente Ux = Mb onde M é a matriz resultante das operações elementares. Vamos agora reverter multiplicando os dois lados da equação matricial Ux = Mb por M 1. Com isto teremos M 1 Ux = M 1 Mb. Ou seja, temos M 1 Ux = b. Como todos estes sistemas são equivalentes, isto quer dizer que voltamos ao sistema original: Isto implica que A = M 1 U. M 1 Ux = b Ax = b Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 62 / 99
Pivotação parcial A fatoração LU Vamos pensar sobre o que fizemos. Começamos com o sistema Ax = b Após a eliminação gaussiana, terminamos com Ux = Mb. Invertemos M e com isto voltamos ao sistema original (Ax = b) mas agora escrito como M 1 Ux = b. Isto é, nós FATORAMOS A no produto de duas matrizes, M 1 e U. Isto é, escrevemos A = M 1 U. Parece muito trabalho para simplesmente voltar ao ponto de partida ligeiramente modificado. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 63 / 99
Pivotação parcial Para quê a fatoração LU? Existe uma razão muito importante e prática para fazer a decomposição LU. Quando quisermos resolver vários sistemas lineares com a mesma matriz A mas diferentes b s, a decomposição LU será muito mais eficiente que a elminação gaussiana simples. Mas, alto lá: quando alguém estaria interssado num problema desses? Simples: toda vez que quisermos achar a inversa A 1 teremos de resolver n sistemas lineares com a mesma matriz A e diferentes b s. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 64 / 99
Pivotação parcial O produto AB em colunas Suponha que A e B sejam matrizes com dimensões compatíveis. Seja AB = C. Podemos mostrar que a 1a coluna de C é o resultado de Ax onde x é a 1a coluna de B. Do mesmo modo, a 2a coluna de C é Ax onde x é a 2a coluna de B. Em geral, AB j = C j onde B j e C j são as colunas j de B e C. E daí? Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 65 / 99
Pivotação parcial Cálculo da inversa de A Por definição, A 1 é a matriz B tal qu AB = BA = I Podemos encontrar A 1 = B obtendo-a coluna por coluna. A primeira coluna de A 1 deve ser a (única) solução x de Ax = I 1 onde I 1 = (1, 0, 0,..., 0) t é a primeira coluna da matriz identidade I de dimensão n n. A segunda coluna de B deve ser a (única) solução x de Ax = (0, 1, 0, 0,..., 0) t. E assim sucessivamente. Temos de resolver n sistemas lineares, todos da forma Ax = b i, onde apenas b i muda e é a i-ésima coluna da matriz identidade. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 66 / 99
Pivotação parcial Resumo da utilidade de LU LU será melhor que a eliminação gaussiana quando tivermos vários sistemas Ax = b i Isto é, a mesma matriz A mas diferentes b i s Isto ocorre principalmente quando queremos A 1. Uma pergunta que responderemos em breve é: LU é muito mais eficiente, um pouco mais ou só um pouquinho mais eficiente que EG? Voltaremos a esta pergunta daqui a pouco. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 67 / 99
Pivotação parcial A fatoração LU Entretanto, existe uma razão muito importante e prática para isto. M 1 tem uma estrutura muito especial, tão simples que não temos trabalho algum em calcular esta matriz inversa. Sempre teremos M 1 da seguinte forma L = M 1 = 1 0 0 0 m 21 1 0 0 m 31 m 32 1 0 m 41 m 42 m 43 1 M 1 será uma matriz triangular inferior. Além disso, os elementos não-nulos serão os MULTIPLICADORES da eliminação gaussiana. Estes elementos são os inversos dos números usados nas matrizes de eliminação. Isto é mais facilmente entendido com um exemplo. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 68 / 99
Pivotação parcial Fatoração LU Como um exemplo, tome um passo da EG. A torna-se 6 2 2 4 A = 12 8 6 10 3 13 9 3 = B = 6 4 1 18 utilizando a matriz eliminação M 1 = 1 0 0 0 2 1 0 0 1 2 0 1 0 1 0 0 1 Isto é, M 1 A = A e o sistema Ax = b torna-se A x = M 1 Ax = M 1 b 6 2 2 4 0 4 2 2 0 12 8 1 0 2 3 14 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 69 / 99
Pivotação parcial Fatoração LU Vamos dar mais passo na EG. A torna-se 6 2 2 4 A = M 1 A = 0 4 2 2 0 12 8 1 0 2 3 14 utilizando a matriz eliminação M 2 = = A = 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1 Isto é, M 2 M 1 A = A e o sistema Ax = b torna-se A x = M 2 M 1 Ax = M 2 M 1 b 6 2 2 4 0 4 2 2 0 0 2 5 0 0 4 13 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 70 / 99
Pivotação parcial Fatoração LU Vamos dar o último passo na EG. A matriz A torna-se uma matriz triangular superior U. Isto é, 6 2 2 4 6 2 2 4 A = M 2 M 1 A = 0 4 2 2 0 0 2 5 = U = 0 4 2 2 0 0 2 5 0 0 4 13 0 0 0 3 utilizando a matriz eliminação M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 Isto é, M 3 A = M 3 M 2 M 1 A = U e o sistema Ax = b torna-se Ux = M 3 M 2 M 1 Ax = M 3 M 2 M 1 b Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 71 / 99
Pivotação parcial Fatoração LU Terminamos a eliminação gaussiana com a expressão Ux = M 3 M 2 M 1 b em que U é triangular superior (U vem de Upper) e cada M i era uma matriz de eliminação. O que fazemos agora é retornar ao sistema original Ax = b mas escrevendo A como um produto LU = A de duas matrizes triangulares L (inferior) e U (superior) Para isto, basta inverter a matriz do lado direiro da equação acima (se esta inversa existir). Isto é, multiplicando por (M 3 M 2 M 1 ) 1 dos dois lados da equação, temos (M 3 M 2 M 1 ) 1 Ux = (M 3 M 2 M 1 ) 1 M 3 M 2 M 1 b = b Surpresa: L = (M 3 M 2 M 1 ) 1 é uma matriz triangular inferior e os elementos não nulos são os inversos dos elementos não nulos nas M i s. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 72 / 99
Pivotação parcial Fatoração LU Terminamos com LUx = b onde L = (M 3 M 2 M 1 ) 1. Precisamos verificar que L é triangular inferior e os elementos não nulos são os inversos dos elementos não nulos nas M i s. Não faremos a demonstração matemática deste fato. Vamos apenas verificá-lo no contexto de um exemplo concreto. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 73 / 99
Pivotação parcial Fatoração LU Para escalonar a matriz A = 6 2 2 4 12 8 6 10 3 13 9 3 6 4 1 18 usamos três matrizes de eliminação: = U = 6 2 2 4 0 4 2 2 0 0 2 5 0 0 0 3 Ux = M 3 M 2 M 1 Ax = M 3 M 2 M 1 b onde M 1 = 1 0 0 0 2 1 0 0 1/2 0 1 0 1 0 0 1, M 2 = 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1, M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 74 / 99
Pivotação parcial Fatoração LU Temos onde M 1 = 1 0 0 0 2 1 0 0 1 0 1 0, M 2 = 2 1 0 0 1 Ux = M 3 M 2 M 1 b 1 0 0 0 0 1 0 0 0 3 1 0 0 1/2 0 1, M 3 = 1 0 0 0 0 1 0 0 0 0 1 0 0 0 2 1 É fácil verificar que L = (M 3 M 2 M 1 ) 1 = M1 1 M 1 2 M 1 3 é dada por L = 1 0 0 0 2 1 0 0 1/2 3 1 0 1 1/2 2 1 L é uma matriz triangular inferior em que os elementos não-nulos são os multiplicadores m ij da eliminação gaussiana. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 75 / 99
Pivotação parcial A fatoração LU Assim, concluímos que o sistema pode ser escrito como Ax = b LUx = b onde: L é uma matriz triangular inferior com elementos abaixo da diagonal iguais aos multiplicadores da eliminação gaussiana. U é a matriz triangular superior resultante do processo de eliminação gaussiana. E daí? O que fazer com isto? Uma vez que L e U são triangulares, é fácil resolver o sistema original Ax = b resolvendo dois sistemas triangulares, um envolvendo L e outro envolvendo U. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 76 / 99
Pivotação parcial Fatoração LU É muito fácil resolver um sistema linear envolvendo uma matriz triangular. Considere a solução para Ax = b. A = LU = (LU)x = b Reagrupe, pois a multiplicação de matrizes é associativa Seja Ux = y. Então L(Ux) = b Ly = b Como L é triangular, é fácil (sem eliminação gaussiana) calcular y = L 1 b Esta expressão deve ser interpretada como solucione Ly = b com substituição forward. Não precisamos calcular a inversa de L. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 77 / 99
Pivotação parcial Fatoração LU Como y agora é conhecido, resolvemos o sistema Ux = y para x. Como L é triangular, é fácil (sem eliminação gaussiana e sem de fato inverter a matriz) calcular x = U 1 y Isto é, a expressão acima deve ser interpretada como solucione Ux = y com substituição reversa. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 78 / 99
Pivotação parcial Fatoração LU Listagem 5: Solução LU Fatore A em L e U Resolva Ly = b para y Resolva Ux = y para x utilize substituiç~ao forward utilize substituiç~ao reversa Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 79 / 99
Pivotação parcial Fatoração LU Listagem 5: LU dado A for k = 1,..., n 1 for i = k + 1,..., n xmult = a ik /a kk a ik = xmult for j = k + 1,..., n a ij = a ij (xmult)a kj end end end U é armazenado na parte superior triangular de A. L (sem a diagonal) é armazenado no triangular inferior. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 80 / 99
Pivotação parcial LU: obtendo a A 1 Como dissemos anteriormente, uma das principais motivações para a decomposição LU é o cálculo da inversa A 1 de uma matriz n n. Achar a invesa se resume a encontrar cada uma das colunas que forma A 1. A coluna i de A 1 é o vetor x que resolve o sistema Ax = b i onde b i é o vetor com todas as entradas iguais a 0 exceto a entrada i, que possui valor 1. Assim, precisamos resolver n sistemas lineares da forma Ax = b i onde A é a mesma e apenas o vetor de coeficientes b muda. Vamos mostrar que a solução LU para este conjunto de n sistemas é mais eficiente (requer menos FLOPS) que resolver por eliminação gaussiana. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 81 / 99
Pivotação parcial LU versus EG Para resolver UM ÚNICO sistema linear Ax = b, eliminação gaussiana requer menos operações que LU. EG requer dois passos: Forward elimination (ou eliminação sucessiva) para criar a matriz triangular superior U: precisamos de 2n 3 /3 + n 2 /2 7n/6 FLOPS. Backward substitution para resolver o sistema triangular resultante: n 2 FLOPS TOTAL = 2n 3 /3 + 3n 2 /2 7n/6 FLOPS. LU decomposition requer três passos: Forward elimination (ou eliminação sucessiva) para criar a fatoração A = LU: 2n 3 /3 + n 2 /2 7n/6 FLOPS. Veja que são exatamente AS MESMAS opera oões do passo 1 da EG, apenas guardando os multiplicadores abaixo da diagonal da matriz L. Forward substitution para achar z como solução de Lz = b: n 2 FLOPS Backward substitution para resolver Ux = z: n 2 FLOPS TOTAL = 2n 3 /3 + 5n 2 /2 7n/6 FLOPS. Assim, LU requer um pouco mais de FLOPS que EG para resolver um único sistema. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 82 / 99
Pivotação parcial LU versus EG para calcular A 1 Para calcular A 1 devemos resolver n sistemas lineares Ax = b i onde b 1 = (1, 0,..., 0), b 2 = (0, 1, 0,..., 0),..., b n = (0, 0,..., 0, 1). Se usarmos a eliminação gaussiana em todos eles precisaremos de EG n = n (2n 3 /3 + 3n 2 /2 7n/6) FLOPS. Se usarmos LU, a decomposição A = LU terá de ser feita apenas um única vez no início. Os outros dois passos serão repetidos n vezes. Dessa forma, LU n = 2n 3 /3 + n (5n 2 /2 7n/6) FLOPS. Comparando: Com n = 10, temos GE 10 3LU 10. Com n = 100, temos GE 100 25LU 100. Com n = 1000, temos GE 1000 250LU 1000. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 83 / 99
Pivotação parcial Fatoração LU de Doolittle Listagem 6: Doolittle dado A saída L, U for k = 1,..., n l kk = 1 for j = k,..., n u kj = a kj k 1 i=1 l kiu ij end for j = k + 1,..., n l jk = end end ( a jk k 1 i=1 l jiu ik ) /u kk Matematicamente o mesmo que LU anterior A diferença é que agora explicitamente forma L e U Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 84 / 99
Pivotação parcial LU em Scilab Com a EG, LU necessita pivotar. Com pivotação, a fatoração LU sempre existe, mesmo se A é singular. Com pivotação, obtemos LU = PA Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 85 / 99
Decomposição de Cholesky Decomposição de Cholesky Quando A n n for simétrica e definida positiva: Cholesky. Por Cholesky, existe uma matriz L triangular inferior tal que podemos escrever A = LL t A decomposição de Cholesky é um caso especial da decomposição LU com U = L t. É como se L fosse a raiz quadrada de A: L = A Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 86 / 99
Decomposição de Cholesky Por que Cholesky e não LU? Encontra apenas L (não precisa de U). Evita pivotação. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 87 / 99
Decomposição de Cholesky Decomposição de Cholesky Para Cholesky precisamos de A simétrica e definida positiva. É comum termos um sistema Ax = b onde A é simétrica? Sim, é muito comum. Por exemplo,... No modelo de regressão linear, temos que resolver um sistema da forma Ax = b onde A = D t D é uma matriz simétrica e definida positiva. A n n é definida positiva se x t Ax > 0 para todo x 0 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 88 / 99
Decomposição de Cholesky Decomposição de Cholesky O fato de A ser definida positiva garante que os elementos a ii da diagonal são > 0 Prova: tome x = (1, 0,..., 0). Então 0 < x t Ax = a 11. Agora tome x = (0, 1, 0,..., 0). Então 0 < x t Ax = a 22. Etc. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 89 / 99
Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l 31l 11 l 21l 11 l21 2 + l22 2 l 31l 21 + l 32l 22 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 O que deve ser o valor l 11? Iguale o elemento 11 da matriz A e o elemento 11 da matriz produto LL t. Vemos que l 2 11 = a 11, ou seja, l 11 = a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 90 / 99
Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 Iguale o elemento 21 de A com o elemento 21 de L t L. Temos l 21 l 11 = a 21. Como já obtivemos l 11 = a 11, encontramos l 21 = a 21 / a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 91 / 99
Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 De maneira idêntica, obtemos l 31 = a 31 / a 11. Primeira coluna de L está pronta. Vamos agora obter a segunda coluna de L. Iguale o elemento a 22 e o elemento 22 do produto LL t : a 22 = l21 2 + l 22 2 ). Assim, l 22 = a 22 l 221 = a 22 a21 2 /a 11. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 92 / 99
Decomposição de Cholesky Algoritmo para decomposição de Cholesky A = LL t = = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 l11 2 l 21l 11 l21 2 + l22 2 l 31l 11 l 31l 21 + l 32l 22 l31 2 + l32 2 + l33 2 Tendo obtido l 11, l 21, l 31, l 22, passamos agora a l 32 Iguale o elemento a 32 e o elemento 32 do produto LL t E assim sucessivamente. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 93 / 99
Decomposição de Cholesky 25 15 5 15 18 0 5 0 11 = l 11 0 0 l 21 l 22 0 l 31 l 32 l 33 l 11 l 21 l 31 0 l 22 l 32 0 0 l 33 primeira coluna de L 25 15 5 15 18 0 5 0 11 = 5 0 0 3 l 22 0 1 l 32 l 33 5 3 1 0 l 22 l 32 0 0 l 33 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 94 / 99
Decomposição de Cholesky conclusão: 25 15 5 15 18 0 5 0 11 = 5 0 0 3 3 0 1 1 3 5 3 1 0 3 1 0 0 3 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 95 / 99
Decomposição de Cholesky Decomposição de Cholesky em Scilab A deve ser definida positiva. Senão, Scilab mostra uma mensagem de erro. Sintaxe R=chol(A) L=chol(A, lower ) [R,p]=chol(A) [L,p]=chol(A, lower ) [R,p,S]=chol(A) [R,p,s]=chol(A, vector ) [L,p,s]=chol(A, lower, vector ) Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 96 / 99
Decomposição de Cholesky Decomposição de Cholesky Exemplo: Os coeficientes binomiais dispostos em uma matriz simétrica criar uma matriz positiva definida interessante. n=5 X=pascal(n) X= 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 70 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 97 / 99
Decomposição de Cholesky Decomposição de Cholesky Exemplo: É interessante porque o seu fator de Cholesky consiste nos mesmos coeficientes, dispostos em uma matriz triangular superior. R=chol(X) R= 1 1 1 1 1 0 1 2 3 4 0 0 1 3 6 0 0 0 1 4 0 0 0 0 1 Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 98 / 99
Decomposição de Cholesky Decomposição de Cholesky Exemplo: Destruímos a propriedade de ser definida positiva ao subtrair 1 do último elemento. X(n,n)=X(n,n)-1 X= 1 1 1 1 1 1 2 3 4 5 1 3 6 10 15 1 4 10 20 35 1 5 15 35 69 Este é um caso em que a fatoração de Cholesky falha. Renato Martins Assunção (DCC - UFMG) Métodos Numéricos 9 de agosto de 2016 99 / 99