J'ai une matrice clairsemée A
dans Eigen C++. Maintenant, je veux symétriser à une autre matrice clairsemée Asym
:Comment symétriser une matrice clairsemée dans Eigen C++?
J'espérais que ce serait aussi simple que:
Eigen::SparseMatrix<FLOATDATA> A;
...
Eigen::SparseMatrix<FLOATDATA> Asym = 0.5*(A+A.transpose()); // error here
Mais pour des raisons évidentes, il donne l'erreur d'échec assert suivant:
error: static assertion failed: THE_STORAGE_ORDER_OF_BOTH_SIDES_MUST_MATCH
Ma question est comment faire proprement l'opération ci-dessus dans Eigen C++?
est un symétrique? Sinon, vous ne pouvez pas ajouter A et sa transposition. En d'autres termes, vous pouvez ajouter deux matrices, mxn et nxm si et seulement si m == n. Je n'ai jamais vu une seule formule où A + A^T est effectuée. Est-ce que vous essayez A^T x A, ce qui a beaucoup de sens à la fois. –