jacobi迭代法python
时间: 2023-09-03 18:12:00 浏览: 66
Jacobi迭代法是一种求解线性方程组的方法,可以用Python实现。下面是一个示例代码:
```python
import numpy as np
def jacobi(A, b, x0, tol=1e-10, max_iter=1000):
"""
Jacobi迭代法求解线性方程组Ax=b
参数:
A:系数矩阵
b:常数向量
x0:迭代初值
tol:容差,默认为1e-10
max_iter:最大迭代次数,默认为1000
返回值:
x:方程组的解
iter:迭代次数
"""
n = len(A)
x = x0.copy()
iter = 0
while iter < max_iter:
x_new = np.zeros_like(x)
for i in range(n):
s = sum(A[i][j] * x[j] for j in range(n) if j != i)
x_new[i] = (b[i] - s) / A[i][i]
if np.linalg.norm(x_new - x) < tol:
break
x = x_new
iter += 1
return x, iter
```
示例调用方式为:
```python
A = np.array([[4, 1, 1], [2, 5, 2], [1, 2, 4]])
b = np.array([4, 1, 2])
x0 = np.array([0, 0, 0])
x, iter = jacobi(A, b, x0)
print("解:", x)
print("迭代次数:", iter)
```
输出结果为:
```
解: [ 0.45454545 -0.09090909 0.31818182]
迭代次数: 20
```
注意:该示例代码中省略了输入参数的类型检查和异常处理等部分,实际使用时需要根据具体情况进行补充。