Mandelbrot script for python

Mandelbrot script for python with class and menu integration enjoy
 avatar
unknown
python
a year ago
2.2 kB
11
Indexable
import numpy as np
import matplotlib.pyplot as plt

class Mandelbrot:
    def __init__(self, xmin, xmax, ymin, ymax, width, height, max_iter):
        self.xmin = xmin
        self.xmax = xmax
        self.ymin = ymin
        self.ymax = ymax
        self.width = width
        self.height = height
        self.max_iter = max_iter

    def mandelbrot(self, c):
        z = 0
        n = 0
        while abs(z) <= 2 and n < self.max_iter:
            z = z*z + c
            n += 1
        return n

    def mandelbrot_set(self):
        x = np.linspace(self.xmin, self.xmax, self.width)
        y = np.linspace(self.ymin, self.ymax, self.height)
        mandelbrot_matrix = np.zeros((self.height, self.width), dtype=int)

        for i in range(self.height):
            for j in range(self.width):
                mandelbrot_matrix[i, j] = self.mandelbrot(complex(x[j], y[i]))

        return mandelbrot_matrix

    def plot(self):
        mandelbrot_matrix = self.mandelbrot_set()
        plt.imshow(mandelbrot_matrix.T, extent=(self.xmin, self.xmax, self.ymin, self.ymax), cmap='magma', aspect='auto')
        plt.colorbar()
        plt.title("Mandelbrot Fractal")
        plt.xlabel("Real")
        plt.ylabel("Imaginary")
        plt.show()

def main_menu():
    print("Welcome to Mandelbrot Fractal Generator!")
    print("1. Generate Mandelbrot Fractal")
    print("2. Exit")
    choice = input("Enter your choice: ")
    return choice

if __name__ == "__main__":
    while True:
        choice = main_menu()
        if choice == "1":
            xmin = float(input("Enter xmin: "))
            xmax = float(input("Enter xmax: "))
            ymin = float(input("Enter ymin: "))
            ymax = float(input("Enter ymax: "))
            width = int(input("Enter width: "))
            height = int(input("Enter height: "))
            max_iter = int(input("Enter max iterations: "))

            mandelbrot = Mandelbrot(xmin, xmax, ymin, ymax, width, height, max_iter)
            mandelbrot.plot()
        elif choice == "2":
            print("Exiting...")
            break
        else:
            print("Invalid choice. Please try again.")
Editor is loading...
Leave a Comment