開発環境
- macOS High Sierra - Apple
- Emacs (Text Editor)
- Python 3.7 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の2章(データをグラフで可視化する)、2.6(プログラミングチャレンジ)、問題2-5(フィボナッチ数列と黄金比の関係を調べる)を取り組んでみる。
コード(Emacs)
Python 3
#!/usr/bin/env python3
import matplotlib.pyplot as plt
import sys
def fibo(n):
if n == 1:
return [1]
series = [1, 1]
for i in range(n - 2):
series.append(series[i] + series[i + 1])
return series
def ratios(nums):
return [0] + [nums[i] / nums[i - 1] for i in range(len(nums) - 1)]
def draw_graph(x, y):
plt.plot(x, y)
plt.xlabel('No.')
plt.ylabel('Ratio')
plt.title('Ratio between consecutive Fibonacci numbers')
if __name__ == '__main__':
try:
n = int(sys.argv[1])
except ValueError as err:
print(err)
else:
nums = fibo(n)
draw_graph(range(n), ratios(nums))
plt.savefig(f'sample5_{n}.svg')
入出力結果(Terminal, Jupyter(IPython))
$ ./sample5.py
Traceback (most recent call last):
File "./sample5.py", line 28, in <module>
n = int(sys.argv[1])
IndexError: list index out of range
$ ./sample5.py 10
$ ./sample5.py 50
$ ./sample5.py 100
$
0 コメント:
コメントを投稿