2018年9月15日土曜日

開発環境

  • 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 コメント:

コメントを投稿