不定常迭代法
最速下降法和共轭梯度法本质上来讲是一种变分方法,他们对应于求解一个二次函数的极值问题
最速下降法(SD)
对于一个线性方程组
A
x
=
b
Ax=b
Ax=b ,和它等价的变分问题是
ϕ
(
x
)
=
1
2
x
T
A
x
−
x
T
b
\phi(x) = \frac{1}{2}x^{T}Ax - x^{T}b
ϕ(x)=21xTAx−xTb
其中
A
A
A是一个 对称正定矩阵,根据正定矩阵的性质便于找到极小值
下图是相关的一个推导,从此对梯度下降法有了不一样的理解
共轭梯度法(CG)
它的出现是因为最速下降法只是在每一步的下降中(局部)取了一个下降最快的方向,但是从整体来讲他不一定是最好的方向,因此就诞生了共轭梯度法。
共轭梯度法产生步长的方法和最速下降法是一致的,产生的方向是一组共轭方向;并且该方法的优点在于最多经过
n
n
n 步迭代之后,就可以得到精确解。
PS: 共轭梯度法的收敛性比最速下降法好
广义极小残差量法(GMRES:General Minimal RESidual)
这一算法针对的是求解非对称线性方程组算法.
预处理技术
在很多算法中会经常见到预处理技术,尤其在共轭梯度法中体现较多,预处理技术的应用可以加快收敛速度。
在方程组求解过程中,当系数矩阵的条件数不好(即它的特征值之间的差距很大,以至于在求解整个方程组过程中,每个方程的”重要性“不一样)时会对其进行预处理。
在论文中看到的一种预处理技术就是用加权范数替代二范数,本质也是在系数矩阵前面乘了一个预处理矩阵,并且这个预处理矩阵通常由良好的性质,例如对称正定,对角等。
PS: 矩阵计算这本书的第六章提及了这一技术。
就单对于共轭梯度法(求解大型的线性系统)来讲,预处理有以下几种选择:
再整理的过程中参考了以下文章:
1、https://zhuanlan.zhihu.com/p/179956655
2、http://staff.ustc.edu.cn/~rui/ppt/num/num-leq-cg.html