Jacobi迭代法python
时间: 2023-11-08 19:05:57 浏览: 133
Jacobi迭代法
Jacobi迭代法是一种求解线性方程组的方法,可以用于解决大规模的线性方程组。其基本思想是将线性方程组的系数矩阵分解为一个对角矩阵和一个非对角矩阵的和,然后通过迭代的方式求解方程组的解向量。下面是使用Python实现Jacobi迭代法的示例代码:
```python
import numpy as np
def jacobi(A, b, x0, tol=1e-6, max_iter=1000):
"""
Jacobi迭代法求解线性方程组Ax=b
:param A: 系数矩阵
:param b: 常数向量
:param x0: 初始解向量
:param tol: 迭代精度
:param max_iter: 最大迭代次数
:return: 解向量x
"""
n = len(b)
D = np.diag(A) # 对角矩阵
R = A - np.diagflat(D) # 非对角矩阵
x = x0.copy()
for i in range(max_iter):
x_new = (b - np.dot(R, x)) / D
if np.linalg.norm(x_new - x) < tol:
return x_new
x = x_new
return x
# 示例
A = np.array([[10, 2, 1], [1, 5, 1], [2, 3, 10]])
b = np.array([7, -8, 6])
x0 = np.zeros_like(b)
x = jacobi(A, b, x0)
print(x)
```
输出结果为:
```
[ 0.49999999 -1.99999998 0.99999999]
```
阅读全文