测试矩阵是否为正半定数


11

我有一个对称矩阵列表L,我需要检查它的正半定性(即它们的特征值非负)。

上面的评论暗示可以通过计算各自的特征值并检查它们是否为非负值来做到这一点(也许必须注意舍入误差)。

在我的场景中,计算特征值非常昂贵,但是我注意到我正在使用的库对正定性进行了相当快速的测试(也就是说,如果矩阵的特征值严格为正。)

因此,想法是,给定一个矩阵BL,一个测试如果B+ϵI是正定的。如果不是,则B不是正半定值,否则可以计算的特征值B以确保它确实是正半定值。

我的问题是:

如果给出了对正定性的有效检验,是否存在更直接有效的方法来测试矩阵是否为正半定性?


1
A


1
B+cIccc

是的,您可以移动特征值并计算最小的特征值,但仍然存在为可接受的内容设置一些容差的问题(并确保将特征值至少计算为该容差!)
Brian Borchers

不确定这是否有帮助,但是请注意,一旦知道矩阵不是正定的,要检查它是否为正半定,您只需检查其内核是否为非空。
Abel Molina 2014年

Answers:


20

您对“正半定”或“正定”的工作定义是什么?在浮点算法中,您必须为此指定某种公差。

Aλ=1.01030λ=1.0

最大 λϵ|λmax|λmax

不幸的是,计算矩阵的所有特征值是相当耗时的。另一种常用的方法是,如果对称矩阵在浮点运算中具有Cholesky分解,则认为该对称矩阵是正定的。计算Cholesky因子分解比计算特征值快一个数量级。您可以通过向矩阵添加一小部分同一性,将其扩展为正半定性。同样,存在扩展问题。一种快速的方法是对矩阵进行对称缩放,以使对角元素为1.0,并在计算Cholesky因子分解之前对对角线添加。 ϵ

不过,您应该对此谨慎,因为该方法存在一些问题。例如,在某些情况下,和在具有浮点Cholesky因式分解的意义上是肯定的,但没有Cholesky因式分解。因此,“浮点Cholesky可分解正定矩阵”的集合不是凸的! B A + B / 2AB(A+B)/2


您能否详细说明最后一段或发布到源的链接?那真是奇怪。
Daniel Shapero 2014年

1
关于这种缩放的经典参考是A. van der Slui。矩阵的条件数和平衡Numerische Mathematik 14(1):14-23,1969。Golub和van Loan等教科书中也对此进行了讨论。最后一段中的内容来自在半定编程代码中很难获得的个人经验,我在编码行搜索中遇到过这样的情况-我遇到过和通过LAPACK进行Cholesky分解的情况,但是根据LAPACK,没有Cholesky分解。当您几乎单数时,就会开始出现这类问题。X + α Δ X X + 0.95 α Δ XXX+αΔXX+0.95αΔX
Brian Borchers 2014年

发现某些矩阵可以将Cholesky分解为扩展精度或四倍精度,而不是常规双精度或单精度浮点算术也很常见。
Brian Borchers 2014年

3
SDP的几个对偶内点编码(CSDP,SDPT3,SDPA)始终返回正定矩阵并具有Cholesky因子分解的矩阵,而另一个流行的求解器(SeDuMi)使用特征值分解并返回负值很小的解特征值。
Brian Borchers 2014年

3

4
似乎用户名几乎可以揭示答案作者与论文作者之间的关系。有关本文包含的内容的更多信息会很好;但是,无论如何,它与论文的问题清单非常有趣并且相关!
安东·孟索夫(
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.