matrix inversion



  • HALL0.

    ich bräuchte eine library, die matrizen invertiert, addiert, etc.
    kann mir dazu jemand einen link im netz empfehlen, ich konnte leider nichts vernünftiges finden.

    DANKE.
    STICK.





  • Wie wäre es hiermit?



  • lolz schrieb:

    Wie wäre es hiermit?

    ich glaube, das funktioniert bei mir nicht, weil ich VC++2005 professional benutze. dafür ist es noch nicht getestet.



  • stick_thai schrieb:

    lolz schrieb:

    Wie wäre es hiermit?

    ich glaube, das funktioniert bei mir nicht, weil ich VC++2005 professional benutze. dafür ist es noch nicht getestet.

    funktioniert



  • Der Link von lolz ist übrigens der erste Treffer bei google 😃 😃 😃 😃 👍 👍



  • wiss0r schrieb:

    funktioniert

    leider gibts bei mir folgende fehlermeldungen:

    Error 1 error C2084: function 'float abs(float)' already has a body
    Error 2 error C2084: function 'double abs(double)' already has a body
    Error 3 error C2084: function 'long double abs(long double)' already has a body

    mein code dazu:

    #include <iostream>
    #include <MATRIX.h>
    
    using namespace std;
    
    int main()
    {
    
    	return 0;
    }
    

    DANKE.
    STICK.



  • google-experte schrieb:

    Der Link von lolz ist übrigens der erste Treffer bei google 😃 😃 😃 😃 👍 👍

    ich hatte diesen link bereits zuvor gesehen, er fiel bei mir aber unter die ruprik

    stick_thai schrieb:

    nichts vernünftiges

    da es wie gesagt bei mir nicht funktioniert hat.

    STICK.



  • Oh mann..

    Mach in der Matrix. in der Zeile 157 vor das _MSC_VER ein !



  • Hallo, hab mir die aus dem Beitrag "wie wäre es hiermit?" die Dateien von Techsoft die MATRIX TCL LITE geholt...
    Hat da jemand "Übung" drin? Ich möchte größere Matrizen invertieren und anschließend mit einer anderen multiplizieren..
    Soweit auch kein Problem (mit dem tollen Test matdemo1 der dabei ist).
    Allerdings möchte ich zum Teil auch komplexe Elemente in die Matrix mit eingeben.
    In matdemo2 war so ein Beispiel mit nem komplexen Vektor...
    Wie verbinde ich das jetzt am besten?

    Beispiel für meine Rechnung:

    # 77 Matrix mit komplexen Elementen und letzte Spalte soll 1 sein (bzw complex: (1,0) (?)) invertieren
    # Inverse davon multipliziert mit einer 1
    7 Matrix (hier sind es wieder reelle Elemente)
    # die 7 erechneten Werte benötige ich für weitere (einfachere) Berechnungen

    Hoffe das liest hier jemand, auch wenn der letzte beitrag 5 Jahre alt ist.

    Danke!?



  • 1. Matrix Invertierung ist zu vermeiden. Gleichungssysteme kann man z.B. direkt lösen und das ist auch numerisch viel besser.

    2. Ich habe bisher hauptsächlich mit Boost.uBLAS gearbeitet, würde es aber nicht empfehlen. Sonst habe ich noch gutes von Eigen gehört. Ausprobiert habe ich das aber bisher nicht.



  • Mein Tip, wenn du Matizen zerlegen willst

    GSL Gnu Scientific Library
    www.gnu.org/s/gsl/



  • Danke für die schnellen Antworten!

    Ich komme an der Matrixinversion nicht vorbei. Ich arbeite an einem Studienprojekt. Mein Prof meinte auch, das wird das "happigste" an der Arbeit (oder so ähnlich halt).
    Also ist das n Tipp eurerseits, es mit EIGEN oder dem GNU-Teil zu versuchen, oder wisst ihr, dass es mit den libraries besser geht?
    Bevor ich da noch länger rumdoktorn müsste komplexe Elemente einzubauen, versuch ich es wohl weiter mit meiner MATRIX TCL von techsoft...

    Gruß



  • sum_pattern schrieb:

    Ich komme an der Matrixinversion nicht vorbei. Ich arbeite an einem Studienprojekt. Mein Prof meinte auch, das wird das "happigste" an der Arbeit (oder so ähnlich halt).

    Eine lausige Matrix zu invertieren ist das "happigste" an deiner Arbeit?
    Herzlichen Glückwunsch.



  • Naja, programmiertechnisch vielleicht schon das happigste. Und da bin ich eben nicht so der Profi...
    Also bitte meine harte Arbeit - die noch einiges mehr umfasst - nicht so in den Dreck ziehen, danke 🙂



  • Was für eine Matrix is das denn, die du da invertieren musst? Und warum musst du sie invertieren?



  • Das kommt ganz auf die variierenden Eingaben beim Start an.
    Als Beispiel würden sich 7 Gleichung ergeben. In Matrizen ausgedrückt:

    A * B = C

    wobei...
    ...A eine 77 Matrix ist (Spalte 1 bis 6 ist komplett komplex - Spalte 7 sind alles "1"en)
    ...B eine 1
    7 Matrix ist (mit den unbekannten, gesuchten Werten)
    ...C (logischerweise) eine 1*7 Matrix ist (mit reellen Werten)

    Nun brauch ich also die Inverse von A um

    B = A(^-1) * C

    herauszubekommen.



  • Nein brauchst du nicht. Multiplikation mit der Inversen ist so ziemlich die schlechtestmögliche Art um ein Gleichungssytem zu lösen, ein numerischer Alptraum. Jede beliebige linalg Bibliothek bietet entsprechende Algorithmen an.



  • sum_pattern schrieb:

    Nun brauch ich also die Inverse von A um

    B = A(^-1) * C

    herauszubekommen.

    Das ist falsch. Du brauchst A^{-1} nicht. Sagte ich doch! Stichwort: LR-Zerlegung. Schnapp Dir mal ein "Numerik für Anfänger"-Buch oder lass Dir von Mathestudenten, die Numerik gehört haben, erklären, wie man das richtig macht.



  • Ach ja!?

    Ich kann ja nicht Gleichung für Gleichung rechnen. Dann stoß ich ja auf 7 Unbekannte auf einmal!
    Wie sieht dann die bessere/einfachere Lösung aus?


Log in to reply