Berbagi pengetahuan, dari mana saja, dari siapa saja, untuk semua

Penerapan MATLAB dalam The Golden Ratio dan Sudoku

MATLAB (matrix laboratory) merupakan software yang berguna dalam komputasi numerik dan visual.  Dalam artikel ini akan dibahas aplikasi penggunaan MATLAB dalam perhitungan bilangan rasio emas (the golden ratio). Melalui sedikit proses komputasi, kita dapat memperoleh fungsi asimtotik dari rasio emas. Selain itu, kita akan sekilas membahas mengenai permainan sudoku yang juga dapat dikomputasikan menggunakan MATLAB.

Rasio emas atau rata-rata Phidias (Latin: sectio aurea), sebagaimana didefinisikan oleh Euclid (Yunani: Στοιχεῖα), merupakan “sebuah garis yang telah dipotong dalam rasio ekstrem dimana panjang seluruh garis berbanding ruas panjang sama dengan ruas panjang berbanding ruas pendek”. Pada rubrik matematika majalah 1000guru edisi ke-28 telah dibahas beberapa perhitungan matematis untuk memperoleh nilai rasio emas: 1,618… beserta aplikasinya. Berdasarkan definisi di atas, rasio emas merupakan sebuah bilangan yang dapat didekati oleh dirinya sendiri:

\phi = 1 + \frac{1}{\phi} \quad \ldots (1)

atau dapat pula dinyatakan dalam pecahan yang penyebutnya merupakan bilangan itu sendiri:

\phi = 1 + \frac{1}{1 + \frac{1}{1 + \frac{1}{1 + \ldots}}} \quad \ldots (2)

Perhitungan dan visualisasi rasio emas dengan MATLAB

Pertama-tama, kita akan mencoba melakukan konversi persamaan (1) menjadi sebuah persamaan kuadrat yang memiliki dua nilai akar (solusi) yang salah satunya merupakan rasio emas.

\frac{1}{\phi} = \frac{\phi -1}{1}

\phi^2 - \phi - 1 = 0 \quad \ldots (3)

Persamaan kuadrat (3) merupakan bentuk persamaan polinomial yang dapat diselesaikan dengan mudah oleh MATLAB sebagai berikut:

p = [1 -1 1]
r = roots(p)

r =
-0.61803398874989
1. 61803398874989

atau bisa juga sebagai berikut:

r = solve(‘1/x = x-1’)
r =
[1/2*5^(1/2)+1/2]
[1/2-1/2*5^(1/2)]

phi = r(1)
phi =
1/2*5^(1/2)+1/2
vpa(phi,50)

1.6180339887498948482045868343656381177203091798058

Kita telah berhasil menghitung rasio emas hingga 50 digit di belakang koma, hanya dengan beberapa perintah MATLAB. Sekarang kita akan mencoba membuat visualisasi bujur sangkar emas (golden rectangle) dengan menggunakan MATLAB sebagai berikut:

phi = (1+sqrt(5))/2; 
x = [0 phi phi 0 0];
y = [0 0 1 1 0];
u = [1 1];
v = [0 1];
plot(x,y,’b’,u,v,’b--’)
text(phi/2,1.05,’\phi’)
text((1+phi)/2,-.05,’\phi - 1’)
text(-.05,.5,’1’)
text(.5,-.05,’1’)
axis equal
axis off
set(gcf,’color’,’white’)

Selain dapat memvisualisasikan golden rectangle, dengan menggunakan beberapa perintah sederhana kita juga dapat melukiskan fungsinya. Berikut ini perintah yang dapat digunakan:

f = @(x) 1./x-(x-1)
ezplot(f,0,4)
phi = fzero(f,1)
hold on
plot(phi,0,’o’)

Perintah di atas menggunakan ‘ezplot’ yang merupakan kepanjangan dari easy plot, meskipun beberapa orang masih menyebutnya “e-zed plot”. Grafik fungsi yang digambarkan oleh perintah ini menjadi tak terhingga ketika nilai x mendekati nol (x \rightarrow 0), ezplot juga menghasilkan skala vertikal secara otomatis.

Gambar kiri: ilustrasi golden rectangle. Gambar kanan: Grafik fungsi golden ratio.

Gambar kiri: ilustrasi golden rectangle. Gambar kanan: Grafik fungsi golden ratio.

Permainan Sudoku menggunakan MATLAB

Tentunya kita pernah mengutak-atik beberapa angka yang jika disusun secara matriks dapat menghasilkan jumlah yang sama, baik dijumlahkan secara vertikal, horizontal, ataupun diagonal, itulah permainan sudoku.

Komik tentang permainan Sudoku. Sumber gambar: http://home.comcast.net/~andy_dunn/

Komik tentang permainan Sudoku. Sumber gambar: http://home.comcast.net/~andy_dunn/

Dalam MATLAB, matriks yang demikian disebut dengan magic square. Matriks ini dapat diperoleh dengan menggunakan perintah MATLAB, yaitu “magic”:

A = magic(3)
A = 
    8   1   6
    3   5   7
    4   9   2

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

A = magic(3)
for k = 0:3
   rot90(A,k)
   rot90(A’,k)
end

8   1   6      8   3   4
3   5   7      1   5   9
4   9   2      6   7   2

6   7   2      4   9   2
1   5   9      3   5   7
8   3   4      8   1   6

2   9   4      2   7   6
7   5   3      9   5   1
6   1   8      4   3   8

4   3   8      6   1   8
9   5   1      7   5   3
2   7   6      2   9   4

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 menghendaki perintah untuk 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 dua perintah terakhir di atas tampak seperti berikut ini:

Visualisasi 3-D matriks magic square dengan menggunakan MATLAB.

Visualisasi 3-D matriks magic square dengan menggunakan MATLAB.

Menyenangkan, bukan?

 Bahan bacaan:

Penulis:
Fran Kurnia, mahasiswa S3 di The University of New South Wales, Australia.
Kontak: fran.kurnia(at)yahoo(dot)com.