3x3 Matrixinversion in C++ |
02.02.2015, 16:26 | AstroNerd | Auf diesen Beitrag antworten » | |||||||
3x3 Matrixinversion in C++ Ich habe im Thread ,,Lineare Algebare, Basistransformation - Aufgabe'' feststellen müssen, dass mein Quelltext zur Ermittlung der Inversen einer 3x3 Matrix falsch zu sein scheint. Hier mein Quelltext: ----------------------------------------------------------------------------------------------------------------------------------- #include <iostream> using namespace std; int main() { double a,b,c,d,e,f,g,h,i,detA,A11,A12,A13,A21,A22,A23,A31,A32,A33; cout<< "Geben Sie die Koordinaten Ihrer Matrix ein." ; cin >> a >> b >> c >> d >> e >> f >> g >> h >> i; detA = a*(e*i - f*h) - b*(d*i-f*g) - c*(d*h-e*g); A11 = e*i - h*f; A12 = b*i - h*c; A13 = b*f - e*c; A21 = d*i - g*f; A22 = a*i - g*c; A23 = a*f - d*c; A31 = g*e - d*h; A32 = g*b - a*h; A33 = a*e - d*b; cout << "Die Inverse Matrix ist:\n("<< 1/(detA)*A11 << " " << 1/(detA)*(-A12) << " " << 1/(detA)*A13<< ")\n(" << 1/(detA)*(-A21) << " " << 1/(detA)*A22 << " " << 1/(detA)*(-A23) << ")\n(" << 1/(detA)*A31 << " " <<1/(detA)*(-A32) << " " << (1/detA)*A33 << ")" ; cin.sync(); cin.get(); return 0; } ------------------------------------------------------------------------------------------------------------------------------------- Zunächst habe ich eine Matrix definiert in der Form . Schrittweise invertiert man meines Wissens nach eine 3x3 Matrix so: 1.) Determinante von A ermitteln: 2.) Matrix transportieren: 3.) Wert für die jeweiligen ,,2x2 Matrizen'': 4.) Transportierte Matrix multiplizieren: 5.) Inverse Matrix: Nun leuchtet mir nicht ganz ein, wo mein Fehler im Quelltext liegt. Mit freundlichem Gruß AstroNerd |
|||||||||
02.02.2015, 16:32 | Steffen Bühler | Auf diesen Beitrag antworten » | |||||||
RE: 3x3 Matrixinversion in C++
Nein, Den Rest hab ich mir jetzt nicht angeschaut. Viele Grüße Steffen |
|||||||||
02.02.2015, 16:34 | 10001000Nick1 | Auf diesen Beitrag antworten » | |||||||
RE: 3x3 Matrixinversion in C++
Da ist der Fehler. Richtig wäre
Außerdem solltest du noch eine Abfrage machen, ob detA==0 ist. Sonst kann dir das Programm nämlich komplett um die Ohren fliegen. |
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|