Как я могу умножить два Eigen :: DiagonalMatrix и объявить результат в Eigen :: SparseMatrix?

Я пытаюсь написать решатель для линейной системы, и, исходя из Matlab / NumPy и т.п., я нахожу типы Eigen немного ограниченными.

Моя текущая проблема решается вокруг этого:

D * DD + S

куда D а также DD имеют тип Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic> а также S такое Eigen :: SparseMatrix`.

Есть ли (эффективный) способ сделать это? Это кажется довольно простым, поэтому я должен что-то упустить. Я готов сдаться D а также DD являющийся DiagonalMatrix и их существо SparseMatrix вместо этого, пока вышеприведенное выражение слишком сложно.

0

Решение

Предполагая разреженную матрицу S уже есть ненулевые коэффициенты по диагонали, которые вы можете сделать:

S.diagonal() += D.cwiseProduct(DD);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]