我需要解决 Ax = b 的问题,其中 A 是一个对称半正定矩阵。这可以通过使用 Cholesky 分解来高效实现。由于矩阵 A 至少具有 25000 x 25000 的维度,因此我不能浪费内存。因此,我想使用 Julia 的 cholfact 的原地版本:
cholfact!(A, :U, pivot = true)
与之相比,
F = cholfact(A, :U, pivot = true)
这样可以节省几个G字节的内存。
然而,在计算之后,A
的类型为 Matrix Float64
,而 F
的类型为 CholeskyPivoted{Float64}
。据我所知,原地版本会失去重要信息,例如枢轴向量 F.piv
。那么如何在不浪费内存的情况下正确计算Cholesky分解?