• Nenhum resultado encontrado

Resumo dos métodos Iterativos de Jacobi e Gauss‐Seidel Forma Matricial Jacobi  Gauss‐Seidel 

N/A
N/A
Protected

Academic year: 2019

Share "Resumo dos métodos Iterativos de Jacobi e Gauss‐Seidel Forma Matricial Jacobi  Gauss‐Seidel "

Copied!
17
0
0

Texto

(1)

Métodos Iterativos de Jacobi e Gauss‐Seidel  

para resolução de sistemas de equações lineares Ax=b 

 

Para resolver um sistema  , os métodos iterativos partem de uma solução inicial 

 e constroem uma sucessão de aproximações  , , … , , …    converge  para a solução exacta x do sistema 

lim →∞      ou  lim →∞     0 

Para implementar os métodos iterativos é necessária uma fórmula que permita obter 

cada solução a partir da anterior:    →      . Para construir a fórmula iterativa, o 

sistema    é convertido num sistema equivalente do tipo 

 x + c

 

 obtendo a fórmula iterativa  

               ,          1, 2, …,

 

 onde G é a matriz iteração e c um vector. 

O método iterativo é repetido até que o vector     esteja suficientemente próximo da 

solução exacta x. Para interromper o processo, necessitamos de estabelecer pelo menos 

um critério de paragem:  

9           ( tolerância absoluta) 

( parar se a diferença de duas aproximações consecutivas, para alguma norma,  é   menor que a tolerância dada ) 

 

9      

     (tolerância relativa) 

(parar se a diferença relativa de duas aproximações consecutivas, para alguma  norma, é menor que a tolerância dada ) 

9          (majorante do erro) 

 

9           (pelo vector resíduo) 

( parar se a norma do vector resíduo é menor que uma tolerância dada)  

 

9 Impondo um número máximo de iterações,    

Após a paragem do método, obtém‐se a solução aproximada    da solução exacta do 

(2)

Resumo dos métodos Iterativos de Jacobi e Gauss‐Seidel

 

Forma Matricial

Jacobi 

Gauss‐Seidel 

1º.

  

Decompor

 

a

 

matri

z

 

 

A=

 

D

 

+

 

L

 

+

 

U

 

- A={aij} onde:

D={dij}-estritamente diagonal, L={lij}- triangular inferior, U={uij}- triangular superior

2º.

  

Construir

 

fórmula

 

iterativa:

 

 

 

  

,

1, 2, …,

 

      

G

 ‐ 

matriz

 

iteração

 

,

 

c

  ‐ 

vector

    

  

 

G

J

  

=

 ‐  

D

‐1  

(

  

L

 

+

 

U

 

)

  

 

c

J

  

=

    

D

‐1  

b

  

 

x

