Matrizeninversion



  • Hallo
    Ich habe folgendes Problem: Für ein Programm zur Darstellung von Splines
    habe ich eine Matrizen-Klasse entworfen die auch die Inversion nach dem Gauss Algorithmus beherrscht. Die Inversion funktioniert bei normalen Matrizen ohne Probleme. Sobald die Matrizen aber in der Größenordnung 40x40 sind, ist die Berechnung sehr ungenau und die Zahlen werden extrem klein oder groß. Dadurch werden die Ergebnisse Falsch. Wie kann ich dass umgehen. Gibt es eventuell die Möglichkeit einen anderen Algorithmus anzuwenden oder habe ich irgendetwas nicht bedacht.



  • Hallo.

    Matrizen invertieren ist immer kritisch, da sich die nummerischen Fehler sehr stark aufschaukeln. Zum Beispiel kann es dir passieren das du singuläre Matrizen invertierst.
    Wenn irgend möglich solltest du auf ein Frontallösungsverfahren umsteigen bei dem weit weniger Rechenschritte durchgeführt werden. Ist auch besser für die Rechenzeit.
    Aber auch dort kannst du Probleme mit diesen Fehlern bekommen, auch wenn diese nicht mehr so stark ausgeprägt sind.

    Bei mir hat hier folgendes geholfen:
    Nach jedem Rechenschritt (Bearbeitung einer Zeile) die Matrix nach sehr kleinen Werten durchsuchen und diese gleich Null zu setzen.
    Damit bekommst du aber auch nur eine Näherungslösung!
    Du solltest versuchen in deinen Invertierungsalgorithmus etwas ähnliches einzubauen. Oder noch besser: einen Frontallöser daraus machen und diese Methode integrieren.
    Gruß,
    chris_f



  • Wenn du allerdings auf den Gauss bestehst, solltest du wenigstens die Matrix nach jedem Schritt pivotisieren.

    Vielleicht solltest du dein Problem auch mal in der Mathe Gruppe posten, die sind da deutlich erfahrener mit solchen Problemen.

    gruss
    Tobi


Anmelden zum Antworten