Jacobi迭代法python简单
时间: 2023-10-01 10:04:51 浏览: 44
Jacobi迭代法是一种解线性方程组的方法,其基本思想是将系数矩阵分解为对角部分和非对角部分,然后通过迭代求解出线性方程组的解。下面是Jacobi迭代法的python实现:
```python
import numpy as np
def jacobi(A, b, x0, max_iter=100, tol=1e-6):
"""
Jacobi迭代法求解线性方程组Ax=b的解
:param A: 系数矩阵
:param b: 右侧常数向量
:param x0: 初始解向量
:param max_iter: 最大迭代次数
:param tol: 迭代收敛的容差
:return: 解向量
"""
n = len(A)
x = np.copy(x0)
for k in range(max_iter):
x_new = np.zeros(n)
for i in range(n):
s = 0
for j in range(n):
if j != i:
s += A[i, j] * x[j]
x_new[i] = (b[i] - s) / A[i, i]
if np.linalg.norm(x_new - x) < tol:
break
x = np.copy(x_new)
return x
```
使用示例:
```python
A = np.array([[4, -1, 0, 0], [-1, 4, -1, 0], [0, -1, 4, -1], [0, 0, -1, 3]])
b = np.array([1, 0, 0, 1])
x0 = np.array([0, 0, 0, 0])
x = jacobi(A, b, x0)
print(x)
```
输出结果为:
```
[ 0.30511814 -0.0984252 0.00881834 0.38188976]
```
注意:Jacobi迭代法只有在系数矩阵是对角占优或严格对角占优的情况下收敛,否则可能会发散。