1 / 22

Métodos Iterativo em Álgebra Linear

Métodos Iterativo em Álgebra Linear. Prof. Jairo Ramalho E-mail: jairo.ramalho@ufpel.edu.br. Método de Jacobi. Dado um sistema linear, como por exemplo:. 10x 1 – x 2 + 2x 3 = 6 –x 1 + 11x 2 – x 3 + 3x 4 = 25 2x 1 – x 2 + 10x 3 – x 4 = -11

balin
Download Presentation

Métodos Iterativo em Álgebra Linear

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Métodos Iterativo em Álgebra Linear Prof. Jairo Ramalho E-mail: jairo.ramalho@ufpel.edu.br

  2. Método de Jacobi Dado um sistema linear, como por exemplo: 10x1 – x2 + 2x3 = 6 –x1 + 11x2 – x3 + 3x4 = 25 2x1 – x2 + 10x3 – x4 = -11 3x2 – x3 + 8x4 = 15 No método de Jacobi, isolamos a variável xk na k-ésima equação (contanto que seu coeficiente seja diferente de zero): x1 = (1/10)x2 – (1/5)x3 + 3/5 x2 = (1/11)x1 + (1/11)x3 – (3/11)x4 + 25/11 x3 = –(1/5)x1 +(1/10)x2 + (1/10)x4 – 11/10 x4= – (3/8)x2 + (1/8)x3 + 15/8

  3. E obtemos o sistema iterativo: Fazemos então um “chute” inicial para a solução, como, por exemplo, x0 = (0,0,0,0)T, e calculamos o vetor solução x1 através de:

  4. Obtido x1 = (0,6; 2,273; -1,1; 1,875)T, calculamos x2 via: Continuando o procedimento, vamos obter: x3 = (0,933; 2,053; -1,049; 1,131)T ... x9 = (0,999; 2,000; -1,000; 1,000)T x10 = (1,000; 2,000; -1,000; 1,000)T E, em dez passos, o método converge para a solução exata.

  5. Em termos matriciais, saímos do sistema Ax = b 10x1 – x2 + 2x3 = 6 –x1 + 11x2 – x3 + 3x4 = 25 2x1 – x2 + 10x3 – x4 = -11 3x2 – x3 + 8x4 = 15 Para o sistema x= Tx + c x1 = (1/10)x2 – (1/5)x3 + 3/5 x2 = (1/11)x1 + (1/11)x3 – (3/11)x4 + 25/11 x3 = –(1/5)x1 +(1/10)x2 + (1/10)x4 – 11/10 x4= – (3/8)x2 + (1/8)x3 + 15/8

  6. Em termos matriciais, saímos do sistema Ax = b 10x1 – x2 + 2x3 = 6 –x1 + 11x2 – x3 + 3x4 = 25 2x1 – x2 + 10x3 – x4 = -11 3x2 – x3 + 8x4 = 15 Para o sistema x= Tx + c x1 = (1/10)x2 – (1/5)x3 + 3/5 x2 = (1/11)x1 + (1/11)x3 – (3/11)x4 + 25/11 x3 = –(1/5)x1 +(1/10)x2 + (1/10)x4 – 11/10 x4= – (3/8)x2 + (1/8)x3 + 15/8 Ou, em termos de fórmulas (para aii ≠ 0) : n: número de equações

  7. Método de Jacobi Mais ainda, colocando iterativamente: Onde xi0 é uma aproximação inicial dada.

  8. Algoritmo: Método de Jacobi Dados de Entrada. Matriz: A, vetores: b, x0, número de equações: n, tolerância: tol, número máximo de iterações: Nmax. cont = 1 Enquanto cont ≤ Nmax Faça Para i = 1 até n, passo 1, Faça soma = 0 Para j=1 até i-1, passo 1, Faça soma = soma + A( i, j )*x0( j ) Para j=i+1 até n, passo 1, Faça soma = soma + A( i, j )*x0( j ) x( i ) = [ b( i ) – soma ] / A( i, i ) Se || x – x0 || < tol Retornar x Sair Senão x0 = x cont = cont + 1

  9. Algoritmo: Método de Jacobi • Observações. • Antes de começar o algoritmo, é preciso checar se os aii (elementos da diagonal) são diferentes de zero. Se isso ocorrer e a matriz A for não-singular, basta fazer troca de linhas. • Se possível, o ideal é fazer troca de linhas de modo a colocar nas diagonais os maiores valores possíveis (reduzindo erros de arredondamento).

  10. Método de Gauss-Seidel Observando o método de Jacobi x1k+1= (1/10)x2k – (1/5)x3k + 3/5 x2k+1= (1/11)x1k+ (1/11)x3k – (3/11)x4k+ 25/11 x3k+1= –(1/5)x1k +(1/10)x2k + (1/10)x4k– 11/10 x4k+1= – (3/8)x2k + (1/8)x3k + 15/8 Se este é convergente, então, uma possível melhoria na sua eficiência computacional pode ser obtida notando-se que as componentes de xk+1 que já foram calculadas podem ser aproximações melhores do que seus valores no passo k. Essa é a idéia do Método de Gauss-Seidel. Isto é: acelerar a convergência calculando xik+1 usando os valores x1k+1, x2k+1,..., xi-1k+1 que já foram calculados, ao invés de seus valores no passo anterior.

  11. Método de Gauss-Seidel Exemplo: Contrastando os dois métodos, no método de Jacobi fazemos: x1k+1= (1/10)x2k – (1/5)x3k + 3/5 x2k+1= (1/11)x1k+ (1/11)x3k – (3/11)x4k+ 25/11 x3k+1= –(1/5)x1k +(1/10)x2k + (1/10)x4k– 11/10 x4k+1= – (3/8)x2k + (1/8)x3k + 15/8 Enquanto no método de Gauss-Seidel, fazemos x1k+1= (1/10)x2k – (1/5)x3k + 3/5 x2k+1= (1/11)x1k+1+ (1/11)x3k – (3/11)x4k+ 25/11 x3k+1= –(1/5)x1k+1 +(1/10)x2k+1 + (1/10)x4k– 11/10 x4k+1= – (3/8)x2k+1 + (1/8)x3k+1 + 15/8

  12. x1k+1= (1/10)x2k – (1/5)x3k + 3/5 x2k+1= (1/11)x1k+1+ (1/11)x3k – (3/11)x4k+ 25/11 x3k+1= –(1/5)x1k+1 +(1/10)x2k+1 + (1/10)x4k– 11/10 x4k+1= – (3/8)x2k+1 + (1/8)x3k+1 + 15/8 Considerando novamente o “chute inicial” x0 = (0,0,0,0)T, obtemos os seguintes resultados: x11= (1/10)*0 – (1/5)*0 + 3/5 = 0,6 x21= (1/11)*0,6+ (1/11)*0 – (3/11)*0+ 25/11 = 2,327 x31= –(1/5)*0,6 +(1/10)*2,327 + (1/10)*0– 11/10 = -0,987 x41 = – (3/8)*2,327 + (1/8)*(-0,987) + 15/8 = 0,8789

  13. Continuando o mesmo procedimento, vamos obter: x2 = (1,030; 2,037; -1,014; 0,984)T .... x5 = (1,000; 2,000; -1,000; 1,000)T Observe que, como visto na aula anterior, nesse exemplo, o método de Jacobi precisou de praticamente o dobro de iterações para chegar no mesmo resultado.

  14. Método de Gauss-Seidel Assim como fizemos para o método de Jacobi, em termos de fórmulas, podemos escrever o método de Gauss-Seidel da seguinte forma: Onde xi0 é uma aproximação inicial dada.

  15. Algoritmo: Método de Gauss-Seidel Dados de Entrada. Matriz: A, vetores: b, x0, número de equações: n, tolerância: tol, número máximo de iterações: Nmax. x = x0;cont = 1; Enquanto cont ≤ Nmax Faça Para i = 1 até n, passo 1, Faça soma = 0 Para j=1 até i-1, passo 1, Faça soma = soma + A( i, j )*x( j ) Para j=i+1 até n, passo 1, Faça soma = soma + A( i, j )*x0( j ) x( i ) = [ b( i ) – soma ] / A( i, i ) Se || x – x0 || < tol Retornar x Sair Senão x0 = x cont = cont + 1 Obs.: Algoritmo idêntico ao de Jacobi, exceto nos trechos marcados em verde.

  16. Métodos de Relaxação Uma terceira classe de métodos são os chamados métodos de relaxação, descritos pela fórmula: Observe que se w = 1, temos o método de Gauss-Seidel. Assim, o parâmetro w funciona como uma ponderação que pode auxiliar a acelerar a convergência. Estes métodos utilizam 0 < w < 2.

  17. Matrizes Esparsas Métodos iterativos são convenientes para resolver sistemas envolvendo matrizes grandes e esparsas. O motivo disso é que as várias multiplicações envolvidas em métodos como o de Jacobi e Gauss-Seidel não precisam ser feitas pois são multiplicações por zero. Veja o caso, por exemplo, do sistema Ax=babaixo. Dos 25 elementos da matriz A, apenas 12 são diferentes de zero. Além disso, podemos economizar memória do computador se deixarmos de armazenar os zeros da matriz.

  18. Isto pode ser feito usando uma matriz auxiliar que armazene apenas os valores não nulos e suas respectivas posições. Isto é, podemos substituir a matriz A abaixo pela matriz M. Onde M é 12x3, sendo 12 o número de elementos não nulos (NENN) de A. Repare que dada uma linha k de M, isto é (mk1, mk2, mk3), temos que mk3 é o elemento amk1,mk2. Por exemplo, na linha 4 de M, (2,2,3), o elemento 3 é o elemento a2,2.

  19. Observe que, nesse caso, a matriz M tem mais elementos que a matriz A porque esta é uma matriz “pequena”. Imagine, por exemplo, uma matriz A100x100, esparsa, com apenas 30 elementos não nulos. Nesse caso, a matriz M teria apenas 90 elementos, enquanto a matriz A teria 10.000.

  20. Algoritmo do Método de Gauss-Seidel para Matrizes Esparsas Supondo que a matriz A seja substituída pela matriz M, o algoritmo do método de Gauss-Seidel muda para o seguinte. Dados de Entrada. Número de Equações: n, número máximo de iterações: Nmax, número de elementos não-nulos: NENN, tolerância: tol, Matriz: A na forma M, vetores: b e x0. ... continua ...

  21. x = x0; Para cont = 1 até Nmax, Passo 1, Faça k=1 Para i = 1 até n, passo 1, Faça soma = 0 Enquanto M(k,1)=i e M(k,2)≤ i-1 Faça soma = soma + M(k,3)*x( M(k,2) ) k=k+1 aii=M(k,3) k=k+1 Enquanto k<NENN e M(k,1)=i e M(k,2) ≤ n Faça soma = soma + M( k, 3 )*x0( M(k,2) ) k=k+1 x( i ) = [ b( i ) – soma ] / aii Se || x – x0 || < tol Retornar x e Sair Senão x0 = x

  22. Projeto 2. Prezados alunos. Como combinado em sala de aula, o objetivo desse segundo projeto é resolver os sistemas lineares do projeto 1 (com n=100 e n=1000) utilizando métodos iterativos para comparar com a solução por eliminação de Gauss. Assim, adaptem os métodos de Jacobi, Gauss-Seidel e Relaxação (com w variando entre 1.8, 1.9 e 1.95) ao algoritmo para matrizes esparsas e verifiquem os tempos que estes métodos levam para solucionar os sistemas lineares (comparar com o tempo do método da eliminação de Gauss). Adotem nos métodos uma tolerância (precisão) de 10-5.

More Related