赞
踩
雅可比迭代法是解线性方程组的数值计算方法之一,其基本思想是不断迭代更新当前解的各个分量,直到解收敛到预定精度为止。下面是雅可比迭代法的
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。