|
|
nahezu singuläre Matrix invertieren - Problem |
|
Felge der Nacht |

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 29.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 29.11.2009, 17:37
Titel: nahezu singuläre Matrix invertieren - Problem
|
 |
|
 |
|
Hallo,
im Rahmen meiner Diplomarbeit will ich ein nichtlineares Gleichungssystem (7 dimensional) mit Hilfe des Newtonverfahrens lösen.
Schematischer Pseudocode:
x(k+1) = x(k)-inv(Jakobimatrix(F(x(k)))*F(x(k))
Für viele Wertkombinationen konvergiert das Verfahren. Bei manchen jedoch nicht, was daran liegt, dass die Elemente der Jakobimatrix um mehrere Potenzen auseinander liegen und somit numerisch gesehen die Jakobimatrix nahezu singulär ist. (Entsprechende Fehlermeldung wird geworfen) Zwar bekomme ich ein Ergebnis, jedoch weicht die Kontrolle inv(Jakobi)*Jakobi stark von der Einheitsmatrix ab.
Auf der Suche nach einer Möglichkeit, über Umwege dennoch eine korrekte Inverse zu berechnen, bin ich unter anderem auf die Präkonditionierung/Skalierung gestoßen, jedoch nur für ein lineares GLS.
In meinem Fall habe ich aber kein System sondern nur die einzelne Matrix, die ich invertieren will. Daher weiß ich nicht, ob und wie ich eine Skalierung vornehmen kann.
"\" an Stelle von inv brachte auch keine Verbesserung.
Das Grundproblem der finiten numerischen Genauigkeit ist mir bewusst, jedoch wäre es eleganter, für alle beliebigen (wenn auch realitätsfremden) Wertekombinationen eine korrekte Lösung auszugeben als "auf gut Glück" zu hoffen, dass die Inverse ausreichend exakt ist, dass sich Konvergenz einstellt und im Zweifelsfall eine Fehlermeldung auszugeben.
Danke schonmal!
Gruß
Johannes
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 29.11.2009, 22:03
Titel:
|
 |
Hallo,
ist es Sinn der Sache, dass das nichtlin. Gleichungssystem von Hand gelöst wird, oder könntest du fertige Routinen verwenden? Falls letzteres:
Aus numerischer Sicht wird man nur in den allerseltensten Fällen die Inverse explizit berechnen. \ wäre also hier empfehlenswerter. Und: du hast ein System:
y = inv(Jakobimatrix(F(x(k)))*F(x(k)) ist gleichwertig mit
Jakobimatrix(F(x(k)))*y = F(x(k))
Grüße,
Harald
|
|
|
Felge der Nacht |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 8
|
 |
|
 |
Anmeldedatum: 29.11.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2009, 14:58
Titel:
|
 |
Hallo Harald,
danke erstmal für deinen Beitrag! Hat leider etwas gedauert, bis ich darauf Bezug nehmen konnte:
Mittlerweile habe ich das Problem in den Griff bekommen. Mein Konvergenzproblem lag nicht an der "Nahezu-Singularität" der Jakobimatrix sondern an einer zu großen Schrittweite. Ich simuliere quasi ein dynamisches Verhalten für zeitdiskrete Abtastpunkte. Da es mir nicht möglich ist, realitätsnahe Anfangsbedingungen vorzugeben, weisen die ersten Abtastpunkte eine sehr große Dynamik auf. Da meine Schrittweite zu groß war, konnte ich diesen Einschwingvorgang nicht korrekt erfassen, so dass sich keine Konvergenz einstellte.
Jetzt läuft das ganze aber (trotz der "nahezu-Singularität" der Jakobimatrix). Die Sache mit der Skalierung meines Systems werde ich noch testen und berichten!
fsolve habe ich auch getestet! Es ist etwa um den Faktor 1,4 langsamer als mein Nuewton-Verfahren.
Gruß
Johannes
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|