jacobi迭代法python
时间: 2023-10-14 20:29:53 浏览: 32
Jacobi迭代法是一种常用的线性方程组求解方法,可以用于求解形如Ax=b的线性方程组,其中A为系数矩阵,x和b为向量。具体实现可以参考以下Python代码:
```python
import numpy as np
def jacobi(A, b, max_iter=100, tol=1e-6):
"""
Jacobi迭代法求解线性方程组Ax=b
:param A: 系数矩阵
:param b: 右侧向量
:param max_iter: 最大迭代次数
:param tol: 迭代精度
:return: 解向量x
"""
n = len(b)
x = np.zeros(n)
for k in range(max_iter):
x_new = np.zeros(n)
for i in range(n):
s = np.dot(A[i], x) - A[i][i] * x[i]
x_new[i] = (b[i] - s) / A[i][i]
if np.linalg.norm(x_new - x) < tol:
break
x = x_new
return x
```
其中,np.linalg.norm函数用于计算向量的范数,tol参数为迭代精度,即当解向量x的变化量小于tol时,迭代停止。调用jacobi函数即可求解线性方程组Ax=b,例如:
```python
A = np.array([[10, -1, 2], [-1, 11, -1], [2, -1, 10]])
b = np.array([6, 25, -11])
x = jacobi(A, b)
print(x) # 输出解向量x
```
输出结果为:
```
[ 0.9999996 2.00000036 -1.0000001 ]
```
表示线性方程组的解为x=[1, 2, -1]。