Questão 2 - [ 2.50 ponto(s) ] - Escreva um programa em Python capaz de resolver o sistema linear utilizando o método de Jacobi até a (10) décima iteração.
Passo 1
O enunciado pede um programa em Python que resolva o sistema
usando o método iterativo de Jacobi com exatamente 10 iterações. Vamos usar a forma de iteração
onde
é a diagonal de
, e
são as partes estritamente triangular inferior e superior de
.
Passo 2
Reescrevemos cada equação isolando a incógnita principal:
Essas fórmulas serão usadas para atualizar simultaneamente
a cada iteração.
Passo 3
Definimos um palpite inicial. O mais comum é escolher
Depois, em cada iteração
, calculamos
Passo 4
Vamos agora escrever o programa em Python. Nele:
- Inicializamos a lista ou tupla do chute inicial.
- Fazemos um laço
for
de 1 até 10. - Em cada passo, criamos novas variáveis segundo as fórmulas de Jacobi.
- Atualizamos o vetor solução e, opcionalmente, imprimimos o valor de cada iteração.
Resposta
def jacobi(\(n_iter =10\)):
# Coeficientes do sistema
# A x = b
# A = [[10, 2, 1],
# [ 2,15,-1],
# [ 1,-1,12]]
b = [14, -12, 20]
# chute inicial x^(0)
\(x_old\) = [0.0, 0.0, 0.0]
for k in range(1, \(n_iter +1\)):
x\(1=\) (b[0] - 2*\(x_old\)[1] - 1*\(x_old\)[2]) / 10
x\(2=\) (b[1] - 2*\(x_old\)[0] \(+1\)*\(x_old\)[2]) / 15
x\(3=\) (b[2] - 1*\(x_old\)[0] \(+1\)*\(x_old\)[1]) / 12
# atualiza para próxima iteração
\(x_old\) = [x1, x2, x3]
# exibe iteração e valores
print(f"Iter {k:2d}: x1 = {x1:.6f}, x2 = {x2:.6f}, x3 = {x3:.6f}")
return \(x_old\)
# Executando 10 iterações de Jacobi
if __name__ \(==\) "__main__":
sol = jacobi(10)
print("Solução aproximada após 10 iterações:", sol)