Kisah Unik Matematikawan Dodgson – Dodgson Condensation

Membaca tulisan yang membahas seorang ahli matematika abad 19, Reverend Charles Lutwidge Dodgson (1832-1898) cukup menarik juga. Ahli matematika ini ternyata menulis cerita terkenal “Alice in Wonderland” dan “Through the Looking Glass” dengan nama samaran Lewis Carroll. Dikisahkan bahwa Ratu Victoria ternyata kagum dengan cerita “Alice in Wonderland” sehingga ketika selesai membaca dia meminta bawahannya untuk membawakan buku karangan Lewis Carroll (yang nama aslinya Dodgson) yang lain. Tidak berapa lama kemudian tibalah bawahannya tersebut dengan membawa buku Dodgson yang berjudul “Elementary Theorems Relating to Determinants” yang ternyata buku matematika .. haha.

Metode Kondensasi Dodgson

Metode terkenal ini sangat ampuh untuk menghitung determinan matriks dengan jumlah baris dan kolom yang banyak. Tentu saja penting di jaman dulu ketika komputer (atau minimal kalkulator) belum ditemukan. Postingan ini sedikit banyak membahas metode ini, sebagai kelanjutan post terdahulu tentang invers matriks 4×4.

Misal sebuah matriks A dengan ukuran lebih besar atau sama dengan 3×3 dengan matriks dalam (interior matrix) menyatakan matriks (n-2)x(n-2) hasil penghilangan baris awal, akhir dan kolom awal serta akhir (kalau pusing, langsung loncat ke contoh kasus di bawah ya). Metode kondensasi Dodgson terdiri dari empat langkah/tahap antara lain:

  • Gunakan metode operasi baris dan kolom untuk menghilangkan nol dari matriks dalam (interior).
  • Cari determinan matriks 2×2 untuk tiap-tiap empat elemen untuk membentuk matriks baru berukuran lebih kecil (n-1)x(n-1), misalnya diberi nama matriks B.
  • Ulangi langkah sebelumnya untuk matriks (n-2)x(n-2) lalu bagi tiap elemen menurut interior original matriks A, untuk memperoleh matriks C.
  • Lanjutkan terus “kondensasi” di atas sampai hasil satuan ditemukan. Nilai ini merupakan determinan dari matriks A.

Sebagai ilustrasi ada baiknya menggunakan contoh kasus. Lebih mudah khususnya orang teknik yang suka praktis-praktis seperti saya, hehe. Diketahui matriks A.

Karena tidak ada nol di interior, langsung ke langkah 2 untuk mencari matriks B hasil penentuan determinan. Misalnya untuk sisi kiri atas serta sampingnya.

Lanjutkan hingga seluruh matriks A sehingga matriks B dari tahap kedua adalah sebagai berikut:

Tampak matriks A berukuran 5×5 menjadi (5-1)x(5-1) di atas. Tahap ketiga selanjutnya meneruskan kondensasi menghasilkan matriks 3×3, misalnya untuk bagian kiri atas.

Teruskan untuk sisi-sisi lainnya sehingga diperoleh matriks C

Lanjutkan dengan cara yang sama hingga menjadi matriks D. Di sini istilah kondensasi sepertinya ada benarnya. Ibarat embun yang timbul dari uap air yang terkumpul di udara.

Nah berikutnya adalah membagi matriks terakhir D ini (terkecil) dengan interior dari Matriks B yakni:

Tiap elemen matriks D dibagi mengikuti posisi int B, misalnya -84 dibagi -6, -580 dibagi 2, dan seterusnya hingga diperoleh matriks E:

Dengan mudah kita menghitung determinan matriks E ini dengan cara biasa det=14*(-109)-421*(-290) yang menghasilkan 120564. Apakah sudah selesai? Belum, dikit lagi yaitu membagi nilai tersebut dengan interion matriks C yang bernilai 36. Dan hasil akhirnya adalah 3349. Sekian semoga bermanfaat.

 

Iklan

Menghitung Determinan dan Invers Matriks 4×4 – Bag 2

Postingan yang lalu kita menghitung matriks 4×4 dengan metode sarrus yang sedikit ribet. Sekarang kita coba dengan menggunakan metode operasi baris dan kolom yang sedikit “logis”. Kita terapkan metode ini untuk matriks 4×4 setelah pada postingan yang lalu kita gunakan untuk matriks 2×2 dan 3×3. Buat M-File baru, cara gampangnya ketik aja di Command Window “edit segitiga” yang akan membuka editor di M-File editor dengan nama segitiga.m, dan jangan khawatir jika Matlab menanyakan bahwa Script segitiga tidak ada (karena memang ingin kita buat), lanjutkan saja dengan menekan OK.

