Você está na página 1de 40

Unidade 2

Sistemas Lineares métodos iterativos


Método iterativo
Dado um sistema linear 𝐴𝑥 = 𝑏 com det 𝐴 = 0 solução única 𝑥෤ = 𝑥෤1 , 𝑥෤2 , … , 𝑥෤𝑛 𝑇 , o
método iterativo fornece, a partir de uma solução inicial 𝑥෤ (0) , uma sequência de soluções
aproximadas 𝑥෤ 1 , 𝑥෤ 2 , 𝑥෤ 3 , … que convergem para a solução exata 𝑥෤ do sistema.

lim 𝑥෤ 𝑘 = 𝑥෤
𝑘→∞

Métodos iterativos 2
Método iterativo
O método iterativo reescrever o sistema original 𝐴𝑥 = 𝑏 para uma forma equivalente a
𝑥 = 𝐻𝑥 + 𝑔

onde H = matriz n x n de transição e g = vetor n x 1

A partir de uma solução inicial 𝑥෤ (0) , soluções “melhores” são obtidas iterativamente até algum
critério de parada ser satisfeito
𝑥 1 = 𝐻𝑥 0 +𝑔
2 1
𝑥 = 𝐻𝑥 +𝑔

𝑥 𝑘 = 𝐻𝑥 𝑘−1 +𝑔

Métodos iterativos 3
Método iterativo
• Os métodos iterativos são mais indicados para sistemas lineares muito grandes e esparsos

• Sistema linear esparsos é um sistema linear onde a maioria dos elementos da matriz de
coeficientes é zero.

Métodos iterativos 4
Método iterativo Jacobi-Richardson
Há várias formas de se obter a matriz H de transição

𝑥 = 𝐻𝑥 + 𝑔

Métodos iterativos 5
Método iterativo Jacobi-Richardson
A matriz A pode obtida pela soma da matriz diagonal D e matriz R, onde

• D = matriz diagonal formada pelos 𝑎𝑖𝑖 = elementos que estão na diagonal principal de A

• R = matriz com os elementos que estão fora da diagonal de A

Métodos iterativos 6
Método iterativo Jacobi-Richardson
Assim, partindo do sistema original 𝐴𝑥 = 𝑏 e sabendo que 𝐴 = 𝐷 + 𝑅, temos

𝐷+𝑅 𝑥 =𝑏

𝐷𝑥 = 𝑏 − 𝑅𝑥

𝑥 = 𝐷 −1 𝑏 − 𝑅𝑥

𝑥 = −𝐷 −1 𝑅𝑥 + 𝐷 −1 𝑏

𝒙 = 𝑯𝒙 + 𝒈

com 𝐻 = −𝐷 −1 𝑅 e 𝑔 = 𝐷 −1 𝑏

Métodos iterativos 7
Método iterativo Jacobi-Richardson
A partir de
𝑥 = −𝐷 −1 𝑅𝑥 + 𝐷 −1 𝑏

Temos a fórmula de recorrência

𝒙 𝒌 = −𝑫−𝟏 𝑹𝒙(𝒌−𝟏) + 𝑫−𝟏 𝒃

e, com algumas manipulações, chegamos nas seguintes equações de recorrências

𝒌 𝟏 (𝒌−𝟏)
𝒙𝒊 = 𝒃𝒊 − ෍ 𝒂𝒊𝒋 𝒙𝒋
𝒂𝒊𝒊
𝒊≠𝒋

Métodos iterativos 8
Método iterativo Jacobi-Richardson, JR
Considerando o sistema linear,

as fórmulas de recorrência no método JR, são obtidas isolando uma variável 𝑥𝑖 em cada linha

𝑘−1 𝑘−1 𝑘−1


