写一段代码,用Jacobi迭代法求解方程组,使精度小于0.0001,并计算迭代次数
时间: 2024-10-12 13:06:49 浏览: 30
在Python中,我们可以使用NumPy库来实现jacobi迭代法求解线性方程组。这是一个简单的示例,其中我们假设有一个二维数组A表示系数矩阵,另一个一维数组b表示常数项:
```python
import numpy as np
def jacobi_iteration(A, b, tolerance=1e-4, max_iter=1000):
n = len(b)
x = np.zeros(n) # 初始猜测值
Ax = A @ x # A * x,应用向量乘法
iter_count = 0
while True:
old_x = x.copy() # 保存旧的x值
x = (b - Ax) / A.diagonal() # 使用Jacobi迭代公式更新x
if np.allclose(x, old_x, atol=tolerance): # 检查是否达到精度
break
iter_count += 1
if iter_count >= max_iter: # 达到最大迭代次数
print("Max iterations reached")
break
return x, iter_count
# 示例方程组:A * x = b
A = np.array([[4, 1], [1, 3]])
b = np.array([7, 11])
solution, iteration_count = jacobi_iteration(A, b)
print(f"Solution after {iteration_count} iterations: {solution}")
```
在这个例子中,`atol`参数用于指定绝对误差阈值,`max_iter`设定最大迭代次数。当迭代结果满足给定的精度(这里是0.0001),或者达到最大迭代次数时,函数会停止并返回解决方案和迭代次数。
阅读全文