雅各比迭代的 Matlab 实现,推荐这份 MATH-2605 课程里的资源,写得挺清楚,适合刚入门线性代数数值解法的你。代码结构比较规整,每个分解方法都拆成单独的函数模块,比如 lu_fact
、qr_fact_househ
和 qr_fact_givens
,调用方式也简单,传个.dat
文件名进去就能跑。
lu_fact('test.dat')
会输出 L、U 和误差;qr_fact_househ('test.dat')
和 qr_fact_givens('test.dat')
分别用了 Householder 和 Givens 来做 QR 分解。输出结果也一目了然,调试时还挺方便。
如果你平时在搞数值、线代作业,或者准备考研究生,这种函数封装风格的代码比较好改,也容易做实验对比。哦对了,建议配合矩阵可视化工具看一下分解效果,会更直观。
另外,下面这些链接也挺有参考价值:有的是 LU 分解的入门教程,有的是 QR 分解的拓展实现,比如Matlab LU 分解入门、QR 分解计算特征值这种,适合对照着学。
如果你对 Jacobi 迭代 和 QR/LU 分解感兴趣,可以直接把这些函数集成进自己的代码库,跑起来也不麻烦。