Armadillo复数稀疏矩阵逆

Armadillo complex sparse matrix inverse

本文关键字:Armadillo      更新时间:2023-10-16

我正在用Armadillo C++(4.400.1)编写一个程序

我有一个矩阵,它必须是稀疏和复杂的,我想计算这个矩阵的逆。由于它是稀疏的,它可能是伪逆,但我可以保证矩阵具有全对角线。

在Armadillo的API文档中,它提到了计算任何矩阵的逆的方法.i(),但sp_cx_mat成员不包含这种方法,而且inv()pinv()函数显然不能处理sp_cx_mat类型。

sp_cx_mat Y;
/*Fill Y ensuring that the diagonal is full*/
sp_cx_mat Z = Y.i();

sp_cx_mat Z = inv(Y);

它们都不起作用。

我想知道如何计算sp_cx_mat型矩阵的逆。

Armadillo中的稀疏矩阵支持不完整,许多可用于密集矩阵的因子分解/复数运算不可用于稀疏矩阵。这有很多原因,最大的原因是高效的复杂运算,如稀疏矩阵的因子分解,仍然是一个非常开放的研究领域。因此,没有可用于cx_sp_mat或其他sp_mat类型的.i()函数。另一个原因是稀疏矩阵开发人员(包括我)缺乏时间。

假设稀疏矩阵的逆通常是稠密的,那么你最好把cx_sp_mat变成cx_mat,然后使用与通常稠密矩阵相同的逆技术。既然你打算把它表示为一个密集矩阵,那么你有足够的RAM来做这件事是一个合理的假设。