Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | PROGRAM GAUSS (INPUT, OUTPUT); |
2 | ||
3 | VAR I, J, K, L, M, N: INTEGER; | |
4 | Q: REAL; | |
5 | A: ARRAY[1..9, 1..10] OF REAL; | |
6 | X: ARRAY[1..9] OF REAL; | |
7 | ||
8 | BEGIN (*EINLESEN DER KOEFFIZIENTEN UND DER RECHTEN SEITEN*) | |
9 | READ(N); WRITELN("N =",N:2); | |
10 | FOR I := 1 TO N DO | |
11 | BEGIN | |
12 | FOR J := 1 TO N+1 DO BEGIN READ(A[I,J]); WRITE(A[I,J]:8:2) END; | |
13 | WRITELN | |
14 | END; | |
15 | FOR I := 1 TO N-1 DO | |
16 | BEGIN (*AUFSUCHEN DES GROESSTEN KOEFFIZIENTEN A[I,J]*) | |
17 | M := I; | |
18 | FOR K:=I+1 TO N DO | |
19 | IF ABS(A[K,I]) > ABS(A[M,I]) THEN M := K; | |
20 | IF M <> I THEN (*ZEILENTAUSCH*) | |
21 | FOR J := I TO N+1 DO | |
22 | BEGIN | |
23 | Q := A[I,J]; A[I,J] := A[M,J]; A[M,J] :=Q | |
24 | END; | |
25 | (* ELIMINATION DER X[I] AUS D. K-TEN GLEICHUNG *) | |
26 | FOR K:= I+1 TO N DO | |
27 | BEGIN Q:=A[K,I]/A[I,I]; | |
28 | FOR J:=I+1 TO N+1 DO A[K,J]:=A[K,J]-A[I,J]*Q | |
29 | END; | |
30 | END; | |
31 | FOR I := N DOWNTO 1 DO (* BERECHNUNG VON X[I]*) | |
32 | BEGIN Q := A[I,N+1]; | |
33 | FOR J := I+1 TO N DO Q := Q - A[I,J]*X[J]; | |
34 | X[I] := Q/A[I,I] | |
35 | END; | |
36 | WRITELN; | |
37 | FOR I := 1 TO N DO (*AUSGABE VON X[I] *) | |
38 | WRITELN("X",I:1, " = ", X[I]:8:2) | |
39 | END. |