/* gaussalg.c -- Matthias Jauernig, 12.12.03 */ /* Programm berechnet die Lösungen eines LGS mit (n,n)-Koeffizientenmatrix */ #include #include /* -- printline() -- gibt eine Linie der Länge n mit dem Zeichen z aus ---------------- */ void printline(int l, char z){ int i; for(i=0; i<=l; i++) printf("%c",z); printf("\n"); } /* -- printhead() -- gibt die Kopfzeile der Tabelle aus ------------------------------- */ void printhead(int n){ int i; char str[10]; printf("\n"); printline(10*(n+1), '='); for(i=0; i unendlich viele Lsg. //ist in dem Fall b[i]!=0, so wird flag=2 gesetzt -> keine Lösungen for(i=k+1; i %d. Zeile 0=0: also unendlich viele Lösungen!\n", i); else printf("=> %d. Zeile 0!=%g: also keine Lösung!\n", i, a[i-1][n]); } } //################### durch Rücksubstitution x[i] berechnen ###################### if(flag==0){ x=(float *)malloc(n*sizeof(float)); printf("\nLösungen nach dem Gaussschen Algorithmus:\n"); for(i=n-1; i>=0; i--){ sub=0; //Summe berechnen, die abgezogen wird for(j=i+1; j x[%d] = %g\n", i, x[i]); } free(x); } printf("\n\n"); //################################# Aufräumen #################################### for(i=0; i 2. Zeile 0!=-1: also keine Lösung! ########################################################################################## -------------------------------------- | Gauss-Algorithmus ohne Pivot-Suche | -------------------------------------- Wie groß ist n für die (n,n)-Koeffizientenmatrix?: 3 Werte der Koeffizientenmatrix eingeben: Wert von a[0][0] eingeben: 1 Wert von a[0][1] eingeben: 1 Wert von a[0][2] eingeben: 1 Wert von a[1][0] eingeben: 1 Wert von a[1][1] eingeben: 1 Wert von a[1][2] eingeben: 1 Wert von a[2][0] eingeben: 1 Wert von a[2][1] eingeben: 1 Wert von a[2][2] eingeben: 1 Werte des Vektors b eingeben: Wert von b[0] eingeben: 1 Wert von b[1] eingeben: 1 Wert von b[2] eingeben: 1 ========================================= | x[0] | x[1] | x[2] | b | ========================================= | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 1 | 1 | 1 | 1 | | 0 | 0 | 0 | 0 | | 0 | 0 | 0 | 0 | ----------------------------------------- => 3. Zeile 0=0: also unendlich viele Lösungen! ########################################################################################## -------------------------------------- | Gauss-Algorithmus ohne Pivot-Suche | -------------------------------------- Wie groß ist n für die (n,n)-Koeffizientenmatrix?: 2 Werte der Koeffizientenmatrix eingeben: Wert von a[0][0] eingeben: 5 Wert von a[0][1] eingeben: 3 Wert von a[1][0] eingeben: 4 Wert von a[1][1] eingeben: 6 Werte des Vektors b eingeben: Wert von b[0] eingeben: 2 Wert von b[1] eingeben: 6 =============================== | x[0] | x[1] | b | =============================== | 5 | 3 | 2 | | 4 | 6 | 6 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 5 | 3 | 2 | | 0 | 3.6 | 4.4 | =============================== Lösungen nach dem Gaussschen Algorithmus: => x[1] = 1.22222 => x[0] = -0.333333 */