python打印朱莉娅集合

mac2022-06-30  22

# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt # 複素数列の計算回数を出力する関数loopmax def loopmax(z, c): # 複素数列の初項 z_next = z # 最大計算回数 num = 1000 # 計算回数まで計算 for i in range(1, num + 1): # 発散しない限り if abs(z_next) <= 2: # 次の項を計算 z = z_next z_next = z ** 2 + c else: # 発散したら終了 break # 発散した際の計算回数を返す return i # 複素平面上のloopmaxの結果を配列で出力する関数calc_n def calc_n(x_min, x_max, y_min, y_max, a, b, num): # 実数軸の座標を等間隔でx_minからx_maxまで定義 x_array = np.linspace(x_min, x_max, num) # 虚数軸の座標を等間隔でy_minからy_maxまで定義 y_array = np.linspace(y_min, y_max, num) # 複素平面の定義(複素数なのでdtype=np.complex) z_array = np.zeros((num, num), dtype=np.complex) # 各座標でのnを格納する配列 n_array = np.zeros((num, num)) # a, bから定数の複素数cを定義 c = a + b * 1j # 複素平面座標とその座標における計算回数の格納 for i in range(0, num): for j in range(0, num): # 複素平面座標 z_array[j, i] = x_array[i] + y_array[j] * 1j # 計算回数の配列 n_array[j, i] = loopmax(z_array[j, i], c) # 計算回数を格納した配列を出力 return n_array # ジュリア集合を描く関数show_patterns def show_patterns(U, ax=None): ax.imshow(U, cmap=plt.cm.hot, interpolation='bilinear') ax.set_axis_off() # メイン関数 if __name__ == "__main__": # プロットする区間を選択 x_min = -1.5 x_max = 1.5 y_min = -1.5 y_max = 1.5 # 定数項のパラメータ a = 0.285 b = 0.01 # 複素平面上に定義する各軸の座標の個数 num = 500 # 計算回数の配列を上記のパラメータから出力 n_array = calc_n(x_min, x_max, y_min, y_max, a, b, num) # プロット fig, ax = plt.subplots(1, 1, figsize=(8, 8)) show_patterns(n_array, ax=ax) # 画像の保存 plt.savefig('Julia.png', dpi=1500)

转载于:https://www.cnblogs.com/c-x-a/p/10341981.html

相关资源:关于mandelbrot集和julia集的bmp图的做法
最新回复(0)