Kehrwert vom Matrizen



  • hi

    ich programmier gerade ne Klasse, mit der man mit Matrizen rechnen kann.

    Hab aber ein Problem mit dem bilden des Kehrwertes. Ich weis eigentlich wie es geht, jedoch weis ich nicht welche Bedingungen erfüllt sein müssen damit man überhauptden Kehrwert bilden kann. Ich weis nur das die Matrix gleichviele Spalten wie Zeilen haben muss.

    mfg walljumper



  • Die Determinante http://de.wikipedia.org/wiki/Determinante_(Mathematik) muss ungleich 0 sein. (Dies ist äquivalent zur Invertierbarkeit).


  • Mod

    walljumper schrieb:

    Ich weis eigentlich wie es geht, jedoch weis ich nicht welche Bedingungen erfüllt sein müssen damit man überhauptden Kehrwert bilden kann. Ich weis nur das die Matrix gleichviele Spalten wie Zeilen haben muss.

    Die Bedingung für Invertierbarkeit ist, dass die Determinante der Matrix nicht 0 nicht. Die Determinante zu berechnen ist aber sehr aufwändig, deswegen macht man das eigentlich nicht.
    AFAIK fängt man einfach an die Matrix zu invertieren und achtet z.B. auf Division durch 0 oder schaut bei floats am Ende nach, ob was sinnvolles rausgekommen ist (und nicht +-inf oder NaN in irgendwelchen Einträgen).

    Wenn es dir darum geht, ein lineares Gleichungssystem zu lösen, ist das explizite Berechnen der Inversen übrigens nicht die effizienteste Lösung. LR-Zerlegung wäre in dem Fall ein Stichwort.

    Übrigens spricht man bei Matrizen normalerweise vom "Inversen" und nicht vom "Kehrwert".



  • Wie berechnest du denn die Inverse? Vermutlich bringst du die Matrix mit Gauß auf obere Dreiecksform. Wenn du in irgendeinem Zwischenschritt dabei eine 0 auf der Diagonalen hast, ist die Matrix nicht invertierbar.
    Das ist gleichbedeutend mit der Bedingung "Determinante = 0", da man die Determinante (bis auf das Vorzeichen) aus dem Produkt der Diagonalelemente der oberen Dreicksmatrix berechnen kann - und das ist null, wenn ein Element 0 ist.

    Mach dir über folgenes mal Gedanken: Wenn du mit Fließkommazahlen rechnest, wie wahrscheinlich ist, dass du *exakt* eine 0 auf der Diagonalen produzierst?
    Was ist, wenn da irgendwo *beinahe* eine 0 steht? Was meint in diesem Zusammenhang *beinahe"?


Anmelden zum Antworten