Dieses Programm ist sowohl für das Gauß-Verfahren als auch für das Gauß-Jordan-Verfahren einsetzbar.
program Pivotisierung(input, output); {Pivotisierung der Matrix A und des Vektors c des Gleichungssystems Ax = c} uses stdfile; const MaxArray = 32; {<= 32767} var i, j, k, n: integer; a: array [0..MaxArray, 0..MaxArray] of double; c: array [0..MaxArray] of double; dummy, maxa: double; pivot: integer; procedure init; var fName: string; f: text; t: double; begin {init} writeln('Darstellung der Pivotisierung der Matrix A und des Vektors c'); writeln('des Gleichungssystems Ax = c'); writeln; writeln('In welcher Datei liegen die Daten? (In pivot.dat liegt ein Beispiel.)'); readln(fName); if StdOpen(f, fName) then begin if not StdRead(f, t) then begin writeln('Konnte Dimension nicht lesen.'); end; {if} n := round(t); if n > MaxArray then begin writeln('Die Dimension ueberschreitet die vorgegebene Arraygroesse.'); halt end; {if} for i:=0 to n-1 do begin if not StdReadn(f, n, @a[i, 0]) then begin writeln('Konnte ', i+1, '-te Zeile nicht lesen.'); end; {if} end; {for} if not StdReadn(f, n, @c[0]) then begin writeln('Konnte den Vektor nicht lesen.'); end; {if} end else begin {if} writeln('Kann Datei "', fName, '" nicht oeffnen.'); halt end; {if} close(f); end; {init} procedure result; begin {result} for i:=0 to n-1 do begin for j:=0 to n-1 do begin write(a[i, j]:8:3, ' '); end; {for} writeln(' : ', c[i]:8:3); end; {for} writeln; end; {result} begin {Pivot} init; for k:=0 to n-1 do begin pivot := k; maxa := abs(a[k,k]); for i:=k+1 to n-1 do begin dummy := abs(a[i, k]); if dummy > maxa then begin maxa := dummy; pivot := i end; {if} end; {for} if pivot <> k then begin for j:=k to n-1 do begin dummy := a[pivot, j]; a[pivot, j] := a[k, j]; a[k, j] := dummy; end; {for} dummy := c[pivot]; c[pivot] := c[k]; c[k] := dummy; end; {if} end; {for} result; end. {Pivot}