Método de Jacobi
Sea el sistema de ecuaciones
lineales Ax = b, donde A es la matriz de coefcientes, x es el vector de
incognitas y b el de terminos independientes.
En la ecuacion se puede sustituir a la matriz A por la suma
de dos matrices:
A=D+R
En donde D es una matriz cuyos elementos son cero excepto los ubicados en la
diagonal que corresponden a los
elementos de la matriz A y R que es una con ceros en la diagonal y sus
elementos restantes coinciden con los respectivos de A.
(D+R) x=b
Dx+Rx=b
Despejando el termino Dx:
Dx=b Rx
Pre multiplicando por
la matriz D1
D1 Dx=D 1 (b Rx)
Resulta:
x=D1 (b Rx)
La ecuación x(k+1) = D⁻¹(b − R·x(k)) es un método de
aproximaciones sucesivas, donde D contiene la diagonal de A y su inversa D⁻¹ tiene los recíprocos (1/aii).
R contiene el resto de A. Esta fórmula permite
despejar iterativamente cada variable del sistema lineal.
El metodo de Jacobi propone que el vector inicial x(0) sea igual
a cero.
Ejercicio 1. Realizar 3 iteraciones para el método de
jacobi
8X1 + 2X2 - X3 = 4
2X1 + 5X2 +
2X3 = 0
2X1 + X2 +
5X3 = 24
Resolución:
-
Paso 1, despejar X1, X2, X3.
X1 = 4 – 2X2 +X3 / 8
X2 = -2X3 -2X1 / 5
X3 = 24 -2X1 -X2 / 5
-
Paso 2, Inicializar los valores de las x con x =
0 e iterar.
X1 = 0
X2 = 0
X3 = 0
1. Iteración:
Usando los valores iniciales:
X1 = (1/8) * (4 – 2(0) + (0)) = 4/8 = 0.5
X2 = (1/5) * (-2(0) – 2(0)) = 0
X3 = (1/5) * (24 – 2(0) - 0) =
24/5 = 4.8
2. Iteración :
Usando los valores de la
iteración 1:
X1 = (1/8) * (4 - 20 + 4.8) = (4
+ 4.8)/8 = 8.8/8 = 1.1
X2 = (1/5) * (-20.5 - 24.8) = (
-1 - 9.6)/5 = -10.6/5 = -2.12
X3 = (1/5) * (24 - 20.5 - 0) =
(24 - 1)/5 = 23/5 = 4.6
3. Iteración:
Usando los valores de la
iteración 2:
X1 = (1/8) * (4 - 2*(-2.12) +
4.6) = (4 + 4.24 + 4.6)/8 = 12.84/8 = 1.605
X2 = (1/5) * (-21.1 - 24.6) =
(-2.2 - 9.2)/5 = -11.4/5 = -2.28
X3 = (1/5) * (24 - 2*1.1 -
(-2.12)) = (24 - 2.2 + 2.12)/5 = 23.92/5 = 4.784
Código
import numpy as np
#
Ejercicio 1 Jacobi
#(8X1
+2X2 - X3 = 4)
#(2X1
+5X2 + 2X3 = 0)
#(2X1
+X2 + 5X3 = 24)
def f1(x2, x3):
return (4 - 2*x2 + x3)/8
def f2(x1, x3):
return ( - 2*x1 - 2*x3)/5
def f3(x1, x2):
return (24 - 2*x1 - x2)/5
x1 = x2 = x3 = 0
# Valores iniciales
MaxIter = 3
print('Ejercicio 1\t')
print('\t')
for i in range(1, MaxIter + 1):
# Calcular nuevos valores
nuevo_x1 = f1(x2, x3)
nuevo_x2 = f2(x1, x3)
nuevo_x3 = f3(x1, x2)
# Mostrar
los resultados de la iteración actual
print('Iteracion 'f"{i}:\t\t{round(nuevo_x1, 6)}X1\t{round(nuevo_x2, 6)}X2\t{round(nuevo_x3, 6)}X3")
Ejecución
Conclusión y aplicabilidad
Su aplicación se extiende a diversas áreas como la
ingeniería, la física, las ciencias computacionales y la matemática aplicada,
donde se requiere rapidez y eficiencia en el cálculo numérico.
El método aun que si bien tiene sus atributos es uno de los
métodos más usados por su simple y la forma tan sencilla de resolver funciones
lineales de una forma iterativa.

Comentarios
Publicar un comentario