2017-07-18 24 views
6

Wie berechnet man am besten die Diagonale des Inversen einer symmetrischen dichten Matrix (2000 * 2000)? Momentan berechne ich die Inverse zuerst mit solve(x) und extrahiere dann die Diagonale (diag(y)). Obwohl es funktioniert, aber ich frage mich, ob es einen besseren Weg gibt, es zu tun, damit der Code schneller läuft. Ich habe versucht chol2inv(), aber es hat nicht funktioniert, da meine Matrix nicht positiv definit ist.Effiziente Methode zur Berechnung der Diagonalen des Inversen einer Matrix

Update: Für alle, die interessiert sein könnten, konnte ich die Matrixinversion beschleunigen, indem Sie eine optimierte Mathematikbibliothek Intel MKL verwenden. Es dauert 3 Sekunden, um eine 2000 * 2000 Matrix auf meinem Rechner zu invertieren. Intel MKL ist mit Microsoft R Open verfügbar.

+0

In der kurzen Google-Suche fand ich einige Links zu Algorithmen und anderen Implementierungen zu diesem Problem. Brauchen Sie explizit jedes Element der Diagonale oder wollen Sie es in einer anderen Berechnung verwenden? Wenn Sie es in der weiteren Berechnung verwenden möchten, wäre dieses Wissen entscheidend für die Beschleunigung der Ausführung. – Vandenman

+0

Ich benutze die Diagonale in anderen Berechnungen. Insbesondere teile ich jedes Element in einem anderen Vektor durch jedes Element der Diagonale der inversen Matrix und summiere sie. – Katherine

+0

Woher wissen Sie, dass jedes Element der Diagonale der Inverse nicht Null ist? Hat die Matrix eine Eigenschaft, die dies garantiert? – dmuir

Antwort

0

Wenn Ihre Matrix keine schöne Eigenschaften hat wie symmetrisch sein, diagonal, oder positiv definite, die einzige Wahl ist leider zu tun sum(diag(solve(x)))

Wie lange, dass auf Ihrer Matrix laufen dauert?

+0

Es ist symmetrisch, aber leider nicht eindeutig. Chol2inv wäre viel schneller. Es dauerte ungefähr 15 Sekunden, um zu laufen. Die Laufzeit ist nicht schrecklich, aber sie summiert sich schnell, da ich einen iterativen Prozess habe, so dass die Matrix jedes Mal invers wird. – Katherine

Verwandte Themen