雅可比迭代法模拟器 返回
数值分析

雅可比迭代法模拟器 — 线性方程组

用雅可比迭代法求解二元线性方程组 A·x=b 的工具。改变系数矩阵与右侧向量、迭代次数,系统从对角占优性和谱半径判定是否收敛,并实时显示误差收敛曲线、迭代值推移和两条直线与迭代点列的动画。

参数设置
系数 a₁₁
第一个方程中 x₁ 的系数(对角元素)
系数 a₁₂
第一个方程中 x₂ 的系数(非对角元素)
系数 a₂₁
第二个方程中 x₁ 的系数(非对角元素)
系数 a₂₂
第二个方程中 x₂ 的系数(对角元素)
右侧 b₁
第一个方程的常数项
右侧 b₂
第二个方程的常数项
最大迭代次数
变化 < 1e-8 时提前结束
计算结果
解 x₁
解 x₂
迭代次数
对角占优性
谱半径 ρ
收敛/发散
解空间 — 两条直线和迭代点列

两条方程直线的交点是真解。从 (0,0) 开始的迭代点列在收敛时趋向交点,发散时远离交点。

误差收敛 ‖x_k − x_exact‖(对数轴)
迭代值推移 x₁·x₂
理论与主要公式

$$x_i^{(k+1)}=\frac{1}{a_{ii}}\left(b_i-\sum_{j\ne i}a_{ij}\,x_j^{(k)}\right)$$

雅可比迭代更新式。每个未知数 x_i 由对角元素 a_ii 相除求得,右侧始终仅使用前一步的迭代值 x_j^(k)。

$$\rho(\text{迭代矩阵})\lt 1\quad(\text{对角占优时成立})$$

收敛条件。当迭代矩阵的谱半径 ρ < 1 时收敛,ρ ≥ 1 时发散。严格对角占优的系数矩阵必保证此条件。

$$\rho=\sqrt{\left|\dfrac{a_{12}}{a_{11}}\cdot\dfrac{a_{21}}{a_{22}}\right|}$$

2×2 情况下的谱半径。雅可比法仅用旧值,易于并行化,但比高斯-赛德尔法收敛慢。

什么是雅可比迭代法

🙋
线性方程组不是用中学的代入法或消元法求解吗?"雅可比迭代法"是另外一种解法吗?
🎓
是的,完全不同的思路。代入法和行列式是"一次得到准确答案"的直接法。而雅可比法是"从随意的答案出发,一点点逼近真解"的迭代法。本工具从 x=(0,0) 开始。初始很不准确,但反复应用更新式,答案会慢慢接近真解。
🙋
这样绕圈子干什么?直接用代入法一步出解不就行了吗。
🎓
二元或三元确实可以。但实务的CAE经常碰到百万级别的未知数。这样巨大的矩阵用直接法会爆内存和计算量。反迭代法能充分利用矩阵"大部分是零"的稀疏性,达到所需精度就可以停止计算。所以大规模问题主要用迭代法。雅可比法是最简单的入门。
🙋
我调左边滑块把 a₁₂ 拖大后,忽然变红显示"发散"了。这是怎么回事?
🎓
好实验!迭代法有个陷阱:"不是回数越多越逼近"。关键是对角占优性。一个行的对角系数(a₁₁ 或 a₂₂)的绝对值要大于该行其他系数的绝对值,叫"对角占优"。满足对角占优时雅可比法必然收敛。增大 a₁₂ 破坏对角占优后,谱半径 ρ 超过 1,迭代误差每次增加——那就是发散。
🙋
结果卡片也显示了谱半径 ρ。它只是表示收敛还是发散吗?
🎓
不止。ρ 还决定了收敛的"快慢"。粗略地说,每次迭代误差乘以 ρ。所以 ρ=0.3 时数字掉得很快几次就收敛,ρ=0.95 时蜗牛一样要迭代几十次才有精度。看下面"误差收敛"的对数图,斜率正好是 log(ρ)。ρ 越小下降越陡,越接近 1 越平缓,ρ ≥ 1 时误差发散。
🙋
还听说过"高斯-赛德尔法",和雅可比法什么区别?
🎓
更新用的值的时间不同。雅可比法每步内必须用前一步的值。x₁ 和 x₂ 同时从同一个旧信息算出。高斯-赛德尔法是刚算出 x₁ 的新值就立即用它去算 x₂。新鲜信息多一些,一般收敛快。但雅可比法的各分量完全独立计算,特别适合并行计算和GPU。在大规模稀疏矩阵的光滑化和前处理中现在还广泛用。

常见问题

