import numpy as np
def jacobi(A, b, tol=1e-10, max_iter=1000):
"""
Resuelve sistemas de ecuaciones lineales Ax = b usando el metodo de Jacobi
Parametros:
A: Matriz de coeficientes.
b: Vector de terminos independientes.
tol: Tolerancia para la convergencia.
max_iter: Maximo numero de iteraciones.
Retorna:
x: Solucion aproximada.
"""
n = len(b)
x = np.zeros(n)
x_new = np.zeros(n)
for k in range(max_iter):
for i in range(n):
x_new[i]= (b[i] - sum(A[i,j] * x[j] for j in range(n) if j != i))/A[i,i]
if np.linalg.norm(x_new - x) < tol:
print(f"Total de iteraciones necesitadas: {k}")
return x_new
x = x_new.copy()
print(f"No se pudo converger en {max_iter} iteraciones.")
return x
A = np.array([[3,-0.1,-0.2],[0.1,7,-0.3],[0.3,-0.2,10]], dtype=float)
b = np.array([7.85,-19.3,71.4], dtype=float)
ejemplo_jacobi = jacobi(A,b)
print(f"Solucion por gauss seidel: {ejemplo_jacobi}")