![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
und des
Vektors
des
Gleichungssystems
.
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}
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |