Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Gleichungssysteme lösen!

Renechen / 3 Antworten / Baumansicht 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
toosten Renechen „Gleichungssysteme lösen!“
Optionen

Schau mal hier nach:

http://toosten.bei.t-online.de/


bei Antwort benachrichtigen
Renechen Nachtrag zu: „Gleichungssysteme lösen!“
Optionen

Dank an euch beide, ihr habt mir viel Mühe gespart.

bei Antwort benachrichtigen