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

Tabla

El contenido generado por IA puede ser incorrecto.

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

Entradas más populares de este blog

Métodos Numéricos