我对问题的迭代解决方案(最好是 Krylov 型求解器)感兴趣,其中 和。是对称的、可逆的,它的实部和虚部是不确定的。这来自解决谐波、阻尼有限元问题。
现在,因为这个想法是手动明确地编写一些迭代,所以挑战是我想使用:
- 简单的算法(即在每个步骤中不需要正交化,如在 GMRES 中),它与对角预处理器很好地收敛。
- 其中的估计保证“单调减少”残差。我的意思是,例如,或保证每次迭代单调递减。有点像 Hermitian 矩阵的共轭梯度法。
有没有这样的方法?
我尝试应用 Sogabe and and and Zhang, 2007 [1]的共轭 A-正交共轭残差 (COCR) 方法,并使用简单的对角线预处理。我有一个粗网格的工作实现,但对于不太粗的网格,算法无法收敛。
然后,我阅读了 Gu 等人的准最小残差 COCR (QMRCOCR) 方法。al., 2014 [2],这似乎更加稳定,实现起来仍然相对简单,并且误差似乎单调减少。但最后这句话是我对结果的解释,而不是任何严格的收敛性分析。并且文章中总是使用对称连续过度松弛 (SSOR) 预条件子,因此如果使用简单的对角线预条件子,则无法知道收敛是否会表现得一样好。
想到的一个可能的解决方案是求解其中上标 H 表示厄米伴随。由于是可逆的,那么必然是厄米特(它也是正定的)因此,可以使用简单的共轭梯度法。
现在,我读到的任何地方都提到了稳定性问题。我找不到原因。我发现的唯一具体的事情是的条件数将等于 boldsymbol{A} 的条件数的平方。但是在我的 FE 代码中,我总是对A应用左右对角线预处理,从而获得相对较好的条件数。
那么为什么用迭代求解器
经过一些实验,上述问题的答案是:就是这样。
这是曲线的一些图像的共轭梯度法 (CGM)、复线性系统的 COCR 方法和 QMRCOCR 方法来解决我的问题。我只使用了简单的 Jacobi 预处理。这是一个形状为的小的简单示例。
图 2:COCR 和 QMRCOCR 分别在 1132 和 1136 次迭代中收敛。显然 QMRCOCR 更稳定。
图 3:对我来说,问题是 COCR 或 QMRCOCR 的残差都不能保证在第一次迭代中减少。对于 CGM,它确实减少了。
那么有没有办法保证 COCR 或 QMRCOCR 的残差减少至少 2 个第一步?我认为这些方法的第一步总是类似于梯度下降。也许对于复杂的矩阵,事情会有所不同?
参考:
- ; Sogabe,T。Zhang, S. 一种用于求解复杂对称线性系统的 COCR 方法。J.计算机。应用程序。数学。 2007, 199 (2), 297–303。DOI: 10.1016/j.cam.2005.07.032。
- 顾,X。黄,T。李,L。李,H。; Sogabe,T。Clemens, M. 电磁模拟中复杂对称线性系统的 COCG 和 COCR 方法的准最小残差变体。IEEE Trans。微波理论技术 2014, 62 (12), 2859–2867。DOI:10.1109/TMTT.2014.2365472。