ネイピア数の不思議
ネイピア数の不思議な性質を調べる前に計算テクニックとして必須となるテイラー展開を確認しておく
テイラー展開
テイラー展開とは「近似式」を作るものだと言える。展開する際に利用する式は以下になっている
ある関数に対して上記の式に当てはめて展開式を書いていくと元の関数の近似になる
例えばこんな感じ
とする。シグマは無限回になっているが、とりあえず有限回として一回展開すると
答えは26となる。ここまではややこしいばかりで、結果としてはと同じで、あまり意味がないと感じる
では、これを関数を微分できる限界の4回までを個別に展開してその様子を観察してみる
これらをグラフで観察してみると各々の式は一次近似式、二次近似式、三次近似式になっている。そして微分できる限界の三次近似式に至っては元の式の項を逆に並べただけの同じ式になっている。各式はaの値、この場合x=2周辺で近似精度が高くなっている。こんな手法をテイラーさんは考えたという事らしい。これを利用すれば関数に対し自由なn次の近似式が作れるという事になる
<PocketCasを利用して検算してみた結果>
こんなもの何の役に立つの?と思うかもしれない。でも、これをネイピア数の指数関数に対して利用し、確率計算で利用する二項分布、ポアソン分布と合わせて考えると非常に哲学的で興味深い統計における計算のメカニズムの考えが得られる。それをこれから述べてみようと思う
<メモ>
ベジェ曲線の時にも似たような感じで展開式を書いたが、ある平均を取りながら総和を比率で割るという演算はよく使うものらしい
この時の平均には代表的なものに相加平均、相乗平均、調和平均、等がある。それぞれはふさわしい用途に利用する
この中でも調和平均の用途に関しては非直観的で重要なものになっている。これは主に仕事量や速度を求めるときに利用される
ネイピア数のテイラー展開
ここからネイピア数をテイラー展開してみる。元とするのは底をネイピア数とした指数関数だ
これをテイラー展開すると
関数fを0周辺で展開する。つまり とする。これはテイラー展開の特別な状態。マクローリン展開という
xに1を代入するとネイピア数の式になる。
なんとも不思議な式が飛び出してきた。階乗の逆数を無限に足し合わせていくとネイピア数になる。確かめてみる
上記のグラフの場合、青色の線がネイピア数を底とした指数関数グラフでありオレンジが4次までテイラー展開したグラフである
青色の線とオレンジの線がx=0周辺で非常に似た形になっている事が目で見て確認できるだろう。この展開をより進めれば近似の精度は向上していく
以上の逆数はとても小さな値となるので、普通に考えると、どうやらこれで合っているらしいと判断できる
次にテイラー展開以外の方法を利用してネイピア数の定義から二項定理を利用して展開する。以下のような式になる
二項定理をつかって展開
まずネイピア数の定義を確認
ここから二項定理を利用して展開していく
nを限りなく大きくして極限を取ると
従ってテイラー展開した時と同じように
となり
従って
の結論が得られる。従って
となる。ちなみに二項定理、極限に関する計算資料を以下に記する
順列、組み合わせ、階乗、極限、二項定理の資料
順列、組み合わせ
階乗
極限
既知の極限
極限計算の例
二項定理
ここまで豆知識。この計算結果を何か役に立つ実用に結び付ける必要がある
ネイピア数は統計や確率論の数式内で見かける機会が多く、それは自然現象の中で数理の力が働いている為であると考えられる
実際にその仕組みを覗いてみる
二項分布
例えば、サイコロを60回振って「1」が5回出る確率を求めるとする
この確率は二項分布の式を利用すると求められる
これらに問題を当てはめると
なので式は
これをPocketCasで計算させると以下になる
もし、この計算を計算機を利用せずに手作業で行った場合、それなりに大変そうな事は分かっていただけるだろうか?
これはX=5の限定された状況のみを計算している。これが例えば「サイコロを60回振って「1」が5回以上出る確率を求めるとする」ならば
5回以上、60回以下の確率をそれぞれ求め加算する必要がある。そこで0回から60回までの確率の分布を求めてグラフにしてみる
これも同じ様にPocketCasを利用する。このアプリはとても優秀でエクセルよりも計算に特化した分、このような事をさせるには、とても向いている
Xを0から60まで1ずつ変化させてグラフを描く。こうしてグラフを見ると「確率の分布」具合が一目でわかる
今回は二項定理の仕組みを利用して確率分布を求めたので、このようなグラフを一般に二項分布と呼ぶ
普通に考えるとサイコロの特定の番号、例えば1が出るのは1/6の確率で60回振れば平均10回程度、同じ目が出るのは経験的にわかるだろう
グラフもx=10の場所で山が一番高くなっている事が見て取れる。この計算作業を人間が手作業で行うのはとても大変だ
サイコロを60回振って「1」が5回以上出る確率を求める
サイコロを60回振って「1」が10回以上出る確率を求める
サイコロを60回振って「1」が16回以上出る確率を求める
これらの計算をPocketCasで行うならば下記となる
この計算結果を鵜呑みする訳にはいかないので検証プログラムを作成しシミュレーションで計算結果が正しいか確認する
このプログラムを実行すると
0.97991
0.55217
0.03401
の結果が得られた(当然だが毎回結果が異なる。しかし値はおおよそこのあたりをフラフラする)
この確率計算が正しいことが確認できた
ポアソン分布
ここで発想の転換を行いたい。つまり大変な計算を近似でも構わないので、なんとか楽に済ませる方法がないか探すことになる
その方法はある。ポアソン分布という計算手法を利用すれば良い。ただこの仕組みは若干巧妙だ。先程、利用した二項分布の式の一部に対し
ネイピア数を利用した式にすり替える事で近似値を高速かつ簡潔に求めることができる。利用される発想は極めて哲学的だ
例えば1/6の確率で当たるクジを6回引く場合、単純計算でで大方、当たるだろうと考える。しかし、これをベルヌーイ試行的に考え正確に計算すると
つまり、おおよそ33%の確率で全部外れる。おおよそ66%で勝てる
補足説明すると、これは、くじを収めている箱の中で6枚のくじがあり、その中に当選が一枚あって引く毎に中身が一枚減っていく状況を再現しているわけではない。どちらかというとサイコロの特定の出目、例えば「3」等を当選とあらかじめ決めておいて試行回数だけ振る状況を再現している。一回くじを引く毎に中身は元に戻され、1/6という確率は常に保たれている。スマートフォンのゲームなどで確率表記されているものは、この状況を指している時があるので注意すると良い。6回くじを引いて必ず当たるという仕組みではない。
言い方を変える
サイコロを振って「1」が出ると勝ち。これを1/6秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
これは同じ式になる
次に思考を飛躍させ「無限に近い小さな時間の中で、無限に近い小さな確率で起きる現象を判定」する事を考える。段階を追って状況を考えてみると
60目のサイコロを振って「1」が出ると勝ち。これを1/60秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
600目のサイコロを振って「1」が出ると勝ち。これを1/600秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
6000目のサイコロを振って「1」が出ると勝ち。これを1/6000秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
...
無限目のサイコロを振って「1」が出ると勝ち。これを「1/無限」秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
この様に考えると式は以下になって行く。一番下の式がネイピア数の定義の式になっている事が確認出来る
<スプレッドシートでの計算>
確率計算とネイピア数の関係 - Google スプレッドシート
計算が正しいかどうか実際にunityを利用してシミュレーション実験してみる
このプログラムを実行すると実際に上記の事象を行いシミュレーション結果を表示する
結果は
0.36497
0.368
0.36906
小数点三桁目から若干ゆらぎはあるが、0.36の付近で安定している。この確率シミュレーションの結果がネイピア数の逆数になる事は間違いないようだ
ここで二項分布で確率を求める式を思い出してみると
この右端の式に似ている事に気が付く。この発想に力を得て二項分布の式を平均値の値 (ラムダと読む)を固定したままnの数を無限に増やしていくことを考える
平均値の計算式は 。すると確率は以下になる
二項分布の式は以下のように変形できる
X=k=出現数
=平均
p=確率
n=試行回数
このnを無限に増大させ極限をとる事になる
変数kは定数として固定であるので
ポアソン分布の利用上の機能を考えるとでは有限なので
nを限りなく大きくして極限を取ると
まとめると
の結論が得られる。早速、この新しく得られた式を利用してみる
ポアソン分布の計算に確率や試行回数の入力値は必要ない。かわりに必要なものは平均値だ。なので少し問題の解釈を変更する必要がある
600目のサイコロを振って「1」が出ると勝ち。これを1/600秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
↓ ↓ ↓ ↓
ある無限目のサイコロを1秒間に高速に無限回振ると平均1回当たりが出た。このサイコロをもう1秒間、同じ条件で振って負ける確率は?
このように変更する。これを計算すると、このスプレッドシートのセルB8の計算結果になる
ここで二項分布とポアソン分布の関係を確認すると
先に求めていた二項分布の式、6面サイコロを60回振って「1」が出る各回数に応じた確率分布は
60面サイコロを600回振って「1」が出る各回数に応じた確率分布
二項分布の式の平均値を固定し試行回数を無限にして確率を極小にして得られたポアソン分布の公式に対し、平均値10をセットしたポアソン分布
これら得られたグラフをPocketCasで確認すると、ほぼ3つのグラフが重なっている事が確認できる
ポアソン分布に関しては二項定理を利用していないのでkに対して実数が利用できる
平均値を軸にしてグラフの位置を変えても同様の効果が得られるか確かめる
のような関係の式を作成して、これをグラフで見ると
同様にグラフが重なることが確認できた
ポアソン分布の利用
ポアソン分布を利用すると以下の様な問題の確率を求める事が可能となる
- 国道100km辺りのガソリンスタンド数が17件であった時、あと5km走ってガソリンスタンドに出会う確率は?
- ある交差点で1ヵ月に発生する交通事故の死亡者数は平均1.5人だった。今後、1ヵ月に死亡事故が発生数する確率は?
ポアソン分布は構造的にネイピア数の級数展開(極限、テイラー展開の近似)が利用されているので精度の良い近似を得るために「p(確率)の値は出来るだけ小さな方が良い」という利用制限がある。従ってどの程度の値であれば良いか感覚を掴んで置く必要がある。以下のURLに今回の問題を解く際にまとめたスプレッドシートの計算がある。その計算結果が正しいものであるかどうかを判断する為、乱数を利用したプログラムをunityで作成したので確認してみる
Case1.
国道100km辺りのガソリンスタンド数が17件であった時、あと5km走ってガソリンスタンドに出会う確率は?
簡単に内容を説明する。この問題はポアソン分布の式を利用すると以下になる。スプレッドシートのセルC1がこの計算を行っている
この式の値が正しいものであるかunityを利用して確かめる
このプログラムの出力は以下になる
unityのコンソールは出力したテキストをまとめてカウントする機能がある。通常unity画面下にレイアウトされている、このコンソール画面を利用すると乱数により生成された各値の分布状況が確認できる。すると理論値より約2~3%のズレが出てる事が確認できる(何度やってもよく似た結果になる)。ちなみにスプレッドシートのセルE1は二項分布の値。この値にほぼ正確に近似となることが確認できる。つまり確率はこのあたりで収束すると判断して良い
このケースではp(確率)が約17%。この程度でポアソン分布は二項分布と比べこれぐらいズレる。同様にスプレッドシートのCase2.などの各種ケースを見ていくと「ポアソン分布が二項分布の近似」であるという事が確認できる。この近似はpの値が小さくなるほど精度が向上していくと考えるとよい
以下に各ケース検証用のunity乱数生成プログラムを併記する。確認してみると乱数が収束していく様子を実感できる
Case2.
Case3.
Case4.
Case5.
ゲームにおける無作為性(ランダム)
以下にゲームとしてマジックザギャザリングにおいて無作為性(ランダム)がどう働くか資料として非常に興味深い記事があったのでリンクを紹介する
思うに競技性を尊び技術を競うゲーマーとスマートフォンなどを利用してガチャさえもライトに楽しむ層との間に何らかの「境」がある事は確かだと感じる