𝑘 𝑏1 − 𝑎12 𝑥2 − 𝑎13 𝑥3 − ⋯ − 𝑎1𝑛 𝑥𝑛
𝑥1 =
𝑎11
𝑘−1 𝑘−1 𝑘−1
1 𝑘 𝑏2 − 𝑎21 𝑥1 − 𝑎23 𝑥3 − ⋯ − 𝑎2𝑛 𝑥𝑛
𝑘 (𝑘−1) 𝑥2 =
𝑥𝑖 = 𝑏𝑖 − ෍ 𝑎𝑖𝑗 𝑥𝑗 → 𝑎22
𝑎𝑖𝑖
𝑖≠𝑗 ⋮
𝑘−1 𝑘−1 𝑘−1
(𝑘) 𝑏𝑛 − 𝑎𝑛1 𝑥1 − 𝑎𝑛2 𝑥2 + ⋯ + 𝑎𝑛,𝑛−1 𝑥𝑛−1
𝑥𝑛 =
𝑎𝑛𝑛

Métodos iterativos 9
Exemplo 1
Resolva o sistema linear abaixo usando o método de Jacobi-Richardson iniciando em 𝑥 (0) = 0,0 e
como critério de parada use 2 (duas) iterações;

10𝑥 + 𝑦 = 23

𝑥 + 8𝑦 = 26

Métodos iterativos 10
Solução Início 𝑥 0
= 0 ,0 ,0
1
1ª iteração 𝑥 = 2.3 , 3.25

10𝑥 + 𝑦 = 23
ቊ 23 − 𝑦 0
23 − 0
𝑥 + 8𝑦 = 26 𝑥 1
= = = 2.3
10 10
0
1
26 − 𝑥 26 − 0
𝑦 = = = 3.25
𝑘 8 8
23 − 𝑦 𝑘+1
23 − 𝑦
𝑥= 𝑥 =
10 10

26 − 𝑥 26 − 𝑥 𝑘 2ª iteração 𝑥 2
= 1.975 , 2.9625
𝑦= 𝑦 𝑘+1
=
8 8
1
2
23 − 𝑦 23 − 3.25
𝑥 = = = 1.975
10 10
1
2
26 − 𝑥 26 − 2.3
𝑦 = = = 2.9625
8 8

Após duas iterações, a solução é: 𝒙 ≈ 𝟏. 𝟗𝟕𝟓 ; 𝒚 ≈ 𝟐. 𝟗𝟔𝟐𝟓

Métodos iterativos 11
Critério de parada
1). Quantidade máxima de iterações (M)
iterações pararam se #iterações ≥ M

2). Erro absoluto

𝑥 𝑘 −𝑥 𝑘−1 ≤ 𝜀𝑎𝑏𝑠

3). Erro relativo

𝑥 𝑘 −𝑥 𝑘−1

𝑘−1
≤ 𝜀𝑟𝑒𝑙
𝑥 ∞

Métodos iterativos 12
Norma de vetores

Seja um vetor 𝑥 = (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) no 𝑅𝑛 , a norma 𝒑 do vetor é definido por

1/𝑝
𝑝
𝑥 𝑝 = ෍ 𝑥𝑖
𝑖

Métodos iterativos 13
Exemplo de algumas normas

• Norma 1: Norma da Soma


1/1

𝑝=1 → 𝑥 = ෍ 𝑥𝑖 1 = ෍ 𝑥𝑖 = 𝑥1 + 𝑥2 + ⋯ + 𝑥𝑛
1
𝑖 𝑖

• Norma 2: Norma Euclidiana

1/2

𝑝=2 → 𝑥 2 = ෍ 𝑥𝑖 2
= ෍ 𝑥𝑖 2 = 𝑥12 + 𝑥22 + ⋯ + 𝑥𝑛2
𝑖 𝑖

• Norma infinita: norma do máximo absoluto

𝑝=∞ → 𝑥 ∞ = max 𝑥1 , 𝑥2 , … , 𝑥𝑛

Métodos iterativos 14
Exemplo 2
Seja o vetor x = (1, -3, 5), calcule as normas 𝑥 1 , 𝑥 2 e 𝑥 ∞

