「数学の言葉で世界を見たら」をPython で見たら… Vol.5 ネイピア数
第3話「大きな数だって怖くない」
書籍の著者 大栗博司 先生
書籍「数学の言葉で世界を見たら」第3話「大きな数だって怖くない」の Python写経活動記録 です。
Python で動かして ネイピア数 を堪能します。
では書籍を開いて数学の旅に出発です🚀

はじめに
このブログシリーズは、書籍「数学の言葉で世界を見たら」(幻冬舎)で学んだ「数学の楽しさ」を「Python 写経の形式」でご紹介いたします。
【引用表記】
この記事は、出典に記載の書籍に掲載された文章とデータを引用し、適宜、掲載文章・データを改変して書いています。
【出典】
「数学の言葉で世界を見たら」 第3刷、著者 大栗博司、幻冬舎

4 複利効果を最大にする預金の方法とは?
学びポイント
金利の複利効果とネイピア数がマリアージュする瞬間に立ち会えます。
この記事で用いるライブラリをインポートします。
## インポート
# 数値計算
import numpy as np
# 代数計算
import sympy as sp
# TeX表示
from IPython.display import Math
# 可視化
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Meiryo' # または import japanize_matplotlib
複利効果の例
書籍は「銀行Aの年利 $${100\%}$$」の銀行預金の金利計算期間を
1年、半年、1か月、1日、1秒
と、どんどん間隔を短くするときに元金が何倍になるかを調べます。
金融の世界の「複利効果」を体感できるように工夫されています。
そしてライバル銀行Bの年利 $${200\%}$$ (金利計算期間は1年のみ)を超えられるかどうか、がストーリーの見どころです。
1年間に期間均等で $${n}$$ 回預けなおすと預金は $${(1 + 1/n)^n}$$ 倍になります。
$${n}$$ を1回(1年)、2回(半年)、・・・ と増やす(分割する)ときに何倍になるかの計算結果は、p.92 の表にまとめられています。
Python でこの表を求めてみましょう。
### p.92 の表
# p.92の表の再現
df = pd.DataFrame(
{'据置期間': ['1年', '半年', '1か月', '1日', '1秒'],
'n': [1, 2, 12, 365, 365*24*3600]})
df['(1 + 1/n)ⁿ'] = (1 + 1/df.n)**df.n
display(df)【実行結果】

書籍によると1年間で $${2.71828 \cdots}$$ 倍より大きくならないそうです。
可視化して大きくならない様子を確認しましょう。
見栄えを損なわないよう、$${n=100}$$ までの $${(1+1/n)^n}$$ 倍を描画します。
## p.92の表の可視化 n=100まで
# 横軸nの設定
n = np.linspace(1e-10, 100, 100)
# 縦軸yの算出
y = (1 + 1/n)**n
# 描画
plt.plot(n, y)
plt.xlabel('$n$', fontsize=12)
plt.ylabel(r'$(1 + 1/n)^n$', fontsize=12);【実行結果】
確かに $${2.75}$$ には到達できない感じです。


複利効果がネイピア数へ
$${n}$$ を大きくすると $${(1+1/n)^n}$$ はネイピア数 $${e}$$ と呼ばれる定数になります。
銀行預金の複利効果がいつの間にか、ネイピア数に繋がっています!
書籍にならって $${e}$$ を数式表現します。
$$
e = \lim_{n \rightarrow \infty} \left( 1 + \cfrac{1}{n} \right)^n
$$
sympy の極限 limit を使って、この数式の計算をしましょう。
こんな感じです。
result = sp.limit(fn, n, sp.oo)
### p.92 e を極限で計算 ※sympy利用
# 変数nの定義
n = sp.Symbol('n')
# 関数 f(n) = (1 + 1/n)ⁿ の定義
fn = ((1 + 1/n)**n)
# 極限の計算・結果表示
result = sp.limit(fn, n, sp.oo)
display(Math(f'{sp.latex(result)} = {float(result)}'))【実行結果】
ネイピア数 $${e}$$ はおよそ $${2.71828}$$ です。

Python のライブラリは $${e}$$ の具体的な値を持っています。
numpy は「np.e」で、sympy は「float(sp.E)」で値を取り出せます。
## e の値の表示
display(Math(f'\\text{{numpy}} の e の値は {np.e}'))
display(Math(f'\\text{{sympy}} の e の値は {float(sp.E)}'))【実行結果】

