Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

Gleichungssysteme lösen!

Renechen / 3 Antworten / Flachansicht Nickles

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?

bei Antwort benachrichtigen
Anonym Renechen „Gleichungssysteme lösen!“
Optionen

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);
}

bei Antwort benachrichtigen