Hallo Leute!
Mich plagt im Moment ein kleines Problem. Ich muß ein Programm schreiben in C++, mit dem man Gleichungssysteme nach dem Verfahren von Gauß lösen kann. Hat jemand ein Plan wie das geht oder wo ich vielleicht einen Hinweis bekommen könnte?
Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge
Hier ein bischen Code. (Aus dem Stehgreif daher mit Sicherheit mehr oder weniger falsch :)
Die Matrix (=das Gleichungssystem)
1 2 3
2 2 1
1 1 2
wird diagonalisiert nach Gauss. Schritt 1
+1 +2 +3
+0 -1 -2.5
+0 -1 -1
Schritt 2
+1 +2 +3
+0 -1 -2.5
+0 +0 +1.5
und ist damit gelöst. (x3=1.5 der rest durch einsetzen)
#define N 3
#define EPS 0.000001
void DumpM(double* M)
{
for (int z=0;z<N;z++)
{
for(int s=0;s<N;s++) printf("%.2f ",M[(z*N)+s]);
printf("\n");
}
printf("\n");
}
main()
{
double M[N][N] =
{
{ 1.0, 2.0, 3.0 } ,
{ 2.0, 2.0, 1.0 } ,
{ 1.0, 1.0, 2.0 }
};
DumpM((double*)M);
for(int zeile = 0; zeile < N; zeile++)
{
for (int i = zeile + 1; i < N ; i++)
{
double a = M[zeile][zeile];
double b = M[i][zeile];
double faktor=1.0;
if (fabs(b) > EPS)
{
faktor = a / b;
}
for (int spalte=0; spalte < N ; spalte++)
{
M[i][spalte] = (M[i][spalte] * faktor) - M[zeile][spalte];
}
}
}
DumpM((double*)M);
}