銀行Aの超複利効果の上限は $${2.71828}$$ 倍。
1年で3倍になる銀行Bの $${200\%}$$ 金利預金には勝てませんでした…

オイラーの等式
書籍は「博士の愛した数式」で取り上げられた数式、としてオイラーの等式を紹介しています。
オイラーの等式は次のようになります。
$$
e^{\pi i} + 1 = 0
$$
ネイピア数 $${e}$$、円周率 $${\pi}$$、虚数 $${i}$$ が出会うとても深遠な数式です。
sympy でオイラーの等式を体感しましょう。
左辺の計算結果が0になることを確かめます。
この部分に注目です。
sp.E**(sp.pi * sp.I) + 1
# p.93 オイラーの等式 e^{πi} + 1 = 0 ※sympy利用
display(Math(f'{sp.latex(sp.E)} = {sp.latex(float(sp.E))}'))
display(Math(f'{sp.latex(sp.pi)} = {sp.latex(float(sp.pi))}'))
display(Math(f'e^{{\\pi i}} + 1 = {sp.latex(sp.E**(sp.pi * sp.I) + 1)}'))【実行結果】
$${e^{\pi i} + 1}$$ は $${0}$$ になりました!


おまけ
ネイピア数といえば、指数関数 $${e^x}$$ の微分・積分が好きです。
$$
\begin{align*}
(e^x)' &= e^x \\
\int e^x dx &= e^x + C \\
\end{align*}
$$
変わらない強さ、みたいなことを想起する数式です🍀
◆
今回の記事は自分のことを書いているような気がして、なんだか不思議な感覚です。
おわり
シリーズの記事
次の記事
前の記事
目次
ブログの紹介
note で7つのシリーズ記事を書いています。
ぜひ覗いていってくださいね!
1.のんびり統計
統計検定2級の問題集を手がかりにして、確率・統計をざっくり掘り下げるブログです。
雑談感覚で大丈夫です。ぜひ覗いていってくださいね。
統計検定2級公式問題集CBT対応版に対応しています。
Python、EXCELのサンプルコードの配布もあります。
2.実験!たのしいベイズモデリング1&2をPyMC Ver.5で
書籍「たのしいベイズモデリング」・「たのしいベイズモデリング2」の心理学研究に用いられたベイズモデルを PyMC Ver.5で描いて分析します。
この書籍をはじめ、多くのベイズモデルは R言語+Stanで書かれています。
PyMCの可能性を探り出し、手軽にベイズモデリングを実践できるように努めます。
身近なテーマ、イメージしやすいテーマですので、ぜひぜひPyMCで動かして、一緒に楽しみましょう!
3.実験!岩波データサイエンス1のベイズモデリングをPyMC Ver.5で
書籍「実験!岩波データサイエンスvol.1」の4人のベイジアンによるベイズモデルを PyMC Ver.5で描いて分析します。
この書籍はベイズプログラミングのイロハをざっくりと学ぶことができる良書です。
楽しくPyMCモデルを動かして、ベイズと仲良しになれた気がします。
みなさんもぜひぜひPyMCで動かして、一緒に遊んで学びましょう!
4.楽しい写経 ベイズ・Python等
ベイズ、Python、その他の「書籍の写経活動」の成果をブログにします。
主にPythonへの翻訳に取り組んでいます。
写経に取り組むお仲間さんのサンプルコードになれば幸いです🍀
5.RとStanではじめる心理学のための時系列分析入門 を PythonとPyMC Ver.5 で
書籍「RとStanではじめる心理学のための時系列分析入門」の時系列分析をPythonとPyMC Ver.5 で実践します。
この書籍には時系列分析のテーマが盛りだくさん!
時系列分析の懐の深さを実感いたしました。
大好きなPythonで楽しく時系列分析を学びます。
6.データサイエンスっぽいことを綴る
統計、データ分析、AI、機械学習、Pythonのコラムを不定期に綴っています。
統計・データサイエンス書籍にまつわる記事が多いです。
「統計」「Python」「数学とPython」「R」のシリーズが生まれています。
7.Python機械学習プログラミング実践記
書籍「Python機械学習プログラミング PyTorch & scikit-learn編」を学んだときのさまざまな思いを記事にしました。
この書籍は、scikit-learnとPyTorchの教科書です。
よかったらぜひ、お試しくださいませ。
最後までお読みいただきまして、ありがとうございました。
いいなと思ったら応援しよう!
応援ありがとうございます。これからもがんばって記事を作成します!