Solução ------------------------------------------------------------------------------------------------------------------------------------

𝑥 1 = 𝑥1 + 𝑥2 + 𝑥3 = 1 + −3 + 5 = 1 + 3 + 5 = 9

𝑥 2 = 𝑥12 + 𝑥22 + 𝑥32 = 1 2 + −3 2 + 5 2 = 1 + 9 + 25 = 35

𝑥 ∞ = max 𝑥1 , 𝑥2 , 𝑥3 = max 1 , −3 , 5 = max 1, 3, 5 = 5

Métodos iterativos 15
Exemplo 3
Resolva o sistema linear abaixo usando o método de Jacobi-Richardson iniciando em
𝑥 (0) = 0,0,0 e como critério de parada um erro absoluto 𝜀 < 10−3 = 0,001

7𝑥1 − 2𝑥2 + 3𝑥3 = 13


ቐ4𝑥1 + 10𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 6𝑥3 = 17

Métodos iterativos 16
Solução

7𝑥1 − 2𝑥2 + 3𝑥3 = 13


ቐ4𝑥1 + 10𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 6𝑥3 = 17

𝑘−1 𝑘−1
13 + 2𝑥2 − 3𝑥3 𝑘 13 + 2𝑥2 − 3𝑥3
𝑥1 = 𝑥1 =
7 7
49 − 4𝑥1 + 3𝑥3 𝑘−1 𝑘−1
→ 𝑘 49 − 4𝑥1 + 3𝑥3
𝑥2 = 𝑥2 =
10 10
17 − 2𝑥1 + 𝑥2 𝑘−1 𝑘−1
𝑥𝑛 = 𝑘 17 − 2𝑥1 + 𝑥2
6 𝑥3 =
6

Métodos iterativos 17
Solução
0 0 0 0
Início 𝑥 = 0 ,0 ,0 → 𝑥1 = 0 ; 𝑥2 =0 ; 𝑥3 =0
1ª iteração 𝑥 1 = 1.8571 , 4.9 , 2.8333

0 0
1 13 + 2𝑥2 + 3𝑥3 1 13 + 2 0 − 3 0
𝑥1 = 𝑥1 = = 1.8571
7 7
0 0 49 − 4 0 + 3 0
1 49 − 4𝑥1 + 3𝑥3 → 1
𝑥2 = 𝑥2 = = 4.9
10 10
0
17 − 2𝑥1 + 𝑥2
0 1 17 − 2 0 + 1 0
𝑥3
1
= 𝑥3 = = 2.8333
6 6

Métodos iterativos 18
Solução
Início 𝑥 0 = 0 ,0 ,0
1ª iteração 𝑥 1 = 1.8571 , 4.9 , 2.8333

Verificando o critério de parda

𝑥 (1) − 𝑥 0

≤ 0.001

1.8571 0 1.8571
𝑥 (1) −𝑥 0

= 4.9 − 0 = 4.9 = 2.8333 > 0.001
2.8333 0 ∞ 2.8333 ∞

critério não foi satisfeito, então o processo deve continuar

Métodos iterativos 19
Solução
Início 𝑥 0 = 0 ,0 ,0
1ª iteração 𝑥 1 = 1.8571 , 4.9 , 2.8333
2ª iteração 𝑥 2 = 2.0429 , 5.0071 , 3.0310

1 1
2 13 + 2𝑥2 + 3𝑥3 1 13 + 2 4.9 − 3 2.8333
𝑥1 = 𝑥1 = = 2.0429
7 7
1 1 49 − 4(1.8571) + 3 2.8333
2 49 − 4𝑥1 + 3𝑥3 → 1
𝑥2 = 𝑥2 = = 5.0071
10 10
1
17 − 2𝑥1 + 𝑥2
1 1 17 − 2 1.8571 + 1(4.9)
𝑥3
2
= 𝑥3 = = 3.0310
6 6

