piton fraktalları

Mar 22 2023
Fraktal geometri, fraktallar olarak bilinen matematiksel yapıların incelenmesiyle ilgilenen büyüleyici bir alandır. Fraktallar, kendilerini farklı ölçeklerde tekrar eden karmaşık, kendine benzer kalıplardır ve doğada, sanatta ve bilimde bulunabilirler.

Fraktal geometri, fraktallar olarak bilinen matematiksel yapıların incelenmesiyle ilgilenen büyüleyici bir alandır. Fraktallar, kendilerini farklı ölçeklerde tekrar eden karmaşık, kendine benzer kalıplardır ve doğada, sanatta ve bilimde bulunabilirler.

En ünlü fraktallardan biri, adını matematikçi Benoit Mandelbrot'tan alan Mandelbrot kümesidir. Mandelbrot seti, basit bir denklemi tekrar tekrar yineleyerek ve elde edilen karmaşık sayı dizisinin davranışını inceleyerek oluşturulur. Mandelbrot kümesi, dizinin yineleme altında sınırlı kaldığı c karmaşık sayıları kümesi olarak tanımlanır.

Mandelbrot setini oluşturmak için Python ve matplotlib kütüphanesini kullanabiliriz. İlk adım, c karmaşık sayısını ve maksimum yineleme sayısını alan ve dizinin sınırsız hale gelmesi için gereken yineleme sayısını döndüren bir işlev tanımlamaktır.

import numpy as np 
 
def mandelbrot(c, max_iter): 
    z = 0 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter): 
    x_values = np.linspace(xmin, xmax, width) 
    y_values = np.linspace(ymin, ymax, height) 
    mandelbrot_set = np.zeros((height, width)) 
     
    for i in range(height): 
        for j in range(width): 
            mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter) 
             
    return mandelbrot_set

Mandelbrot seti oluşturulduktan sonra, matplotlib kütüphanesini onu bir görüntü olarak görselleştirmek için kullanabiliriz.

def generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter): 
    x_values = np.linspace(xmin, xmax, width) 
    y_values = np.linspace(ymin, ymax, height) 
    mandelbrot_set = np.zeros((height, width)) 
     
    for i in range(height): 
        for j in range(width): 
            mandelbrot_set[i,j] = mandelbrot(complex(x_values[j], y_values[i]), max_iter) 
             
    return mandelbrot_set

Artık bu işlevleri, belirli bir ilgi ve çözünürlük bölgesi için Mandelbrot kümesini oluşturmak ve çizmek için kullanabiliriz.

if __name__ == '__main__': 
    xmin, xmax, ymin, ymax = -2, 1, -1.5, 1.5 
    width, height = 1000, 1000 
    max_iter = 1000 
    mandelbrot_set = generate_mandelbrot_set(xmin, xmax, ymin, ymax, width, height, max_iter) 
    plot_mandelbrot_set(mandelbrot_set, cmap='inferno')

Benzer bir yaklaşım kullanılarak üretilebilen bir başka ünlü fraktal, z_n = z_{n-1}² + c dizisinin sınırlı kaldığı c karmaşık sayıları kümesi olarak tanımlanan Julia kümesidir. Julia seti, Mandelbrot seti ile aynı denklemi yineleyerek, ancak sabit bir c değeriyle üretilir.

Julia setini oluşturmak için, mandelbrot fonksiyonunu sabit bir c değeri alacak şekilde değiştirebilir ve bunu karmaşık düzlemdeki her noktaya uygulayabiliriz.

def julia(z, c, max_iter): 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

def julia(z, c, max_iter): 
    for i in range(max_iter): 
        z = z**2 + c 
        if abs(z) > 2: 
            return i 
    return max_iter

if __name__ == '__main__': 
    xmin, xmax, ymin, ymax = -2, 2, -2, 2 
    width, height = 1000, 1000 
    max_iter = 1000 
    c = complex(-0.4, 0.6) 
    julia_set = generate_julia_set(xmin, xmax, ymin, ymax, width, height, c, max_iter) 
    plot_mandelbrot_set(julia_set, cmap='inferno')

Fraktallar, Python ve matplotlib kitaplığı kullanılarak oluşturulabilen ve görselleştirilebilen büyüleyici matematiksel yapılardır. Mandelbrot seti ve Julia seti, basit yinelemeli algoritmalar kullanılarak üretilebilen iki ünlü fraktal örneğidir ve karmaşık ve güzel yapıları onları matematik, bilim ve sanatta popüler bir çalışma ve keşif konusu haline getirir.