เศษส่วน Python

Mar 22 2023
เรขาคณิตเศษส่วนเป็นสาขาที่น่าสนใจซึ่งเกี่ยวข้องกับการศึกษาโครงสร้างทางคณิตศาสตร์ที่เรียกว่าเศษส่วน แฟร็กทัลเป็นรูปแบบที่ซับซ้อนและคล้ายคลึงกันซึ่งทำซ้ำตัวเองในระดับต่างๆ และสามารถพบได้ในธรรมชาติ ศิลปะ และวิทยาศาสตร์

เรขาคณิตเศษส่วนเป็นสาขาที่น่าสนใจซึ่งเกี่ยวข้องกับการศึกษาโครงสร้างทางคณิตศาสตร์ที่เรียกว่าเศษส่วน แฟร็กทัลเป็นรูปแบบที่ซับซ้อนและคล้ายคลึงกันซึ่งทำซ้ำตัวเองในระดับต่างๆ และสามารถพบได้ในธรรมชาติ ศิลปะ และวิทยาศาสตร์

หนึ่งในแฟร็กทัลที่มีชื่อเสียงที่สุดคือชุด Mandelbrot ซึ่งตั้งชื่อตามนักคณิตศาสตร์ Benoit Mandelbrot ชุด Mandelbrot ถูกสร้างขึ้นโดยการทำซ้ำสมการง่ายๆ ซ้ำแล้วซ้ำอีก และตรวจสอบพฤติกรรมของลำดับผลลัพธ์ของจำนวนเชิงซ้อน ชุด Mandelbrot ถูกกำหนดให้เป็นชุดของจำนวนเชิงซ้อน c ซึ่งลำดับยังคงถูกล้อมรอบภายใต้การวนซ้ำ

ในการสร้างชุด Mandelbrot เราสามารถใช้ Python และไลบรารี matplotlib ขั้นตอนแรกคือการกำหนดฟังก์ชันที่รับจำนวนเชิงซ้อน 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

เมื่อสร้างชุด Mandelbrot แล้ว เราสามารถใช้ไลบรารี 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

ตอนนี้เราสามารถใช้ฟังก์ชันเหล่านี้เพื่อสร้างและวางแผนชุด Mandelbrot สำหรับพื้นที่ที่สนใจและความละเอียดที่กำหนด

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 ยังคงมีขอบเขตอยู่ เซต Julia ถูกสร้างขึ้นโดยการวนซ้ำสมการเดียวกันกับเซต Mandelbrot แต่มีค่าคงที่เป็น c

ในการสร้างชุดจูเลีย เราสามารถแก้ไขฟังก์ชันแมนเดลบรอตเพื่อรับค่าคงที่ของ 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')

แฟร็กทัลเป็นโครงสร้างทางคณิตศาสตร์ที่น่าสนใจซึ่งสามารถสร้างและแสดงภาพได้โดยใช้ Python และไลบรารี matplotlib เซตแมนเดลบรอตและเซตจูเลียเป็นสองตัวอย่างที่มีชื่อเสียงของแฟร็กทัลที่สามารถสร้างขึ้นโดยใช้อัลกอริทึมแบบวนซ้ำอย่างง่าย และโครงสร้างที่ซับซ้อนและสวยงามของแฟร็กทัลทำให้เป็นหัวข้อยอดนิยมของการศึกษาและการสำรวจทางคณิตศาสตร์ วิทยาศาสตร์ และศิลปะ