计算矩阵对称部分的方法

计算科学 线性代数
2021-11-30 14:52:04

我正在对非对称矩阵使用多重网格预处理 GMRES 方法。矩阵是非线性算子的导数的离散化。由于多重网格不是非对称问题的最佳解决方案,因此我对矩阵的“对称部分”进行了预处理,其中我将矩阵的对称部分设为,其中的转置。A(A+AT)/2ATA

我的问题是我得到的矩阵的“对称部分”不是正定的。我想知道是否有一种方法可以获得矩阵的对称正定部分,这只是对原始矩阵的一些操作,即

A~=F(A)

对于一些函数FA

编辑:从下面的评论和答案中,我意识到我没有包含我的问题所需的大部分重要信息,所以这里有一些补充信息。我正在使用标准的几何多重网格实现,带有逐点 Jacobi / Gauss-Seidel 平滑器。我知道使用针对我正在处理的特定算子量身定制的平滑算子会产生更好的结果,但我正在评估标准线性几何多重网格实现对我感兴趣的一些问题的有效性。因此,我理想情况下希望将多重网格迭代应用于对称正定矩阵。我有关于线性算子的信息,我可以使用它来获得一个矩阵来进行前提条件,该矩阵是对称正定的并且“接近”我有兴趣反转的矩阵,效果很好。不过,我特别感兴趣的是知道是否有一些“黑匣子”函数可以为预处理提供一个对称的正定矩阵,这对于给定矩阵来说是“好”的,而无需知道给定矩阵的位置来自

1个回答

您似乎误以为多重网格仅适用于对称矩阵和正定矩阵,并且您可以应用多重网格预处理器,前提是您可以将矩阵替换为某个 SPD 矩阵。但事实并非如此。如果您的线性系统的误差分量存在于所有尺度上,并且矩阵允许构建一个平滑器以在最精细的水平上平滑误差分量,则多重网格可以工作。但这不是矩阵属性(例如对称性或正定性)的结果。相反,它来自潜在的微分算子。

此外,如果我理解正确,您希望将多重网格预处理器应用于矩阵并使用它来预处理涉及矩阵的线性系统的解。实际上密切相关,这通常只会减少迭代次数。仅仅因为您可以找到将任何矩阵映射到对称正矩阵并不意味着这会自动成为 A 的良好预条件f(A)Af(A)AfAf(A)A