在 Ax=b 中计算 x 的数值稳定方法

计算科学 矩阵 稳定 逆问题
2021-12-16 09:10:40

我有一个方程Ax=b我需要解决很多问题x给定的矩阵b. 两个都xb是 nx1 矩阵。很遗憾,A是一个 32x32 矩阵,反演给出了高度不稳定的值。我想知道获得稳定的适当算法/技术是什么A矩阵。

到目前为止,我对替代计算方法或恢复稳定性以获得解决方案的方法的搜索无济于事,因此我将不胜感激。

谢谢,

杰森

1个回答

如果解决方案Ax=b是不稳定的,矩阵是非常病态的(即,有一个非常大的条件数),并且(用 Lanczos 的话说)再多的数学技巧都不能使它稳定。您能希望的最好结果是解决一个不同的问题,即 a) 稳定 b) 为您提供足够接近的解决方案;这称为正则化

对于线性病态问题,有两种经典方法:

  1. Tikhonov 正则化替换Ax=b由稳定的最小二乘问题

    minxAxb2+αx2
    对于一些正则化参数最小化器当然可以通过求解正规方程 α>0
    (ATA+αI)xα=ATb.

  2. 截断奇异值分解计算奇异值分解 其中的列分别包含左右奇异向量,是包含奇异值的对角矩阵(通常按顺序排列)量级递减)。由于是单一的,因此的逆(如果存在)由病态性表现为存在非常小的奇异值,因此

    UΣVT=A,
    UVΣUVAA1=VΣ1UTAΣ1会非常大,放大小的扰动(例如,由于有限的数值精度)。顾名思义,通过忽略这些小条目来恢复稳定性,即将替换为 其中 并设置 Σ1Σα1
    [Σα1]ii={Σii1if |Σii|>α0else
    xα=VΣα1UTb.

在这两种情况下,您都需要专门为您的问题选择以获得好的结果。您可以从计算代表的 SVD 开始,然后查看奇异值以查看是否有明确的阈值。αA