(k

=

 ‐

D

‐1  

[L+U]

  

x

(k-1) 

+

  

D

‐1 

b

  

   

G

GS

 

=

 ‐ 

(

 

D

 

+

 

L

 

)

‐1  

U

 

 

c

GS

 

=

    

(

 

D

 

+

 

L

 

)

‐1   

b

  

x

(k)

=

 ‐

(

D+L

)

‐1  

U

  

x

(k-1) 

+

  

(

D+L

)

‐1 

b

 

 

x

(k

=

 ‐ 

D

‐1  

[L

  

x

(k)  

+

 

U

  

x

(k-1)  

]

 

+

 

D

‐1 

b

  

Forma Algébrica

Cálculo das componentes

x

i

da aproximação x

(k)

,

k=1,2,…, i=1,2,…,n

)

(

1

( 1)

, 1 )

( −

=

=

k

j n

i j j

ij i

ii k

i

b

a

x

a

x

j i – usar valores xj calculados na iteração anterior

)

(

1

( 1)

1 )

( 1

1 )

( −

+ = −

=

=

k

j n

i j

ij k

j i

j ij i

ii k

i

b

a

x

a

x

a

x

se j < i – usar valores xjcalculados na presente iteração

se j > i – usar valores xj calculados na iteração anterior

Critérios de Convergência

(CS)1.  A matriz A é estritamente diagonal dominante por linhas:  a a i

i j j

ij

ii >

≠ , |

|        

(

CS) 2. ||G|| < 1  para alguma norma  

(CNS) 3. ℘(G)  <1 , ℘(G) = max i |λi(G)| – raio espectral da matriz G              λi  – valores próprios de G, i=1,2,…,n 

(CS) ‐ condição suficiente ,   (CNS) – condição necessária e suficiente   

dij =

aij se i=j (aij≠0) 0 se ij

lij =

aij se i>j

0 se ij uij =

aij se i<j 0 se ij

(3)

Exemplo 

 

Considere o sistema 

 

    ⎪ ⎩ ⎪ ⎨ ⎧

= + +

= + +

= + +

10 3

26 6

3 2

15 2 2 5

3 2 1

3 2 1

3 2 1

x x x

x x x

x x x

 

Efectue  três  iterações  dos  métodos  de  Jacobi  e  de  Gauss‐Seidel  partindo  da  aproximação  0, 0,0 . Se necessário, reescreva o sistema por forma a poder  garantir a convergência de ambos os métodos para a solução exacta. 

 

Para começar, devemos provar a convergência dos métodos iterativos verificando a  condição suficiente nº 1: 

    (note que esta verificação é imediata pois depende apenas dos elementos da matriz A do sistema)   

       

Para o sistema dado a matriz A não é estritamente diagonal dominante por linhas. 

 

5 2 2

2 3 6

1 3 1

Observa‐se que para a primeira linha, |5|   |2| |2|, enquanto que para as segunda e  terceira linhas, |3|   |2| |6| e |1|   |1| |3|,  respectivamente, o que não satisfaz a  condição requerida.  Não entanto, podemos tentar trocar as linhas do sistema de modo  a obter uma matriz estritamente diagonal dominante por linhas.  

 

5 2 2

1 3 1

2 3 6

 

 

Neste caso, trocando as linhas 2 e 3 da  matriz A obtemos para a primeira linha 

|5|   |2| |2|, para a segunda, |3|   |1| |1| e para a terceira |6|   |2| |3|. 

 

Como a condição suficiente se verifica1 fica provado que os métodos de Jacobi e Gauss‐ Seidel convergem para  a  única  solução2  do sistema  equivalente   com 

15, 10, 26  . 

   

 

1

No caso de não se verificar a CS 1 devemos então verificar a CS 2 baseada no cálculo de uma norma para a matriz de iteração G (se não for indicada   uma norma, utilizar a norma do máximo).  Se a condição CS 2 também não se verifica então devemos utilizar a CNS 3 para provar a convergência, pois é 

a única conclusiva. Para isto precisamos calcular todos os valores próprios da matriz de iteração G, o que representa uma prova muito mais custosa.  

2 

O determinante de A é igual a 61 pelo que o sistema   tem solução única  1, 2, 3 . 

(4)

 

Métodos de Jacobi e Gauss‐Seidel na forma matricial   

Dada a aproximação inicial  0   0  0  , o objectivo é  calcular três aproximações  da solução exacta utilizando os métodos iterativos de Jacobi e Gauss‐Seidel. 

 

O primeiro passo é decompor a matriz   como uma soma de três matrizes, DL e U 

 

    

 

=

 

D

 

+

 L 

+

 

U

 

  onde 

9 D é a matriz diagonal formada pelos elementos da diagonal principal de A 

9 L  é a matriz triangular inferior formada pelos elementos de que estão abaixo  da diagonal principal  

9 é a matriz triangular superior formada pelos elementos de A que estão acima  da diagonal principal 

       

D

      

L

      

U

  

     

   

0 0

0 0

0 0

0 0 0 0 0 0

0 0 0 0 0 0

 

 

A seguir, dada a solução inicial  0, 0,0 , constrói‐se a fórmula iterativa   

           ,         1, 2, …, 

 

 

Para o método de Jacobi a matriz de iteração G e o vector c podem ser calculados pelas  fórmulas 

 

 

      

G

=

  

G

J

 

=

 ‐ 

D

‐1  

(

 

L

 

+

 

U

 

)

 

e

 

 

c

  

=

 

c

 J

 

=

  

D

‐1  

b

  

 

Então, de    

  

0 0

0 0

0 0

 ,   

0    0

   0

,   1510

26

 

 

obtém‐se   

 

0 0

0

,       

3

 

(5)

que conduz ao processo iterativo,   

0 25 25 1

3 0

1 3 1

3 1

2 0

3 10

3 13

3

,    1, 2, …, 

 

Pela fórmula iterativa podemos então calcular três aproximações para k=1, 2, 3 a partir 

de   0  0  0 .   

 

Para  1 

0 0

0 0 0 0

3

=

3

 

 

Para  2 

0 0

0

3 3

=    

   

 

 

Para  3 

0 0

0        

3

=

         

 

 

Como resultado obtemos a aproximação  1.9778  2.8000 3.9111   da solução  exacta do sistema Ax = b. 

 

Para o método de Gauss‐Seidel a matriz de iteração G e o vector c podem ser calculados  pelas fórmulas 

 

      

         

G

 

=

 

G

GS

 

=

 ‐ 

(D+L)

‐1  

U

  

e

 

 

c

 

=

 

c

 GS

 

=

 

(D+L)

‐1  

b

  

 

Para poder construir a fórmula iterativa de Gauss‐Seidel necesitamos determinar a 

matriz inversa de  

(D+L) 

  

          

D

       

L

       

U

  

     

 

0 0

0 0

0 0

0 0 0 0 0 0

0 0 0 0 0 0

 

 

x(0)

x(1)

x(2)

x(1)

x(2)

(6)

 5  0    0  3    0    6

  ⇒  

        0    0        0    

 

  Então,  de 

  

        0    0        0    

0 0  0 0 0  0

,  

15 10 26

 

 

obtém‐se 

        

        0    0        0    

0 0  0 0 0  0

0 0     0          

 

 

        

        0    0        0    

15 10 26

3

 

   

 

que conduz ao processo iterativo,      

0 25 25

0    152 15

0     1 15     

7 30

3 7 3 13

6

,    1, 2, …, 

 

Pela fórmula iterativa podemos então calcular três aproximações para k = 1, 2, 3 a partir 

de  0  0  0 .   

 

Para  1 

 

0 0     0          

0 0 0

3 7 3 13

6

= 3.00002.3333

2.1667  

 

Para  2 

 

12

22

32 0 0     0          

3.0000 2.3333 2.1667

3

7 3 13

6

= 1.20002.2111

 2.8278  

   

x(0) x(1)

(7)

 

Para  3 

0 0     0          

1.2000 2.2111  2.8278

3

=  0.98442.0626

2.9739  

 

Como resultado obtemos a aproximação  0.9844  2.0626  2.9739   da solução  exacta do sistema  Ax = b. 

 

 

Métodos de Jacobi e Gauss‐Seidel na forma algébrica. 

 

Considere‐se o sistema linear Ax = b 

 

   

Assumindo  que  ≠ 0 ∀    1,2, … ,   ,  o  primeiro  passo  na  implementação  dos  métodos de Jacobi e Gauss Seidel consiste no isolamento do vector x no lado esquerdo 

mediante a separação pela diagonal.    

A partir de aqui podemos construir as fórmulas iterativas para Jacobi e Gauss‐Seidel na  forma algébrica. 

 

  

           

(8)

Método de Jacobi   

para  k=1,2, …,  

 

   

Método de Gauss‐Seidel:   

para  k=1,2, …,  

 

   

Em cada iteração k do método Jacobi, para o cálculo da componente  , usam‐se 

todas as componentes  , , … , , , … , calculadas na iteração 

anterior. O método de Gauss‐Seidel difere do Jacobi, em que em cada iteração   são 

utilizados todos os valores da aproximação   que foram acabados de calcular na  mesma iteração. Ou seja, no cálculo de cada componente   no método de Gauss‐ Seidel,  usam‐se  os  valores , , … , previamente  calculados  na  mesma 

iteração  e  os  valores  , , … ,   calculados  na  iteração  anterior.  

 

Desta forma, o método de Gauss‐Seidel, em cada iteração usa dados mais actualizados  que o método de Jacobi. Isto não significa que necessariamente o método de Gauss‐ Seidel converge sempre mais rapidamente. 

   

(k

(k

(k

(k-1)  (k-1)

(k-1)  (k-1) (k-1)

(k-1)  (k-1) (k-1)

∀ j i – usar os valores  calculados  na 

 iteração anterior

(k

(k

(k

(k-1)  (k-1)

(k (k-1) (k-1)

(k (k (k

se j < i – usar valores calculados  na presente iteração 

(9)

Exemplo (continuação) 

 

Considere o sistema 

 

    ⎪ ⎩ ⎪ ⎨ ⎧

= + +

= + +

= + +

10 3

26 6

3 2

15 2 2 5

3 2 1

3 2 1

3 2 1

x x x

x x x

x x x

 

Efectue  três  iterações  dos  métodos  de  Jacobi  e  de  Gauss‐Seidel  partindo  da  aproximação  0  0 0 . Se necessário, reescreva o sistema por forma a poder  garantir a convergência de ambos os métodos para a solução exacta. 

Anteriormente já tínhamos analisado que para garantir a convergência dos métodos  iterativos  precisamos  de  reescrever  o  sistema  por  forma  a  que  a  matriz  A  seja 

estritamente diagonal dominante por linhas 

   

⎪ ⎩ ⎪ ⎨ ⎧

= + +

= + +

= + +

26 6

3 2

10

3

15 2

2 5

3 2 1

3 2 1

3 2 1

x x x

x x x

x x x

 

 

O primeiro passo na implementação dos métodos de Jacobi e Gauss Seidel consiste no 

isolamento do vector x no lado esquerdo mediante a separação pela diagonal.  

 

⎪ ⎪ ⎪

⎩ ⎪ ⎪ ⎪

⎨ ⎧

− − =

− − =

− − =

) 3 2 26 ( 6 1

) 10

( 3 1

) 2 2 15 ( 5 1

2 1 3

3 1 2

3 2 1

x x x

x x x

x x x

(10)

Método

 

de

 

Jacobi

 

 

Uma vez isoladas as componentes do vector x, podemos construir a fórmula iterativa de  Jacobi na forma algébrica 

, 12 ,

) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − −

Observe  que  esta  fórmula  iterativa  é  equivalente  à  fórmula  na  forma  matricial  construída anteriormente. 

Efectuando algumas transformações algébricas obtém‐se: 

⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = ⇔ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − − − − − − − − ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 6 3 6 2 6 26 3 1 3 1 3 10 5 2 5 2 5 15 ) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 k k k k k k k k k k k k k k k k k k x x x x x x x x x x x x x x x x x x ,..., 2 , 1 , 3 13 2 1 3 1 3 10 3 1 3 1 3 5 2 5 2 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ + − − = + − − = + − − = ⇔ − − − − − − k x x x x x x x x x k k k k k k k k k

0 25 25 1 3    0 1 3 1 3 1 2 0 3 10 3 13 3

,     1, 2, …,  

(11)

Pela fórmula iterativa podemos então calcular três aproximações para k= 1, 2, …,   a  partir de  0  0  0 .   

, 2 1 , ) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) ( 3 ) 1 ( 3 ) 1 ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − − − − −      

Para  1 

  ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = = = × − × − = − − = = = − − == − − = = = × − × − = − − = 3333 . 4 3 13 6 26 ) 0 3 0 2 26 ( 6 1 ) 3 2 26 ( 6 1 3333 . 3 3 10 ) 0 0 10 ( 3 1 ) 10 ( 3 1 0000 . 3 5 15 ) 0 2 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 0 ( 2 ) 0 ( 1 ) 1 ( 3 ) 0 ( 3 ) 0 ( 1 ) 1 ( 2 ) 0 ( 3 ) 0 ( 2 ) 1 ( 1 x x x x x x x x x

Para  2 

  ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = − = × − × − = − − = 6667 . 1 ) 3333 . 3 3 0000 . 3 2 26 ( 6 1 ) 3 2 26 ( 6 1 8889 . 0 ) 3333 . 4 0000 . 3 10 ( 3 1 ) 10 ( 3 1 0067 . 0 ) 3333 . 4 2 3333 . 3 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) 2 ( 3 ) 1 ( 3 ) 1 ( 1 ) 2 ( 2 ) 1 ( 3 ) 1 ( 2 ) 2 ( 1 x x x x x x x x x

Para  3 

  ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − − × − = − − = = − − − == − − = = × − × − = − − = 9111 . 3 ) 8889 . 0 3 ) 0067 . 0 ( 2 26 ( 6 1 ) 3 2 26 ( 6 1 8000 . 2 ) 6667 . 1 ) 0067 . 0 ( 10 ( 3 1 ) 10 ( 3 1 1.9778 ) 6667 . 1 2 8889 . 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 2 ( 2 ) 2 ( 1 ) 3 ( 3 ) 2 ( 3 ) 2 ( 1 ) 3 ( 2 ) 2 ( 3 ) 2 ( 2 ) 3 ( 1 x x x x x x x x x  

Como resultado obtemos a aproximação  1.9778  2.8000  3.9111   da solução  exacta do sistema  Ax = b. 

(12)

Método

 

de

 

Gauss

Seidel

 

 

Uma vez isoladas as componentes do vector x, podemos construir a fórmula iterativa de  Gauss‐Seidel na forma algébrica 

, 1 2 ,

) 3 2 26 ( 6 1 ) 10 ( 3 1 ) 2 2 15 ( 5 1 ) ( 2 ) ( 1 ) ( 3 ) 1 ( 3 ) ( 1 ) ( 2 ) 1 ( 3 ) 1 ( 2 ) ( 1 , ... , k x x x x x x x x x k k k k k k k k k = ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ − − = − − = − − = − − −  

Esta fórmula iterativa é diferente da fórmula de Jacobi unicamente porque em cada iteração    são utilizados todos os valores já calculados na presente aproximação  . Observe‐se que no 

cálculo da primeira componente   são utilizados os valores  e    calculados na 

iteração anterior  1. Porém, para calcular a componente   é utilizado o valor   acabado 

de  calcular  em  vez do  anterior  ,  pois já  temos  um  valor mais actualizado desta 

componente. Como ainda não temos calculado   utilizamos o valor   calculado na 

anterior iteração. Finalmente, quando calculamos o valor de    podemos utilizar os valores de 

todas as restantes componentes  e    acabados de calcular na mesma iteração.   

Para  1 

⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = = = × − × − = − − = 1667 . 2 ) 3333 . 2 3 0000 . 3 2 26 ( 6 1 ) 3 2 26 ( 6 1 3333 . 2 ) 0 0000 . 3 10 ( 3 1 ) 10 ( 3 1 0000 . 3 5 15 ) 0 2 0 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 1 ( 2 ) 1 ( 1 ) 1 ( 3 ) 0 ( 3 ) 1 ( 1 ) 1 ( 2 ) 0 ( 3 ) 0 ( 2 ) 1 ( 1 x x x x x x x x x  

Para  2 

⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ = × − × − = − − = = − − == − − = = × − × − = − − = 8278 . 2 ) 2111 . 2 3 2000 . 1 2 26 ( 6 1 ) 3 2 26 ( 6 1 2111 . 2 ) .1667 2 2000 . 1 10 ( 3 1 ) 10 ( 3 1 2000 . 1 ) 1667 . 2 2 3333 . 2 2 15 ( 5 1 ) 2 2 15 ( 5 1 ) 2 ( 2 ) 2 ( 1 ) 2 ( 3 ) 1 ( 3 ) 2 ( 1 ) 2 ( 2 ) 1 ( 3 ) 1 ( 2 ) 2 ( 1 x x x x x x x x x  

Para  3 

(13)

Como resultado obtemos a aproximação  0.9844  2.0626  2.9739   da solução  exacta do sistema  Ax = b. 

 

Finalmente, podemos comparar as aproximações obtidas pelos dois métodos utilizando  a norma   do máximo (norma infinito) do vector resíduo associado a cada uma das  aproximações.  

 

Para o método de Jacobi: 

 

O vector resíduo associado à aproximação  1.9778  2.8000 3.9111  é:    

     

15 26 10

5 2 2 2 3 6 1 3 1

1.9778 2.8000 3.9111

8.3111 9.8222 4.2889

 

 

Calculando a norma do máximo obtém‐se 

max, , |r | 9.8222   

Para o método de Gauss‐Seidel 

 

O vector resíduo associado à aproximação   0.9844  2.0626  2.9739    

     

15 26 10

5 2 2 2 3 6 1 3 1

0.9844 2.0626 2.9739

0.0048 0 0.14611

 

Calculando a norma do máximo obtém‐se 

max, , |r | 0.14611   

Comparando as normas do vector resíduo podemos concluir que a melhor aproximação  ao finalizar três iterações é a obtida pelo método de Gauss‐Seidel. 

 

Como conhecemos a solução exacta do sistema Ax = b,   1  2  3 , podemos ainda  calcular o erro absoluto cometido em cada aproximação. 

     

Jacobi        12

3

1.9778 2.8000 3.9111

0.9778 0.8000 0.9111     

⇒  max , , |e | 0.9778 

 

Gauss‐Seidel      12

3

0.9844 2.0626 2.9739

    0.0156 0.0626     0.0261    

⇒  max , , |e | 0.0626 

r

(3)

 

=

   

b

    ‐        

A

       

x

(3)

 

r

(3)

 

=

   

b

    ‐        

A

      

x

(3)

(14)

     

Implementação

 

em

 

MatLab

 

 

Para a implementação dos métodos iterativos de Jacobi e Gauss‐Seidel em MatLab  podem ser utilizados comandos de MatLab que permitem resolver o problema na forma  matricial  ou  utilizar  duas  rotinas,  jacobi.m  e  gseid.m,    que  foram  criadas  e  disponibilizadas no pacote de rotinas da disciplina de Métodos Numéricos.  

 

Para jacobi.m e 

gseid.m 

  

 

 

             

No caso de ser definido outro critério de paragem, por exemplo, o critério pela norma  do resíduo, é preciso introduzir alterações no código destas rotinas, substituindo a  validação do critério implementado (tolerância absoluta ou relativa)  

 

       

pelo critério da norma do vector resíduo 

       

 

Resolução do exemplo utilizando as rotinas jacobi.m e gseid.m  

                 

format long;

A=[5 2 2; 1 3 1; 2 3 6] b=[15 10 26]'

X0=[0 0 0]' % solução inicial

delta = 0 % evita que pare pelo critério da tolerância absoluta %e/ou relativa a não ser que encontre a solução exacta

maxit = 3 % número máximo de iterações

xJ =jacobi(A,b,X0, delta, maxit) xGS =gseid(A,b,X0, delta, maxit)

norm_rJ=norm(b-A*xJ,inf) % norma infinito do vector resíduo

norm_rGS=norm(b-A*xGS,inf)

Entradas:  

9 A (n x n) ‐ matriz dos coeficientes (não singular)

 

9 b (n x 1) ‐ vector dos termos independentes

 

9 xa (n x 1) ‐ vector aproximação inicial 

 

9 delta ‐ tolerância de convergência do critério de paragem

 

o                 ( tolerância absoluta) 

ou         

     (tolerância relativa) 

(é usada a norma máxima ‐ inf) 

9 maxit ‐ máximo de iterações 

Saída: 

9 x (n x 1) ‐ vector aproximação da solução de Ax=b 

 

errox=norm(x'-xa,inf);

errorelx=errox/norm(x,inf);

if (errox < delta) | (errorelx < delta)

disp(' ');

disp('Gauss-Seidel converge com a tolerância desejada');

break; end

if (norm(b-A*x',inf) < delta)

disp(' ');

disp('Gauss-Seidel converge com a tolerância desejada');

break;

(15)

Resolução do exemplo utilizando os comandos do MatLab para resolver os métodos de  Jacobi e Gauss‐Seidel pela forma matricial  

                                                                                         

format short;

% Dados de entrada

A=[5 2 2; 1 3 1; 2 3 6] b=[15 10 26]'

x0=[0 0 0]' % solução inicial

% Metodo de Jacobi

D=diag(diag(A)) % matriz com elementos da diagonal de A

C =A-D % A= D + L + U -> C = L + U = A - D

Gj=-inv(D) * C % matriz de iteração de Jacobi

cj= inv(D) * b

x1 = Gj * x0 + cj x2 = Gj * x1 + cj x3 = Gj * x2 + cj

display (['Após k=', num2str(maxit),' iterações a solução

aproximada pelo método de Jacobi é']) x=x3

% Metodo de Gauss-Seidel

L =[0 0 0; 1 0 0; 2 3 0] U =[0 2 2; 0 0 1; 0 0 0]

C = inv(D+L) % C é a inversa de (D+L)

Ggs= - C * U % matriz de iteração de Gauss-Seidel

cgs= C * b

x1 = Ggs * x0 + cgs x2 = Ggs * x1 + cgs x3 = Ggs * x2 + cgs

display (['Após k=', num2str(maxit),' iterações a solução aproximada pelo método de Gauss-Seidel é'])

x=x3

disp('Norma do resíduo Jacobi');

norm_rJ=norm(b-A*xJ,inf)

(16)

 

Propostas de exercícios.  

 

1. Resolver o sistema   

⎪ ⎩ ⎪ ⎨ ⎧

= +

= +

+

= −

+

11 10

2

2 1 10

10

10

3 2

1

3 2

1

3 2

1

x x

x

x x

x

x x

x

 

 

pelo método de Jacobi na forma algébrica com  0  0  0   e tolerância absoluta  10 .  Calcule a norma de máximo do vector resíduo associado à aproximação encontrada.  

 

2. Dado o sistema   

⎪ ⎩ ⎪ ⎨ ⎧

= +

+

= +

+

= +

+

20 10 7

0 2 8 10

10 10

3 2 1

3 2 1

3 2 1

x x x

x x

x

x x x

a) Verificar a convergência do método de Jacobi  utilizando a condição suficiente nº 2 (CS2)  baseada no cálculo da norma da matriz de iteração G. 

b) Partindo  da  aproximação  inicial  0  0  0 ,  calcule  uma  aproximação   

      da solução do sistema dado   utilizando o método de Jacobi na forma  matricial. 

 

3. Dado o sistema   

⎪ ⎩ ⎪ ⎨ ⎧

= +

+

= +

= +

+

3 3 5

-2 3 4

1 6 2 4

3 2 1

3 2

1

3 2

1

x x x

x x

x

x x

x

 

a)  Reescreva  o  sistema3  para poder  garantir  que  os  métodos de  Jacobi  e  Gauss‐Seidel  convergem para a solução exacta do sistema Ax = b. 

b) Partindo da aproximação inicial  40.9   31.2  37.5  calcule uma aproximação   da 

solução do sistema dado   utilizando o método de Gauss‐Seidel na forma algébrica com 

tolerância absoluta  10  

       

3  

A matriz A  é quase diagonal dominante por linhas se se verificar que  a a i i j

ij

ii

≠ , |

|  . Neste caso os métodos 

de Jacobi e Gauss‐Seidel  convergem para a solução exacta mas a convergência é mais lenta 

(17)

     

4. Dado o sistema   

⎪ ⎩ ⎪ ⎨ ⎧

− = +

= +

+

= +

+

1 10

3 2

3 2 4

-7 2 5

3 2

1

3 2

1

3 2 1

x x

x

x x

x

x x x

   

a) Verifique a convergência dos métodos de Jacobi e Gauss‐Seidel. 

b) Partindo da aproximação inicial  1.2 1.2  0.2  aplique o métodos de Gauss‐Seidel 

utilizando a forma algébrica por forma a determinar   uma solução aproximada cujo vector  resíduo associado tenha norma de máximo inferior a 10‐2 . 

 

5.  Dado o sistema   

⎪ ⎩ ⎪ ⎨ ⎧

= +

+

= +

+

= +

+

11

8 2

8 6

6 4

3 2

1

3 2 1

3 2 1

x x

x

x x x

x x x

   

a) Verifique a convergência do métodos de Jacobi utilizando a condição necessária e suficiente  (CNS nº 3) baseada no cálculo do raio espectral da matriz G de iteração. 

b) Resolva  pelo  método  de  Jacobi  (3  iterações)  a  partir  da  aproximação  inicial 

2.4, 5, 0.3 .   

6.  O sistema linear    

1      1    2 2    3    2 1     2    1

1 1

1  

 

pode ser resolvido pelo método iterativo        

  k , , , ...

x x

x

x x

x

x x

x

k k

k

k k

k

k k

k

3 2 1 ,

2 1

3 2 3 2 3 1

-2

1

) ( 2 )

( 1 )

( 3

) 1 ( 3 )

( 1 )

( 2

) 1 ( 3 ) 1 ( 2 )

( 1

=

⎪ ⎪ ⎩ ⎪ ⎪ ⎨ ⎧

− −

=

+ +

=

− −

=

− − −

 

a) De que método iterativo se trata? Justifique. 

b) Partindo  de  0  0  0 ,  use  o  método  iterativo  considerado  para  calcular  uma 

aproximação         da solução do sistema dado. 

 

Soluções:   

1.  1.0000  1.0001   0.9999 ;  .91 10 ;  2.  GJ 0.9 1;  0.86 1.06  1.55 ;  3  b) 

41.1080  31.4286    37.7149 ; 4.  0.9995  0.9991   0.0002 ;  .46 10 ; 5.a) ℘(GJ)  = 

