開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.6 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の6章(幾何図形とフラクタルを描画する)、5.4(プログラミングチャレンジ)、問題6-4(マンデルブロ集合を描く)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import matplotlib.cm as cm
def initialize_image(x_p, y_p):
image = [[0 for j in range(x_p)]
for i in range(y_p)]
return image
def mandelbrot_set():
x1, y1 = (-2.5, -1.0)
x2, y2 = (1, 1)
x_p = 400
y_p = 400
dx = (x2 - x1) / x_p
dy = (y2 - y1) / y_p
xs = [x1 + i * dx for i in range(x_p)]
ys = [y1 + i * dy for i in range(y_p)]
image = initialize_image(x_p, y_p)
max_iteration = 100
for i, x in enumerate(xs):
for k, y in enumerate(ys):
z1 = 0 + 0j
c = x + y * 1j
iteration = 0
z1 = z1 ** 2 + c
while abs(z1) < 2 and iteration < max_iteration:
z1 = z1 ** 2 + c
iteration += 1
image[k][i] = iteration
plt.imshow(image, origin='lower', extent=(x1, x2, y1, y2),
cmap=cm.Greys_r, interpolation='nearest')
plt.savefig('sample4.svg')
plt.show()
if __name__ == '__main__':
mandelbrot_set()
入出力結果(Terminal, Jupyter(IPython))
$ ./sample4.py $
0 コメント:
コメントを投稿