Penjumlahan dan pengurangan matriks
Penjumlahan dan pengurangan matriks hanya dapat dilakukan apabila kedua matriks memiliki ukuran atau tipe yang sama. Elemen-elemen yang dijumlahkan atau dikurangi adalah elemen yang posisi atau letaknya sama.
Perkalian matriks
Matriks dapat dikalikan, dengan cara tiap baris dikalikan dengan tiap kolom, lalu dijumlahkan pada baris yang sama.
Transpose matriks
Yang dimaksud dengan Transpose dari suatu matriks adalah mengubah komponen-komponen dalam matriks, dari yang baris menjadi kolom, dan yang kolom di ubah menjadi baris.
Determinan Matriks
Determinan adalah suatu fungsi tertentu yang menghubungkan suatu bilangan real dengan suatu matriks bujursangkar.
Sebagai contoh, kita ambil matriks A2x2
untuk mencari determinan matrik A maka,
detA = ad - bc
Invers Matriks
JIka A dan B matriks bujur sangkar sedemikian rupa sehingga A B = B A = I , maka B disebut balikan atau invers dari A dan dapat dituliskan B = A − 1 ( B sama dengan invers A ). Matriks B juga mempunyai invers yaitu A maka dapat dituliskan A = B − 1. Jika tidak ditemukan matriks B, maka A dikatakan matriks tunggal (singular). Jika matriks B dan C adalah invers dari A maka B = C.
Contoh program pascal tentang penjumlahan, pengurangan, perkalian, serta transpose matriks:
program matriks;
uses wincrt;
var
a : array [0..100,0..100] of integer;
b : array [0..100,0..100] of integer;
c : array [0..10,0..10] of integer;
p,f,g,ba,ka,bb,kb,i,h,j,k,r,x,y: integer;
procedure tambah;
begin
writeln ('matriks A+B');
if (ka=kb)and(ba=bb) then
begin j:=1;
for h:=1 to ba do
begin k:=1;
for i:=1 to ka do
begin
write (' ',(a[h,i]+b[j,k]),' ');k:=k+1;
end;
writeln; j:=j+1;
end;
end; if ka<>kb then writeln('maaf.. jumlah kolom kedua matriks berbeda');
if ba<>bb then writeln('maaf.. jumlah baris kedua matriks berbeda');
end;
procedure kurang;
begin
writeln ('matriks A-B');
if (ka=kb)and(ba=bb) then
begin j:=1;
for h:=1 to ba do
begin k:=1;
for i:=1 to ka do
begin
write (' ',(a[h,i]-b[j,k]),' ');k:=k+1;
end;
writeln; j:=j+1;
end;
end; if ka<>kb then writeln('maaf.. jumlah kolom kedua matriks berbeda');
if ba<>bb then writeln('maaf.. jumlah baris kedua matriks berbeda');
end;
procedure kali;
begin
writeln ('Matriks A*B');
if ka=bb then begin
for h:=1 to ba do begin
for k:=1 to kb do begin
r:=0;
j:=1;
for i:=1 to ka do
begin
r:= r+ a[h,i]*b[j,k];
j:= j+1
end;
write (r,' ');
end;writeln;
end;
end
else begin
writeln;writeln('Maaf.. Jumlah KOLOM matriks A tidak sama dengan BARIS matriks B');end;
end;
procedure transpose;
begin
writeln ('Transpose matriks a');
for i:=1 to ka do
begin
for h:=1 to ba do
write (' ',a[h,i],' ');
writeln;
end;
writeln;
gotoxy(27,y+1);writeln ('Transpose matriks b');
y:=y+2;
for k:=1 to kb do
begin
x:=27;
for j:=1 to bb do begin
gotoxy(x,y);write (' ',b[j,k],' ');x:=x+3; end;y:=y+1;
writeln;
end;writeln;
end;
Procedure cetak;
begin
clrscr; writeln ('>>>>>>>>>> OPERASI ARITMATIKA 2 BUAH MATRIKS<<<<<<<<<< ') ; writeln;
writeln ('Data yang anda masukan adalah :');writeln;
writeln ('Matriks a');
for h:=1 to ba do
begin
for i:=1 to ka do
write (' ',a[h,i],' ');
writeln;
end;
writeln;
gotoxy (27,5);writeln ('Matriks b');
y:=6;
for j:=1 to bb do
begin
x:=27;
for k:=1 to kb do begin
gotoxy(x,y);write (' ',b[j,k],' '); x:=x+3;end; y:=y+1;
end;writeln;
end;
procedure input;
begin
writeln (' -= OPERASI ARITMATIKA 2 BUAH MATRIKS =- ') ; writeln;
write ('Masukan jumlah baris matriks A: '); readln (ba);
write ('Masukan jumlah kolom matriks A: '); readln (ka);writeln;
write ('Masukan jumlah baris matriks B: '); readln (bb);
write ('Masukan jumlah kolom matriks B: '); readln (kb);
writeln;
writeln ('Masukan komponen data Matriks A');
for h:=1 to ba do
begin
for i:=1 to ka do
begin
write ('Data ke-(',h,',',i,')= ');
readln (a[h,i]);
end;
end;
writeln;
writeln ('Masukan komponen data matriks B');
for j:=1 to bb do
begin
for k:=1 to kb do
begin
write ('Data ke-(',j,',',k,')= ');
readln (b[j,k]);
end;
end;
end;
procedure keluar;
begin
gotoxy(0,10);
writeln(' Terima kasih telah menggunakan program ini'); writeln;writeln;
write(' (^v^)The end(^v^)'); exit;
end;
procedure garis;
begin
writeln ('-------------------------------------------------------------------------------');
writeln ('===============================================================================');
end;
procedure menu;
begin
writeln;
writeln ('Menu Operasi');
writeln ('1. Penambahan Matriks');
writeln ('2. Pengurangan Matriks');
writeln ('3. Perkalian Matriks');
writeln ('4. Transpose Matriks');
writeln ('5. Input matriks yang baru');
writeln ('6. Keluar');writeln;
write ('Masukan nomor pilihan anda : '); readln (p);
if p= 1 then begin cetak; garis; tambah; garis; menu; end;
if p= 2 then begin cetak; garis; kurang; garis; menu; end;
if p= 3 then begin cetak; garis; kali; garis; menu; end;
if p= 4 then begin cetak; garis; transpose; garis; menu; end;
if p= 5 then begin clrscr; input ; cetak; garis; writeln; writeln; garis; menu; end;
if p= 6 then begin clrscr; keluar; end else begin
cetak; writeln('Maaf.. angka yang anda masukan tidak sesuai perintah');menu; end;
end;
{program Utama}
begin
input;
cetak;
garis;
writeln;writeln;
writeln;
garis;
menu;
end.
Contoh program pascal tentang determinan dan invers matriks:
Program matriks;
uses wincrt;
label hitung;
var
mat,adj : array [1..5,1..5] of integer;
det,i,j : integer;
c:char;
begin
clrscr;
{ tampilan awal keterangan matrik }
gotoxy(20,4);
writeln('Matriks Ordo 2 x 2');
gotoxy(15,5);
writeln('-------------------------');
gotoxy(15,7);
writeln('1. Input data matrik ');
gotoxy(15,8);
writeln('2. Menentukan Adjoin Matrik');
gotoxy(15,9);
writeln('3. Mencari determinan matriks');
gotoxy(15,10);
writeln('4. Mencari Invers matriks');
readln;
if c = #13 then goto hitung;
{end tampilan awal keterangan matrik}
{mulai proses input}
hitung:
begin
clrscr;
writeln('Input Matrik Ordo 2x2');
writeln('-------------------------');
for i := 1 to 2 do begin
for j:= 1 to 2 do begin
write('matrik ke ',i,' ',j,': ');readln(mat[i,j]);
end;
writeln;
end;
for i := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write(' ',mat[i,j],' ');
if j = 2 then write ('|');
end;
writeln;
end;
{end proses input matrik}
writeln;
writeln;
{mulai adjoin matrik dan determinan}
writeln('Adjoin matrik Ordo 2x2');
writeln('-----------------------');
adj[1,1] := mat[2,2];
adj[1,2] := mat[1,2] * -1;
adj[2,1] := mat[2,1] * -1;
adj[2,2] := mat[1,1];
for i := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write(' ',adj[i,j],' ');
if j = 2 then write('|');
end;
writeln;
end;
writeln;
det := (mat[1,1] * mat [2,2]) - (mat[1,2] * mat[2,1]);
write('Determinan dari matrik diatas adalah ');
writeln(det);
writeln;
{end of adjoin and determinan}
{mulai menghitung invers matrik}
writeln('Invers Matrik ');
writeln('----------------');
writeln;
for i := 1 to 2 do begin
write('|');
for j := 1 to 2 do begin
write(' ',adj[i,j]/det:3:2,' ');
if j = 2 then write('|');
end;
writeln;writeln;writeln;
end;
{end of hitung invers matrik}
end;
readln;
end.