Métodos iterativos 20
Solução
Início 𝑥 0 = 0 ,0 ,0
1ª iteração 𝑥 1 = 1.8571 , 4.9 , 2.8333
2ª iteração 𝑥 2 = 2.0429 , 5.0071 , 3.0310

Verificando o critério de parada

𝑥 (2) − 𝑥 1

≤ 0.001

2.0429 1.8571 0.1857


𝑥 (2) −𝑥 1

= 5.0071 − 4.9 = 0.1071 = 0.1976 > 0.001
3.0310 2.8333 ∞ 0.1976 ∞

critério não foi satisfeito, então o processo deve continuar

Métodos iterativos 21
Solução
No Excel

Critério
k x1 x2 x3 Satisfeito ?
< 0.001
0 0 0 0 --
1 1.857143 4.9 2.833333 4.9 NÃO
2 2.042857 5.007143 3.030952 0.197619 NÃO
3 1.988776 4.992143 2.986905 0.054082 NÃO
4 2.003367 5.000561 3.002432 0.015527 NÃO Solução
5 1.999118 4.999383 2.998971 0.004249 NÃO
1.999931
6 2.000265 5.000044 3.000191 0.00122 NÃO 𝑥෤ = 4.999951
2.999919
7 1.999931 4.999951 2.999919 0.000334 SIM

Métodos iterativos 22
Gráfico

Métodos iterativos 23
Método iterativo Gauss-Seidel, GS
(𝑘)
Semelhante ao método de Jacobi, com a diferença de que no cálculo de 𝑥𝑖 , o método GS
aproveita os valores mais atualizados (que acabou de serem calculados) na mesma k-ésima iteração.

𝑘 1 𝑘−1 𝑘−1 𝑘−1 (𝑘−1)


𝑥1 = 𝑏1 − 𝑎12 𝑥2 − 𝑎13 𝑥3 − 𝑎14 𝑥4 − ⋯ − 𝑎1𝑛 𝑥𝑛
𝑎11
𝑘 1 𝒌 𝑘−1 𝑘−1 (𝑘−1)
𝑥2 = 𝑏2 − 𝒂𝟐𝟏 𝒙𝟏 − 𝑎23 𝑥3 − 𝑎24 𝑥4 − ⋯ − 𝑎2𝑛 𝑥𝑛
𝑎22
𝑘 1 𝒌 𝒌 𝑘−1 (𝑘−1)
𝑥3 = 𝑏3 − 𝒂𝟑𝟏 𝒙𝟏 − 𝒂𝟑𝟐 𝒙𝟐 − 𝑎34 𝑥4 − ⋯ − 𝑎3𝑛 𝑥𝑛
𝑎33

𝑘 1 𝒌 𝒌 𝒌 (𝒌)
𝑥𝑛 = 𝑏𝑛 − 𝒂𝒏𝟏 𝒙𝟏 − 𝒂𝒏𝟐 𝒙𝟐 − 𝒂𝒏𝟑 𝒙𝟑 − ⋯ − 𝒂𝒏,𝒏−𝟏 𝒙𝒏−𝟏
𝑎𝑛𝑛

Métodos iterativos 24
Exemplo 4
Resolva o sistema linear abaixo usando o método de Gauss-Seidel iniciando em
𝑥 (0) = 0,0,0 e como critério de parada um erro absoluto 𝜀 < 0,001

7𝑥1 − 2𝑥2 + 3𝑥3 = 13


ቐ4𝑥1 + 10𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 6𝑥3 = 17

Métodos iterativos 25
Solução

7𝑥1 − 2𝑥2 + 3𝑥3 = 13


ቐ4𝑥1 + 10𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 6𝑥3 = 17

