Fehler in Quellcode < C/C++ < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 14:24 Mo 23.03.2009 | Autor: | uecki |
Aufgabe | void qMatrizen::invert()
{
/*qMatrizen B; // Matrix fuer die rechte Seite
int x,y,i,j,pivotzeile;
double hilfe1,hilfe2,maximum;
[mm] B.set_m(m); [/mm] //ANZAHL DER ZEILEN UND SPALTEN UEBERNEHMEN)
[mm] B.set_n(n);
[/mm]
//EINHEITSMATRIX ERZEUGEN
for (x=1;x<=m;x++)
{
for(y=1;y<=n;y++)
{
if(y==x) B.setValue(x,y,1.0);
else B.setValue(x,y,0.0);
}
}
// B-->ist Einheitsmatrix mit der gleichen Dimension
//************GAUSS-JORDAN ALGORITHMUS
for(x=1;x<m;x++) //Zaehle die Spalten...
{
maximum=fabs(getValue(x,x)); //Maximumelement ist (nunaechst) aktuelles Element
pivotzeile=x; //Pivotzeile ist (zunachst) aktuelle Zeile
for(y=x;y<=n;y++) //Suche in jeder Zeile nach groesserem Element
{
if(maximum<fabs(getValue(y,x))) //Groesseres Element gefunden ?
{
maximum=fabs(getValue(y,x)); //...Element speichern
pivotzeile=y; //...Zeile des Elementsspeichern
}
if (pivotzeile != x) //falls erforderlich: Zeilentausch vornehmen
{
for(i=1;i<=n;i++)
{
//Hilfsvariablen setzen
hilfe1=getValue(x,i);
hilfe2=B.getValue(x,i);
//Tausch fuer erste Matrix
setValue(x,i,getValue(pivotzeile,i));
setValue(pivotzeile,i,hilfe1);
//Tausch fuer zweite (anfangs: Einheits-)Matrix
B.setValue(x,i,B.getValue(pivotzeile,i));
B.setValue(pivotzeile,i,hilfe2);
}
}
}
for(i=x+1;i<=n;i++) //*** 0-len erzeugen
{
hilfe1=getValue(i,x);
setValue(i,x,0.0);
B.setValue(i,x,B.getValue(x,x)*B.getValue(i,x)-hilfe1*B.getValue(x,x));
B.show_Matrix();
system("pause");
for(j=x+1;j<=m;j++)
{
setValue(i,j,getValue(x,x)*getValue(i,j)-hilfe1*getValue(x,j));
B.setValue(i,j,B.getValue(x,x)*B.getValue(i,j)-hilfe1*B.getValue(x,j));
}
}
}
cout [mm] <<"\nA:\n";
[/mm]
show_Matrix();
cout [mm] <<"\nB:\n";
[/mm]
B.show_Matrix();
} |
Hallo,
also, wir mussten ein Programm zu Matrixalgebra schreiben und da gehört dann auch das Invertieren von quadratischen Matrizen dazu. Allerdings funtkioniert das bei uns nicht. Kann vielleicht jemand erkennen wo der Fehler bei uns liegt? Oder vielleicht einfach Anregungen oder Tipps geben wie man es besser oder anders machen sollte?
Das wäre sehr nett, wenn uns jemand helfen könnte. Am Freitag müssen wir das nämlich vorstellen, also die Zeit rennt....
Vielen lieben Dank schon mal !
LG
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:20 Mi 25.03.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|