開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の6章(幾何図形とフラクタルを描画する)、6.4(プログラミングチャレンジ)、問題6-3(エノン関数を調べる)を取り組んでみる。
問題6-3(エノン関数を調べる)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib.pyplot as plt
from matplotlib import animation
N = 1 * 10**3
Writer = animation.writers['ffmpeg']
writer = Writer(fps=15,
metadata=dict(artist='kamimura',
title='Hénon map ({0}) (Michel Hénon)'.format(N)),
bitrate=1800)
def henon_map(p):
x, y = p
return y + 1 - 1.4 * x**2, 0.3 * x
def update_line(i, xs, ys, l):
l.set_data([xs[:i], ys[:i]])
return l,
def create_animation(n):
x = 1
y = 1
xs = [x]
ys = [y]
for _ in range(n):
x, y = henon_map((x, y))
xs.append(x)
ys.append(y)
fig = plt.figure(figsize=(5, 5))
ax = plt.axes(xlim=(-1.5, 1.5), ylim=(-0.4, 1.1))
l, = plt.plot([], [], 'bo')
anim = animation.FuncAnimation(fig,
update_line,
fargs=(xs, ys, l),
frames=n,
interval=1,
repeat=False)
anim.save(filename='henon_map.mp4', writer=writer)
if __name__ == '__main__':
n = N
create_animation(n)
入出力結果(Terminal, IPython)
$ ./sample3.py $
0 コメント:
コメントを投稿