Wednesday, September 21, 2011

Menggambar Fraktal Fern di Matlab

Fraktal atau fractal merupakan gambaran benda geometris yang kasar pada segala skala, dan terlihat dapat "dibagi-bagi" dengan cara yang ekstrim. Beberapa fraktal bisa dipecah menjadi beberapa bagian yang semuanya mirip dengan fraktal aslinya. Fraktal dikatakan memiliki detail yang tak hingga (unlimited) dan dapat memiliki struktur serupa diri pada tingkat perbesaran yang berbeda. Pada banyak contoh, sebuah fraktal bisa dihasilkan dengan cara mengulang suatu pola yang sama dalam proses rekursif atau iteratif dan ukuran yang berbeda. Istilah fractal dibuat oleh BenoƮt Mandelbrot pada tahun 1975 dari kata Latin fractus yang artinya "patah", "tidak teratur" atau "rusak". Sebelum Mandelbrot memperkenalkan istilah tersebut, nama umum untuk struktur semacamnya (misalnya bunga salju Koch) adalah kurva monster (monster curve).
Matematika, sebagai salah satu cabang ilmu pengetahuan awalnya mempelajari fenomena ini sebagai benda-benda matematis. Geometri fraktal adalah cabang matematika yang mempelajari sifat-sifat dan perilaku fraktal. Fraktal bisa membantu menjelaskan banyak situasi yang sulit dideskripsikan menggunakan geometri klasik, dan sudah cukup banyak diaplikasikan dalam sains, teknologi, dan seni karya komputer. Dulu ide-ide konseptual fraktal muncul saat definisi-definisi tradisional geometri Euklides dan kalkulus gagal menganalisis objek-objek kurva monster tersebut.

Gambar Fraktal Fern

Salah satu contoh fraktal adalah fractal fern atau fraktal daun. Gambar fraktal fern dapat dilihat diatas dan untuk menggambarnya dapat menggunakan script Matlab berikut ini. Silakan run script Matlab berikut dan ganti parameternya untuk mendapatkan gambar yang berbeda.
function fern

%FERN MATLAB implementation of the Fractal Fern

%Michael Barnsley, Fractals Everywhere, Academic Press,1993

%This version runs forever, or until stop is toggled.

%See also: FINITEFERN.

shg

clf reset

set(gcf,'color','white','menubar','none', ...

'numbertitle','off','name','Fractal Fern')

x = [.5; .5];

h = plot(x(1),x(2),'.');

darkgreen = [0 2/3 0];

set(h,'markersize',1,'color',darkgreen,'erasemode','none');

axis([-3 3 0 10])

axis off

stop = uicontrol('style','toggle','string','stop', ...

'background','white');

drawnow

p = [ .85 .92 .99 1.00];

A1 = [ .85 .04; -.04 .85]; b1 = [0; 1.6];

A2 = [ .20 -.26; .23 .22]; b2 = [0; 1.6];

A3 = [-.15 .28; .26 .24]; b3 = [0; .44];

A4 = [ 0 0 ; 0 .16];

cnt = 1;

tic

while ~get(stop,'value')

    r = rand;

if r < p(1)

x = A1*x + b1;

elseif r < p(2)

x = A2*x + b2;

elseif r < p(3)

x = A3*x + b3;

else

x = A4*x;

end

set(h,'xdata',x(1),'ydata',x(2));

cnt = cnt + 1;

drawnow

end

t = toc;

s = sprintf('%8.0f points in %6.3f seconds',cnt,t);

text(-1.5,-0.5,s,'fontweight','bold');

set(stop,'style','pushbutton','string','close', ...

'callback','close(gcf)')

Related Posts Plugin for WordPress, Blogger...