雅可比迭代法是求解线性方程组 A·x=b 的迭代方法,不直接求解而是从近似解出发逐步更新逼近真解。对每个方程关于对角成分求解,得 x_i^(k+1) = (b_i − Σ_(j≠i) a_ij x_j^(k)) / a_ii。关键特点是右侧仅用前一步值 x^(k)。所有未知数同时更新,易于并行,但收敛不如高斯-赛德尔法快。
当迭代矩阵的谱半径 ρ(特征值绝对值的最大值)< 1 时收敛,ρ ≥ 1 时发散。2×2 情况下迭代矩阵为 [[0, −a12/a11], [−a21/a22, 0]],ρ = √|(a12/a11)(a21/a22)|。充分条件是"严格对角占优":每行对角元素绝对值大于该行其他元素之和(|a11|>|a12| 且 |a22|>|a21|)则必收敛。非对角占优时仍可能收敛,只要 ρ<1;但实际中保证对角占优更安全。
谱半径 ρ 既判定收敛性,也决定收敛速度。每次迭代误差约乘以 ρ,故要使误差缩为十分之一约需 1/log10(1/ρ) 次迭代。例如 ρ=0.3 时 2-3 次迭代掉一位有效数字,ρ=0.9 需 20 次以上。在对数坐标的误差图中,直线斜率为 log(ρ),ρ 越小斜率越陡,越接近 1 越平缓,ρ ≥ 1 误差发散。
两种都是迭代法,更新所用值不同。雅可比法每步内始终仅用前一步 x^(k),所有分量同时更新。高斯-赛德尔法同步内立即使用已更新的新值,一般收敛更快,多数情况谱半径为雅可比法的约平方。但雅可比法各分量独立计算,与并行计算和GPU高度兼容,在大规模稀疏矩阵的光滑化和前处理中仍广泛应用。

现实应用

大规模CAE求解器基础:结构分析、热传导、电磁场等有限元法或差分法最终都归结为巨大的线性方程组。未知数达数十万至数千万时,直接法(LU分解)内存会溢出,必须用迭代法。雅可比法本身很少做最终求解,而是作为共轭梯度法或多重网格法的"光滑化"阶段或前处理,快速清除高频误差分量。

并行计算与GPU加速:雅可比法各分量更新完全独立,可在数千至数万GPU核心同时执行。这与高斯-赛德尔法的"顺序"限制形成鲜明对比。实现简单,通信模式规则,成为并行求解器的基本构件,在超级计算机和GPU异构计算中广泛应用。

图像处理·泊松方程:图像无缝融合(泊松图像编辑)、流体仿真压力投影、阴影光照计算等都涉及泊松方程——即线性方程组求解。这些领域中加权雅可比迭代在GPU上逐像素并行执行,支撑实时处理。

数值分析教学与算法理解:雅可比法是迭代法中最简洁的,用最少代码体验收敛判定、谱半径、误差几何级数衰减等核心概念。通过本工具二维可视化系统行为,从对角占优的破坏到突然发散、ρ 控制收敛速度,直观理解为后续学习高等迭代法奠定基础。

常见误解与注意事项

常见误解一:"迭代次数越多一定越接近解"。实际仅当收敛时才能保证。当系数矩阵非对角占优、谱半径 ρ ≥ 1 时,每次迭代误差以 ρ 倍增长,无论增加多少次迭代都离真解越来越远。本工具通过增大 a₁₂ 或 a₂₁ 破坏对角占优后,能清晰看到发散过程。实务中若遇"迭代不收敛",首先考虑能否通过行交换或前处理恢复对角占优。

常见误解二:"对角占优是收敛的必要条件"。实际对角占优仅是充分条件。非对角占优时若 ρ<1 仍收敛;反之对角占优保证 ρ<1,故"不确定时满足对角占优最保险"。本工具同时显示对角占优与 ρ 的信息,可观察两者不一致的情况。

常见误解三:"雅可比法太慢,实用性差"。确实单独作求解器不如高斯-赛德尔法或共轭梯度法。但雅可比法的真正价值在于极高的并行性和"快速消除高频误差"的特性。在多重网格法中加权雅可比迭代是每层必不可少的光滑器;作为最基础的前处理(雅可比前处理),在大规模问题中应用广泛。应视为关键部件灵活组装,而非全能求解器。另外本工具发散时将迭代值限制在 ±1e6 以避免 NaN 或 Infinity。

使用指南

  1. 输入系数矩阵元素 a₁₁、a₁₂、a₂₁、a₂₂,设置右侧向量 b₁、b₂
  2. 从初值 x₁⁽⁰⁾=0、x₂⁽⁰⁾=0 开始迭代,指定最大迭代次数和误差容限(如 10⁻⁶)
  3. 确认谱半径 ρ<1 后点击执行,观察收敛曲线及各变量的收敛过程

具体计算例

对于方程组 5x₁-x₂=4、-x₁+4x₂=3:输入 a₁₁=5、a₁₂=-1、a₂₁=-1、a₂₂=4、b₁=4、b₂=3,迭代矩阵 G=D⁻¹(L+U) 的谱半径 ρ≈0.447<1,满足收敛性。约 8 次迭代后 x₁≈1.0、x₂≈1.0,相对误差降至 10⁻⁶ 以下。

实务注意