准确计算矩阵零空间中的正向量

计算科学 线性代数 数字 线性系统 条件数 零空间
2021-12-10 04:34:52

我确信这个问题之前已经被问过,但经过数小时的搜索后,我无法找到明确的答案。

手头的问题是解决线性系统:

Ax=0
有约束: 目前我应用 SVD 来获得一组跨越矩阵零空间的向量。用于零奇异值的阈值是 max(1e-12, 1e-15 x ),其中是最大奇异值。从这些中,我搜索一个基向量,其中的所有分量都具有相同的符号。这显然是次优的,因为将错过任何作为零空间向量线性组合的解决方案,但我不确定如何解决由此产生的不等式系统(可能是线性规划)。
xi0
σ0σ0

然而,更重要的是处理舍入误差的问题。SVD 方法适用于小矩阵,但随着它们尺寸的增加(当前为 64x64),它似乎会导致向量不在零空间中,或者当我验证它们是解决方案时会出现巨大的舍入误差。下面我绘制了将候选解插入方程的结果的最大绝对值与矩阵的条件数和秩的关系。对于较低等级的 A,这个问题变得更糟。

![Ax 与 A 等级的最大相对值 在此处输入图像描述

的值用于计算矩阵和解的函数,这也可以通过寻找正零空间向量的昂贵替代方法来获得。这是可能的,因为 x 被归一化为可以通过蒙特卡罗模拟获得的概率向量。然后使用这些概率来计算单个值,该值是的函数。绿色点与蒙特卡洛模拟一致,红色点不符合。xxA

我确信对于这种大小的矩阵,必须有某种方法来解决这个问题。一般来说,我的矩阵大约是 90% 的零,所以稀疏矩阵方法可能是合适的,特别是当我增加矩阵的大小时,稀疏度会增加。

我想要一些关于如何处理这里提出的问题的建议,主要是准确计算零空间向量的问题,其次是解决不等式的线性系统以及稀疏方法是否有帮助。

1个回答

快速回答总结我的意见。

  • 请记住,一个微妙的点是 SVD 中截断阈值的选择(什么是“数值为零”,什么不是)。如果您没有看到奇异值明显下降,则意味着您的精度不足以识别零。
  • 由于是机器精度的数量级,因此您的图显示您计算的向量(在数字上)在,所以数值方法似乎工作正常。Ax/AxA
  • 您观察到的差异的一个可能来源是这个问题有多种解决方案。你确定你计算的是正确的吗?
  • 如果(或)是 M 矩阵,那么可能有更好的解决方案来解决您的问题:不可约 M 矩阵的内核维数为,由正向量跨越;因此,您只需要将矩阵简化为不可约的组件(即,对其进行块三角化)并计算每个奇异对角块的内核中的向量(这对于缩放是唯一的)。AA1