雅可比迭代法的 MATLAB 函数,真的是解线性方程组时的一个小帮手。是你在稀疏矩阵或者对角占优的系统时,用它来搞定求解,效率还挺不错的。实现逻辑也蛮清晰,基本上把方程组分解,一轮轮迭代逼近解,思路简单但不失实用。
MATLAB 版本的实现也挺友好,传个A
矩阵、b
向量、初始猜测x0
,再加上迭代次数和阈值,几行代码就跑起来了。响应也快,代码也简单,调试起来没啥压力。
哦对,函数里判断收敛的逻辑也是亮点之一,每轮都检查误差是不是小到可以停,蛮贴心的。不过要注意,如果你的矩阵不是对角占优的,它不收敛,这时候换成Gauss-Seidel
也许更合适。
,如果你手头有更大的线性系统,或者想加速收敛,用并行计算或者预手段也挺有必要的。MATLAB 本身支持并行工具箱,用起来也方便。
如果你对雅可比、LU 分解、超松弛这些方法感兴趣,下面这些链接你可以顺手点进去看看:
函数代码大致长这样:
function [x, converged] = jacobi(A, b, x0, niter, tol)
if nargin < 5 xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed xss=removed>
如果你也在折腾线性求解的问题,这段代码可以直接拿去改一改就用。