Baris kedua membuat matriks berangkai yang tadinya 4×4 menjadi 4×8 karena kita akan menggunakan prinsip x = [I][inv(x)]. Pada line 4 sampai 9 kode di atas adalah membuat segitiga atas, dilanjutkan dengan segitiga bawah. Segitiga atas menghasilkan nol di bawah diagonal, sebaliknya segitiga bawah menhasilkan nol di atas diagonal. Hasilnya adalah nol selain di diagonal yang kemudian pada line 18 hingga 21 menghailkan matriks diagonal satuan (seluruh diagonal bernilai satu). Uji coba dengan command window dengan memasukan bilangan random 4×4 yang akan dicari inversnya.

Dilanjutkan dengan menjalankan M-file yang baru saja kita buat.

Cek dengan menggunakan fungsi INV di Matlab apakah sama dengan hasil di atas? Jika sama berarti kode Anda benar, Oiya, gunakan kondisi jika kebetulan Matriks yang akan dicari inversnya tidak memiliki invers (determinannya nol) .. Selamat Mencoba!

UAS Aljabar Linear

Aljabar Linear. 03.01.2013. Teknik Komputer

Akhirnya kita sampai pada pertemuan terakhir, yaitu membahas materi yang akan diujikan pada Ujian Akhir Semester (UAS) nanti. Karena ada pemisahan kelas menjadi dua kelas (kelas selasa dan kamis), dan ada perbedaan jumlah nilai tugas harian akibat banyaknya libur di hari selasa, untuk menyamakan dengan kelas Kamis, maka untuk kelas SELASA, saat UAS nanti diharapkan mengumpulkan tugas perkalian matriks dengan Java Script. Tugas merupakan tugas satu kelas, tetapi jika ada siswa yang merasa tidak puas dengan jawaban kelas dapat mengumpulkan tugas sendiri atau berkelompok. Tugas perkalian matriks dikerjakan dengan mencontoh tulisan saya sebelumnya tentang penjumlahan matriks (Membuat Matriks dengan Java Script) dengan mengganti bagian penjumlahan dengan perkalian. Sementara itu, algoritma untuk perkalian dapat kalian perhatikan tulisan Mengalikan Matriks 3 x 3 dengan mengurangi bagian I,j, dan c dari 3 menjadi 2.

Soal UAS berkisar seputar mencari invers matriks dengan menggunakan manipulasi baris yang dikenal dengan nama eliminasi Gauss. Perhatikan tulisan Mencari Invers dengan Operasi Baris dan coba latihan dengan angka yang lain, uji jawabannya dengan Matlab lewat fungsi INV. Jangan lupa syarat suatu matriks dapat dicari inversnya adalah determinannya nol. Tiap siswa kemungkinan besar berbeda matriks yang ada pada soal karena soal berdasarkan NIM masing-masing. Sifat ujian buku terbuka, bawa perlengkapan seperlunya seperti pulpen (jangan pensil ya, nggak jelas), kalkulator, dan lain-lain, juga tidak perlu acara bakar ban J.

Membuat Matriks dengan Java Script

Aljabar Linear. 31.12.2012. Teknik Komputer

Untuk materi UAS nanti berikut ini teknik membuat matriks dengan Java Script setelah pada pertemuan yang lalu membuat vektor. Berbeda dengan vektor, Matriks masuk dalam kategori array multi dimensi. Kode berikut ini menunjukkan penjumlahan matriks A dan B yang berukuran 2×2 menjadi Matriks C.

<HTML>

<HEAD>

<TITLE>Membuat Matriks

</TITLE>

<SCRIPT LANGUAGE = “JavaScript”>

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT LANGUAGE = “JavaScript”>

document.writeln(“Membuat MATRIKS”)

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(” A = “)

var a = new Array (2);

a[0]=new Array(2);

a[1]=new Array(2);

a[0][0]=1;a[0][1]=2;a[1][0]=3;a[1][1]=4;

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(a[0][0])

document.writeln(a[0][1])

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(a[1][0])

document.writeln(a[1][1])

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

