题:
是否有一些足够便宜的共轭梯度(CG)预处理器,即使我的操作符非常本地(即已经有少量非零元素)也值得使用,就像在拟合 B 样条曲线时一样职能?
或任何其他方式如何提高CG收敛速度?
背景:
我使用共轭梯度 (CG) 算法使用局部基函数(例如 B 样条)拟合在 2D/3D 网格上描述的函数。
最小二乘拟合简化为该矩阵问题的解:
其中是基函数之间的重叠矩阵。像 CG 这样的迭代方法使用矩阵向量乘法:
在我的情况下,它使用由 1D 三次样条的张量积形成的模板简化为 2D/3D 卷积(即 2D/3D 情况下的 3x3 或 3x3x3 张量)
例如对于 2D 案例:
您可以看到这个矩阵非常稀疏且相对便宜(尽管如果网格有大约 100 万个点,则不是那么便宜)。
在这种情况下,除了对角雅可比之外,还有其他值得使用的预处理器吗?
目前 CG 需要 50 次迭代才能达到精度:
CG[1] err 0.126261
CG[2] err 0.052267
CG[3] err 0.0294687
CG[4] err 0.0193294
...
CG[47] err 4.449e-05
CG[48] err 4.24922e-05
CG[49] err 3.60459e-05
CG[50] err 3.32389e-05