我正在尝试在python中使用cholesky分解,使用numpy(np)和scikits(sci)库。假设D是稀疏的(使用csc_matrix)。以下两行的结果不同
L1 = csc_matrix(np.linalg.cholesky(D.todense()));
L2 = sci.sparse.cholmod.cholesky(D).L();
实际上当我使用
时print np.allclose(np.dot(L1.todense(),L1.todense().T), D.todense())
print np.allclose(np.dot(L2.todense(),L2.todense().T), D.todense())
我对L1有效,对L2有误。
D是Hermitian和pos_def。有人可以帮我弄清楚我的实施有什么问题。