var b = new Array (2);

b[0]=new Array(2);

b[1]=new Array(2);

b[0][0]=5;b[0][1]=6;b[1][0]=7;b[1][1]=8;

document.writeln(” B = “)

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(b[0][0])

document.writeln(b[0][1])

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(b[1][0])

document.writeln(b[1][1])

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(” C = “)

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

var c = new Array (2);

c[0]=new Array(2);

c[1]=new Array(2);

for (var i=0; i<2; i++)

    for (var j=0; j<2; j++)

    c[i][j]=a[i][j]+b[i][j];

document.writeln(c[0][0])

document.writeln(c[0][1])

document.writeln(“<PRE>”)

document.writeln(“</PRE>”)

document.writeln(c[1][0])

document.writeln(c[1][1])

</SCRIPT>

</BODY>

</HTML>

Simpan dengan ekstensi .htm pada notepad atau text editor lainnya. Coba buat perkalian matriks dengant teknik seperti pada bahasa pemrograman C/C++. NOTE: ketik ulang tanda petik “” jika co-pas dari blog ini.

Membuat Vektor dengan Java Script

Aljabar Linear. 27.12.2012. Tek Komputer

Java Script merupakan salah satu bahasa berbasis web yang banyak digunakan oleh programmer. Oleh karena itu kita coba membuat vektor dengan Java Script. Metode yang kita gunakan adalah dengan membuat variabel array. Misal kita akan membuat vektor a dengan isi 1,2, dan 3. Gunakan listing berikut:

<HTML>

<HEAD>

<TITLE>Membuat Vektor

</TITLE>

<SCRIPT LANGUAGE = “JavaScript”>

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT LANGUAGE = “JavaScript”>

document.writeln(“Membuat Vektor”)

document.writeln(“<PRE>”);

document.writeln(” A = “)

var a = new Array (1,2,3);

    for (var i = 0; i < 3; i++)

    document.writeln(a[i])

</SCRIPT>

</BODY>

</HTML>

Buat dengan notepad, jangan lupa ketika menyimpan ekstensinya beri nama .htm. Jika sudah berjalan normal, coba buat matriks. Matriks merupakan array multidimensi (lebih dari satu dimensi). Untuk input data secara interaktif, gunakan prompt pada kode programnya.

<HTML>

<HEAD>

<TITLE>Membuat Vektor

</TITLE>

<SCRIPT LANGUAGE = “JavaScript”>

</SCRIPT>

</HEAD>

<BODY>

<SCRIPT LANGUAGE = “JavaScript”>

document.writeln(“Membuat Vektor”)

document.writeln(” A = [“)

var a = new Array (10);

    for (var i = 0; i < 10; i++)

        a[i]=prompt(“Masukan Vektor”)

    for (var i = 0; i < 10; i++)

        document.writeln(a[i])

    document.writeln(” ]”)

</SCRIPT>

</BODY>

</HTML>

Jika disimpan dan dijalankan menghasilkan hasil sebagai berikut. Pertama-tama Anda diminta mengisi vektornya:

Pada kode, tertulis vector yang dimasukan sebanyak 10 buah, sehingga ketika dijalankan browser (saya menggunakan internet explorer 8) akan menampilkan form isian (tiap browser menampilkan bentuk yang berbeda – sepertinya yg paling bagus menurut saya sih Mozilla).

Membuat Inversi matriks 2×2 dan 3×3 dengan Matlab

Aljabar Linear. 18.12.2012. T. Komputer

Berikut ini listing dengan m-file mencari inversi matriks dengan metode operasi baris pada matriks untuk matriks 2×2 dan 3×3. Buka command window dan ketik, misalkan kita ingin memberi nama fungsi tersebut dengan nama fungsi inversi. Ketik kode berikut:

  • function y=inversi(x)
  • %mencari invers matriks 2×2 dengan
  • %operasi baris pada matriks
  • %eliminasi gauss
  • x=[x eye(2,2)]
  • x(2,:)=x(2,:)-((x(2,1)/x(1,1)*x(1,:)));
  • x(1,:)=x(1,:)-((x(1,2)/x(2,2)*x(2,:)));
  • x(1,:)=x(1,:)/x(1,1);
  • x(2,:)=x(2,:)/x(2,2);
  • y=[x(:,3) x(:,4)];

>> x=[2 5;6 8]

inversi(x)

x =

2 5 1 0

