我正在尝试在 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 有 true 对 L2 有 false 。
D 是 Hermitian 和 pos_def。有人可以帮我弄清楚我的实施有什么问题。