Fractal : Mandelbrot Set di Sage

Untuk membuat pendekatan terhadap perbatasan atau boundary dari Mandelbrot Set di Sage, dalam percobaan ini digunakan type data ring CDF (Complex Double Field) yang presisinya digandakan di setiap level, dan ring polynomialnya di-return melalui fungsi polygen(). Fungsi polygen() akan menggenerate polynomial di sekitar bilangan kompleks dengan menggunakan floating point numbers, misalnya b.

Apabila ditanya type(CDF), objek ini bertype :

sage.rings.complex_double.ComplexDoubleField_class.

Hal lain mengenai CDF ini ialah hasil kalkulasi terhadap pendekatan CDF ini bisa berbeda tergantung dari rounding error-nya dan juga tergantung dari true field dari bilangan kompleks dimana kalkulasi tersebut dilakukan. Jadi dengan demikian polynomialnya indeterminate.

Mendefiniskan level pendekatan plotting :

def mandelbrot(m):
… b = polygen(CDF, ‘b’)
… z = 0
… for i in range(m):
… … z = z*z + b
… def f(x, y):
… … val = z(CDF(x, y))
… … return val.norm() – 4
… return f

(… dihapus saja).

Di Python, blok-blok kode tidak ditandai dengan tanda khusus, atau dengan begin dan end seperti di bahasa lainnya, melainkan ditandai dengan indentation. Jadi harus hati-hati dalam membuat indentation ini, karena kalau kurang menjorok atau lebih sedikit saja akibatnya syntax error. Misalnya dalam meletakan statemen return seperti di atas.

Selanjutnya untuk menampilkan hasil plotting pada field data tertentu yang kita inginkan digunakan fungsi implicit_plot(). Berbeda dengan fungsi plot() atau contour_plot(), implicit_plot() hanya mendisplay hasil pada kisaran nilai xrange dan yrange yang kita tentukan saja, tidak semuanya. Jadi implicit_plot() lebih tepat digunakan dalam kasus ini.

Untuk menampilkan hasil pendekatan di level pertama ketikan baris berikut :

implicit_plot(mandelbrot(1), (-2.5, 2.5), (-2.5, 2.5)).show(aspect_ratio=1)

Lalu tekan Shift+Enter untuk mengevaluasinya. Hasilnya hanya sebuah cincin (ring) seperti di bawah ini :

Untuk menampilkan hasil pendekatan di level kelima, ketikan baris berikut :

implicit_plot(mandelbrot(5), (-2, 1), (-1.5, 1.5)).show(aspect_ratio=1)

Hasilnya tampak seperti gambar di bawah :

Yang paling bagus dari semua pekerjaan ini adalah hasil di level ketujuh :

implicit_plot(mandelbrot(7), (-1.5, 1.5), (-1.5, 1.5), plot_points=200, fill=True).show(aspect_ratio=1)

Yang hasilnya :

Kalau dibandingkan dengan image Mandelbrot Set dengan menggunakan Ultra Fractal (trial version), hasil pendekatan di level ketujuh ini yang paling mendekati.

[SAGE], SAGE Mathematical Software, Version 3.2.3, http://www.sagemath.org/

Leave a Reply

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