2

我有问题要使用犰狳解决线性系统。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分解呢?

非常感谢

4

1 回答 1

1

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

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

于 2013-08-31T06:45:59.207 回答