Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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}")
Advertisement
Add Comment
Please, Sign In to add comment