我试图在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。我错过了什么吗?
谢谢
答案 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在该问题下的评论,以便进行更一般性的讨论。