Problem bei der Inversion von Matrizen mit großen Zahlenwerte



  • Hallo,

    ich habe eine Frage, was die Arbeit mit großen Zahlenwerten angeht. Übers Netz habe ich mir ein Matrizentool heruntergeladen ( http://www.robertnz.net/index.html ), um damit Matrizen zu invertieren. Dieses funktioniert auch sehr gut, wenn die Zahlenwerte innerhalb der Matrix nicht zu groß sind.
    Erreichen die Werte innerhalb der Matrix einen Wert von um die 1*e+40, dann kommt es im Endergebnis zu großen Abweichungen / Schwankungen. Ich habe schon versucht, die Matrix zu skalieren. D.h. einen Faktor vom Wert z.B. 1*e+20 ausgeklammert, dann invertiert und dann diesen Faktor wieder in die Matrix reinberechnet, aber das führt auch nicht zu den gewünschten Ergebnissen. Meine Frage ist jetzt, was ich noch für Optionen habe, um diese Matrixinversion zu ermöglichen? Wie könnte ich die Sache noch angehen?

    Danke.
    V.K.



  • Ich habe vor kurzem eine Diskussion verfolgt, in der es darum ging, ob die Matlab-Funktion INV in Zukunft entfallen soll oder zumindest eine Warnung ausgeben soll, mit der Begründung, dass man inverse Matrizen so gut wie nie explizit braucht. Wozu brauchst du sie denn?



  • Falls es dir etwas nützt: Ich brauche sie für die Methode der kleinsten Quadrate. Im Moment versuche ich anhand einer 3D-Punktwolke die 21 Parameter eines Polynoms 5ten Grades zu bestimmen. Dafür braucht man halt eine inverse Matrix.

    V.K.



  • So wie ich das sehe bekommst du nachher ein Gleichungssystem. Und das kannst du lösen ohne die Inverse explizit zu bestimmen. Bei Matrizen dieser Größenordnung kann sogar noch was einfaches wie Gaußsche Elimination o.ä. benutzt werden.



  • ...Gaußsche Elimination...

    meiner erfahrung nach ist eine inverse damit oft viel ungenauer und man bekommt schon bei 4x4 genauigkeitsprobleme.

    ich wuerde vorschlagen es mit long double zu versuchen oder alternativ mal ne lib fuer grosse wertebereiche zu benutzen.



  • Nützt einem be schlechter Konditionierung alles relativ wenig. Die Verwendung der Inversen zu umgehen ist nahezu immer der sinnvollste Weg. Sowohl was Performance, als auch was Genauigkeit angeht.


Anmelden zum Antworten