पायथन फ्रैक्टल्स

Mar 22 2023
भग्न ज्यामिति एक आकर्षक क्षेत्र है जो भग्न के रूप में जानी जाने वाली गणितीय संरचनाओं के अध्ययन से संबंधित है। भग्न जटिल, स्व-समान पैटर्न हैं जो खुद को विभिन्न पैमानों पर दोहराते हैं, और वे प्रकृति, कला और विज्ञान में पाए जा सकते हैं।

भग्न ज्यामिति एक आकर्षक क्षेत्र है जो भग्न के रूप में जानी जाने वाली गणितीय संरचनाओं के अध्ययन से संबंधित है। भग्न जटिल, स्व-समान पैटर्न हैं जो खुद को विभिन्न पैमानों पर दोहराते हैं, और वे प्रकृति, कला और विज्ञान में पाए जा सकते हैं।

सबसे प्रसिद्ध फ्रैक्टल्स में से एक मैंडलब्रॉट सेट है, जिसका नाम गणितज्ञ बेनोइट मैंडलब्रॉट के नाम पर रखा गया है। मैंडेलब्रॉट सेट एक साधारण समीकरण को बार-बार दोहराकर और जटिल संख्याओं के परिणामी अनुक्रम के व्यवहार की जांच करके उत्पन्न होता है। मैंडेलब्रॉट सेट को जटिल संख्या c के सेट के रूप में परिभाषित किया गया है, जिसके लिए क्रम पुनरावृत्ति के तहत बंधा रहता है।

मैंडेलब्रॉट सेट बनाने के लिए, हम पायथन और मैटप्लोटलिब लाइब्रेरी का उपयोग कर सकते हैं। पहला कदम एक ऐसे फ़ंक्शन को परिभाषित करना है जो जटिल संख्या सी और अधिकतम संख्या में पुनरावृत्तियों को लेता है, और पुनरावृत्तियों की संख्या देता है जो अनुक्रम को अबाधित होने के लिए लेता है।

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

एक बार मैंडेलब्रॉट सेट तैयार हो जाने के बाद, हम इसे इमेज के रूप में देखने के लिए matplotlib लाइब्रेरी का उपयोग कर सकते हैं।

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

अब हम इन कार्यों का उपयोग रुचि और संकल्प के दिए गए क्षेत्र के लिए मैंडलब्रॉट सेट बनाने और प्लॉट करने के लिए कर सकते हैं।

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

एक अन्य प्रसिद्ध फ्रैक्टल जिसे समान दृष्टिकोण का उपयोग करके उत्पन्न किया जा सकता है, जूलिया सेट है, जिसे जटिल संख्या c के सेट के रूप में परिभाषित किया गया है, जिसके लिए अनुक्रम z_n = z_{n-1}² + c सीमित रहता है। जूलिया सेट मैंडेलब्रॉट सेट के समान समीकरण को पुनरावृत्त करके उत्पन्न होता है, लेकिन सी के निश्चित मान के साथ।

जूलिया सेट उत्पन्न करने के लिए, हम मैंडलब्रॉट फ़ंक्शन को सी के एक निश्चित मान में लेने के लिए संशोधित कर सकते हैं, और इसे जटिल विमान में प्रत्येक बिंदु पर लागू कर सकते हैं।

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

फ्रैक्टल्स आकर्षक गणितीय संरचनाएं हैं जिन्हें पायथन और मैटप्लोटलिब लाइब्रेरी का उपयोग करके उत्पन्न और विज़ुअलाइज़ किया जा सकता है। मैंडेलब्रॉट सेट और जूलिया सेट भग्न के दो प्रसिद्ध उदाहरण हैं जिन्हें सरल पुनरावृत्ति एल्गोरिदम का उपयोग करके उत्पन्न किया जा सकता है, और उनकी जटिल और सुंदर संरचनाएं उन्हें गणित, विज्ञान और कला में अध्ययन और अन्वेषण का एक लोकप्रिय विषय बनाती हैं।