我试图使用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。我是不是遗漏了什么?
谢谢
发布于 2014-11-18 16:44:20
如果矩阵A有cholesky分解,则A可以写成A=LL^T(如果A=QDQ^T和特征值都是正的,则A是可行的,其中L=QD^0.5),这意味着矩阵应该是正定的(这也包括对称性)。
从你的例子来看,对于矩阵A= V_D_inv( V ),特征向量V的矩阵,你选择的不是正交的。所以你不能从A= V_D_inv(V)到上面的cholesky分解形式。
至于你的主要问题,既然正确定性是cholesky分解存在的必要条件和充分条件,isposdef()可以用来检查cholesky分解是否存在。
PS:请看马克·狄金森在这个问题下的评论,以便进行更一般性的讨论。
https://stackoverflow.com/questions/24312541
复制相似问题