Ich habe einen Vektor von ganzen Zahlen und ich möchte eine diagonale Matrix mit Vectos-Element als diagonale Einträge der Matrix erstellen. Zum Beispiel: Wenn Vektor 1 2 3
die Diagonalmatrix ist, wäre:Konstruieren einer Diagonalmatrix aus dem Vektor der ganzen Zahlen: Funktion Eigen
1 0 0
0 2 0
0 0 3
Die naive Weise, es zu tun, etwas mehr als es wäre iterieren und einen Satz Elemente um eins. Gibt es keinen anderen direkten Weg, dies in eigen
zu tun. Auch nach dem Konstruieren der Diagonale möchte ich die Inverse berechnen (die gerade die diagonalen Einträge umkehrt), aber es scheint auch keine Möglichkeit zu geben, dies zu tun (direkt, was ebenfalls optimiert wäre) in der Bibliothek selbst.
Ich habe die Dokumentation von diagonal matrices in eigen
Bibliothek nachgeschlagen, aber es scheint so als gäbe es keine Möglichkeit. Wenn ich etwas offensichtliches beim Lesen der Dokumentation verpasst habe, weisen Sie bitte darauf hin.
Jede Hilfe wird geschätzt.
Wenn Sie eine Möglichkeit finden, die Matrix schnell aus dem Vektor zu generieren, ist das Invertieren recht einfach: Invertieren Sie die Vektorelemente und erstellen Sie die Matrix von Grund auf neu. – arne
@arne Ich wollte nicht auf Fließkommafehler eingehen, wenn sie auftreten könnten (ich bin mir nicht sicher). Also will Eigen alles handhaben. Ich denke, das wäre einfach. –
Die Seite, die Sie verlinkt haben, gibt einen 3D 'DiagonaMatrix' Konstruktor, der die 3 relevanten Koeffizienten als Argumente verwendet. Es gibt auch eine Methode, um den Diagonalvektor aus einer solchen Matrix zu extrahieren, mit der Sie den invertierten Vektor "von Hand" berechnen und eine neue Matrix mit erstellen können. – didierc