3
1. PENDAHULUAN
Invers adalah kebalikan. Istilah invers ini biasa dipakai dalam aljabar.
Invers dari 2 adalah 1/2 karena 2(1/2)=1 dan bilangan 1 ini merupakan
identitas. Mudah saja mencari invers suatu anggota himpunan bilangan
rasional tanpa nol terhadap perkalian, invers dari bilangan rasional a
adalah 1/a. Dalam matriks juga sama, seperti yang sudah dijelaskan pada
definisi di atas, jika AB=I dimana I adalah matriks identitas maka B
merupakan invers matriks A dan sebaliknya. Tapi untuk mencari invers
sebuah matriks tidak semudah mencari invers bilangan rasional. Karena
tidak ada operasi pembagian pada matriks.
2. PETUNJUK PRAKTIKUM
34
3.2 TUNTUNAN LATIHAN
A = 2 3 4
5 6 7 =
8 9 0
1. Buka program turbo pascal, lalu ketikan listing program seperti ini:
uses crt;
type matrik = object
emat, kof : array [1..3,1..3] of integer;
procedure input;
procedure tampil;
procedure invers;
procedure invers2;
procedure invers3;
end;
var i,j,ordo,det,pil : integer;
mat : matrik;
procedure matrik.input;
begin
writeln ;
write ('Masukan Ordo Matrik ','ordo','X','ordo',' (3/2) : ');readln(ordo);
writeln;
for i := 1 to ordo do
begin
for j := 1 to ordo do
begin
write ('Elemen [',i,',',j,'] = ');
readln (emat[i,j]);
end;
end;
end;
35
procedure matrik.tampil;
begin
writeln;
for i:=1 to ordo do
begin
for j:= 1 to ordo do
begin
write (emat[i,j]:5,' ');
end;
writeln;
end;
readln;
end;
procedure matrik.invers;
begin
if ordo = 2 then matrik.invers2
else matrik.invers3;
end;
procedure matrik.invers2;
begin
writeln;
det := (emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]);
writeln ('Determinan Matrik = ',det);writeln;
writeln ('Matrik Inversnya :'); writeln;
writeln (emat[2,2],'/',det,' ','-',emat[1,2],'/',det);
writeln('-',emat[2,1],'/',det,' ',emat[1,1],'/',det);
readln;
end;
procedure matrik.invers3;
var detA, detB : integer;
{emat, kof : array [1..3,1..3] of integer;}
begin
detA:= (emat[1,1] * emat[2,2] * emat[3,3]) + (emat[1,2] * emat[2,3] *
emat[3,1]) + (emat[1,3] * emat[2,1] * emat[3,2]);
detB:= (emat[1,3] * emat[2,2] * emat[3,1]) + (emat[2,3] * emat[3,2] *
emat[1,1]) + (emat[1,2] * emat[2,1] * emat[3,3]);
det := detA - detB;
36
kof[2,2]:=((emat[1,1]*emat[3,3])-(emat[1,3]*emat[3,1]));
kof[2,3]:=((emat[1,1]*emat[3,2])-(emat[1,2]*emat[3,1]))*-1;
kof[3,1]:=((emat[1,2]*emat[2,3])-(emat[1,3]*emat[2,2]));
kof[3,2]:=((emat[1,1]*emat[2,3])-(emat[1,3]*emat[2,1]))*-1;
kof[3,3]:=((emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]));
writeln ('Matrik Adjoin :');writeln;
for i :=1 to 3 do
begin
for j:= 1 to 3 do
begin
write (kof[j,i]:8,' ');
end;
writeln;
end;
writeln;writeln ('Matrik Invers :');writeln;
for i:= 1 to 3 do
begin
for j:= 1 to 3 do
begin
write (kof[i,j],'/',det,' ');
end;
writeln;
end;
readln;
end;
begin
repeat
clrscr;
gotoxy (25,1);writeln ('***** Menu Matrik *****');
gotoxy (25,2);writeln ('1. Input Matrik');
gotoxy (25,3);writeln ('2. Matrik Invers');
gotoxy (25,4);writeln ('3. Keluar');
gotoxy (25,5);writeln ('************************');
gotoxy (27,6);write ('Pilihan [1..3] :'); readln (pil);
case pil of
1 : begin
mat.input;
mat.tampil;
end;
2 : mat.invers;
end;
until (pil) = 3;
end.
37
Logika Program Matriks Invers
Tahap awal buat sebuah variable array serta beberapa procedure
untuk memudahkan pengkondisian menu yang akan dibuat
Pada prosedur matrik.input; diunakan untuk menampilkan pilihan
menu di dalam menu yang berfungsi untuk menentukan ordo dari
matriks yang akan dibuat serta jumlah elemen yang akan dibuat
dengan menggunakan fungsi perulangan for i := 1 to ordo do Begin
for j := 1 to ordo do Begin write ('Elemen [',i,',',j,'] = '); readln
(emat[i,j]);. End; end;
pada procedure matrik.tampil; digynakan untuk menampilkan kembali
elemen yang sudah di input sebelumnya.
Pada procedure.invers di kondisian jika ordonya 2 maka nilai akan di
pindahkan ke procedure matrik.invers2 jika lebih dari itu maka ke
procedure matrik.invers3;
Pada procedure matriks.invers2; untuk mendapatkan nilai determinan
menggunakan rumus det := (emat[1,1]*emat[2,2])-
(emat[1,2]*emat[2,1]);
Sedangkan pada determinan ordu 3x3 menggunakan detA:=
(emat[1,1] * emat[2,2] * emat[3,3]) + (emat[1,2] * emat[2,3] *
emat[3,1]) + (emat[1,3] * emat[2,1] * emat[3,2]);
detB:= (emat[1,3] * emat[2,2] * emat[3,1]) + (emat[2,3] * emat[3,2] *
emat[1,1]) + (emat[1,2] * emat[2,1] * emat[3,3]);
det := detA - detB;
38
2. Setelah sukses, jalankan program. Pilih menu Run > Run. Atau
tekan Ctrl + F9 dan masukan nilai ordo dan elemen sesuai dengan
yang diminta.
39
3.3 LATIHAN
URAIAN :
Jika kita punya matriks 2×2, misal A = , maka invers matriks dapat
dihitung menggunakan rumus
A-1 = B =
40
ANALISA
Gambar 3.6 merupakan hasil output dari invers matriks
uses crt;
type matrik = object
emat, kof : array [1..3,1..3] of integer;
procedure input;
procedure tampil;
procedure invers3;
end;
var i,j,ordo,det,pil : integer;
mat : matrik;
procedure matrik.input;
begin
writeln ;
write ('Masukan Ordo Matrik ','ordo','X','ordo',' (3/2) : ');readln(ordo);
writeln;
for i := 1 to ordo do
begin
for j := 1 to ordo do
begin
write ('Elemen [',i,',',j,'] = ');
readln (emat[i,j]);
end;
end;
end;
41
procedure matrik.invers;
begin
if ordo = 2 then matrik.invers22
else matrik.inver3s3;
end;
procedure matrik.invers2;
begin
writeln;
det := (emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]);
writeln ('Determinan Matrik = ',det);writeln;
writeln ('Matrik Inversnya :'); writeln;
writeln (emat[2,2],'/',det,' ','-
',emat[1,2],'/',det);
writeln('-',emat[2,1],'/',det,'
',emat[1,1],'/',det);
readln;
end;
procedure matrik.invers3;
var detA, detB : integer;
{emat, kof : array [1..3,1..3] of integer;}
begin
detA:= (emat[1,1] * emat[2,2] * emat[3,3]) + (emat[1,2] * emat[2,3]
* emat[3,1]) + (emat[1,3] * emat[2,1] * emat[3,2]);
detB:= (emat[1,3] * emat[2,2] * emat[3,1]) + (emat[2,3] * emat[3,2]
* emat[1,1]) + (emat[1,2] * emat[2,1] * emat[3,3]);
det := detA - detB;
writeln;writeln ('Determinan Matrik = ', det);writeln;
kof[1,1]:=((emat[2,2]*emat[3,3])-(emat[3,2]*emat[2,3]));
kof[1,2]:=((emat[2,1]*emat[3,3])-(emat[2,3]*emat[3,1]))*-1;
kof[1,3]:=((emat[2,1]*emat[3,2])-(emat[2,2]*emat[3,1]));
kof[2,1]:=((emat[1,2]*emat[3,3])-(emat[1,3]*emat[3,2]))*-1;
kof[2,2]:=((emat[1,1]*emat[3,3])-(emat[1,3]*emat[3,1]));
kof[2,3]:=((emat[1,1]*emat[3,2])-(emat[1,2]*emat[3,1]))*-1;
kof[3,1]:=((emat[1,2]*emat[2,3])-(emat[1,3]*emat[2,2]));
kof[3,2]:=((emat[1,1]*emat[2,3])-(emat[1,3]*emat[2,1]))*-1;
kof[3,3]:=((emat[1,1]*emat[2,2])-(emat[1,2]*emat[2,1]));
writeln ('Matrik Adjoin :');writeln;
for i :=1 to 3 do
begin
for j:= 1 to 3 do
begin
write (kof[j,i]:8,' ');
end;
writeln;
end;
writeln;writeln ('Matrik Invers :');writeln;
for i:= 1 to 3 do
begin
for j:= 1 to 3 do
begin
write (kof[i,j],'/',det,' ');
end;
writeln;
end;
readln;
end;
42
begin
repeat
clrscr;
gotoxy (25,1);writeln ('***** Menu Matrik *****');
gotoxy (25,2);writeln ('1. Input Matrik');
gotoxy (25,3);writeln ('2. Matrik Invers');
gotoxy (25,4);writeln ('3. Keluar');
gotoxy (25,5);writeln ('************************');
gotoxy (27,6);write ('Pilihan [1..3] :'); readln (pil);
case pil of
1 : begin
mat.input;
mat.tampil;
end;
2 : mat.invers;
end;
until (pil) = 3;
end.
43