𝑘−1 𝑘−1
13 + 2𝑥2 + 3𝑥3 𝑘 13 + 2𝑥2 + 3𝑥3
𝑥1 = 𝑥1 =
7 7
49 − 4𝑥1 + 3𝑥3 𝒌 𝑘−1
→ 𝑘 49 − 4𝒙𝟏 + 3𝑥3
𝑥2 = 𝑥2 =
10 10
17 − 2𝑥1 + 𝑥2 𝒌 𝒌
𝑥𝑛 = 𝑘 17 − 2𝒙𝟏 + 𝒙𝟐
6 𝑥3 =
6

Métodos iterativos 26
Solução
No Excel

k x1 x2 x3 criterio satisfeito ?
0 0 0 0 --
1 1.857143 4.157143 2.907143 4.157143 NÃO
2 1.79898 5.052551 3.075765 0.895408 NÃO
3 1.982544 5.029712 3.010771 0.183564 NÃO Solução
4 2.003873 5.001682 2.998989 0.02803 NÃO
1.999987
5 2.000914 4.999331 2.999584 0.002959 NÃO 𝑥෤ = 4.99988
2.999984
6 1.999987 4.99988 2.999984 0.000926 SIM

Métodos iterativos 27
Critério de convergência
Critério da diagonal estritamente dominante

Basta que o sistema linear satisfaça “apenas” um dos critérios acima para ter convergência
garantida, independentemente da escolha do vetor inicial 𝑥෤ 0 usado.

Métodos iterativos 28
Exemplo 5

Usando o critério de convergência no sistema é certo que ele irá convergir no processo iterativo?

7𝑥1 − 2𝑥2 + 3𝑥3 = 13


ቐ4𝑥1 + 10𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 6𝑥3 = 17

Solução ----------------------------------------------------------------------------------------------------------------------
Critério da coluna: |7| > |4| + |2| = 6 ok ; |10| > |-2| + |-1| = 3 ok ; |6| > |3| + |-3| = 6 não
Critério da linha: |7| > |-2| + |3| = 5 ok ; |10| > |4| + |-3| = 7 ok ; |6| > |2| + |-1| = 3 ok

RESPOSTA: Sim, é certo que irá convergir. O sistema acima tem elementos da diagonal principal
que são dominantes nas LINHAS.

Métodos iterativos 29
Exemplo 6

Resolva o sistema linear usando o método de Jacobi-Richardson iniciando em 𝑥 (0) = 1,1,1


e com precisão de no erro absoluto 𝜀 < 0,001

𝑥1 − 2𝑥2 + 3𝑥3 = 13
ቐ4𝑥1 + 𝑥2 − 3𝑥3 = 49
2𝑥1 − 𝑥2 + 𝑥3 = 17

Métodos iterativos 30
Solução
𝑥1 − 2𝑥2 + 3𝑥3 = 13
ቐ 4𝑥1 + 𝑥2 − 3𝑥3 = 49
2𝑥1 − 2𝑥2 + 𝑥3 = 17

Primeiro vamos ver o critério


Coluna: |1| > |4| + |2| = 6 não ; |1| > |-2| + |-2| = 3 não ; |1| > |3| + |-3| = 6 não
Linha: |1| > |-2| + |3| = 5 não ; |1| > |4| + |-3| = 7 não ; |1| > |2| + |-2| = 3 não

Não é garantido que o sistema linear irá convergir (ele pode convergir, como também não
convergir). O sistema não tem elementos na diagonal principal que são dominantes nas LINHAS
ou COLUNAS

Métodos iterativos 31
Solução
O sistema realmente não convergiu.

k x1 x2 x3 criterio satisfeito ?
0 0 0 0 --
1 13 49 17 49 não
2 60 48 89 72 não
3 -158 76 -7 218 não
4 186 660 485 584 não
5 -122 760 965 480 não
.. ... ... ... ... ...
12 -166386 1896456 1475333 -166386 não

Métodos iterativos 32
Vetor resíduo

Uma forma de avaliar a precisão da solução 𝑥෤ é calcular o vetor de resíduos 𝑟෤.

