如何从给定的矩阵中找到最近的/接近正定的?

计算科学 线性代数 矩阵
2021-11-30 17:28:58

我得到了一个矩阵。如何从中找到最接近(或接近)的正定值?

矩阵可以有复特征值,不是对称的,等等。但是,它的所有条目都是实值。算法的结果矩阵必须是正定的,其所有条目都只有实值。对称是一个优点,但不是必需的。我对使用的指标没有偏好。我更喜欢务实(相对容易编程)的方法。它不必是最佳的。

2个回答

Frobenius 范数答案的快速草图:

  1. 替换为最接近的对称矩阵XY=12(X+X)
  2. 进行特征分解Y=QDQ,并形成对角矩阵D+=max(D,0)(元素最大值)。
  3. 最接近的对称半正定矩阵XZ=QD+Q
  4. 不存在的正定矩阵;形式的矩阵都是正定的没有最小值,只有一个下确界。正定矩阵不是闭集。XZ+εIε>0

为了证明 (1) 和 (3),您可以使用矩阵分解为对称和反对称部分是正交的这一事实。特别是,这意味着我们可以像我们所做的那样在两个连续的步骤中最小化。

为了证明 (2),使用 Wielandt-Hoffmann 定理。

如果你对半正定矩阵没问题,那么你可以参考这篇论文,我认为这是Frederico 的回答也解释了:

新泽西州海厄姆。计算最近的对称半正定矩阵。线性代数及其应用。1988 年 5 月;103(C):103-118。

在这个答案中可以找到一个 python 实现,它还提供了一个指向maltab 实现的链接。