Penyelesaian dari persamaan linier simultan diatas adalah nilai d1,d2,d3,…,dn dan atau:
Teknik yang digunakan dalam metode eliminasi Gauss-Jordan ini sama seperti metode eliminasi Gauss yaitu menggunakan OBE (Operasi Baris Elementer). Hanya perhitungan penyelesaian secara langsung diperoleh dari nilai pada kolom terakhir dari setiap baris.
Algoritma Metode Eliminasi Gauss-Jordan adalah sebagai berikut:
- Masukkan matrik A, dan vektor B beserta ukurannya n
- Buat augmented matrik [A|B] namakan dengan A
- Untuk baris ke i dimana i=1 s/d n
- Perhatikan apakah nilai ai,i sama dengan nol :
Bila ya :
pertukarkan baris ke i dan baris ke i+k≤n, dimana ai+k,i tidak sama dengan
nol, bila tidak ada berarti perhitungan tidak bisa dilanjutkan dan proses
dihentikan dengan tanpa penyelesaian.Bila tidak : lanjutkan - Jadikan nilai diagonalnya menjadi satu, dengan cara untuk setiap
kolom k
dimana k=1 s/d n+1, hitung
- Perhatikan apakah nilai ai,i sama dengan nol :
- Untuk baris ke j, dimana j = i+1 s/d n
Lakukan operasi baris elementer: untuk kolom k dimana k=1 s/d n, Hitung
- Penyelesaian, untuk i = n s/d 1 (bergerak dari baris ke n sampai baris pertama)
uses crt;Const Max = 25;
Type
Matrik = record
Row, col : byte;
Element : array [1..max, 1..max] of real;
End;
Vektor = record
Row : byte;
Element : array [1..max] of real;
End;
Var
x, b : vektor;
A : matrik;
n : integer;
c : real;
Error : boolean;
Procedure masukkandata;
Var i,j : byte;
Begin
Writeln(‘Penyelesaian Persamaan Linier dengan Metode Gauss Jordan’);
Write (‘Jumlah persamaan :’);
Readln (n);
A.row := n;
A.col := n ;
b.row := n;
for i := 1 to n do
begin
writeln (‘Persamaan ke ‘,i );
for j := 1 to n do
begin
write (‘X[',i,',',j,'] = ‘);
readln (A.element[i,j]);
end;
write(‘Y[',i,'] = ‘); readln(A.element[i,n+1]);
writeln;
end;
end;
procedure eliminasigauss;
var I,j,k : integer;
temp, S : real;
Begin
Error := false;
For i := 1 to n do
Begin
If (A.element[i,i] = 0 ) then
Begin
write(A.element[i,i]) ;
Error := true;
Exit;
End;
temp := A.element[i,i];
for k := 1 to n+1 do
begin
A.element[i,k] := A.element[i,k] / temp;
end;
For j := 1 to n do
begin
if(j<>i) then
begin
c := A.element[j,i];
for k := 1 to n+1 do
begin
A.element[j,k] := A.element [j,k] – (c * A.element[i,k]);
end;
end;
end;
end;
x.row := n;
for i := n downto 1 do
begin
if (A.element [i,i] = 0.0 ) then
Begin
Error := true;
Exit;
End;
x.element[i] := A.element[i,n+1];
end;
end;
Procedure tulishasil;
Var i : byte;
Begin
If (error) then
Begin
Writeln (‘Persamaan simultan linear tidak dapat diselesaikan’);
End
Else
Begin
Writeln;
Writeln (‘Penyelesaian persamaan linear dengan Gauss Jordan : ‘);
For i := 1 to x.row do
Writeln(‘X’,i,’ = ‘,x.element[i]:6:2);
End;
End;
Begin
clrscr;
Masukkandata;
Eliminasigauss;
Tulishasil;
readln;
End.
Tidak ada komentar:
Posting Komentar