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.
>> 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
>> 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: