Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho
Conteúdo Erros e Aproximações Numéricas Sistemas de Equações Lineares. Métodos diretos Interpolação Ajuste de Curvas Zeros de Função Sistemas de Equações Lineares. Métodos Iterativos Integração Numérica Introdução à Resolução de Equações Diferenciais Ordinárias
Conteúdo Sistemas de Equações Lineares. Métodos diretos
Pronto, fiz os cálculos e achei x!...mas como sei se é a solução?
Exemplo de Wilson ( 10 7 8 7 7 5 6 5 8 6 10 9 x=( 7 5 9 10 32 23 33 31 Substitua o vetor solução por x T =(9,2; 12,6 ; 4,5 ; 1,1
Exemplo de Wilson Substitua o vetor solução por Resultado: ( 10 7 8 7 7 5 6 5 8 6 10 9 x=( 7 5 9 10 32 23 33 31 b T =(32,1 ;22,9;33,1 ;30,9 x T =(9,2; 12,6 ; 4,5 ; 1,1
( Sistemas de equações Exemplo de Wilson Parece que estamos perto da solução... A 9,2 32,1 12,6 22,9 4,5 33,1 ; 1,1 30,9 =( b=( 32 23 33 31
Exemplo de Wilson ( 10 7 8 7 7 5 6 5 8 6 10 9 x=( 7 5 9 10 32 23 33 31 Substitua o vetor solução por x T =(1,82; 0,36 ;1,35 ;0,79
Exemplo de Wilson Substitua o vetor solução por Resultado: ( 10 7 8 7 7 5 6 5 8 6 10 9 x=( 7 5 9 10 32 23 33 31 b T =(32,01 ;22,99;33,01;30,99 x T =(1,82; 0,36 ;1,35 ;0,79
Exemplo de Wilson Realmente parecia que estávamos perto da solução? ( A =( 1,82 0,36 1,35 0,79 32,01 22,99 33,01 30,99 ; b=( 32 23 33 31
( ( Sistemas de equações Exemplo de Wilson Repare... A =( 1,82 32,01 0,36 22,99 1,35 33,01 0,79 30,99 ; A 9,2 32,1 12,6 22,9 4,5 33,1 ; 1,1 30,9 =( b=( 32 23 33 31
Exemplo de Wilson ( 10 7 8 7 7 5 6 5 8 6 10 9 x=( 7 5 9 10 32 23 33 31 Solução: x T =(1;1;1 ;1
A técnica de substituir na equação pode nos enganar
A técnica de substituir na equação pode nos enganar Estamos olhando o problema da forma errada
Este sistema é mal-condicionado, portanto: Pequenas variações nos parâmetros do problema (neste caso o vetor constante gera uma mudança muito maior na solução
Este sistema é mal-condicionado, portanto: Pequenas variações nos parâmetros do problema (neste caso o vetor constante gera uma mudança muito maior na solução Cada vetor dado é a solução exata para o vetor constante correspondente
O exemplo de Wilson é ilustrativo da sensibilidade que sistemas de equações podem ter quanto à precisão de suas componentes. Pequenas variações daquelas podem gerar grandes variações no vetor solução.
Mas há casos patológicos! Matrizes de Hilbert h ij = 1 i+ j 1 ; j=1, n,i=1,,n
Matrizes de Hilbert =( =( 1 1/2 1/3 1/ 4 H= ( 1 1/2 1/3 1 1/2 H 1/2 1/3 1/ 4 1/5 1/2 1/3 4 H 1/2 1/3 1/3 1/ 4 1/5 1/6 1/3 1/4 1/5 1/4 1/5 1/6 1/7
Seja um sistema da forma H x=( 1 1 1 1 H matriz de Hilbert. As componentes da solução são sempre inteiros.
Seja um sistema da forma H x=( 1 1 1 1 H matriz de Hilbert. As componentes da solução são sempre inteiros. Isto pode ser demonstrado pela regra de Cramer!
Um pouquinho de matemática... Norma de vetores e matrizes
Normas Norma é uma ampliação do conceito de módulo É uma maneira de medir propriedades de objetos matemáticos complexos como vetores, matrizes e funções.
Normas Norma (módulo de um vetor É uma maneira de medir o comprimento de um vetor
Normas Norma (módulo de um vetor É uma maneira de medir o comprimento de um vetor Observou as aspas?
Normas Norma de um vetor Nos interessa da norma três propriedades: É sempre positiva
Normas Norma de um vetor Nos interessa da norma três propriedades: É sempre positiva Só é nula se o vetor for nulo
Normas Norma de um vetor Nos interessa da norma três propriedades: É sempre positiva Só é nula se o vetor for nulo Se o vetor for multiplicado por um valor, a norma será a norma do vetor multiplicado pelo valor em módulo
Normas v vetor de dimensão n v 2 = v 1 v 1 +v 2 v 2 +v 3 v 3 + +v n v n = n i=1 v i v i Esta é a Norma Euclidiana
Normas v vetor de dimensão n n v 1 = v 1 + v 2 + v 3 + + v n = v i i=1 Esta é a Norma 1 ou Norma Manhattan
Normas v vetor de dimensão n v max =max i [ v 1, v 2, v 3,, v n ];i=1,, n Esta é a Norma do Máximo
Normas Um exemplo: v T =( 2,3,1 v 2 = ( 2 ( 2+3 3+1 1= 14 3,741657 v 1 = 2 + 3 + 1 =6 v max =max i [ 2, 3, 1 ]=3
Normas Um exemplo: v T =( 2,3,1 v 2 = ( 2 ( 2+3 3+1 1= 14 3,741657 v 1 = 2 + 3 + 1 =6 v max =max i [ 2, 3, 1 ]=3 São todas medidas do vetor mas não dão a mesma medida. São maneiras diferentes de medir...
Normas A matriz n x n = ( A n n 2 i=1 j=1 2 a ij n A 1 =max 1 j n a i=1 ij A max=max 1 i n j=1 n a ij São a Norma de Fröbenius, a Norma 1 e a Norma do Máximo para matrizes
Para que isto?
O número de condicionamento de uma matriz A é dado por κ= A 1 A É fácil de ver que o número de condição da matriz identidade é 1.
O número de condicionamento de uma matriz A é dado por κ= A 1 A É fácil de ver que o número de condição da matriz identidade é 1. Não é difícil de demonstrar que o número de condição é sempre maior ou igual a 1
Uma matriz é tão mais bem condicionada quanto o seu número de condição for mais próximo de 1.
Vamos a alguns exemplos usando o Maxima...
Vimos que o número de condição para o exemplo de Wilson é 4488 e para os casos de matrizes de Hilbert 3x3 é 748 e a 4x4 maior que 28375.
Vimos que o número de condição para o exemplo de Wilson é 4488 e para os casos de matrizes de Hilbert 3x3 é 748 e a 4x4 maior que 28375. As matrizes de Hilbert com aproximação de três casas decimais já apresentam soluções distantes da solução com números racionais
Vimos que o número de condição para o exemplo de Wilson é 4488 e para os casos de matrizes de Hilbert 3x3 é 748 e a 4x4 maior que 28375. As matrizes de Hilbert com aproximação de três casas decimais já apresentam soluções distantes da solução com números racionais Na grande maioria das vezes não calculamos diretamente o número de condição
Observemos o método de Eliminação gaussiana: Se um pivô for bem menor que o(s elemento(s eliminado(s, teremos ruído numérico afetando todos os cálculos subsequentes.
Observemos o método de Eliminação gaussiana: Se um pivô for bem menor que o(s elemento(s eliminado(s, teremos ruído numérico afetando todos os cálculos subsequentes. E assim, o vetor obtido pelo algoritmo poderá estar distante do vetor solução
Observemos o método de Eliminação gaussiana: Se um pivô for bem menor que o(s elemento(s eliminado(s, teremos ruído numérico afetando todos os cálculos subsequentes. E assim, o vetor obtido pelo algoritmo poderá estar distante do vetor solução Se diz que este algoritmo é numericamente Instável
Primeiro passo: Como verificar se o vetor obtido é próximo da solução do sistema?
Método dos Resíduos Seja o sistema A x= b do qual obtemos uma solução aproximada x 1 devido à instabilidade numérica da eliminação gaussiana
Método dos Resíduos Então podemos escrever x= x 1 + z 1 que substituída na equação original resulta em A ( x 1 + z 1 = b A x 1 + A z 1 = b A z 1 = b A x 1
Método dos Resíduos Observe que podemos calcular teremos A z 1 = b b 1 b A x1. Definindo b 1 = A x 1 Definindo o resíduo como r 1 = b b 1 ficaremos com A z 1 = r 1
Parece que nossos problemas foram resolvidos...
Parece que nossos problemas foram resolvidos... Só que não...
Parece que nossos problemas foram resolvidos... Só que não... Pelos mesmos motivos que não conseguimos a solução exata, não conseguiremos o valor de z 1 mas uma aproximação que chamaremos de z1 O que nos resta?
Parece que nossos problemas foram resolvidos... Só que não... Pelos mesmos motivos que não conseguimos a solução exata, não conseguiremos o valor de z 1 mas uma aproximação que chamaremos de z1 O que nos resta? Começar tudo de novo...
Podemos escrever x 2 = x 1 + z 1 e x= x 2 + z 2 que substituída na equação original resulta em A ( x 2 + z 2 = b A x 2 + A z 2 = b A z 2 = b A x 2 = r 2 onde r 2 é o segundo resíduo. Teremos o sistema A z 2 = r 2
O qual, de novo, não me dá o resultado correto mas uma aproximação z2
O qual, de novo, não me dá o resultado correto mas uma aproximação z2 Espero que esteja ficando claro que obteremos, de fato, as sequências { x 1, x 2, x 3,, x i } e { z 1, z 2, z 3,, z i } Esperamos que, se tudo estiver bem, teremos a cada passo valores melhores da solução e valores menores para a norma de zi
Se os valores em módulo do vetor de correção diminuirem consistentemente, podemos dizer que o sistema é bem-condicionado e que a solução obtida é confiável
Se os valores em módulo do vetor de correção diminuirem consistentemente, podemos dizer que o sistema é bem-condicionado e que a solução obtida é confiável Obs: No mundo real sempre haverá uma situação de mal-condicionamento a medida que chegamos perto do limite de precisão da máquina
Observe que o método dos resíduos tem um problema: Temos que resolver uma sequência de SEL A z 1 = r 1 ; A z 2 = r 2 ; A z 3 = r 3 ; A z k = r k Aparentemente o custo é alto...
Observe que o método dos resíduos tem um problema: Temos que resolver uma sequência de SEL A z 1 = r 1 ; A z 2 = r 2 ; A z 3 = r 3 ; A z k = r k Aparentemente o custo é alto... Só que não...
Apresentaremos um outro assunto mas retornaremos ao Método dos Resíduos em breve...
Fatoração LU Aqui abordaremos resolver um sistema A x= b supondo ser possível fazer a seguinte fatoração onde L e U são A=LU
Matrizes L e U L=( 1 0 0 0 0 0 l 21 1 0 0 0 1 0 l 31 l 32 1 0 0 0 l 41 l 42 l 43 1 0 0 l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 l n,1 l n,2 l n,3 l n,4 l n,n 1 U =( u11 u12 u13 u14 u1,n 1 u1,n 0 u 22 u 23 u 24 u 2,n 1 u 2,n 0 0 u 33 u 34 u 3,n 1 u 3,n 0 0 0 u 44 u 4,n 1 u 4,n 0 0 0 0 u n 1,n 1 u n 1,n 0 0 0 0 0 u n, n podemos demonstrar que se A tem det(a 0 então tal fatoração sempre é possível, embora permutações de linhas possam ser necessárias
Um dos que primeiro estudaram a fatoração LU foi Alan Turing, considerado um dos pais da computação. Ele apresenta a fatoração LU num artigo onde são analizados os erros gerados no processo de eliminação gaussiana.
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Você consegue achar a fatoração aplicando o que você sabe sobre multiplicação de matrizes.
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Se você multiplicar a primeira linha de L por cada coluna de U você obterá a 11 =u 11 ;a 12 =u 12 ;a 13 =u 13 ; ;a 1 n =u 1 n
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Se agora, sabendo a primeira linha de U, multiplicar as linhas de L pela primeira coluna de U você obterá a 21 =l 21 u 11 ;a 31 =l 31 u 11 ;a 41 =l 41 u 11 ; ;a n 1 =l n 1 u 11
Obtemos u 1 j =a 1 j ; j=1, n e l i1 = a i 1 u 11 ;i=2, n
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Multipliquemos a segunda linha de L pelas colunas de U a 22 =l 21 u 12 +u 22 ;a 23 =l 21 u 13 +u 23 ;a 24 =l 21 u 14 +u 24 ; ; a 2 n =l 21 u 1 n +u 2 n
Obtemos u 2 j =a 2 j u 1 j l 21 ; j=2, n
Obtemos u 2 j =a 2 j u 1 j l 21 ; j=2, n Observe que neste cálculo não usamos os valores da primeira linha de A. É como se eles não mais existissem.
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Multipliquemos linhas de L pela segunda coluna de U a 32 =l 31 u 12 +l 32 u 22 ; a 42 =l 41 u 12 +l 42 u 22 ; ; a n 2 =l n 1 u 12 +l n 2 u 22
Obtemos l i2 = a i 2 l i 1 u 12 u 22 ;i=3, n
Obtemos l i2 = a i 2 l i 1 u 12 u 22 ;i=3, n Aqui não usamos os valores da primeira linha de A nem da primeira coluna de A. Eles não são mais necessários.
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Multipliquemos a terceira linha de L pelas colunas de U a 33 =l 31 u 13 +l 32 u 23 +u 33 ;a 34 =l 31 u 14 +l 32 u 24 +u 34 ; ; a 3 n =l 31 u 1 n +l 32 u 2 n +u 3 n
Obtemos 2 u 3 j =a 3 j l 31 u 1 j l 32 u 2 j =a 3 j k =1 l 3 k u kj ; j=3,n
Obtemos 2 u 3 j =a 3 j l 31 u 1 j l 32 u 2 j =a 3 j k =1 l 3 k u kj ; j=3,n E aqui não necessitamos das duas primeiras linhas de A nem das duas primeiras colunas.
Fatoração =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n Multipliquemos linhas de L pela terceira coluna de U a 43 =l 41 u 13 +l 42 u 23 +l 43 u 33 ; ; a n 3 =l n 1 u 13 +l n 2 u 23 +l n 3 u 33
Obtemos l i3 = a i3 l i 1 u 13 l i 2 u 23 u 33 = 1 u 33 [ 2 a i 3 k =1 ] l ik u ;i=4, n k 3 Novamente não faremos referência as duas primeiras linhas de A e às duas primeiras colunas.
O algoritmo está começando a ficar nítido...
O algoritmo está começando a ficar nítido... e para i=2 até n u 1 j =a 1 j ; j=1, n l ij = 1 u jj [ j 1 a ij k=1 ] l ik u ;i> j kj i 1 u ij =a ij k =1 l ik u kj ; j>1
Pensando como computeiro... Pense bem... Nós humanos necessitamos de organizar um pouco o mundo. Mas os computadores já nascem ordenados.
Pensando como computeiro... Pense bem... Nós humanos necessitamos de organizar um pouco o mundo. Mas os computadores já nascem ordenados. Eles não necessitam organizar a fatoração em duas matrizes separadas pois o algoritmo não invade os dados de forma errada, a não ser que o programador falhe.
Pensando como computeiro Observe que não necessitamos de guardar no computador a fatoração em duas matrizes separadas =( a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n ( a11 a12 a13 a14 a1,n 1 ann 1 0 0 0 0 0 u12 u13 u14 u1,n 1 u1, n l 21 1 0 0 0 0 0 u 22 u 23 u 24 u 2,n 1 u 2, n l 31 l 32 1 0 0 0 0 0 u 33 u 34 u 3,n 1 u 3, n l 41 l 42 l 43 1 0 0 0 0 0 u 44 u 4,n 1 u 4, n l n 1,1 l n 1,2 l n 1,3 l n 1,4 1 0 0 0 0 0 u n 1, n 1 u n 1,n l n,1 l n,2 l n,3 l n,4 l n,n 1 1(u11 0 0 0 0 0 u n,n O algoritmo que se segue aproveita o espaço que não armazena mais valores necessários à fatoração
Algoritmo: Para i=1 até n Para j 1 até i 1 s a ij Para k=1, j 1 s s a ik a kj Para a ij s/a jj j 1 até n Também é uma algoritmo ingênuo s a ij Para k=1 até i 1 s s a ik a kj a ij s
Mas e a resolução do sistema? Observe que A x= b ( LU x= b L y= b onde U x= y o que nos deixa com dois SEL L y= b U x= y
Mas os sistemas são triangulares e de custo baixo O(n 2 E quanto custa a fatoração?
Mas os sistemas são triangulares e de custo baixo O(n 2 E quanto custa a fatoração? O(n 3!
Mas os sistemas são triangulares e de custo baixo O(n 2 E quanto custa a fatoração? O(n 3! O custo computacional total da resolução do SEL é o mesmo que a eliminação gaussiana
Mas os sistemas são triangulares e de custo baixo O(n 2 E quanto custa a fatoração? O(n 3! O custo computacional total da resolução do SEL é o mesmo que a eliminação gaussiana Então, para que isto?
Vamos a um exemplo
Seja o sistema ( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 x=( 4 9 1 12
Seja o sistema ( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 x=( 4 9 1 12 que é conhecido nosso...
Fatoremos a matriz ( =( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 1 0 0 0 l 21 1 0 0 l 31 l 32 1 0 l 41 l 42 l 43 1 multiplicando os valores das matrizes. Primeira linha de L pelas colunas de U ( u11 u12 u13 u14 0 u 22 u 23 u 24 0 0 u 33 u 34 0 0 0 u 44 u 11 =a 11 =2 ;u 12 =a 12 =4 ;u 13 =a 14 = 1;u 14 =a 14 =1
( =( 2 4 1 1 1 0 0 0 4 1 6 2 l 21 1 0 0 6 3 3 1 l 31 l 32 1 0 2 6 2 4 l 41 l 42 l 43 1 Multiplicando as linhas de L pela primeira coluna de U. Os valores da segunda coluna da matriz L serão ( 2 4 1 1 0 u 22 u 23 u 24 0 0 u 33 u 34 0 0 0 u 44 4=2l 21 ;6=2l 31 ;2=2l 41 l 21 = 2 ;l 31 =3;l 41 =1
( =( 2 4 1 1 1 4 1 6 2 6 3 3 1 2 6 2 4 0 0 0 2 1 0 0 3 l 32 1 0 1 l 42 l 43 1 Multiplicando a segunda linha de L pelas colunas de U. Os valores da segunda linha da matriz U serão ( 2 4 1 1 0 u 22 u 23 u 24 0 0 u 33 u 34 0 0 0 u 44 1= 2 4+u 22 ;6=( 2 ( 1+u 23 ;2= 2 1+u 24 u 22 =9;u 23 =4 ;u 24 =4
( =( 2 4 1 1 1 4 1 6 2 6 3 3 1 2 6 2 4 0 0 0 2 1 0 0 3 l 32 1 0 1 l 42 l 43 1 Multiplicando as linhas de L pela segunda coluna de U. Os valores da segunda coluna da matriz L serão ( 2 4 1 1 0 9 4 4 0 0 u 33 u 34 0 0 0 u 44 3=3 4+9l 32 ;6=1 4+9l 42 l 32 = 1;l 42 =2/9
( =( 2 4 1 1 1 4 1 6 2 6 3 3 1 2 6 2 4 0 0 0 2 1 0 0 3 1 1 0 1 2/9 l 43 1 Multiplicando a terceira linha de L pelas colunas de U. Os valores da terceira linha da matriz U serão ( 2 4 1 1 0 9 4 4 0 0 u 33 u 34 0 0 0 u 44 3=3 ( 1 1 4+u 33 ;1=3 1 1 4+u 34 u 33 =10 ;u 34 =2
( =( 2 4 1 1 1 4 1 6 2 6 3 3 1 2 6 2 4 0 0 0 2 1 0 0 3 1 1 0 1 2/9 l 43 1 Multiplicando as linhas de L pela terceira coluna de U. Os valores da terceira coluna da matriz L serão ( 2 4 1 1 0 9 4 4 0 0 10 2 0 0 0 u 44 2= 1 1+2/9 4+10l 43 l 43 =19/90
( =( 2 4 1 1 1 4 1 6 2 6 3 3 1 2 6 2 4 0 0 0 2 1 0 0 3 1 1 0 1 2/9 19/90 1 Multiplicando a quarta linha de L pelas colunas de U. Os valores da quarta linha da matriz U serão ( 2 4 1 1 0 9 4 4 0 0 10 2 0 0 0 u 44 4=1 1+2/ 9 4+19/90 2+u 44 u 44 =76/75
Matriz fatorada ( =( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 1 0 0 0 2 1 0 0 3 1 1 0 1 2/9 19/90 1 Observe a matriz final da eliminação gaussiana. Ela é idêntica à matriz U obtida. Se você olhar os valores dos m's da eliminação gaussiana, irá encontrá-los com os sinais trocados na matriz L. ( 2 4 1 1 0 9 4 4 0 0 10 2 0 0 0 76/75
Matriz fatorada ( =( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 1 0 0 0 2 1 0 0 3 1 1 0 1 2/9 19/90 1 Observe a matriz final da eliminação gaussiana. Ela é idêntica à matriz U obtida. Se você olhar os valores dos m's da eliminação gaussiana, irá encontrá-los com os sinais trocados na matriz L. Não é coincidência... ( 2 4 1 1 0 9 4 4 0 0 10 2 0 0 0 76/75
Resolvendo o sistema ( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 x=( 4 9 1 12
Resolvendo o sistema ( =( 2 4 1 1 4 1 6 2 6 3 3 1 2 6 2 4 1 0 0 0 2 1 0 0 3 1 1 0 1 2/9 19/90 1 ( 2 4 1 1 0 9 4 4 0 0 10 2 0 0 0 76/75
Na fatoração LU o sistema original é transformado em dois sistemas A x= b LU x= b L y= b e U x= y ou seja, resolveremos primeiro ( 1 0 0 0 2 1 0 0 3 1 1 0 y=( 1 2/9 19/90 1 4 9 1 12
Calculemos cada valor do vetor y como abaixo ( 1 0 0 0 2 1 0 0 3 1 1 0 y=( 1 2/9 19/90 1 4 9 1 12 y 1 =4 ; 2 y 1 + y 2 =9 2 4+ y 2 =9 y 2 =17 3 y 1 y 2 + y 3 = 1 3 4 17+ y 3 = 1 y 3 =4 y 1 +2/9 y 2 +19/90 y 3 + y 4 =12 4+2/9 17+19/90 4+ y 4 =12 y 4 =152/ 45
O vetor solução da primeira equação será 4 17 4 y=( 152/45 que é o vetor constante no final da eliminação gaussiana.
O segundo sistema U x= y será ( 2 4 1 1 4 0 9 4 4 0 0 10 2 x=( 17 4 0 0 0 76/45 152/ 45 que é equivalente a fazer a retrosubstituição na eliminação gaussiana. Ou seja
O segundo sistema U x= y será ( 2 4 1 1 4 0 9 4 4 0 0 10 2 x=( 17 4 0 0 0 76/45 152/ 45 x 4 = 76 45 156 45 =2 10 x 3 +2 x 4 =4 10 x 3 +2 2=4 x 3 = 4 4 10 =0 9 x 2 +4 x 3 +4 x 4 =17 9 x 2 =17 4 0 4 2 x 2 = 9 9 =1 2 x 1 +4 x 2 x 3 +x 4 =4 2 x 1 =4 4 1+1 0 2 x 1 = 2 2 = 1
O vetor solução do problema será x=( 1 1 0 2
Vimos que há uma equivalência entre a resolução por fatoração LU e eliminação gaussiana.
Vimos que há uma equivalência entre a resolução por fatoração LU e eliminação gaussiana. No entanto, a fatoração LU é um pouco menos sensível à instabilidade numérica em relação à eliminação gaussiana.
Vimos que há uma equivalência entre a resolução por fatoração LU e eliminação gaussiana. No entanto, a fatoração LU é um pouco menos sensível à instabilidade numérica em relação à eliminação gaussiana. Além disso, a fatoração LU diminui o custo computacional de alguns problemas.
Retornemos um pouco...
No método dos resíduos temos que resolver uma sequência de SEL A z 1 = r 1 ; A z 2 = r 2 ; A z 3 = r 3 ; A z k = r k Se fizermos eliminação gaussiana em todos os sistemas o custo será alto. No caso, aproximadamente n 3 vezes k.
No entanto, se fizermos por fatoração LU, o primeiro sistema terá custo O(n 3 mas os demais sistemas o custo será de aproximadamente n 2 vezes k. O custo total será bem menor...
Um outro problema: Inversão de matrizes Se det(a é não nulo, então se AB=I diremos que B é a matriz inversa de A.
Um outro problema: Inversão de matrizes Se det(a é não nulo, então se AB=I diremos que B é a matriz inversa de A. Observe que este é um sistema de equações cuja a incógnita não é um vetor mas uma matriz
Vamos ao velho truque: Resolveremos este problema por multiplicação de matrizes...
O sistema abaixo pode ser escrito como AB=I ( a11 a12 a13 a14 a1,n 1 ann a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n ( a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n b11 b12 b13 b14 b1, n 1 b1n =(1 0 0 0 0 0 b 21 b 22 b 23 b 24 b 2,n 1 b 2n b 31 b 32 b 33 b 34 b 3,n 1 b 3n 1 0 1 0 0 0 0 0 0 1 0 0 0 b 41 b 42 b 43 b 44 b 4,n 1 b 4, n 0 0 0 1 0 0 b n 1,1 b n 1,2 b n 1,3 b n 1,4 b n 1,n 1 b n 1,n 0 0 0 0 1 0 b n,1 b n,2 b n,3 b n,4 b n,n 1 l 0 0 0 0 0 nn
( a11 a12 a13 a14 a1,n 1 ann a 21 a 22 a 23 a 24 a 2,n 1 a 2,n a 31 a 32 a 33 a 34 a 3,n 1 a 3,n a 41 a 42 a 43 a 44 a 4, n 1 a 4, n ( a n 1,1 a n 1,2 a n 1,3 a n 1,4 a n 1,n 1 a n 1,n a n,1 a n,2 a n,3 a n,4 a n,n 1 a n,n b11 b12 b13 b14 b1, n 1 b1n =(1 0 0 0 0 0 b 21 b 22 b 23 b 24 b 2,n 1 b 2n b 31 b 32 b 33 b 34 b 3,n 1 b 3n 1 0 1 0 0 0 0 0 0 1 0 0 0 b 41 b 42 b 43 b 44 b 4,n 1 b 4, n 0 0 0 1 0 0 b n 1,1 b n 1,2 b n 1,3 b n 1,4 b n 1,n 1 b n 1,n 0 0 0 0 1 0 b n,1 b n,2 b n,3 b n,4 b n,n 1 l 0 0 0 0 0 nn Mas este sistema pode ser entendido como a matriz A multiplicada por cada coluna de B resultando em cada coluna de I
Ou seja, A b 1 = I 1 A b 2 = I 2 A b 3 = I 3 A b n = I n onde são as k-ésimas colunas de B e I. b k e I k
Inverter uma matriz corresponde a resolvermos n sistemas de equações
Inverter uma matriz corresponde a resolvermos n sistemas de equações O números de operações necessárias para inverter uma matriz usando fatoração LU é de aproximadamente 4n 3 /3, quatro vezes mais que a eliminação gaussiana ou a fatoração LU.
Inverter uma matriz corresponde a resolvermos n sistemas de equações O números de operações necessárias para inverter uma matriz usando fatoração LU é de aproximadamente 4n 3 /3, quatro vezes mais que a eliminação gaussiana ou a fatoração LU. O algoritmo de Gauss-Jordan para inversão de matrizes faz isto de maneira compacta
Ou seja, em geral não é uma boa ideia resolver um sistema invertendo a matriz associada ao sistema pois o custo e quatro vezes maior que por eliminação ou fatoração LU.
Ou seja, em geral não é uma boa ideia resolver um sistema invertendo a matriz associada ao sistema pois o custo e quatro vezes maior que por eliminação ou fatoração LU. O maior número de operações também gerará mais ruído numérico.
Ou seja, em geral não é uma boa ideia resolver um sistema invertendo a matriz associada ao sistema pois o custo e quatro vezes maior que por eliminação ou fatoração LU. O maior número de operações também gerará mais ruído numérico. Mesmo assim, há casos especiais que inverter pode ser interessante.
Mas continuamos com a instabilidade numérica da eliminação gaussiana e da fatoração LU Há como evitar?
Mas continuamos com a instabilidade numérica da eliminação gaussiana e da fatoração LU Há como evitar? Não...
Mas continuamos com a instabilidade numérica da eliminação gaussiana e da fatoração LU Há como evitar? Não... Mas podemos diminuir o desastre...
Pivotamento parcial e total São procedimentos que podem diminuir o ruído numérico nos métodos vistos
Pivotamento parcial e total São procedimentos que podem diminuir o ruído numérico nos métodos vistos Só será apresentado o caso da eliminação gaussiana
Pivotamento parcial Começando pela primeira coluna, ache o maior elemento em módulo desta coluna Troque a linha na qual está este valor como a primeira linha Faça a eliminação
Pivotamento parcial Ache o maior elemento em módulo da segunda coluna abaixo da primeira linha Troque a linha na qual está este valor como a segunda linha Faça a eliminação
Pivotamento parcial Ache o maior elemento em módulo da terceira coluna abaixo da segunda linha Troque a linha na qual está este valor como a terceira linha Faça a eliminação
Pivotamento parcial Faça o equivalente para as demais colunas
Pivotamento parcial Faça o equivalente para as demais colunas Qual é a ideia por trás disto?
Pivotamento parcial A maior fonte de ruído numérico é a divisão pelo pivô pois se o pivô for menor que o termo a ser eliminado teremos potencialmente um elevado ruído numérico
Pivotamento parcial A maior fonte de ruído numérico é a divisão pelo pivô pois se o pivô for menor que o termo a ser eliminado teremos potencialmente um elevado ruído numérico Ao escolhermos o maior maior em módulo da coluna a ser eliminada, reduzimos o ruído numérico
Pivotamento parcial A maior fonte de ruído numérico é a divisão pelo pivô pois se o pivô for menor que o termo a ser eliminado teremos potencialmente um elevado ruído numérico Ao escolhermos o maior maior em módulo da coluna a ser eliminada, reduzimos o ruído numérico Não há garantia mas funciona bem em muitas situações
Pivotamento parcial O custo computacional é basicamente o custo da busca do maior elemento em módulo. Um exemplo do algoritmo de busca para um vetor...
Seja o vetor v de n elementos Afirmarmos que o primeiro elemento é o maior em módulo e o guardamos numa variável M, valor provisoriamente de máximo e em IM a linha deste máximo provisório.
Seja o vetor v de n elementos Afirmarmos que o primeiro elemento é o maior em módulo e o guardamos numa variável M, valor provisoriamente de máximo e em IM a linha deste máximo provisório. Se M < v 2, façamos M= v 2 e IM = 2. Caso não, avançamos para o próximo elemento
Seja o vetor v de n elementos Afirmarmos que o primeiro elemento é o maior em módulo e o guardamos numa variável M, valor provisoriamente de máximo e em IM a linha deste máximo provisório. Se M < v 2, façamos M= v 2 e IM = 2. Caso não, avançamos para o próximo elemento Se M < v 3, faremos M= v 3 e IM = 3. Caso não, avançamos para o próximo elemento.
Seja o vetor v de n elementos Afirmarmos que o primeiro elemento é o maior em módulo e o guardamos numa variável M, valor provisoriamente de máximo e em IM a linha deste máximo provisório. Se M < v 2, façamos M= v 2 e IM = 2. Caso não, avançamos para o próximo elemento Se M < v 3, faremos M= v 3 e IM = 3. Caso não, avançamos para o próximo elemento. Faremos isto até o último elemento Custo computacional por coluna: O(n, custo total O(n 2
Façamos um exemplo para esclarecer a questão de acharmos o maior elemento de um vetor. Dado o vetor v=( 1 3 4 2 8
M = 1, IM = 1 M < 3, portanto M = 3, IM = 2 M < -4, portanto M = 4, IM = 3 M > 2 v=( 1 3 4 2 8 M < 8, portanto M = 8, IM = 5
M = 1, IM = 1 M < 3, portanto M = 3, IM = 2 M < -4, portanto M = 4, IM = 3 M > 2 v=( 1 3 4 2 8 M < 8, portanto M = 8, IM = 5. Obtivemos a posição do valor maior em módulo do vetor
O exemplo que será apresentado é ilustrativo da técnica mas é, claramente, desnecessário (sob o ponto de vista numérico fazer pivotamento deste sistema.
Comecemos com o sistema ( 4 1 2 1 6 2 1 2 3 1 9 1 x=( 1 4 2 3 49/12 47/6 21/4 35/12 Observe que o maior valor em módulo da primeira coluna está na segunda linha. Troquemos
Primeiro pivotamento ( 6 2 1 2 4 1 2 1 3 1 9 1 x=( 1 4 2 3 47/6 49/12 21/4 35/12 Façamos a eliminação
Primeiro pivotamento ( 6 2 1 2 4 1 2 1 3 1 9 1 x=( 1 4 2 3 47/6 49/12 21/4 35/12 m 21 = a 21 /a 11 = 4 /6= 2/3 m 31 = a 31 /a 11 = 3/6= 1/2 m 41 = a 41 /a 11 = 1/6 que resulta em
Primeiro pivotamento ( 6 2 1 2 0 1/3 8/3 1/3 0 2 17/ 2 2 0 11/3 11/6 10/3 x=( 47/ 6 41/36 4 /3 29/18 O maior valor em módulo da segunda coluna abaixo da primeira linha está na quarta linha
Segundo pivotamento ( 6 2 1 2 0 11/3 11/6 10/3 0 2 17/ 2 2 x=( 0 1/3 8/3 1/3 47/ 6 29/18 4 /3 41/36 Façamos a eliminação
Segundo pivotamento ( 6 2 1 2 0 11/3 11/6 10/3 0 2 17/ 2 2 x=( 0 1/3 8/3 1/3 47/ 6 29/18 4 /3 41/36 m32= 2 11/3 =6/11 m 42 = 1/3 11/3 =1/11 que resulta em
Segundo pivotamento ( 6 2 1 2 0 11/3 11/6 10/3 0 0 19/2 42/11 0 0 5/2 7/11 x=( 47/6 29/18 73/33 131/ 132 Observe que o maior valor em módulo da terceira coluna abaixo da segunda linha está na posição correta. Façamos a eliminação
Eliminação ( 6 2 1 2 0 11/3 11/6 10/3 0 0 19/2 42/11 0 0 5/2 7/11 x=( 47/6 29/18 73/33 131/132 m 43= 5/2 19/2 = 5 19 que resulta em
Eliminação ( 6 2 1 2 0 11/3 11/6 10/3 0 0 19/2 42/11 0 0 0 343/ 209 x=( 47/6 29/18 73/33 343/836 que a resolução deste sistema triangular nos dará
( 6 2 1 2 0 11/3 11/6 10/3 0 0 19/2 42/11 0 0 0 343/ 209 x=( 47/6 29/18 73/33 343/836 a solução x 4 = 343 836 ( 209 343 = 1 4 x 3 = 2 19 ( 73 33 + 42 11 1 4 = 1 3 x 2 = 3 11 ( 11 6 1 3 10 3 1 4 = 1 2 x 1 = 1 6 ( 47/6 2 1 2 + 1 1 3 +2 1 4 =1
Pivotamento total A busca do maior valor da matriz agora é feita em toda matriz ou submatriz que ainda não passou pelo processo de eliminação
Pivotamento total A busca do maior valor da matriz agora é feita em toda matriz ou submatriz que ainda não passou pelo processo de eliminação Isto exigirá: troca de linhas e de colunas um algoritmo que compute as mudanças de colunas Custo computacional por submatriz O(n 2, total O(n 3
Pivotamento total Devido à estas características (aumento de complexidade de algoritmo, aumento de custo computacional este pivotamento é usado só em situações especiais. Não aprofundaremos o estudo sobre este item.