【先提一嘴】
解线性方程组直接法:高斯消元、LU分解(其实就是行变换)
优点:稳定,适用广泛
缺点:与迭代法相比,需要的存储空间
为什么有迭代法?就是因为高斯消元在处理大型矩阵时太不给力了,有时候也不需要那么精确的解。尤其是“解三重对角矩阵”这种稀疏矩阵时,需用迭代法。迭代法的思想一句话就能说完:
“假装已经知道一个解了!”
话粗理不粗,很多方法其实都是这种思想……
基础知识在下面的笔记里都写了 ,基础不牢的打包带走:
https://zhuanlan.zhihu.com/p/156441923zhuanlan.zhihu.com一、一句话形容迭代法是什么?
在解线性方程组时,选择适当的初期解
,通过不断迭代,每次得到的
迭代解
收敛到
真实解
。
二、迭代法(Iterative Method)的大致分类和优缺点?
1. 定常(stationary)法
- 在迭代中,只有迭代解
在不断收敛,其它量都不变。
- 比如:SOR、Gauss-Seidel、Jacobi法等
- 缺点:大概都慢!
2. 非定常(nonstationary)法
- 有约束、优化条件
- 要用到映射到Krylov subspace(部分空间)的像,因此也叫Krylov部分空间法
- CG(Conjugate Gradient:共轭梯度法)
- BiCGSTAB(Bi-Conjugate Gradient Stabilized:稳定双共轭梯度法)
- GMRES(Generalized Minimal Residual:广义最小残差法)
优点:
- 比直接法省存储空间、计算量小
- 适用于并行计算
缺点:
- 收敛性容易受到应用、边界条件的影响(可能不收敛,就算不出结果了)
- 预处理很重要
三、具体方法
(我觉得我还是废话少说Pia!(o ‵-′)ノ”(ノ﹏<。))
来看的表达式:
在每个方程中,的系数正好是
这个式子就是关键!
Jacobi法就是用上面
的表达式,第一次代入一个初始值,然后不断迭代上一轮算出的
,直到得到要求的精度。
Gauss-Seidel机灵一点,每轮
个
,到
轮时,它把这轮计算的
前面的
直接代进去,而不再傻傻地代入上一轮的结果,于是收敛速度提高一半不止。
四、收敛条件和收敛矩阵
Jacobi和Gauss-Seidel的收敛条件都是
,因为
它们显然就是同一个方法。证明Jacobi法较简单,因为它们的
收敛矩阵是:
上面的
的表达式在Jacobi中都是由上一轮的
表示的,
把