gpt4 book ai didi

linear-algebra - 如何在 Julia 中使用 cholfact() 的就地版本?

转载 作者:行者123 更新时间:2023-12-04 06:42:29 38 4
gpt4 key购买 nike

我需要解决一个 x = b,其中 一个 是对称正半定矩阵。这可以使用 cholesky 分解有效地实现。因为矩阵一个 至少会有 25000 x 25000 的尺寸,我不能浪费内存。因此,我想使用 Julia 的 cholfact 就地版本:

cholfact!(A, :U, pivot = true)

相比
F = cholfact(A, :U, pivot = true)

这将节省千兆字节的内存。

但是经过计算, A类型为 Matrix Float64 , 而 F有类型 CholeskyPivoted{Float64} .据我所知,就地版本丢失了基本信息,例如枢轴向量 F.piv .如何在不浪费内存的情况下正确计算 cholesky 分解?

最佳答案

您想将这两者结合起来:

F = cholfact!(A, :U, pivot = true)

这将返回 CholeskyPivoted ,这确实是您想要的。但是通过使用 cholfact! ,你是说你不在乎 A在这个过程中被破坏。因此,它将使用为 A 分配的内存。用于存储分解(从而破坏 A )。

之后,您应该只使用 F ,不是 A , 因为 A已被摧毁。内部, F将包含对 A 的引用,因为它将分解存储在 A 中.如果您检查 CholeskyPivoted is represented 的方式,这可能会更清楚。 ; A将用于该 UL field 。

关于linear-algebra - 如何在 Julia 中使用 cholfact() 的就地版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26634281/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com