Frage

ich an einigen Stellen (im doc und in dieser Blog-Post zu lesen: http://blogs.mathworks.com/loren/2007/05/16/purpose-of-inv/ ), dass die Verwendung von inv in Matlab wird nicht empfohlen, da es langsam und ungenau ist .

Ich versuche, den Grund für diese Ungenauigkeit zu finden. Ab sofort gab Google m nicht interessantes Ergebnis, also dachte ich, jemand hier könnte mich führen.

Danke!

War es hilfreich?

Lösung

Die Ungenauigkeit ich erwähnt ist bei dem Verfahren INV, nicht MATLAB-Implementierung davon. Sie sollten mit QR, LU oder anderen Verfahren werden Gleichungssysteme zu lösen, da diese Verfahren normalerweise nicht erforderlich, den Zustand Nummer des Systems in Frage quadrieren. Mit inv erfordert in der Regel eine Operation, die durch die Quadratur der Zustandszahl der ursprünglichen Systemgenauigkeit verliert.

- Loren

Andere Tipps

Ich denke, der Punkt von Loren Blog ist inv Funktion ist nicht, dass MATLAB ist besonders langsamer oder ungenauer als jede andere numerische Implementierung der Berechnung einer inversen Matrix; dass in den meisten Fällen eher das Gegenteil selbst nicht benötigt wird, und Sie können mit anderen Mitteln (wie zB die Lösung eines linearen Systems mit \ - den Backslash Operator - anstatt die Berechnung einer inversen) um fortzufahren.

inv() ist sicherlich langsamer als \, wenn Sie für mehrere rechte Seite Vektoren zu lösen. Allerdings Ungenauigkeit die Beratung von MathWorks bezüglich ist aufgrund eines übermäßig konservativ gebunden in einem numerischen linearen Algebra Ergebnis. Mit anderen Worten, ist inv() NICHT ungenau. Der Link führt weiter aus: http://arxiv.org/abs/1201.6035

  

Mehrere weit verbreitete Lehrbücher führen die Leser zu glauben, daß ein lineares Gleichungssystem Ax = b zu lösen, indem den Vektor b durch ein berechnete inverse inv Multiplikation (A) ungenau ist. Praktisch alle anderen Lehrbücher der numerischen Analyse und numerische lineare Algebra abraten berechnet Umkehrungen verwenden, ohne zu erklären, ob dies richtig ist oder nicht. In der Tat, unter vernünftigen Annahmen darüber, wie die inversen berechnet wird, x = inv (A) * b ist so genau wie die Lösung von den besten rückwärts stabilen Solver berechnet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top