Escolar Documentos
Profissional Documentos
Cultura Documentos
x = Fx + d
Métodos Iterativos Estacionários
obtemos:
Métodos Iterativos Estacionários
Seja é uma forma comum de verificar a convergência de
métodos iterativos de solução de sistemas de
equações lineares, como os métodos iterativos
estacionários. Essa expressão indica que a norma
do vetor de diferenças entre a solução atual x(k+1)
e a solução anterior x é igual ao valor máximo da
diferença entre as coordenadas dos vetores.
Se
Existem várias maneiras de obtermos o sistema reescrito na forma x = Fx + d. E daí surgem os diversos métodos.
Os métodos iterativos estacionários são usados para resolver sistemas lineares, ou seja, encontrar a solução de um
conjunto de equações lineares. Esses métodos envolvem a iteração de uma fórmula matemática até que se atinja
uma solução satisfatória.
Em Python, é possível implementar esses métodos por meio de código. Alguns exemplos de métodos iterativos
estacionários são o método de Gauss-Seidel e o método de Jacobi.
Neste exemplo, a função gauss_seidel recebe como entrada uma matriz A, um vetor b, um vetor inicial x0, uma
tolerância tol e um número máximo de iterações max_iter.
A matriz A é a matriz dos coeficientes do sistema linear, b é o vetor das constantes do sistema linear e x0 é o
vetor inicial da solução.
No exemplo, a matriz A, o vetor b e o vetor inicial x0 são definidos e a função gauss_seidel é chamada para
calcular a solução do sistema linear. Em seguida, a solução é impressa na tela.
Método iterativo estacionário de Jacobi
A=D+L+U
D = [[3, 0, 0],
A = [[3, 1, 1],
[0, 4, 0],
[1, 4, 1], Decomposição [0, 0, 5]]
[2, 1, 5]]
Sendo que:
L = [[0, 0, 0],
D = matriz diagonal [1, 0, 0],
[2, 1, 0]]
L = matriz estritamente triangular inferior
U = [[0, 1, 1],
[0, 0, 1],
U = matriz estritamente triangular superior [0, 0, 0]]
Das diversas formas de escolher as combinações com essas três matrizes surgem as matrizes de
iteração e os diferentes métodos iterativos.
Método iterativo estacionário de Jacobi
● Exemplo 1
onde x_k é a aproximação da solução na k-ésima iteração e x_{k+1} é a aproximação na k+1-ésima iteração. O
termo D^{-1} (b - Lx_k - Ux_k) é o valor atualizado dos termos independentes do sistema.
Para aplicar o método de Jacobi, escolhemos uma aproximação inicial x_0 e atualizamos essa aproximação
usando a fórmula iterativa até que a solução seja suficientemente precisa. Por exemplo, podemos escolher x_0 =
[0, 0, 0] e aplicar a fórmula iterativa para obter as novas aproximações:
TEOREMA
Para calcular o valor de ro, precisamos encontrar o valor máximo absoluto de todos os elementos da matriz F. Isso pode
ser feito com o seguinte código em Python:
import numpy as np
# Definir a matriz A
A = np.array([[10, 2, 1],
No exemplo ao lado, a matriz A é
[1, 5, 1],
[2, 3, 10]])
definida manualmente, mas pode ser
# Separar em matrizes D, L e U substituída por outra matriz de
D = np.diag(np.diag(A))
L = np.tril(A, k=-1) coeficientes. O valor de ro é calculado
U = np.triu(A, k=1)
usando a função np.linalg.eigvals, que
# Calcular a matriz de iteração F
F = -np.linalg.inv(D).dot(L + U) retorna os autovalores da matriz F. O
# Calcular o valor de ro valor máximo absoluto dos autovalores é
ro = np.max(np.abs(np.linalg.eigvals(F)))
print('Valor de ro: ', ro) encontrado usando a função
np.max(np.abs()).
Condição de Convergência
Conforme Campos (2013), o cálculo do raio espectral da matriz iteração F, de forma
geral, é difícil de verificar e pode ocorrer de o esforço computacional empregado nesse
cálculo ser maior do que o esforço para calcular a resolução do sistema linear.
TEOREMA
O raio espectral da matriz iteração F pode ser calculado utilizando a biblioteca NumPy do Python da
seguinte maneira:
import numpy as np
Vamos comparar dois vetores e usar o critério absoluto ou o relativo. Optamos por usar o
teste relativo.
O critério relativo é utilizado para verificar se a solução obtida por um método iterativo está
próxima o suficiente da solução exata. Em geral, é utilizado o critério de parada de que a variação
relativa entre as iterações consecutivas deve ser menor do que uma tolerância pré-definida.
Nessa implementação, x_antigo e x_novo são os vetores de soluções nas iterações k e k+1,
respectivamente, e tol é a tolerância relativa. A função retorna True se o critério de parada foi satisfeito e
False caso contrário. O valor 1e-8 é utilizado como limite inferior para evitar divisão por zero caso x_novo
seja próximo de zero.
Critério de Parada
Ou, ainda, podemos usar como teste de parada o número máximo de iterações (ITMAX).
Se a precisão estabelecida não for atingida, mas ITMAX for parar o processo e emitir a mensagem, não foi possível
obter a solução aproximada com esse número de iterações.
Na realidade, o processo deve ser interrompido quando algum critério de parada for satisfeito
A norma do infinito é uma medida de distância vetorial
que representa o maior valor absoluto entre as
entradas do vetor. Matematicamente, a norma do Neste texto, adotamos a norma do
infinito de um vetor x = [x1, x2, ..., xn] é dada por: infinito para o cálculo do erro em cada
||x||∞ = max(|x1|, |x2|, ..., |xn|) iteração.
Em outras palavras, a norma do infinito é igual ao valor A tolerância ∈ define com qual exatidão a
absoluto da maior entrada do vetor.
solução é calculada.
Código abaixo calcula a norma do infinito de um vetor v em Python:
import numpy as np Nesse exemplo, o vetor v possui 5
print(norm_inf)
Critérios de Convergência
Observe que se a matriz for diagonal estritamente dominante, o critério das linhas é satisfeito.
a) Avaliar a convergência
A matriz dos coeficientes é diagonal estritamente dominante. Logo, satisfaz ao critério das
linhas. Então, o sistema converge para a solução independentemente do vetor inicial
fornecido.
A=D+L+U
Método Iterativo de Gauss-Seidel
Supondo det(D) ≠ 0, podemos transformar o sistema linear original em:
Seja:
Se
d) Trabalhe com tolerância < 0.0001, e com o número máximo de cinco iterações.
a) Avaliação da convergência
A matriz A dos coeficientes não está diagonal estritamente dominante e, da forma como se encontra,
não podemos usar um método numérico para resolvê-la, porque existem zeros na diagonal principal
e não é possível efetuar divisão por zero.
Desta forma, vamos permutar as linhas, de forma a colocar os maiores elementos na diagonal
principal.
Critérios de Convergência
Assim, a matriz dos coeficientes se tornou diagonal estritamente dominante e conseguimos garantir
a convergência para a solução, usando o método de Gauss-Seidel, independentemente do vetor de
aproximação inicial fornecido.
Critérios de Convergência