在犰狳中使用相同的内存进行LU分解

Posted

技术标签:

【中文标题】在犰狳中使用相同的内存进行LU分解【英文标题】:use the same memory to do LU decomposition in armadillo 【发布时间】:2013-08-30 23:31:39 【问题描述】:

我对使用犰狳求解线性系统有疑问。 A*x=b。但是我的 A 矩阵很大。它是 arma::cx_mat A(40000,40000)。当我运行 x=arma::solve(A,b) 时,犰狳会尝试分配一个新的内存来存储 A,然后使用新的内存进行 LU 分解,不会使用存储原始 A 的内存。求解的定义可以在 fn_solve.hpp 中找到。但是你已经看到我的 A 很大了。分配一个新的内存会很快消耗掉所有的内存。对于我的问题,我不再需要原来的 A 了。那我能不能用一些方法让犰狳利用A的原始内存做LU分解呢?

非常感谢

【问题讨论】:

【参考方案1】:

您将不得不直接使用 LAPACK,而不是通过犰狳。我建议你看看 Armadillo 如何准备数据并调用底层 LAPACK 函数来实现solve()。这是在文件 include/armadillo_bits/auxlib_meat.hpp

编辑:犰狳开发人员通常接受补丁。如果您想出解决方案,请将补丁或修改后的文件发送给他们。

【讨论】:

以上是关于在犰狳中使用相同的内存进行LU分解的主要内容,如果未能解决你的问题,请参考以下文章

如何判断矩阵是不是能够进行LU分解

矩阵的LU分解该怎么具体做。亲,。举个例子吧

矩阵的LU分解

机器学习中的矩阵分解LU分解QR分解SVD分解

矩阵的lu分解及应用

线代--矩阵的分解-LU分解n阶方阵