Я пытаюсь написать решатель для линейной системы, и, исходя из Matlab / NumPy и т.п., я нахожу типы Eigen немного ограниченными.
Моя текущая проблема решается вокруг этого:
D * DD + S
куда D
а также DD
имеют тип Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic>
а также S
такое Eigen :: SparseMatrix`.
Есть ли (эффективный) способ сделать это? Это кажется довольно простым, поэтому я должен что-то упустить. Я готов сдаться D
а также DD
являющийся DiagonalMatrix
и их существо SparseMatrix
вместо этого, пока вышеприведенное выражение слишком сложно.
Предполагая разреженную матрицу S
уже есть ненулевые коэффициенты по диагонали, которые вы можете сделать:
S.diagonal() += D.cwiseProduct(DD);
Других решений пока нет …