我正在使用Armadillo C++ (4.400.1)编写程序。
我有一个必须是稀疏和复杂的矩阵,并且我想计算这种矩阵的逆矩阵。由于它是稀疏的,可能是伪逆矩阵,但我可以保证该矩阵具有完整对角线。
在Armadillo的API文档中,提到了方法
我有一个必须是稀疏和复杂的矩阵,并且我想计算这种矩阵的逆矩阵。由于它是稀疏的,可能是伪逆矩阵,但我可以保证该矩阵具有完整对角线。
在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
类型的矩阵的逆。
U S V == Y
,那么Y.pinv() == U S.pinv() V
。因为 Y 是满秩的(因为有非零对角线),所以Armadillo::svd_econ()
没有意义。因此,与其他求解伪逆的方法相比,计算SVD会慢得多。 - Unapiedra