Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Gaußscher Algorithmus

Ähnliche Präsentationen


Präsentation zum Thema: "Gaußscher Algorithmus"—  Präsentation transkript:

1 Gaußscher Algorithmus

2 Aufgabenstellung Lösen Sie das lineare Gleichungssystem AX=B !
Gegeben: Dimension N ( int N; ) Koeffizienten Aij für i=0,...,N-1 und j=0,...,N-1 ( double [][] A = new double [N][N]; ) rechte Seite Bi für i=0,...,N-1 ( double [] B = new double [N]; )

3 Gesucht: Existenz : Gibt es eine Lösung? Einzigkeit : Wenn es eine Lösung gibt, ist es die einzige Lösung? Lösung bzw. Lösungsmenge

4 Matrixschreibweise:

5 Gaußscher Algorithmus
Für die erste Gleichung gilt:

6 X[0]=B[0]; for (int j=1; j<N; j++) { X[0] -= A[0][j]*X[j]; } X[0] /= A[0][0];

7 X0 in den anderen (k=1,2,...,N-1) Gleichungen ersetzen:
Die Gleichungen hängen nur noch von X1, X2, ... , XN-1 ab. Die Dimension des Gleichungssystems ist also um 1 erniedrigt. Algorithmus kann „in place“ durchgeführt werden, d.h. die Felder A und B können wiederverwendet werden.

8 Koeffizienten und rechte Seiten des reduzierten Gleichungssystems
für k=1,...,N-1 und j=1,...,N-1 für k=1,...,N-1 for (int k=1; k<N; k++) { for (int j=1; j<N; j++) A[k][j] -= A[k][0]*A[0][j]/A[0][0]; } B[k] -= A[k][0]*B[0]/A[0][0];

9 Nach der Anwendung eines Schrittes des Gaußschen Verfahrens
entsteht folgendes Gleichungssystem (mit modifizierten Koeffizienten und rechten Seiten): Dieses Gleichungssystem und das ursprüngliche sind lösungsäquivalent. Voraussetzung :

10 Nach der Anwendung von i Schritten des Gauß-Jordan Verfahrens
entsteht folgendes Gleichungssystem: Dieses Gleichungssystem und das ursprüngliche sind lösungsäquivalent. Voraussetzung :

11 Für die i-te Gleichung gilt:

12 X[i]=B[i]; for (int j=i+1; j<N; j++) { X[i] -= A[i][j]*X[j]; } X[i] /= A[i][i];

13 Xi in den anderen (k=i+1,2,...,N-1) Gleichungen ersetzen:
Die Gleichungen hängen nur noch von Xi+1, Xi+2, ... , XN-1 ab.

14 Koeffizienten und rechte Seiten des reduzierten Gleichungssystems
für k=i+1,...,N-1 und j=i+1,...,N-1 für k=i+1,...,N-1 for (int k=i+1; k<N; k++) { for (int j=i+1; j<N; j++) A[k][j] -= A[k][i]*A[i][j]/A[i][i]; } B[k] -= A[k][i]*B[i]/A[i][i];

15 Nach der Anwendung von N-1 Schritten des Gaußschen Verfahrens
entsteht folgendes Gleichungssystem: Dieses Gleichungssystem und das ursprüngliche sind lösungsäquivalent. Voraussetzung :

16 Es bleibt die Gleichung :
X[N-1]=B[N-1]/A[N-1][N-1];

17 for (int i=0; i<N-1; i++)
{ for (int k=i+1; k<N; k++) for (int j=i+1; j<N; j++) A[k][j] -= A[k][i]*A[i][j]/A[i][i]; } B[k] -= A[k][i]*B[i]/A[i][i]; X[N-1]=B[N-1]/A[N-1][N-1]; for (int i=N-2; i>=0; i--) X[i]=B[i]; X[i] -= A[i][j]*X[j]; X[i] /= A[i][i];

18 for (int i=0; i<N-1; i++)
{ for (int k=i+1; k<N; k++) for (int j=i+1; j<N; j++) A[k][j] -= A[k][i]*A[i][j]/A[i][i]; } B[k] -= A[k][i]*B[i]/A[i][i]; for (int i=N-1; i>=0; i--) X[i]=B[i]; X[i] -= A[i][j]*X[j]; X[i] /= A[i][i];

19 Problem: Ai,i muss immer verschieden von Null sein! Z.B.: Das System ist eindeutig lösbar X1 = X2 = X3 = 1. Der Algorithmus funktioniert aber nicht, da A0,0 = 0. Man braucht nur die Gleichungen umzusortieren und der Algorithmus funktioniert.

20 double maxa = Math.abs(A[i][i]);
int imaxa = i; for (int k=i+1; k<N; k++) { if ( Math.abs(A[k][i])>maxa ) maxa = Math.abs(A[k][i]); imaxa = k; } if (i != imaxa) double [] Ah = A[i]; A[i]=A[imaxa]; A[imaxa]=Ah; double h = B[i]; B[i]=B[imaxa]; B[imaxa]=h;


Herunterladen ppt "Gaußscher Algorithmus"

Ähnliche Präsentationen


Google-Anzeigen