Math 朱莉娅:是否可以用isposdef()来确定一个矩阵是否可以通过Cholesky分解来分解?

Math 朱莉娅:是否可以用isposdef()来确定一个矩阵是否可以通过Cholesky分解来分解?,math,matrix,julia,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。我错过什么了吗 谢谢如果矩阵a有cho

我试图在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。我错过什么了吗


谢谢

如果矩阵a有cholesky分解,那么a可以写成a=LL^T(如果a=QDQ^T和特征值都是正的,这是可行的,其中L=QD^0.5),这意味着矩阵应该是正定的(这也包括对称性)

从您的示例中,对于矩阵A=VDinv(V),您选择的特征向量V的矩阵不是正交的。因此,对于cholesky分解,不能从A=VDinv(V)到上面的形式

至于您的主要问题,由于正定性是cholesky分解存在的充要条件,因此可以使用isposdef()检查是否存在cholesky分解


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

正定的概念适用于对称(或厄米)矩阵。你的矩阵A不是对称的。啊,你是对的。特征值为正是不够的。奇怪的在课堂上,教授们总是说“对称正定”,而显然“正定”就足够了。好吧,定义(vAv^T>0表示所有非零v)仍然可以应用于任意平方实矩阵,但是(a)关于正特征值的定理在这种普遍性中不再成立,以及(b)扩展的定义没有那么有趣:一般的方阵a是正定的当且仅当其对称部分((a+a^t)/2)是正定的。但是在这个广义的意义上(这可能是Julia所使用的),你的矩阵不是正定的-对称部分的特征值是17.1。。。和-4.1。。。因此,Julia在这里给出了正确的结果。更新:从测试和查看源代码来看,Julia的
isposdef
包含了一个明确的对称性测试。我认为这是一个很好的问题(从投票结果来看,显然至少有两个人也这样做);我看不出有什么特别的理由要删除它。我真的应该花点时间把我的评论写进一个答案,如果没有人能比我抢先一步的话,这可能会发生。