Linsis Iterativo
Linsis Iterativo
Métodos Iterativos
Prof. Afonso Paiva
! WARNING
usar somente quando os
métodos diretos possuírem
limitações computacionais
Introdução
Introdução
Definição
Uma sequência de vetores {x(0) , x(1) , x(2) , . . .} converge para um vetor x, se
lim kx(k) − xk = 0 .
k→ ∞
Notação: x(k) → x.
Introdução
Introdução
x = Cx + g ,
Introdução
x = Cx + g ,
Introdução
Perguntas:
Introdução
Perguntas:
Introdução
Perguntas:
Introdução
Perguntas:
Introdução
Perguntas:
Quando x(k) → x?
Introdução
Perguntas:
Quando x(k) → x?
Convergência
Convergência
Critérios de Parada
Voltando a pergunta de quando devemos parar a sequência {x(k) }k∞=0 ?
Critérios de Parada
Voltando a pergunta de quando devemos parar a sequência {x(k) }k∞=0 ?
Critérios de Parada
Voltando a pergunta de quando devemos parar a sequência {x(k) }k∞=0 ?
Critérios de Parada
Voltando a pergunta de quando devemos parar a sequência {x(k) }k∞=0 ?
Critérios de Parada
Voltando a pergunta de quando devemos parar a sequência {x(k) }k∞=0 ?
k = kmax .
Método de Gauss-Jacobi
Método de Gauss-Jacobi
Método de Gauss-Jacobi
Logo,
x1 = (b1 − a12 x2 − a13 x3 − · · · − a1n xn )/a11
x2 = (b2 − a21 x1 − a23 x3 − · · · − a2n xn )/a22
x3 = (b3 − a31 x1 − a32 x2 − · · · − a3n xn )/a33
..
.. ..
. . .
xn = (bn − an1 x1 − an2 x2 − · · · − an,n−1 xn−1 )/ann
Método de Gauss-Jacobi
Logo,
x1 = (b1 − a12 x2 − a13 x3 − · · · − a1n xn )/a11
x2 = (b2 − a21 x1 − a23 x3 − · · · − a2n xn )/a22
x3 = (b3 − a31 x1 − a32 x2 − · · · − a3n xn )/a33
..
.. ..
. . .
xn = (bn − an1 x1 − an2 x2 − · · · − an,n−1 xn−1 )/ann
Método de Gauss-Jacobi
Portanto, dado o chute inicial x(0) , o processo iterativo é dado por:
(k +1) (k ) (k ) (k )
x1 = (b1 − a12 x2 − a13 x3 − · · · − a1n xn )/a11
(k +1) (k ) (k ) (k )
x2 = (b2 − a21 x1 − a23 x3 − · · · − a2n xn )/a22
(k +1) (k ) (k ) (k )
x3 = (b3 − a31 x1 − a32 x2 − · · · − a3n xn )/a33
.. .. ..
. . .
x(k +1)
(k ) (k )
= (bn − an1 x1 − an2 x2 − · · · − an,n−1 xn−1 )/ann
(k )
n
Método de Gauss-Jacobi
Forma Matricial
Ax = b ⇔ (A − D + D)x = b ⇔ (A − D)x + Dx = b
Método de Gauss-Jacobi
Forma Matricial
Ax = b ⇔ (A − D + D)x = b ⇔ (A − D)x + Dx = b
Dessa forma,
Método de Gauss-Jacobi
Forma Matricial
Ax = b ⇔ (A − D + D)x = b ⇔ (A − D)x + Dx = b
Dessa forma,
Método de Gauss-Jacobi
Critérios de Convergência
Método de Gauss-Jacobi
Critérios de Convergência
∑nj=1 |akj |
j6 =k
α = max {αk } < 1 , com αk =
1≤k ≤n |akk |
Método de Gauss-Jacobi
Critérios de Convergência
∑nj=1 |akj |
j6 =k
α = max {αk } < 1 , com αk =
1≤k ≤n |akk |
∑ni=1 |aik |
i6 =k
α = max {αk } < 1 , com αk =
1≤k ≤n |akk |
Método de Gauss-Jacobi
Critérios de Convergência
Observações:
Método de Gauss-Jacobi
Critérios de Convergência
Observações:
Método de Gauss-Jacobi
Exercı́cio 1
Considere o sistema linear:
8x1 + x2 − x3 = 8
x1 − 7x2 + 2x3 = −4 .
2x1 + x2 + 9x3 = 12
Método de Gauss-Jacobi
Exercı́cio 2
Considere o sistema linear:
x1 + 3x2 + x3 = −2
5x + 2x2 + 2x3 = 3 .
1
6x2 + 8x3 = −6
Método de Gauss-Seidel
Método de Gauss-Seidel
(k +1) (k ) (k ) (k ) (k )
x1 = (b1 − a12 x2 − a13 x3 − a14 x4 − · · · − a1n xn )/a11
(k +1) (k +1) (k ) (k ) (k )
x2 = (b2 − a21 x1 − a23 x3 − a24 x4 − · · · − a2n xn )/a22
(k +1) (k +1) (k +1) (k ) (k )
x3 = (b3 − a31 x1 − a32 x2 − a34 x4 − · · · − a3n xn )/a33
.. .. ..
. . .
x(k +1)
= (bn − an1 x1
(k +1)
− an2 x2
(k +1) (k +1)
− · · · − an,n−1 xn−1 )/ann
n
Método de Gauss-Seidel
Forma Matricial
Ax = b ⇔ (L + R)x = b ⇔ Lx + Rx = b
Método de Gauss-Seidel
Forma Matricial
Ax = b ⇔ (L + R)x = b ⇔ Lx + Rx = b
Dessa forma,
Método de Gauss-Seidel
Forma Matricial
Ax = b ⇔ (L + R)x = b ⇔ Lx + Rx = b
Dessa forma,
Método de Gauss-Seidel
Critério de Sassenfeld
Método de Gauss-Seidel
Exercı́cio 3
Considere o sistema linear:
x1 + 0.5x2 + 0.1x3 = 0.2
0.3x1 + 2x2 + 0.2x3 = 0.7 .
−0.5x1 + x2 + 7x3 = 1
Gauss-Jacobi × Gauss-Seidel
8000
7000
Jacobi
iterações 6000
Seidel
5000
4000
3000
2000
1000
0
0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01
erro
Gauss-Jacobi × Gauss-Seidel
8000
7000
Jacobi
iterações 6000
Seidel
5000
4000
3000
2000
1000
0
0 0.001 0.002 0.003 0.004 0.005 0.006 0.007 0.008 0.009 0.01
erro
Aplicação
Distribuição de Temperatura
20
25 20
30
Aplicação
Distribuição de Temperatura
20
25 20
30
Aplicação
Distribuição de Temperatura
20
x1 x3
25 20
x2 x4
30
Aplicação
Distribuição de Temperatura
20
x1 x3
25 20
x2 x4
30
Aplicação
Distribuição de Temperatura
20
x1 x3
25 20
x2 x4
30
Aplicação
Distribuição de Temperatura
20
20 + 25 + x2 + x3
x1 =
4
x1 x3 x2 =
x1 + 25 + 30 + x4
4
25 20 20 + x1 + x4 + 20
x2 x4 x3 =
4
x3 + x2 + 30 + 20
x4 =
30 4
Aplicação
Distribuição de Temperatura
20
20 + 25 + x2 + x3
x1 =
4
x1 x3 x2 =
x1 + 25 + 30 + x4
4
25 20 20 + x1 + x4 + 20
x2 x4 x3 =
4
x3 + x2 + 30 + 20
x4 =
30 4
4 −1 −1 0 x1 45
−1 4 0 −1 x2 55
=
−1 0 4 −1 x3 40
0 −1 −1 4 x4 50
Aplicação
Distribuição de Temperatura
Exercı́cio 4
Dada uma placa quadrada de lado [0, 1] × [0, 1] metros, já com os
valores de temperatura prescritos na fronteira. Faça uma função em
MATLAB que calcule e visualize a distribuição de temperaturas nesta
placa usando o Método de Gauss-Seidel e um grid de resolução n × n.
Formas Quadráticas
Sejam A ∈ M(n, n), b ∈ Rn e c ∈ R. Uma forma quadrática é uma
função F : Rn → R escrita da seguinte maneira:
1 >
F(x) = x Ax − x> b + c ,
2
Formas Quadráticas
Sejam A ∈ M(n, n), b ∈ Rn e c ∈ R. Uma forma quadrática é uma
função F : Rn → R escrita da seguinte maneira:
1 >
F(x) = x Ax − x> b + c ,
2
Formas Quadráticas
Proposição
Se A é SPD então F(x) é minimizada pela solução de Ax = b.
Formas Quadráticas
Proposição
Se A é SPD então F(x) é minimizada pela solução de Ax = b.
Esboço da prova:
1 Mostrar que x é ponto de crı́tico, isto é,
∇F(x) = Ax − b = 0 ⇒ Ax = b .
∂2 F(x)
H= = A,
∂xi xj
F(α)
-0.05
-0.1
-0.15
-0.2
-0.25
-0.3
-0.35
-0.4
-0.45
-0.5
-0.4 -0.2 0 0.2 0.4 0.6 0.8 1
∂F (1) ∂x(1)
= ∇ F ( x(1) ) ·
(x ) |{z} = ∇ F ( x(1) ) · r(0) = 0
∂α ∂α | {z }
r. cadeia
− r(1)
r(0) · r(0)
α=
r(0) · Ar(0)
Exercı́cio 5
Utilize o Método dos Gradiente com x(0) = (−2, 2)> para calcular uma
aproximação da solução do sistema abaixo:
3 2 x 2
= .
2 6 y −8
kmax = 1000;
for k=1:kmax
r = b - A*x0;
if norm(r)<tol
x = x0;
k = k-1;
return;
end
alpha = (r'*r)/(r'*A*r);
x0 = x0 + alpha*r;
end