Referências

Documentos relacionados

da fundação dos primeiros núcleos cristãos (igrejas) até a morte de Herodes; o cumprimento de muitas promessas do Cristo; a prova da ressurreição e aparições

Descrição: Este é o processo pelo qual o cliente pode escolher a forma de pagamento do pacote de viagem e suas reservas (hotéis, passagens, guia turístico, passeios

belecendo-se, assim, os limites objetivos da lide, bem como descrever de forma precisa a causa de pedir fática e o pedido, identificando a tutela postulada (se cautelar ou

Parâmetros: Tipo de Íon (por exemplo íon fluoreto, íon de amônia, íon, de nitrogênio, calibração elétrica, calibração com material de referência certificado Nota:

A Prova de conhecimento teórico e construção argumentativa será realizada no dia 26 de janeiro de 2015 e a Arguição oral do projeto de pesquisa e do Currículo cadastrado na

O candidato deverá manter atualizado seu endereço e telefone na Coordenação do Campus Universitário até o resultado final do teste seletivo e durante o prazo de validade do

A maior diversidade de presas, encontrada na dieta das fêmeas adultas, pode estar relacionada com a necessidade de maior aporte energético para a reprodução em relação

o grupo martifer, pelo currículo, pela estrutura e pela capacidade atual está, no meu entender, capacitado para executar a maioria dos grandes projetos que se realizam