program
p_gaussjordan;
{$APPTYPE CONSOLE}
uses
wincrt;
{Program Ali Imron
Eliminasi Gauss Jordan dengan pivoting
Daftar variabel
a[],b[] : matriks pembentuk persamaan simultan
linear
g[]
: matriks gabungan
x : matriks hasil
perhitungan }
type
mat55 = array[0..5,0..5] of real;
mat56 = array[0..5,0..5] of real;
var
a : mat55;
g : mat56;
b : array [0..5] of
real;
factor,dummy
: real;
i,j,k,n
: Integer;
procedure Inisialisasi;
begin
a[0][0]
:= 1;
a[0][1] := 3;
a[0][2] := 1;
a[1][0] := 1;
a[1][1] := 2;
a[1][2] := 5;
a[2][0] := 4;
a[2][1] := 1;
a[2][2] := 2;
b[0] := 10;
b[1] := 12;
b[2] := 16;
n :=3;
end;
begin
Inisialisasi;
{Bentuk matriks gabungan}
for i:=0 to n-1 do
for j:=0 to n-1 do
g[i][j]:= a[i][j];
for j:=0 to n-1 do
g[j][n]:= b[j];
Writeln('----------------------------------');
Writeln('Matriks Penggabungan');
for i:=0 to n-1 do
begin
for
j:=0 to n do
write(g[i][j]:10:5);
writeln;
end; Writeln('----------------------------------');
{ Proses eliminasi }
for i:=0 to n-1 do
begin
{
pivoting }
dummy
:= abs(g[i][i]);
k:=i;
for j:=i+1 to n-1 do
if (abs(g[j][i])> dummy) then
begin
dummy := abs(g[j][i]);
k:= j;
end;
if (k <> i) then
for j:=i to n do
begin
dummy := g[k][j];
g[k][j] := g[i][j];
g[i][j] := dummy;
end;
for j:= 0 to n-1 do
begin
if (i <> j) then
begin
factor := g[j][i]/g[i][i];
for k:= i to n do
g[j][k] := g[j][k]- factor*g[i][k];
end;
end;
end;
for i:= 0 to n-1 do
begin
g[i][n]
:= g[i][n]/g[i][i];
g[i][i]
:= 1;
end;
Writeln('Matriks Setelah eliminasi');
for i:= 0 to n-1 do
begin
for
j:= 0 to n do
write
(g[i][j]:10:5);
writeln;
end; Writeln('----------------------------------');
Writeln('Hasil Akhir');
for i:= 0 to n-1 do
Writeln('x[',i:2,'] = ',g[i][n]:10:5);
Writeln('----------------------------------');
writeln('writen by Ali Imron 3105111303 TID');
Writeln('----------------------------------');
readln;
end.
Tidak ada komentar:
Posting Komentar