2019年1月13日日曜日

開発環境

目が覚めてからまた寝るまでの時間(一定と仮定)を考慮した場合に、何度寝できるか計算するプログラムのコードを書いてみた。あと、何度寝したいかによって何秒で寝付けばいいかもわかるグラフを描いてみた。

コード

Python 3

#!/usr/bin/env python3
import itertools
from sympy import symbols, pprint, solve, pi, summation, oo, Rational, plot


k, n = symbols('k, n', integer=True)
p = 2
f = 1 / (k - 1) ** p
result = summation(f, (k, 2, oo))
pprint(result)

print('寝付くまでの時間を考慮する場合。')
while True:
    try:
        sec = int(input('目覚めてから寝るまでかかる秒数: '))
        if not sec > 0:
            raise Exception('正の整数を入力してください。')
        break
    except ValueError as err:
        print(f'{err}: 正の整数を入力してください。')
    except Exception as err:
        print(err)

hour = Rational(sec, 60 ** 2)
f = hour + 1 / k ** 2
result = summation(f, (k, 1, n))

pprint(result)
for m in itertools.count(0):
    if result.subs({n: m}) > pi ** 2 / 6:
        break
print(f'π^2/6時間後に起きているためには、{m - 1}度寝可能。')


print('n度寝するには何秒で寝付けばいいか?')
sec = symbols('sec')
hour = sec / 60 ** 2
f = hour + 1 / (k - 1) ** 2
result = summation(f, (k, 2, n)) - pi ** 2 / 6
p = plot(solve(result, sec)[0], (n, 2, 10), legend=True, show=False)
p.save('sample89.png')

入出力結果(Terminal, cmd(コマンドプロンプト), Jupyter(IPython))

$ ./sample89.py
 2
π 
──
6 
寝付くまでの時間を考慮する場合。
目覚めてから寝るまでかかる秒数: 5
 n                  
─── + harmonic(n, 2)
720                 
π^2/6時間後に起きているためには、26度寝可能。
n度寝するには何秒で寝付けばいいか?
iMac:blog kamimura$ ./sample89.py
 2
π 
──
6 
寝付くまでの時間を考慮する場合。
目覚めてから寝るまでかかる秒数: 10
 n                  
─── + harmonic(n, 2)
360                 
π^2/6時間後に起きているためには、18度寝可能。
n度寝するには何秒で寝付けばいいか?
iMac:blog kamimura$ ./sample89.py
 2
π 
──
6 
寝付くまでの時間を考慮する場合。
目覚めてから寝るまでかかる秒数: 300
n                  
── + harmonic(n, 2)
12                 
π^2/6時間後に起きているためには、3度寝可能。
n度寝するには何秒で寝付けばいいか?
iMac:blog kamimura$ ./sample89.py
 2
π 
──
6 
寝付くまでの時間を考慮する場合。
目覚めてから寝るまでかかる秒数: 600
n                 
─ + harmonic(n, 2)
6                 
π^2/6時間後に起きているためには、2度寝可能。
n度寝するには何秒で寝付けばいいか?
$

0 コメント:

コメントを投稿