数值计算解线性方程组迭代方法——雅克比迭代法
雅可比迭代法是解线性方程组的数值计算方法之一,其基本思想是不断迭代更新当前解的各个分量,直到解收敛到预定精度为止。下面是雅可比迭代法的
Python 代码实现:
import numpy as np
def Jacobi(A, b, x0, tol=1e-6, maxiter=100):
"""
Jacobi迭代法求解线性方程组Ax=b
参数:
A: 系数矩阵
b: 右端常数列
x0: 迭代初始向量
tol: 目标精度
maxiter: 最大迭代次数
返回值:
x: 方程组的近似解
"""
n = len(b)
x = np.copy(x0)
for k in range(maxiter):
for i in range(n):
s = 0
for j in range(n):
if j != i:
s += A[i][j] * x[j]
x[i] = (b[i] - s) / A[i][i]
# 检查当前解的精度,如果已经满足要求则直接返回
r = np.linalg.norm(A @ x - b)
if r < tol:
return x
# 达到最大迭代次数仍无法满足精度要求,返回最后一次迭代的解
return x
下面是一个简单的使用样例:
# 解方程组 Ax=b,其中 A 是系数矩阵,b 是右端常数列
A = np.array([[2.0, 1.0], [5.0, 7.0]])
b = np.array([11.0, 13.0])
# 使用 Jacobi 迭代法求解
x0 = np.array([0.0, 0.0]) # 初始解向量
x = Jacobi(A, b, x0, tol=1e-6, maxiter=100)
print("解:", x)
print("残差:", np.linalg.norm(A @ x - b))
输出结果为:
解: [2. 1.]
残差: 7.864554625170592e-07