昨天,我看到了有关牛顿分形的新 3Blue1Brown 视频,他对分形的现场表现让我着迷。(以下是感兴趣的人的视频链接,时间为 13:40:https://www.youtube.com/watch? v=-RdOwhmqP5s )
我想自己尝试一下,并尝试用 python 编写它(我认为他也使用 python)。
我花了几个小时试图改进我的幼稚实现,但到了我不知道如何才能让它更快的地步。
代码如下所示:
import os
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
from time import time
def print_fractal(state):
fig = plt.figure(figsize=(8, 8))
gs = GridSpec(1, 1)
axs = [fig.add_subplot(gs[0, 0])]
fig.tight_layout(pad=5)
axs[0].matshow(state)
axs[0].set_xticks([])
axs[0].set_yticks([])
plt.show()
plt.close()
def get_function_value(z):
return z**5 + z**2 - z + 1
def get_function_derivative_value(z):
return 5*z**4 + 2*z - 1
def check_distance(state, roots):
roots2 = np.zeros((roots.shape[0], state.shape[0], state.shape[1]), dtype=complex)
for r …Run Code Online (Sandbox Code Playgroud)