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

时间:2014-06-19 17:13:10

标签: 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))

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

谢谢

1 个答案:

答案 0 :(得分:1)

如果矩阵A具有cholesky分解,则A可以写为A = LL ^ T(如果A = QDQ ^ T且本征值都是正的,则可行,其中L = QD ^ 0.5)这意味着矩阵应该是正定的(这也包括对称性)。

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

关于你的主要问题,由于正定性是胆汁分解存在的必要和充分条件,isposdef()可用于检查是否存在胆甾醇分解。

PS:请查看Mark Dickinson在该问题下的评论,以便进行更一般性的讨论。