Пишу программу на Armadillo C++ (4.400.1)
У меня есть матрица, которая должна быть разреженной и сложной, и я хочу вычислить обратную такую матрицу. Поскольку она разреженная, она может быть псевдообратной, но я могу гарантировать, что матрица имеет полную диагональ.
В документации API Armadillo упоминается метод .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();
or
sp_cx_mat Z = inv(Y);
Ни один из них не работает.
Я хотел бы знать, как вычислить обратную матрицу типа sp_cx_mat
.
U S V == Y
, затемY.pinv() == U S.pinv() V
. Поскольку Y имеет полный ранг (из-за этой диагонали),Armadillo::svd_econ()
не имеет смысла. Таким образом, вычисление SVD будет значительно медленнее, чем другие методы решения псевдообратной задачи. - person Unapiedra   schedule 05.11.2014