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 específico Sistemas de Equações Lineares. Métodos Iterativos
Conteúdo temático Conceitos básicos Métodos Estacionários Decomposição aditiva de uma matriz Método de Gauss-Jacobi
Métodos iterativos Dado o sistema A x= b ; det ( A 0 pretendemos elaborar um método de resolução que tenha a forma x i+1 =Φ ( x i ; dado x 0
Métodos iterativos Suporemos também o teorema do ponto fixo neste caso, ou seja, lim i x i = x x=φ( x
Métodos iterativos Mas porque usar métodos iterativos?
Métodos iterativos Mas porque usar métodos iterativos? Assim como os métodos iterativos que já vimos: Um método deste tipo não teria a instabilidade numérica dos métodos diretos
Métodos iterativos Mas porque usar métodos iterativos? Assim como os métodos iterativos que já vimos: Um método deste tipo não teria a instabilidade numérica dos métodos diretos Também teria um critério claro de quando convergiria
Métodos iterativos Mas porque usar métodos iterativos? Assim como os métodos iterativos que já vimos: Um método deste tipo não teria a instabilidade numérica dos métodos diretos Também teria um critério claro de quando convergiria Não exigiria um procedimento posterior de verificação
Métodos iterativos Trabalharemos aqui com os Métodos Iterativos Estacionários que têm a seguinte forma x i+1 =B x i + c onde B e c não dependem de i
Métodos iterativos Trabalharemos aqui com os Métodos Iterativos Estacionários que têm a seguinte forma x i+1 =B x i + c onde B e c não dependem de i Observe que o algoritmo é uma multiplicação de matriz por vetor seguida de uma soma vetorial
Métodos iterativos Estes métodos que veremos são de implementação simples e são úteis em muitas situações
Decomposição aditiva Decomposição aditiva de uma matriz Seja A uma matriz quadrada. Escreveremos esta matriz como A=D+ M +N onde D é a diagonal de A, M a matriz triangular estritamente superior de A e N a matriz triangular estritamente inferior de A
Decomposição aditiva Um exemplo A=( 9 1 3 4 2 8 2 2 2 3 7 1 3 1 2 7 então
Decomposição aditiva Um exemplo 9 1 3 4 2 8 2 2 ; 2 3 7 1 A=( 3 1 2 7 9 0 0 0 0 8 0 0 0 0 7 0 D=( 0 0 0 7 ; 0 1 3 4 0 0 2 2 M=( 0 0 0 1 0 0 0 0 =( ; N 0 0 0 0 0 2 0 0 0 2 3 0 0 3 1 2
Métodos iterativos Métodos Iterativos Estacionários Uma maneira de construir um método iterativo é partir das equações que pretendemos resolver e obter uma função de iteração de forma similar ao que fizemos no Método da Iteração Linear
Gauss-Jacobi Partiremos do sistema original usando a decomposição aditiva que apresentamos, ou seja, A x= b ( D+M + N x= b e reescrevendo como
Gauss-Jacobi Partiremos do sistema original usando a decomposição aditiva que apresentamos, ou seja, e reescrevendo como A x= b ( D+M + N x= b D x= ( M + N x+ b
Gauss-Jacobi Suporemos que a matriz associada ao sistema está arrumada de tal forma que a matriz D tenha inversa. Então podemos escrever x= D 1 ( M + N x+d 1 b e isto será a base do método iterativo dado por
Gauss-Jacobi x i+1 = D 1 ( M +N x i + D 1 b dado x 0. A matriz D 1 ( M +N é chamada de Matriz de Gauss-Jacobi
Gauss-Jacobi x i+1 = D 1 ( M +N x i + D 1 b Como já adiantamos, o algoritmo consiste em uma multiplicação de matriz por vetor seguido de uma soma vetorial
Gauss-Jacobi x i+1 = D 1 ( M +N x i + D 1 b Como já adiantamos, o algoritmo consiste em uma multiplicação de matriz por vetor seguido de uma soma vetorial Custo computacional por iteração: O(n 2.
Gauss-Jacobi Observe que x i+1 = D 1 ( M +N x i + D 1 b -(M + N é a matriz original A sem a diagonal e com sinal trocado
Gauss-Jacobi Observe que x i+1 = D 1 ( M +N x i + D 1 b -(M + N é a matriz original A sem a diagonal e com sinal trocado D -1 é obtida calculando os recíprocos dos valores da diagonal
Gauss-Jacobi Observe que x i+1 = D 1 ( M +N x i + D 1 b -(M + N é a matriz original A sem a diagonal e com sinal trocado D -1 é obtida calculando os recíprocos dos valores da diagonal Multiplicar por D -1 é equivalente a dividir cada linha de M + N e do vetor b pelo valor correspondente da diagonal de D
Gauss-Jacobi Temos um algoritmo para montar a fórmula de Gauss-Jacobi!
Gauss-Jacobi Divida todo o sistema pelos valores correspondentes da diagonal da matriz A
Gauss-Jacobi Divida todo o sistema pelos valores correspondentes da diagonal da matriz A Zere a diagonal da matriz resultante
Gauss-Jacobi Divida todo o sistema pelos valores correspondentes da diagonal da matriz A Zere a diagonal da matriz resultante Troque o sinal dos valores da matriz
Gauss-Jacobi Já que estamos falando de algoritmo vamos ver como seria o algoritmo em pseudocódigo
Gauss-Jacobi Arrumação da matriz para i 1 até n diag a ii para j 1 até n a ij a ij /diag b i b i /diag a ii 0
Gauss-Jacobi Laço de repetição do Método de Gauss-Jacobi para k 1 até niteracoes para i 1 até n s 0 para j 1 até n s s+a ij x j xaux i s+b i para l 1até n x l xaux l
Gauss-Jacobi Laço de repetição do Método de Gauss-Jacobi para k 1 até niteracoes para i 1 até n s 0 para j 1 até n s s+a ij x j xaux i s+b i para l 1até n x l xaux l Vetor auxiliar para preservar os valores do vetor na iteração
Métodos Iterativos Como verificaremos a evolução da sequência ( x 0, x 1, x 2,, x i, x i+1,?
Métodos Iterativos Como verificaremos a evolução da sequência ( x 0, x 1, x 2,, x i, x i+1,? Usaremos a norma da diferença dos vetores dividido pela norma de um dos vetores
Métodos Iterativos Algo assim x i+1 x i x i ;i>0
Métodos Iterativos Algo assim x i+1 x i x i ;i>0 Em nossos cálculos usaremos a norma do máximo
Métodos Iterativos No momento não nos preocuparemos com a questão da condição de convergência Vamos para um exercício...
Gauss-Jacobi Um exemplo ( 8 1 0 1 1 9 1 0 1 2 10 0 x=( 0 1 1 12 13/2 8 3 5 Partiremos para a construção do método
Gauss-Jacobi Um exemplo Dividamos todo o sistema pelos valores da diagonal ( 8/8 1/8 0/8 1/8 ( 1/9 9/9 1/9 0/9 ; 1/10 2/10 10/10 0/10 0/12 1/12 1/12 12/12 (13/2/8 8/9 3/10 5/12
Gauss-Jacobi Um exemplo Zere a diagonal da matriz ( 0 1/8 0 1/8 1/9 0 1/9 0 1/10 1/5 0 0 0 1/12 1/12 0 ; 13/16 8/9 3/10 5/12 (
Gauss-Jacobi Um exemplo Troque o sinal dos valores da matriz ( 0 1/ 8 0 1/8 1/9 0 1/9 0 1/ 10 1/5 0 0 0 1/12 1/12 0 ; 13/16 8/9 3/10 5/12 (
Gauss-Jacobi Um exemplo Método de Gauss-Jacobi x i+1 = D 1 ( M +N x i + D 1 b =( 0 1/8 0 1/8 1/9 0 1/9 0 x i+1 x 1/10 1/5 0 0 0 1/12 1/12 0 ( i + 13/16 8/9 3/10 5/12
Gauss-Jacobi Um exemplo Mas qual será o vetor inicial?
Métodos Iterativos Mas qual será o vetor inicial? Em problemas reais temos sempre uma dica se examinamos o problema como ele merece
Métodos Iterativos Mas qual será o vetor inicial? Em problemas reais temos sempre uma dica se examinamos o problema como ele merece Aqui escolheremos um vetor qualquer antecipando que, se o método converge, convergirá para qualquer vetor inicial
Métodos Iterativos Usaremos =( 1 x 4 0 3 5
Gauss-Jacobi Um exemplo =( 0 1/8 0 1/8 +( 1/9 0 1/ 9 0 x 1 x 1/10 1/5 0 0 0 0 1/12 1/12 0 13/16 8/9 3/10 5/12 x 0 =( 1 4 3 5 =( =( [0 1 1/8 4+0 ( 3+1/8 5]+13/16 x [ 1/ 9 1+0 4 1/9 ( 3+0 5] 8/9 1 [1/10 1 1/5 4+0 ( 3+0 5] 3/10 [0 1 1/12 4 1/12 ( 3+0 5]+5/12 =( 15/16 2/3 1 1/3 0,9375 0,66 1 0,33
Gauss-Jacobi Um exemplo =( 0 1/8 0 1/8 1/9 0 1/9 0 x 2 x 1/10 1/5 0 0 0 1/12 1/12 0 ( 1 + 13/16 8/9 3/10 5/12 x 1 =(15 /16 2/3 1 1/3 x 2 =( [0 15/16 1/8 ( 2/3+0 ( 1+1/8 1/3]+13/16 [ 1/9 15/16+0 ( 2/3 1/9 ( 1+0 1/3] 8/9 [1/10 15/16 1/5 ( 2/3+0 ( 1+0 1/3] 3/10 [0 15/16 1/12 ( 2/3 1/12 ( 1+0 1/3]+5/12=( 15/16 127/144 7/96 5/9 =( 0,07291 66 0,9375 0,8819 44 0,55
Gauss-Jacobi Um exemplo Avaliemos a evolução dos vetores obtidos =( ( 0,9375 0,9375 0 x 2 x 0,8819 44 0,66 0,2152 1 x 0,07291 66 1 0,9270 2 x 1 0,9270 max 0,55 0, 33 0,2222 ( x 1 max =1 x 2 x 1 max x 1 max 0,9270
Gauss-Jacobi Um exemplo Qual o significado da primeira componente ter se repetido?
Gauss-Jacobi Um exemplo Qual o significado da primeira componente ter se repetido? Nenhum! Observe que as demais componentes mudaram consideravelmente Estamos em busca de um vetor!
Gauss-Jacobi Um exemplo Você já deve ter reparado que estamos apresentando cálculos desnecessários. Os valores da diagonal da matriz de Gauss- Jacobi sempre serão nulos para qualquer sistema de equações lineares. Simplifiquemos um pouco...
Gauss-Jacobi Um exemplo =( 0 1/8 0 1/8 1/9 0 1/9 0 x 3 x 1/10 1/5 0 0 0 1/12 1/12 0 ( 2 + 13/16 8/9 3/10 5/12 =( 15/16 x 127 /144 2 7/ 96 5/9 =( =( [ 1/8 ( 127/144+0 ( 7/96+1/8 5/9]+13/16 127/128 0,9921 88 x [ 1/9 15/16 1/9 ( 7/96+0 5/9] 8/9 851/864 0,984953 44 3 [1/10 15/16 1/5 ( 127/144+0 5/ 9] 3/10 43/1440 0,02986 22 [0 15/16 1/12 ( 127/144 1/12 ( 7/96]+5/12 1715/3456=( 0,496238
Gauss-Jacobi Um exemplo Avaliemos a evolução dos vetores =( ( 0,9921 88 0,9375 ( 0,0546 x 3 x 0,984953 44 0,8819 44 0,1030 2 x 0,02986 22 0,07291 66 0,0430 0,496238 0,55 0,0593 3 x 2 max 0,1030 x 2 max =0,9375 x 3 x 2 max x 2 max 0,1098
Gauss-Jacobi Um exemplo =( 0 1/8 0 1/8 1/9 0 1/9 0 x 4 x 1/10 1/5 0 0 0 1/12 1/12 0 ( 3 + 13/16 8/9 3/10 5/12 x 3 =( 0,992188 0,984953 0,029862 0,496238 =( [0 0,992188 1/12 ( 0,984953 1/12 ( 0,029862]+5/12 x 4 =([ 1/8 ( 0,984953+0 ( 0,029862+1/8 0,496238]+13/16 [ 1/9 0,992188 1/ 9 ( 0,029862+0 0,496238] 8/ 9 [1/ 10 0,992188 1/5 ( 0,984953+0 0,496238] 3 /10 0,997648 0,995814 0,004514 0,501234
Gauss-Jacobi Um exemplo Avaliemos a evolução dos vetores =( ( 0,997648 0,992188 ( 0,0054 x 4 x 0,995814 0,984953 0,0108 3 0,004514 0,029862 0,02534 0,501234 0,496238 0,0049 x 4 x 3 0,02534 max x 3 max 0,9921 x 4 x 3 max x 3 max 0,0255
Gauss-Jacobi Um exemplo Observe que os valores da avaliação se aproximam de zero a medida que fazemos mais e mais iterações. x 2 x 1 max x 1 max 0,9270 ; x 3 x 2 max x 2 max 0,1098; x 4 x 3 max x 3 max 0,0255
Gauss-Jacobi Um exemplo De fato a solução exata do sistema é x=( 1 1 0 1/2
Gauss-Jacobi Um exemplo De fato a solução exata do sistema é e observem a sequência de vetores x=( 1 1 0 1/2 x 1 =( 0,9375 0,66 1 0, 33 x 2=( 0,9375 0,8819 44 0,07291 66 0,55 x 0,9921 88 3=( 0,984953 44 0,02986 22 0,496238 x 4 =( 0,997648 0,995814 0,004514 0,501234
Gauss-Jacobi Repare que a cada iteração, cada componente do vetor pode ser calculado independentemente. x i+1 Assim, este algoritmo é facilmente paralelizável, ou seja, é fácil implementá-lo num computador paralelo.