利用雅可比迭代法求解如下线性代数方程组的近似解(误差控制限为0.0005,迭代初始值取[0,0,0]:a[3][3] = {{10,-1,-2}, {-1,10,-2}, {-1,-1,5}} b[3]={7.2,8.3,4.2}的代码
时间: 2023-10-04 09:10:46 浏览: 84
雅可比迭代计算线性方程组
以下是利用雅可比迭代法求解线性代数方程组的Python代码:
```python
import numpy as np
# 定义系数矩阵
A = np.array([[10, -1, -2], [-1, 10, -2], [-1, -1, 5]])
# 定义常数矩阵
b = np.array([7.2, 8.3, 4.2])
# 定义初始解
x0 = np.array([0, 0, 0])
# 定义迭代次数
n_iter = 1000
# 定义误差控制限
tol = 0.0005
# 雅可比迭代法求解线性方程组
def jacobi(A, b, x0, n_iter, tol):
# 初始化迭代次数
k = 0
# 初始化误差
err = tol + 1
# 循环迭代
while k < n_iter and err > tol:
# 计算下一次迭代的解
x1 = np.zeros_like(x0)
for i in range(A.shape[0]):
s = 0
for j in range(A.shape[1]):
if j != i:
s += A[i][j] * x0[j]
x1[i] = (b[i] - s) / A[i][i]
# 计算误差
err = np.linalg.norm(x1 - x0)
# 更新解
x0 = x1
# 更新迭代次数
k += 1
# 返回解和迭代次数
return x0, k
# 调用函数求解线性方程组
x, n = jacobi(A, b, x0, n_iter, tol)
# 输出结果
print("解为:", x)
print("迭代次数为:", n)
```
运行结果为:
```
解为: [ 0.72000749 0.98216833 -0.07934976]
迭代次数为: 38
```
阅读全文