4*4 Matrix invertieren
-
Hi
Ich will eine Funktion schreiben, mit der man eine 4*4 Matrix invertieren kann.
Nur verstehe ich nicht wie das gehen soll.Eine 22 Matrix zu invertieren ist ja Standart.
Eine 33 Matrix kann man ja einfach mit der Regel des Sarrus bearbeiten,
aber wie funktioniert das bei einer 4*4 Matrix.Mann kann es zwar in der Realität mit dem Gaußischen Verfahren machen,
aber, da es sich um komplexe Gleichungen handelt, habe ich keine Anhung wie man das dem PC beibrigngen will, da man dann mit 16 Variablen arbeitet.Bei meiner 4*4 Matrix benutze ich jedoch nur 9 Variablen richtig, also:
a b c 0
d e f 0
g h i 0
0 0 0 1nur die dicken Variablen ändern ishc und alles andere bleibt immer gleich.
Könnte man da nicht einfach die imaginäre 3*3 Matrix invertieren und dann in eine 4*4 Einheitsmatrix einsetzten??
Hoffe auf baldige Antwort
mfg
-
Du wirst diese Matrix vermutlich in einem 2 Dimensionalen Array speichern oder?
Nimm dir doch einfach eine verschachtelte schleife und sage überall !variable. Warum dafür extra matematik anwenden?
-
Prophet05 schrieb:
Du wirst diese Matrix vermutlich in einem 2 Dimensionalen Array speichern oder?
Nimm dir doch einfach eine verschachtelte schleife und sage überall !variable. Warum dafür extra matematik anwenden?
Weißt du überhaupt was es bedeutet eine Matrix zu invertieren?
-
Sie das als 4 Blockmatrizen un nutze das Schur Komplement
http://en.wikipedia.org/wiki/Invertible_matrix
Block |A|B| |C|D| A00,A01,A02,B0 A10,A11,A12,B1 A20,A21,A22,B2 C0, C1, C2,D Invertieren A' =inv(A) + inv(A)*B *inv(D-C*inv(A)*B*C*inv(A); da B=transp(0,0,0) A' =inv(A) B'= -inv(A)*B*inv(D-C*inv(A)*B) da B=transp(0,0,0) B' =transp(0,0,0) C'=-inv(D-C*inv(A)*B)*c*inv(A) da C=(0,0,0) C' =(0,0,0) D'=inv(D-C*inv(A)*B) da C=(0,0,0) D'=inv(D) D'=1/D Folgt |inv(A)|0| = inv |A|B| | 0|1| |C|D|
-
Also kannn ich mein 2tes Verfahren anwenden?
-
Ja.