6 8 0 1

ans =

-0.5714 0.3571

0.4286 -0.1429

Sedangkan untuk matriks 3×3, misalkan kita akan membuat fungsi dengan nama inversi33. Ketik di command window edit inversi33. Ketik kode berikut (sengaja dalam bentuk gambar supaya ngetik sendiri).

Uji di command window dan bandingkan dengan fungsi bawaan Matlab, inv. Bagaimana untuk matriks 4×4 atau yang di atasnya? caranya gampang, gunakan prinsip di atas, atau lihat postingan berikutnya.

Mencari Invers dengan Operasi Baris

Mat. Diskrit. 18.12.2012. Tek. Komputer

Selain dengan Determinan dan Cofactor, mencari invers dapat dilakukan dengan operasi baris pada matriks antara lain:

  1. Merubah posisi dua baris dalam suatu matriks
  2. Mengalikan seluruh baris dengan suatu konstanta
  3. Menambahkan/mengurangkan kelipatan suatu baris terhadap baris lainnya

Berikut ini ilustrasi pengerjaannya dengan contoh suatu matriks:

Sebelumnya, kita hitung dulu determinannya, Det = 22 dan karena tidak sama dengan nol, maka matriks M tersebut memiliki invers. Jejerkan dengan matriks identitas:

Tugas kita adalah melakukan eliminasi gauss agar dihasilkan matriks kiri menjadi matriks identitas. Pertama-tama kalikan baris pertama dengan ½.

Tambahkan tiga kali baris pertama dengan baris kedua sehingga dihasilkan:

Tugas berikutnya adalah membuat elemen baris pertama kolom kedua menjadi nol dengan mengalikan baris kedua dengan 2/11 yang dilanjutkan dengan mengurangi dengan baris pertama sehingga dihasilkan:

Akhirnya, kalikan baris kedua dengan 1/11 agar dihasilkan matriks identitas di bagian kiri:

Setelah matriks sebelah kiri menjadi matriks identitas, maka Matrks inversnya adalah yang di sebelah kanan yakni:

Berikut ini cara mengerjakan dengan Aplikasi Matlab:

>> M=[2 4;-3 5];

>> M=[M eye(2,2)]

 

M =

 

2 4 1 0

-3 5 0 1

 

>> M(1,:)=M(1,:)*1/2

 

M =

 

1.0000 2.0000 0.5000 0

-3.0000 5.0000 0 1.0000

 

>> M(2,:)=3*M(1,:)+M(2,:)

 

M =

 

1.0000 2.0000 0.5000 0

0 11.0000 1.5000 1.0000

 

>> M(2,:)=M(2,:)*1/11

 

M =

 

1.0000 2.0000 0.5000 0

0 1.0000 0.1364 0.0909

 

>> M(1,:)=M(1,:)-2*M(2,:)

 

M =

 

1.0000 0 0.2273 -0.1818

0 1.0000 0.1364 0.0909

 

>> InvM=[M(:,3) M(:,4)]

 

InvM =

 

0.2273 -0.1818

0.1364 0.0909

Sumber: Krantz(2009) “Descrete Mathematic Demystified

Menghitung Determinan dan Invers Matriks 4×4

Aljabar Linear. 11.12.2012. T. Komputer

Untuk matriks di atas 3 sepertinya ada kesulitan untuk menghitungny secara manual, beberapa software seperti Matlab, Scilab, dan sejenisnya sudah menyediakan fungsi untuk menghitung determinan dan invers Matriks.

Cara paling mudah adalah dengan metode Sarrus

Determinan berdasarkan gambar di atas:

Sedangkan Matriks Inversnya:

Dengan b11 hingga b44 diperoleh dari perhitungan:

Kalau menurut Anda repot, gunakan saja metode operasi baris dan kolom seperti pada postingan saya berikutnya. Selamat mencoba !

Note: Ada yang nanya masalah adjoint, berikut untuk yg b11, yg lainnya coba sendiri ya … Sorry .. selanjutnya ditranspose, thanks ASD udah ngingetin

adjoint

NB: Ada saran dari komentar di bawah untuk menggunakan Dodgson Condensation Method yang lebih praktis untuk matriks lebih besar atau sama dengan 3×3

Sumber: http://www.cg.info.hiroshima-cu.ac.jp/~miyazaki/knowledge/teche23.html

Membuat Invers Matriks 2×2 dan 3×3 dengan Borland C++

