Magic on Matlab



Tentunya kita semua tau permainan mengutak-atik angka yang jika disusun secara matriks dapat menghasilkan jumlah yang sama, baik dijumlahkan secara vertikal, horizontal, ataupun diagonal. Permainan jenis ini sering disebut permainan sudoku.

Dalam MATLAB, permainan matriks yang demikian dikenal dengan magic square. Matriks ini dapat diperoleh dengan menggunakan perintah MATLAB, yaitu “magic”. Mari kita ambil cpntoh permainan dengan empat kotak.

>> A = magic(4)

A =

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

Matriks ini merupakan salah satu contoh magic square yang dapat dihasilkan oleh MATLAB yang jumlah angka vertikal, horizontal, dan diagonalnya adalah 34. Cara lainnya untuk memperoleh matriks ini ialah dengan melakukan rotasi dan refleksi matriks sehingga dapat diperoleh 10 magic square lainnya dengan jumlah yang tetap sama, 34, sebagai berikut:


>> for k = 0:4
rot90(A,k)
rot90(A' ,k)
end

ans =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
ans =
    16     5     9     4
     2    11     7    14
     3    10     6    15
    13     8    12     1
ans =
    13     8    12     1
     3    10     6    15
     2    11     7    14
    16     5     9     4
ans =
     4    14    15     1
     9     7     6    12
     5    11    10     8
    16     2     3    13
ans =
     1    15    14     4
    12     6     7     9
     8    10    11     5
    13     3     2    16
ans =
     1    12     8    13
    15     6    10     3
    14     7    11     2
     4     9     5    16
ans =
     4     9     5    16
    14     7    11     2
    15     6    10     3
     1    12     8    13
ans =
    13     3     2    16
     8    10    11     5
    12     6     7     9
     1    15    14     4
ans =
    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1
ans =
    16     5     9     4
     2    11     7    14
     3    10     6    15
    13     8    12     1




 Untuk matriks dengan dimensi yang lebih besar kita hanya perlu mengganti nilai ‘n’ dalam perintah magic(n) tersebut, n = 4, 5, 6, dst. Sekarang kita akan memvisualisasikan matriks 3-D magic square dengan MATLAB yang lebih menarik dengan dimensi matriks yang lebih tinggi sebagai berikut:


>> for n = 8:11
subplot(2,2,n-7)
surf(magic(n))
title(num2str(n))
axis off
view(30,45)
axis tight
end








Apabila kita ingin menggambarkan magic square dengan tampilan yang kita inginkan dan dengan matriks orde ke-n, dapat digunakan perintah sebagai berikut:
>> surf(magic(n))
>> axis off
>> set(gcf,'doublebuffer','on')
>> cameratoolbar


Hasil visualisasi yang dihasilkan dari perintah terakhir di atas tampak seperti berikut ini:


 Menarik kan?

Categories: Share

Leave a Reply