Gau scher algorithmus
Download
1 / 20

Gaußscher Algorithmus - PowerPoint PPT Presentation


  • 120 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Gaußscher Algorithmus' - kasi


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Aufgabenstellung
Aufgabenstellung

  • Lösen Sie das lineare Gleichungssystem AX=B !

  • Gegeben:

    • Dimension N

      • ( int N; )

    • Koeffizienten Aijfü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]; )


  • 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



Gau scher algorithmus1
Gaußscher Algorithmus

  • Für die erste Gleichung gilt:


X[0]=B[0];

for (int j=1; j<N; j++)

{

X[0] -= A[0][j]*X[j];

}

X[0] /= A[0][0];


X0 in den anderen (k=1,2,...,N-1) Gleichungen ersetzen:

Die Gleichungen hängen nur noch von X1, X2, ... , XN-1ab. 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.


für k=1,...,N-1 und j=1,...,N-1

für k=1,...,N-1

Koeffizienten und rechte Seiten des reduzierten Gleichungssystems

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];

}

}

for (int k=1; k<N; k++)

{

B[k] -= A[k][0]*B[0]/A[0][0];

}


Dieses Gleichungssystem und das ursprüngliche sind lösungsäquivalent.

Voraussetzung :

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 :

Nach der Anwendung von i Schritten des Gauß-Jordan Verfahrens

entsteht folgendes Gleichungssystem:



X[i]=B[i]; lösungsäquivalent.

for (int j=i+1; j<N; j++)

{

X[i] -= A[i][j]*X[j];

}

X[i] /= A[i][i];


X lösungsäquivalent.i in den anderen (k=i+1,2,...,N-1) Gleichungen ersetzen:

Die Gleichungen hängen nur noch von Xi+1, Xi+2, ... , XN-1ab.


für k=i+1,...,N-1 und j=i+1,...,N-1 lösungsäquivalent.

für k=i+1,...,N-1

Koeffizienten und rechte Seiten des reduzierten Gleichungssystems

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];

}

}

for (int k=i+1; k<N; k++)

{

B[k] -= A[k][i]*B[i]/A[i][i];

}


Dieses Gleichungssystem und das ursprüngliche sind lösungsäquivalent.

Voraussetzung :

Nach der Anwendung von N-1 Schritten des Gaußschen Verfahrens

entsteht folgendes Gleichungssystem:


Es bleibt die Gleichung : lösungsäquivalent.

X[N-1]=B[N-1]/A[N-1][N-1];


for (int i=0; i<N-1; i++) lösungsäquivalent.

{

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];

for (int j=i+1; j<N; j++)

{

X[i] -= A[i][j]*X[j];

}

X[i] /= A[i][i];

}


for (int i=0; i<N-1; i++) lösungsäquivalent.

{

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];

for (int j=i+1; j<N; j++)

{

X[i] -= A[i][j]*X[j];

}

X[i] /= A[i][i];

}


Problem: lösungsäquivalent.

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.


double maxa = Math.abs(A[i][i]); lösungsäquivalent.

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;

}


ad