Matrix invertieren



  • Hallo,
    ich brauche ganz dringen eure Hilfe!
    Ich muss für ein Numerik-Praktikum das Verfahren von Karmarkar (Innere-Punkte-Verfahren) implementieren in C++.
    Der Anfang ging soweit ganz gut, aber jetzt muss ich eine Matrix invertieren. Ich habe ehrlich gesagt keine Ahnung, wie ich das implementieren soll und hoffe, dass mir vielleicht jemand mit einem implementierten Algorithmus / Quellcode weiterhelfen kann.
    Die Matrix ist quadratisch, weil sie durch Multiplikation von A * A^T entsteht.
    Vielen Dank im Voraus
    smily



  • wäre die matrix nicht quadratisch, wäre sie nicht invertierbar.
    ich kenne nur das gauss jorden verfahren zur bestimmung der inversen einer matrix. vielleicht gibt es noch andere.

    im prinzip müsstest du eine zweite matrix erzeugen, die genau doppelt so breit ist, wie deine ausgangsmatrix. die zu invertierende matrix schreibst du "links" gefolgt von der einheitsmatrix. per gauss elimination wandelst du dann die zu invertierende matrix in eine einheitsmatrix um. indem du die gleichen operationen auch bei der konkatenierten einheitsmatrix ausführst, erzeugst du in ihrem speicherbereich automatisch die inverse.

    ich hoffe, dass das halbwegs stimmt. leider bin ich kein mathematiker.

    ein link noch: http://mathworld.wolfram.com/Gauss-JordanElimination.html

    ist das eine nützliche antwort auf deine frage?



  • Vielen Dank für die rasche Antwort.
    Die Funktionsweise vom Invertieren ist mir rechnerisch auf einem Blatt papier absolut kalr und auch kein Problem, es hängt leider an der Implementiereung, wie ich den PC bzw. C++ dazu bringe, aus der ursprünglichen Matrix die Einheitsmatrix zu basteln etc.



  • Deine Problembeschreibung ist irgendwie nicht spezifisch genug. Wenn alles andere kein Problem darstellt, warum ausgerechnet die Invertierung, deren Berechnungsalgorithmus (den du einsetzen möchtest) du ja auch, wie du sagst, verstanden hast.



  • mache einfach ein beispiel auf dem papier
    langsam und denk mit

    schreib neben bei am besten so eine art pseudocode auf wie du das machst

    und wenn du das hast dann sollte es weniger das problem sein es mit c++ zu implementieren



  • Wow, da war echt schwer zu ergoogeln, hat mich ganze 3 Sekunden gekostet 😮 http://www.google.com/search?q=gauss+elimination+c%2B%2B 😉

    Ansonsten: im Sedgewick (oder vergleichbaren Algorithmenbuechern) ist der Code auch drinnen 🙂



  • Hast du den Algortihmus jetzt fertig? Könntest du ihn posten?

    Lg


  • Mod

    Der Thread ist von 2008. Die Leute, die da dran beteiligt sind, sind laaaange weg. Wenn du Gauss-Elimination in C++ implementieren willst, dann frag in neuen Threads, wenn du dazu Fragen hast. Wenn du fertigen Quellcode dafür suchst, dann benutzt Google.


Anmelden zum Antworten