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)')

Leave a Reply | Tinggalkan Komentar..

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s