Welche Unterschiede gibt es in matlab zwischen linsolve und mldivide?

10

In Matlab werden sowohl Linsolve als auch Mldivide zum Lösen eines linearen Gleichungssystems in allen bestimmten, überbestimmten und unterbestimmten Fällen verwendet.

Als ich ihre Dokumente las, fragte ich mich, welche Unterschiede zwischen ihnen bestehen. Verwenden sie in den drei Fällen fast dieselben Algorithmen zur Matrixfaktorisierung und Triangularisierung?

Wenn A die Eigenschaften in opts hat, ist linsolve schneller als mldivide, da linsolve keine Tests durchführt, um zu überprüfen, ob A die angegebenen Eigenschaften hat

Führt mldivide dieselben Tests durch, um zu überprüfen, ob A die besonderen Eigenschaften aufweist? Oder behandelt mldivide sie nur als allgemeinen Fall ohne die besonderen Eigenschaften?

Vielen Dank!

Tim
quelle

Antworten:

16

Beide sind direkte Löser zur Lösung linearer Systeme (im Gegensatz zu iterativen Lösern).

mldivideAAx=bmldivide

mldividefür quadratische Matrizen: Wenn A symmetrisch ist und reale, positive diagonale Elemente aufweist, versucht MATLAB eine Cholesky-Faktorisierung. Wenn die Cholesky-Faktorisierung fehlschlägt, führt MATLAB eine symmetrische, unbestimmte Faktorisierung durch. Wenn A oberer Hessenberg ist, verwendet MATLAB die Gaußsche Eliminierung, um das System auf eine dreieckige Matrix zu reduzieren. Wenn A quadratisch ist, aber weder permutiert dreieckig, symmetrisch und positiv definit noch Hessenberg ist, führt MATLAB eine allgemeine Dreiecksfaktorisierung unter Verwendung der LU-Faktorisierung mit teilweisem Schwenken durch

linsolve für quadratische Matrizen: LU-Faktorisierung mit teilweisem Schwenken

mldivideund linsolvefür rechteckige Matrizen: QR-Faktorisierung

linsolveoptsA

opts.POSDEF = true; linsolve(A,b,opts)

xAopts

Wenn bestimmte Kriterien erfüllt sind linsolveund mldividedenselben Faktorisierungsprozess verwenden. Zum Beispiel für ein dichtes positives bestimmtes System, das bestimmte Eigenschaften erfüllt, oder Sie haben ein überbestimmtes System und beide führen eine Anpassung der kleinsten Quadrate durch.

Darüber hinaus linsolvekönnte auch eine symbolische Berechnung durchgeführt werden . Dies ist praktisch, wenn Sie ein kleines, unbestimmtes System haben, das unendlich viele Lösungen bietet. linsolveermöglicht es Ihnen, es symbolisch zu lösen, mldividekann das nicht. Wenn die Variablen jedoch nicht symbolisch deklariert sind mldivideund linsolvedieselbe Warnmeldung angezeigt wird: "Matrix ist einzigartig für die Arbeitsgenauigkeit."

Last but not least werden linsolvekeine spärlichen Systeme wie die folgende Matrix unterstützt (blauer Punkt bedeutet Eintrag ungleich Null). Während mldividespärliche Systeme robust handhaben könnten, wenn die Größe unter 200k mal 200k liegt. spärliches Beispiel

Shuhao Cao
quelle