Julia:可以使用isposdef()确定Cholesky分解是否可以考虑矩阵吗?

Mag*_*eek 8 math matrix julia

我试图在Julia中使用isposdef()来测试先验是否可以通过cholesky分解来计算矩阵.

看起来isposdef并不总是有效.我使用不正确吗?

例:

D = [5, 8]
V = [1 2; 3 4]
A = V*diagm(D)*inv(V)
println(eig(A))
println(isposdef(A))
Run Code Online (Sandbox Code Playgroud)

在这里,我创建了一个矩阵A,在D中给出了正特征值.我们看到eig(A)同意它们是正的.但是,Isposdef()返回false.我错过了什么吗?

谢谢

SPV*_*SPV 2

如果矩阵 A 具有乔列斯基分解,则 A 可以写为 A=LL^T(如果 A=QDQ^T 且特征值均为正,则可行,其中 L=QD^0.5),这意味着矩阵应该是正定(这也包含对称性)。

从您的示例中,对于矩阵 A = V D inv(V)(特征向量 V 的矩阵),您选择的不是正交的。所以你不能从 A = V D inv(V) 转到上面的胆斯基分解形式。

至于你的主要问题,由于正定性是乔列斯基分解存在的必要和充分条件,因此 isposdef() 可用于检查乔列斯基分解是否存在。

PS:请查看马克·迪金森在该问题下的评论,以进行更一般性的讨论。