Invers Matriks. 6.12.2012. T. komputer

Setelah determinan dihitung, berikutnya kita coba membuat kode mencari invers matriks tersebut. Perhatikan algoritma pembuatan invers dari pertemuan yang lalu. Lihat kode program di bawah ini.

  • #include<stdio.h>
  • #include<iostream.h>

 

  • void main(){
  • double A[2][2]={1,2,3,4};
  • int i,j;
  • double det;

 

  • cout<<“Matriks A = “<<“\n”;
    • for(i=0;i<2;i++)
    • {
      • for(j=0;j<2;j++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
  • cout<<“\n”;
  • det=A[0][0]*A[1][1]-A[1][0]*A[0][1];
  • cout<<“determinan A = “;
  • cout<<det;
  • cout<<“\n”;
  • double A2[2][2];
  • A2[1][1]=A[0][0];
  • A2[0][0]=A[1][1];
  • A2[0][1]=A[0][1]*-1;
  • A2[1][0]=A[1][0]*-1;
  • cout<<“Invers A = “<<“\n”;
    • for(i=0;i<2;i++)
    • {
      • for(j=0;j<2;j++)
      • {
        • cout<<A2[i][j]/det<<” “;
      • }
      • cout<<“\n”;
    • }
  • }

Jalankan hingga dihasilkan tampilan sebagai berikut:

Untuk matriks 3×3, dengan cara manual dapat dibuat dengan kode berikut ini. Dikatakan manual karena seharusnya kita menggunakan kode yang dapat diterapkan untuk matriks nxn.

  • #include<stdio.h>
  • #include<iostream.h>

 

  • void main(){
  • double A[3][3]={1,2,3,4,5,6,7,8,100};
  • int i,j;
  • double det;
  • double a,b,c;

 

  • cout<<“Matriks A = “<<“\n”;
    • for(i=0;i<3;i++)
    • {
      • for(j=0;j<3;j++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
  • cout<<“\n”;
  • //menghitung determinan
  • a=A[0][0];
  • b=A[0][1];
  • c=A[0][2];
  • double C1,C2,C3;
  • C1=A[1][1]*A[2][2]-A[1][2]*A[2][1];
  • C2=(A[1][0]*A[2][2]-A[2][0]*A[1][2])*-1;
  • C3=A[1][0]*A[2][1]-A[2][0]*A[1][1];
  • cout<<“C1=”<<” “<<C1<<“\n”;
  • cout<<“C2=”<<” “<<C2<<“\n”;
  • cout<<“C3=”<<” “<<C3<<“\n”;
  • det=a*C1+b*C2+c*C3;
  • cout<<“Determinan A = “<<” “;
  • cout<<det;
  • }

Jika dijalankan menghasilkan keluaran:

Uji dengan Matlab apakah jawabannya sesuai:

Menghitung Determinan Matrix 2×2 dengan C/C++

Setelah bisa menginput Matriks, menjumlah, dan mengalikan Matriks, berikutnya kita masuk ke teori-teori yang ada dalam Matriks lebih dalam lagi. Salah satunya adalah Determinan dan Invers. Determinan penting karena merupakan komponen dari inversi suatu matriks. Invers sangat dibutuhkan dalam penyelesaina persamaan simultan yang sering dijumpai dalam teknik. Diketahui suatu matriks:

Sedangkan invers didapat dari rumus:

Bagian ad-bc pada persamaan di atas dikenal dengan nama determinan. Buka Borland/Turbo C++ untuk membuat script perhitungan determinan suatu matriks. Masukan listing berikut (ketik ulang tanda ” karena tidak dikenali jika di copas). Matriks yg akan dicari determinannya adalah a,b,c dan d berturut-turut 1,2,3, dan 4.

  • #include <iostream.h>
  • #include <conio.h>
  • void main(){
  • int i,j,det,A[2][2]={1,2,3,4};
  • cout<<“Matriks A =”<<“\n”;
  • for(i=0;i<2;i++){
    • for(j=0;j<2;j++){
      • cout<<A[i][j]<<” “;
      • }
    • cout<<“\n”;
  • }
  • det=A[0][0]*A[1][1]-A[0][1]*A[1][0];
  • cout<<“Determinan = “<<det;
  • }

Hasilnya adalah sebagai berikut:

Jawaban Soal Aljabar Linear

Sehubungan ada masalah dengan ruangan praktikum hari ini (perbaikan) maka pertemuan kali ini hanya mereview hasil UTS yang lalu. Hasilnya kebanyakan salah di program dengan bahasa C++, sedangkan untuk yang berbahasa Matlab kebanyakan benar (walaupun ada jawaban yang saya sendiri bingung, waktu mengerjakan mikir apa sih?).

Berikut hasil jawabannya, contoh untuk kasus dengan NPM terakhir bernomor 1. Untuk Matlab kita mengalikan Matriks A dan B dengan memasukan matriks A=[1 3;2 4;5 6;7 8], B=[1 2 3;4 5 8], dilanjutkan dengan instruksi C=A*B. Sedangkan untuk bahasa C++ dapat dilihat koding berikut ini (ganti X dengan C ya supaya sesuai dengan soal):

  1. #include<stdio.h>
  2. #include<iostream.h>
  3. void main()
  4. {
  5. int A[4][2]={1,3,2,4,5,6,7,8};
  6. int B[2][3]={1,2,3,4,5,8};
  7. int i,j;
  8. int a,b,c,X[4][3];
  9. cout<<“Matriks A = “<<“\n”;
  10. for(i=0;i<4;i++)
  11. {
    1. for(j=0;j<2;j++)
    2. {
      1. cout<<A[i][j]<<” “;
    3. }
    4. cout<<“\n”;
  12. }
  13. cout<<“Matriks B = “<<“\n”;
  14. for(i=0;i<2;i++)
  15. {
    1. for(j=0;j<3;j++)
    2. {
      1. cout<<B[i][j]<<” “;
    3. }
    4. cout<<“\n”;
  16. }
  17. for(a=0;a<4;a++)
  18. {
    1. for(b=0;b<3;b++)
    2. {
      1. X[a][b]=0;
      2. for(c=0;c<2;c++)
      3. {
        1. X[a][b]=X[a][b]+A[a][c]*B[c][b];
      4. }
    3. }
  19. }
  20. cout<<“Hasil Kali = \n”;
  21. for(a=0;a<4;a++)
  22. {
    1. for(b=0;b<3;b++)
    2. {
      1. cout<<X[a][b]<<” “;
    3. }
    4. cout<<” \n”;
  23. }
  24. }

Berikut tampilan keluarannya:

Mengalikan Matriks dengan Ukuran Bervariasi

Aljabar Linear, 30.10.2012, T.Komputer

Jika pada pertemuan yang lalu kita mengalikan matriks ukuran 2×3 dengan 3×2, sekarang kita akan mengalikan matriks yang ukurannya tergantung dari pengguna asalkan tidak menyalahi kaidah perkalian (jumlah kolom matriks kiri harus sama dengan jumlah baris matriks kanan). Gunakan listing berikut ini (jika mengkopi – paste, jangan lupa simbol petik ” harus diketik ulang):

  • #include<stdio.h>
  • #include<iostream.h>
    • void main()
    • {
    • int i,j,A[5][5],B[5][5],ia,ja,ib,jb,a,b,c,X[5][5];
    • //menginput matriks A
    • cout<<“Masukkan Jumlah Baris Matriks A : “;
    • cin>>ia;
    • cout<<“Masukkan Jumlah Kolom Matriks A : “;
    • cin>>ja;
    • cout<<“Masukkan Matriks A \n”;
    • for(i=0;i<ia;i++)
    • {
      • for(j=0;j<ja;j++)
      • {
        • cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
        • cin>>A[i][j];
      • }
    • }
    • //menginput matriks B
    • cout<<“Masukkan Jumlah Baris Matriks B : “;
    • cin>>ib;
    • cout<<“Masukkan Jumlah Kolom Matriks B : “;
    • cin>>jb;
    • cout<<“Masukkan Matriks A \n”;
    • for(i=0;i<ib;i++)
    • {
      • for(j=0;j<jb;j++)
      • {
        • cout<<“Masukkan Elemen Matriks ke “<<(i+1)<<“,”<<(j+1)<<” :”;
        • cin>>B[i][j];
      • }
    • }
    • //menampilkan matriks A
    • cout<<“Matriks A = \n”;
    • for(i=0;i<ia;i++)
    • {
      • for(j=0;j<ja;j++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //menampilkan matriks B
    • cout<<“Matriks B = \n”;
    • for(i=0;i<ib;i++)
    • {
      • for(j=0;j<jb;j++)
      • {
        • cout<<B[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //mentraspose matriks A
    • cout<<“Transport matriks A : “<<“\n”;
    • for(j=0;j<ja;j++)
    • {
      • for(i=0;i<ia;i++)
      • {
        • cout<<A[i][j]<<” “;
      • }
      • cout<<“\n”;
    • }
    • //Mengalikan Matriks A dengan B
    • cout<<“Hasil kali Matriks A dengan B :”<<“\n”;
    • cout<<“Ukuran Matriks = “<<ia<<“x”<<jb<<“\n”;
    • for(a=0;a<ia;a++)
    • {    for(b=0;b<jb;b++)
      • {X[a][b]=0;
      • for(c=0;c<ja;c++)
      • {
      • X[a][b]=X[a][b]+A[a][c]*B[c][b];
      • }
      • }
    • }
    • //Menampilkan Matriks X
    • for(a=0;a<ia;a++)
    • {    for(b=0;b<jb;b++)
      • {
      • cout<<X[a][b]<<” “;
      • }
      • cout<<“\n”;
    • }
    • }

Setelah dijalankan akan dihasilkan perkalian matriks dengan ukuran yang ditentukan oleh pengguna program.

Mengalikan Matriks (2×3) dengan (3×2)

Aljabar Linear, 25.10.2012, T.Komputer D3, Lab Hardware

Pertemuan yang lalu kita telah membuat program perkalian dua buah matriks 3×3, sekarang kita coba membuat program mengalikan dua buah matriks, yakni matriks 2×3 dengan 3×2. Untuk menerima inputan matriks dari keyboard, buka program yang lalu. Lakukan modifikasi jangkauan i dan j baik untuk matriks kiri (A) dan matriks kanan (B).

Perhatikan kode di atas hasil modifikasi dari program sebelumnya. Deklarasi variabel, tidak ada perubahan, hanya saja format matriks A, B, dan X yang berubah jangkauan matriksnya. Matriks A jumlah baris 2 dan kolom 3, sebaliknya Matriks B dengan jumlah kolom 3 dan baris 2. Jangan lupa, kalang (for) untuk menampilkan matriks A dan B juga harus dimodifikasi.

Akhirnya, setelah Matriks A dan B terbentuk, dibuat satu kalang untuk membuat matriks X hasil perkalian kedua matriks itu. Perhatikan karena hasil kali matriks (2×3) dan (3×2) haruslah berukuran (2×2) maka a dan b dijaga dari 0 sampai 1 (array dimulai dari 0). Jalankan (Ctrl-F9).

Untuk latihan, coba buat program yang mengalikan matriks berapa saja, fleksibel, tergantung masukan ukuran matriks yang akan dikalikan. Tentu saja jika tidak memenuhi syarat, program langsung memberi respon adanya kesalahan tentang ukuran matriks sebagai syarat perkalian.

Mengalikan Matriks 3 x 3

Untuk perkalian matriks kita harus mengetahui syarat perkalian dua matriks dimana kolom matriks bagian kiri harus sama dengan baris matriks bagian kanan. Jika tidak memenuhi, program sebaiknya memberi pesan. Hasilnya pun kita harus tahu, yakni berukuran baris matriks bagian kiri dan kolom matriks bagian kanan. Misal kita akan mengalikan matriks berukuran 2×3 dengan 3×2, maka hasil matriksnya adalah 2×2. Karena kasus yang akan kita coba adalah mengalikan matriks 3×3 dengan 3×3, maka dengan mudah kita mendapatkan hasil matriks 3×3 juga. Dengan kode pada tulisan terdahulu, tambahkan di bawahnya kode berikut (jangan lupa deklarasikan int a,b, dan c terlebih dahulu).

//mengalikan matriks A x B

for(a=0;a<3;a++)

{

    for(b=0;b<3;b++)

    {

        X[a][b]=0;

        for(c=0;c<3;c++)

        {

            X[a][b]=X[a][b]+A[a][c]*B[c][b];

        }

    }

}

cout<<“Hasil Kali = \n”;

for(a=0;a<3;a++)

{

    for(b=0;b<3;b++)

    {

        cout<<X[a][b]<<” “;

    }

    cout<<” \n”;

}

Kebetulan matriks 3×3 unik, berikutnya kita akan coba mengalikan dua matriks yang ukurannya bervariasi.