Partindo de

𝐴𝑥 = 𝑏

Temos

𝑟෤ = 𝑏 − 𝐴𝑥෤

Métodos iterativos 33
Exemplo 7

Para o sistema abaixo, calcule o vetor resíduo considerando solução 𝑥෤ = (1, 2)

5𝑥 − 2𝑦 = 1

−3𝑥 + 4𝑦 = 5

Solução --------------------------------------------------------------- ---------------------------------------------------------

1 5 −2 1 1 1 0
𝑟ǁ = 𝑏 − 𝐴𝑥෤ = − ⋅ = − =
5 −3 4 2 5 5 0

Como o vetor resíduo foi zero, então (1, 2) é solução exata.

Métodos iterativos 34
Exemplo 8

Calcule o vetor resíduo para a solução do exemplo 2

Solução --------------------------------------------------------------------------------------------------

13 7 −2 3 1.999931 13 12.99937 −0.000628


𝑟෤ = 49 − 4 10 −3 ⋅ 4.999951 = 49 − 48.99948 = −0.000523
17 2 −1 6 2.999919 17 16.99943 −0.000575

Métodos iterativos 35
Usando o Octave
>> % criando o vetor dos termos independentes
>> b = [13 ; 49; 17]

>> % criando a matriz dos coeficientes


>> A = [7,-2,3 ; 4,10,-3; 2,-1,6]

>> % Criando a matriz aumentada


>> M = [A b]

>> % Escalonamento de Gauss-Jordan usando o comando rref()


>> rref(M)
ans =

1.0000 0 0 2
0 1.0000 0 5
0 0 1.0000 3

Métodos iterativos 36
Usando método Jacobi no Octave
b = [13;49;17];
A = [7,-2,3;4,10,-3;2,-1,6];

N = 10; # máximo de iterações;


x0 = [15,15,15]; # x = vetor com as soluções em cada iteração;
n = size(A,2); # número de colunas (= variáveis) em A;
tol = 0.001; # tolerancia fixada;
x = zeros(1,n); # inicializando vetor x que tera as solucoes;

# loop para cada iteração;


iter = 1;
while (iter <= N)
for i=1:n
x(i) = ( b(i) - A(i,[1:i-1,i+1:n]) * x0([1:i-1,i+1:n])' ) / A(i,i);
endfor

# critério parada;
norma = norm(x - x0, 'inf');
saida = [iter, x, norma];
fprintf('\t %3d \t %.5f \t %.5f \t %.5f \t %.5f \n', saida);
if (norma < tol) return
endif

x0 = x; # x0 guardará a solução anterior;


iter += 1;
endwhile

Métodos iterativos 37
Criando uma função no Octave
Comando function do Octave

function [saida] = nome_funcao(entrada)

<< comandos >>


endfunction

"saida" valor que a função retorna

"nome_funcao" nome da função

"entrada" argumentos que a função aceita

Métodos iterativos 38
Criando uma função no Octave
function [x] = jacobi(A,b,x0,tol,N)

n = size(A,2);
x = zeros(1,n); # inicializando vetor x que tera as solucoes;
iter = 1;

while (iter <= N)


for i=1:n
x(i) = ( b(i) - A(i,[1:i-1,i+1:n]) * x0([1:i-1,i+1:n])' ) / A(i,i);
endfor

# critério parada;
norma = norm(x - x0, 'inf');
saida = [iter, x, norma];
fprintf('\t %3d \t %.5f \t %.5f \t %.5f \t %.5f \n', saida);
if (norma < tol) return
endif

x0 = x; # x0 guardará a solução anterior;


iter += 1;

endwhile

endfunction

Métodos iterativos 39
Usando a função ‘jacobi’ criada
b = [13;49;17];

A = [7,-2,3;4,10,-3;2,-1,6];

jacobi(A, b, x0, 0.001, 10)

Métodos iterativos 40

Você também pode gostar