2017-12-04 5 views
0

Ich versuche, einen Löser für ein lineares System zu schreiben, und von Matlab/NumPy und dergleichen kommend, finde ich die Arten von Eigenen etwas begrenzt.Wie kann ich zwei Eigen :: DiagonalMatrix multiplizieren und das Ergebnis als Eigen :: SparseMatrix anzeigen?

Mein aktuelles Problem behebt, um diese:

D * DD + S 

Wo D und DD sind vom Typ Eigen::DiagonalMatrix<double, Eigen::Dynamic, Eigen::Dynamic> und S ist eine Eigen :: SparseMatrix`.

Gibt es einen (effizienten) Weg, dies zu tun? Es scheint eher grundlegend, also muss ich etwas vermissen. Ich bin bereit und DDDiagonalMatrix zu geben und sie sind SparseMatrix stattdessen, solange der obige Ausdruck zu kompliziert ist.

Antwort

0

die spärliche Matrix Unter der Annahme S bereits nicht-Null-Koeffizienten entlang der Diagonalen können Sie tun:

S.diagonal() += D.cwiseProduct(DD); 
Verwandte Themen