Unityと数学と音楽の学習帳

Unityと数学、音楽の同時学習を目的としたブログ(個人的メモ帳:勉強中なので正確性はない)

フレームレートの対数計算メモ

仮説としてフレームレートに対しゲーム体験評価の計算式を作ってみる

プレイのしやすさと映像の美的感覚を個人的な指標で段階的にレベル分けして、そこに近似した対数関係のグラフを見つけます。レベル1が秒間24フレーム。次のレベル2が30フレーム。この要領でレベル3は42。4は60。と続けてグラフ上に打ちます。これに対して近似するトレンドラインを計算して導き出すと答えは

16\times 1.4^{x}

という指数関数になりました。また、このグラフの延長線のレベル0は16フレームで、これが人間が滑らかなアニメと感じる最低限のフレームレートであると予想されます。また地震における震度8がめったにないように7以降の数字は指数爆発を起こします。従ってレベル7、170フレーム以降のゲーム体験の向上は人間の感覚器官と支払うコストのバランス上、意義が少ないと予想できます。

f:id:cqbosinko:20190924173540j:plain

音楽理論1

コード理論:資料

www.youtube.com
www.nihongo.com
e-skett.co.jp

スケールについて

資料を用いて音楽理論の基礎を学習する。目標は自作のゲームで利用する楽曲の作曲。その為にはコード理論の習熟が必要と考えた
そこで基礎から順番に音楽を学んでいこうと思う
資料によるとピアノなどの楽器は12平均律で調律されているらしい。このことを実際に確認するためにiOSアプリのオシロスコープ「e-scope3in1」と
音楽アプリ「KORG Gadget2 for iOS」の「Marseille」、ピアノプリセット「001 MARSEILLE PIANO」を利用して音階の周波数を調べる事にした

f:id:cqbosinko:20190907233252p:plain
KORG Gadget2

KORG Gadget2のスケールをオクターブ4の12鍵盤に合わせ、白鍵盤ドレミファソラシド、各キーを一つずつ鳴らして行く
これらをe-scope3in1のFFTの分解能を利用して周波数を拾う

f:id:cqbosinko:20190907221502p:plain
e-scope3in1

結果は以下のようになった

docs.google.com

12平均律は指数関数で書き表せる。右に偏って曲がる一次関数に近い形をしている。もちろんグリッドを対数表示させると直線になる

f:id:cqbosinko:20190907234019p:plain
pocketCasで12平均律をグラフ表示

おまけ

マグロの解体のごとく分解されるゼビウス。面白い...
www.youtube.com

ネイピア数の不思議

ネイピア数の不思議な性質を調べる前に計算テクニックとして必須となるテイラー展開を確認しておく

テイラー展開

テイラー展開とは「近似式」を作るものだと言える。展開する際に利用する式は以下になっている

\displaystyle \sum _{ n=0 }^{ \infty  }{ \frac { f^{ n }\left( a \right)  }{ n! } { \left( x-a \right)  }^{ n } }

ある関数に対して上記の式に当てはめて展開式を書いていくと元の関数の近似になる
例えばこんな感じ

f\left( x \right) ={ x }^{ 3 }+6{ x }^{ 2 }-5x+4\\ a=2

とする。シグマは無限回になっているが、とりあえず有限回として一回展開すると

\displaystyle\sum _{ n=0 }^{ 0 }{ \frac { f^{ n }\left( a \right)  }{ n! } { \left( x-a \right)  }^{ n } } \quad \Rightarrow \quad \frac { f\left( a \right)  }{ 0! } { \left( x-a \right)  }^{ 0 }\quad \Rightarrow \quad \frac { { a }^{ 3 }+6{ a }^{ 2 }-5a+4 }{ 0! } { \left( x-a \right)  }^{ 0 }\quad \Rightarrow \quad \frac { 2^{ 3 }+6\cdot 2^{ 2 }-5\cdot 2+4 }{ 0! } { \left( x-2 \right)  }^{ 0 }\quad =\quad \frac { 8+24-10+4 }{ 1 } \cdot 1=26

答えは26となる。ここまではややこしいばかりで、結果としてはf\left( 2 \right) =26と同じで、あまり意味がないと感じる
では、これを関数を微分できる限界の4回までを個別に展開してその様子を観察してみる

\displaystyle\sum _{ n=0 }^{ 1 }{ \frac { f^{ n }\left( a \right)  }{ n! } { \left( x-a \right)  }^{ n } } =\quad \frac { f\left( a \right)  }{ 0! } { \left( x-a \right)  }^{ 0 }\quad +\quad \frac { f'\left( a \right)  }{ 1! } { \left( x-a \right)  }^{ 1 }\\ =\quad \frac { { a }^{ 3 }+6{ a }^{ 2 }-5a+4 }{ 0! } { \left( x-a \right)  }^{ 0 }\quad +\quad \frac { 3{ a }^{ 2 }+12{ a }-5 }{ 1! } { \left( x-a \right)  }^{ 1 }\\ =\quad \frac { 8+24-10+4 }{ 0! } \cdot 1\quad +\quad \frac { 12+24-5 }{ 1! } { \left( x-2 \right)  }\\ =\quad 26\quad +\quad 31\left( x-2 \right) \quad =\quad 26+31x-62\quad =\quad -36+31x


\displaystyle\sum _{ n=0 }^{ 2 }{ \frac { f^{ n }\left( a \right)  }{ n! } { \left( x-a \right)  }^{ n } } =\quad \frac { f\left( a \right)  }{ 0! } { \left( x-a \right)  }^{ 0 }\quad +\quad \frac { f'\left( a \right)  }{ 1! } { \left( x-a \right)  }^{ 1 }\quad +\quad \frac { f''\left( a \right)  }{ 2! } { \left( x-a \right)  }^{ 2 }\\ =\quad \frac { { a }^{ 3 }+6{ a }^{ 2 }-5a+4 }{ 0! } \cdot 1\quad +\quad \frac { 3{ a }^{ 2 }+12{ a }-5 }{ 1! } { \left( x-a \right)  }\quad +\quad \frac { 6{ a }+12 }{ 2! } { \left( { x }^{ 2 }-2ax+{ a }^{ 2 } \right)  }\\ =\quad \frac { 8+24-10+4 }{ 1 } \cdot 1\quad +\quad \frac { 12+24-5 }{ 1 } { \left( x-2 \right)  }\quad +\quad \frac { 12+12 }{ 1\times 2 } \left( { x }^{ 2 }-4x+4 \right) \\ =\quad -36+31x+12{ x }^{ 2 }-48x+48\quad =\quad 12-17x+12{ x }^{ 2 }


\displaystyle\sum _{ n=0 }^{ 3 }{ \frac { f^{ n }\left( a \right)  }{ n! } { \left( x-a \right)  }^{ n } } =\quad \frac { f\left( a \right)  }{ 0! } { \left( x-a \right)  }^{ 0 }\quad +\quad \frac { f'\left( a \right)  }{ 1! } { \left( x-a \right)  }^{ 1 }\quad +\quad \frac { f''\left( a \right)  }{ 2! } { \left( x-a \right)  }^{ 2 }\quad +\quad \frac { f'''\left( a \right)  }{ 3! } { \left( x-a \right)  }^{ 3 }\\ =\quad \frac { { a }^{ 3 }+6{ a }^{ 2 }-5a+4 }{ 0! } \cdot 1\quad +\quad \frac { 3{ a }^{ 2 }+12{ a }-5 }{ 1! } { \left( x-a \right)  }\quad +\quad \frac { 6{ a }+12 }{ 2! } { \left( { x }^{ 2 }-2ax+{ a }^{ 2 } \right)  }\quad +\quad \frac { 6 }{ 3! } \left( { x }^{ 3 }-3a{ x }^{ 2 }+3a^{ 2 }x-a^{ 3 } \right) \\ =\quad 12-17x+12{ x }^{ 2 }\quad +\quad \frac { 6 }{ 1\times 2\times 3 } \left( { x }^{ 3 }-6{ x }^{ 2 }+12x-8 \right) \\ =\quad 12-17x+12{ x }^{ 2 }+{ x }^{ 3 }-6{ x }^{ 2 }+12x-8\quad =\quad 4-5x+6{ x }^{ 2 }+{ x }^{ 3 }


これらをグラフで観察してみると各々の式は一次近似式、二次近似式、三次近似式になっている。そして微分できる限界の三次近似式に至っては元の式の項を逆に並べただけの同じ式になっている。各式はaの値、この場合x=2周辺で近似精度が高くなっている。こんな手法をテイラーさんは考えたという事らしい。これを利用すれば関数に対し自由なn次の近似式が作れるという事になる

<PocketCasを利用して検算してみた結果>
f:id:cqbosinko:20190712164655p:plain

こんなもの何の役に立つの?と思うかもしれない。でも、これをネイピア数の指数関数に対して利用し、確率計算で利用する二項分布、ポアソン分布と合わせて考えると非常に哲学的で興味深い統計における計算のメカニズムの考えが得られる。それをこれから述べてみようと思う

<メモ>
ベジェ曲線の時にも似たような感じで展開式を書いたが、ある平均を取りながら総和を比率で割るという演算はよく使うものらしい
この時の平均には代表的なものに相加平均、相乗平均、調和平均、等がある。それぞれはふさわしい用途に利用する
この中でも調和平均の用途に関しては非直観的で重要なものになっている。これは主に仕事量や速度を求めるときに利用される

ネイピア数テイラー展開

ここからネイピア数テイラー展開してみる。元とするのは底をネイピア数とした指数関数だ

f\left( x \right) ={ e }^{ x }

これをテイラー展開すると

\displaystyle f\left( x \right) \simeq \frac { 1 }{ 0! } { e }^{ a }{ \left( x-a \right)  }^{ 0 }+\frac { 1 }{ 1! } \left\{ { e }^{ a } \right\} '{ \left( x-a \right)  }^{ 1 }+\frac { 1 }{ 2! } \left\{ { e }^{ a } \right\} '{ '\left( x-a \right)  }^{ 2 }+\frac { 1 }{ 3! } \left\{ { e }^{ a } \right\} '''{ \left( x-a \right)  }^{ 3 }+\cdots \\ \Rightarrow \displaystyle \simeq \frac { 1 }{ 0! } { e }^{ a }{ \left( x-a \right)  }^{ 0 }+\frac { 1 }{ 1! } { e }^{ a }{ \left( x-a \right)  }^{ 1 }+\frac { 1 }{ 2! } { e }^{ a }{ \left( x-a \right)  }^{ 2 }+\frac { 1 }{ 3! } { e }^{ a }{ \left( x-a \right)  }^{ 3 }+\cdots


関数fを0周辺で展開する。つまり a=0とする。これはテイラー展開の特別な状態。マクローリン展開という


\displaystyle \Rightarrow \simeq \frac { 1 }{ 0! } { e }^{ 0 }{ \left( x-0 \right)  }^{ 0 }+\frac { 1 }{ 1! } { e }^{ 0 }{ \left( x-0 \right)  }^{ 1 }+\frac { 1 }{ 2! } { e }^{ 0 }{ \left( x-0 \right)  }^{ 2 }+\frac { 1 }{ 3! } { e }^{ 0 }{ \left( x-0 \right)  }^{ 3 }+\cdots \\ \displaystyle \Rightarrow \simeq \frac { { x }^{ 0 } }{ 0! } +\frac { { x }^{ 1 } }{ 1! } +\frac { { x }^{ 2 } }{ 2! } +\frac { { x }^{ 3 } }{ 3! } +\cdots

\displaystyle \Rightarrow \quad \boxed { { e }^{ x }=\sum _{ n=0 }^{ \infty  }{ \frac { { x }^{ n } }{ n! }  }  }


xに1を代入するとネイピア数の式になる。

\displaystyle \Rightarrow \quad { e }^{ 1 }=\sum _{ n=0 }^{ \infty  }{ \frac { 1^{ n } }{ n! }  }

\displaystyle \boxed { { e }=\sum _{ n=0 }^{ \infty  }{ \frac { 1 }{ n! }  }  }


なんとも不思議な式が飛び出してきた。階乗の逆数を無限に足し合わせていくとネイピア数になる。確かめてみる

{ e }=\sum _{ n=0 }^{ \infty  }{ \frac { 1 }{ n! }  } =\frac { 1 }{ 0! } +\frac { 1 }{ 1! } +\frac { 1 }{ 2! } +\frac { 1 }{ 3! } +\frac { 1 }{ 4! } +\frac { 1 }{ 5! } +\frac { 1 }{ 6! } +\frac { 1 }{ 7! } +\cdots \\ =1+1+0.5+0.1666...+0.0416....+0.00833+0.00138...+0.0001984...\\ \simeq \quad 2.7181084

f:id:cqbosinko:20190717211419p:plain

上記のグラフの場合、青色の線がネイピア数を底とした指数関数グラフでありオレンジが4次までテイラー展開したグラフである
青色の線とオレンジの線がx=0周辺で非常に似た形になっている事が目で見て確認できるだろう。この展開をより進めれば近似の精度は向上していく
7!以上の逆数はとても小さな値となるので、普通に考えると、どうやらこれで合っているらしいと判断できる
次にテイラー展開以外の方法を利用してネイピア数の定義から二項定理を利用して展開する。以下のような式になる

二項定理をつかって展開

まずネイピア数の定義を確認

\displaystyle { e }^{ x }=\lim _{ n\rightarrow \infty  }{ { \left( 1+\frac { { x } }{ n }  \right)  }^{ n } }

ここから二項定理を利用して展開していく

\displaystyle { e }^{ x }=\lim _{ n\rightarrow \infty  } \left( 1+\frac { x }{ n }  \right) ^{ n }\\ \displaystyle =\lim _{ n\rightarrow \infty  } \left( 1+n\cdot \frac { x }{ n } +_{ n }C_{ 2 }\cdot \frac { { x }^{ 2 } }{ n^{ 2 } } +_{ n }C_{ 3 }\cdot \frac { { x }^{ 3 } }{ n^{ 3 } } +…+\frac { { x }^{ n } }{ n^{ n } }  \right) \\ \displaystyle =\lim _{ n\rightarrow \infty  } \left( 1+n\cdot \frac { x }{ n } +\frac { n\left( n-1 \right)  }{ 2! } \cdot \frac { { x }^{ 2 } }{ n^{ 2 } } +\frac { n\left( n-1 \right) \left( n-2 \right)  }{ 3! } \cdot \frac { { x }^{ 3 } }{ n^{ 3 } } +…+\frac { { x }^{ n } }{ n^{ n } }  \right) \\ \displaystyle =\lim _{ n\rightarrow \infty  } \left( 1+x+\frac { \left( n-1 \right) { x }^{ 2 } }{ 2!\cdot n } +\frac { \left( n^{ 2 }-3n+2 \right) { x }^{ 3 } }{ 3!\cdot n^{ 2 } } +…+\frac { { x }^{ n } }{ n^{ n } }  \right) \\ \displaystyle =\lim _{ n\rightarrow \infty  } \left( 1+1+\left( \frac { { x }^{ 2 } }{ 2! } -\frac { { x }^{ 2 } }{ 2!\cdot n }  \right) +\left( \frac { { x }^{ 3 } }{ 3! } -\frac { 3{ x }^{ 3 } }{ 3!\cdot n } +\frac { 2{ x }^{ 3 } }{ 3!\cdot n^{ 2 } }  \right) +…+\frac { { x }^{ n } }{ n^{ n } }  \right)

nを限りなく大きくして極限を取ると

 =1+1+\left( \frac { { x }^{ 2 } }{ 2! } -0 \right) +\left( \frac { { x }^{ 3 } }{ 3! } -0+0 \right) +…+0\\ =1+1+\frac { { x }^{ 2 } }{ 2! } +\frac { { x }^{ 3 } }{ 3! } +…

従ってテイラー展開した時と同じように

\displaystyle \boxed { { e }^{x}=\sum _{ n=0 }^{ \infty  }{ \frac { x }{ n! }  }  }   となり

従って \displaystyle { e }^{ x }=\sum _{ n=0 }^{ \infty  }{ \frac { { x }^{ n } }{ n! }  } \quad \Leftrightarrow \quad { e }^{ x }=\lim _{ n\rightarrow \infty  }{ { \left( 1+\frac { { x } }{ n }  \right)  }^{ n } }

の結論が得られる。従って

\displaystyle { e }^{ -x }\quad =\sum _{ n=0 }^{ \infty  }{ \frac { { -x }^{ n } }{ n! }  } =\quad \lim _{ n\rightarrow \infty  }{ { \left( 1-\frac { { x } }{ n }  \right)  }^{ n } } =\frac { 1 }{ { e }^{ x } }

となる。ちなみに二項定理、極限に関する計算資料を以下に記する

順列、組み合わせ、階乗、極限、二項定理の資料

順列、組み合わせ

\displaystyle { _{ n }{ C }_{ k } }=\frac { { _{ n }{ P }_{ k } } }{ k! } =\frac { n! }{ k!\left( n-k \right) ! } \\ \displaystyle { _{ n }{ P }_{ k } }=\frac { n! }{ \left( n-k \right) ! } \\ \displaystyle \frac { 1 }{ { _{ n+k }{ C }_{ k } } } =\frac { n!k! }{ \left( n+k \right) ! }

階乗

\displaystyle n!=n\left( n-1 \right) \left( n-2 \right) \cdots 2\cdot 1\\ \displaystyle \left( n-1 \right) !=\frac { n! }{ n } \\ \left( n-2 \right) !=\frac { n! }{ n\left( n-1 \right)  }

極限

既知の極限

 \displaystyle \lim _{ n\rightarrow \infty  }{ \frac { 1 }{ n }  } =0\\ \displaystyle { e }^{ -x }=\frac { 1 }{ { e }^{ x } } \simeq \lim _{ n\rightarrow \infty  }{ { \left( 1-\frac { x }{ n }  \right)  }^{ n } } \quad \Rightarrow \quad x=1,\quad { e }^{ -1 }=\frac { 1 }{ { e }^{ 1 } } \simeq \lim _{ n\rightarrow \infty  }{ { \left( 1-\frac { 1 }{ n }  \right)  }^{ n } } \simeq 0.3678...\\ \displaystyle { e }^{ x }\simeq \lim _{ n\rightarrow \infty  }{ { \left( 1+\frac { x }{ n }  \right)  }^{ n } } \quad \Rightarrow \quad x=1,\quad { e }^{ 1 }\simeq \lim _{ n\rightarrow \infty  }{ { \left( 1+\frac { 1 }{ n }  \right)  }^{ n } } \simeq 2.7182...

極限計算の例

\displaystyle \lim _{ n\rightarrow \infty  }{ \frac { 2n+1 }{ 3n+1 }  } =\lim _{ n\rightarrow \infty  }{ \frac { 2n+1 }{ 3n+1 }  } \cdot \underbrace { \frac { \frac { 1 }{ n }  }{ \frac { 1 }{ n }  }  }_{ 1の変形 } =\lim _{ n\rightarrow \infty  }{ \frac { \frac { 2n+1 }{ n }  }{ \frac { 3n+1 }{ n }  }  } =\lim _{ n\rightarrow \infty  }{ \frac { 2+\frac { 1 }{ n }  }{ 3+\frac { 1 }{ n }  }  } =\underbrace { \frac { 2+0 }{ 3+0 }  }_{ \lim _{ n\rightarrow \infty  }{ \frac { 1 }{ n }  } =0より } =\frac { 2 }{ 3 } \\ \\ \displaystyle \lim _{ n\rightarrow \infty  }{ \frac { \left( n-1 \right) \left( 3n+1 \right)  }{ { n }^{ 2 }+2n+3 }  } =\lim _{ n\rightarrow \infty  }{ \frac { \left( n-1 \right) \left( 3n+1 \right)  }{ { n }^{ 2 }+2n+3 }  } \cdot \frac { \frac { 1 }{ { n }^{ 2 } }  }{ \frac { 1 }{ { n }^{ 2 } }  } =\lim _{ n\rightarrow \infty  }{ \frac { \left( 1-\frac { 1 }{ n }  \right) \left( 3+\frac { 1 }{ n }  \right)  }{ 1+\frac { 2 }{ n } +\frac { 3 }{ { n }^{ 2 } }  }  } =\frac { \left( 1-0 \right) \left( 3+0 \right)  }{ 1+0+0 } =3

指数関数及びネイピア数微積分の関係

右に向かって積分。左に向かうと微分となる

\begin{matrix} \cdots  & \mapsto  & f''\left( x \right)  & \mapsto  & f'\left( x \right)  & \mapsto  & f\left( x \right)  & \mapsto  & \int { f\left( x \right)  }  & \mapsto  & \iint { f\left( x \right)  }  & \mapsto  & \cdots  \\ \cdots  & \mapsto  & { \left( \ln { a }  \right)  }^{ 2 }\cdot { a }^{ x } & \mapsto  & \ln { a } \cdot { a }^{ x } & \mapsto  & { a }^{ x } & \mapsto  & \frac { { a }^{ x } }{ \ln { a }  } ={ \left( \ln { a }  \right)  }^{ -1 }\cdot { a }^{ x } & \mapsto  & { \left( \ln { a }  \right)  }^{ -2 }\cdot { a }^{ x } & \mapsto  & \cdots  \\ \cdots  & \mapsto  & { e }^{ x } & \mapsto  & { e }^{ x } & \mapsto  & { e }^{ x } & \mapsto  & { e }^{ x } & \mapsto  & { e }^{ x } & \mapsto  & \cdots  \\ \cdots  & \mapsto  & \frac { { \left( \ln { a }  \right)  }^{ 2 } }{ { a }^{ x } } ={ \left( \ln { a }  \right)  }^{ 2 }\cdot { a }^{ -x } & \mapsto  & \frac { -\ln { a }  }{ { a }^{ x } } =-\ln { a } \cdot { a }^{ -x } & \mapsto  & \frac { 1 }{ { a }^{ x } } ={ a }^{ -x } & \mapsto  & \frac { 1 }{ -\ln { a } \cdot { a }^{ x } } =-{ \ln { a }  }^{ -1 }\cdot { a }^{ -x } & \mapsto  & \frac { 1 }{ { \left( -\ln { a }  \right)  }^{ 2 }\cdot { a }^{ x } } ={ \left( \ln { a }  \right)  }^{ -2 }\cdot { a }^{ -x } & \mapsto  & \cdots  \\ \cdots  & \mapsto  & \frac { 1 }{ { e }^{ x } } ={ e }^{ -x } & \mapsto  & -\frac { 1 }{ { e }^{ x } } ={ -e }^{ -x } & \mapsto  & \frac { 1 }{ { e }^{ x } } ={ e }^{ -x } & \mapsto  & -\frac { 1 }{ { e }^{ x } } ={ -e }^{ -x } & \mapsto  & \frac { 1 }{ { e }^{ x } } ={ e }^{ -x } & \mapsto  & \cdots  \end{matrix}


{ \left( \ln { a } \cdot { a }^{ x } \right) ' }を計算する際の補足説明
\ln { a } は{ a }^{ x } にかかった係数。次数3係数4の4{ x }^{ 3 }に対して微分をすると12{ x }^{ 2 }になる
この係数にはxの変数は無いから単純に乗算すればよい

 \therefore { \left( \ln { a } \cdot { a }^{ x } \right) ' }={ \left( \ln { a }  \right)  }^{ 2 }\cdot { a }^{ x }\\ { \left( \ln { x } \cdot { a }^{ x } \right) ' }=\frac { d }{ dx } \ln { x } \cdot { a }^{ x }=\frac { \ln { a } \cdot { a }^{ x } }{ x }

二項定理

 \displaystyle { \left( a+b \right)  }^{ n }=\sum _{ k=0 }^{ n }{ { _{ n }{ C }_{ k } }{ a }^{ k }{ b }^{ n-k } } =\sum _{ k=0 }^{ n }{ { _{ n }{ C }_{ k } }{ a }^{ n-k }{ b }^{ n } }


ここまで豆知識。この計算結果を何か役に立つ実用に結び付ける必要がある
ネイピア数は統計や確率論の数式内で見かける機会が多く、それは自然現象の中で数理の力が働いている為であると考えられる
実際にその仕組みを覗いてみる

二項分布

例えば、サイコロを60回振って「1」が5回出る確率を求めるとする
この確率は二項分布の式を利用すると求められる


 \displaystyle P\left[ X=k \right] ={ _{ n }{ C }_{ k } }{ p }^{ k }{ \left( 1-p \right)  }^{ n-k }

\begin{cases} P\left[ X=k \right]  & 確率関数 \\ X=k & 出現数 \\ p & 確率 \\ n & 試行回数 \end{cases}

これらに問題を当てはめると

\begin{cases} X=k=5 \\ p=\frac { 1 }{ 6 }  \\ n=60 \end{cases}  なので式は

 \displaystyle P\left[ 5 \right] ={ _{ 60 }{ C }_{ 5 } }{ \left( \frac { 1 }{ 6 }  \right)  }^{ 5 }{ \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 60-5 }

これをPocketCasで計算させると以下になる

f:id:cqbosinko:20190724214858p:plain

もし、この計算を計算機を利用せずに手作業で行った場合、それなりに大変そうな事は分かっていただけるだろうか?
これはX=5の限定された状況のみを計算している。これが例えば「サイコロを60回振って「1」が5回以上出る確率を求めるとする」ならば
5回以上、60回以下の確率をそれぞれ求め加算する必要がある。そこで0回から60回までの確率の分布を求めてグラフにしてみる
これも同じ様にPocketCasを利用する。このアプリはとても優秀でエクセルよりも計算に特化した分、このような事をさせるには、とても向いている

f:id:cqbosinko:20190724225020p:plain

Xを0から60まで1ずつ変化させてグラフを描く。こうしてグラフを見ると「確率の分布」具合が一目でわかる
今回は二項定理の仕組みを利用して確率分布を求めたので、このようなグラフを一般に二項分布と呼ぶ
普通に考えるとサイコロの特定の番号、例えば1が出るのは1/6の確率で60回振れば平均10回程度、同じ目が出るのは経験的にわかるだろう
グラフもx=10の場所で山が一番高くなっている事が見て取れる。この計算作業を人間が手作業で行うのはとても大変だ

サイコロを60回振って「1」が5回以上出る確率を求める
サイコロを60回振って「1」が10回以上出る確率を求める
サイコロを60回振って「1」が16回以上出る確率を求める
これらの計算をPocketCasで行うならば下記となる

f:id:cqbosinko:20190730165439p:plain

この計算結果を鵜呑みする訳にはいかないので検証プログラムを作成しシミュレーションで計算結果が正しいか確認する


二項分布のテスト

このプログラムを実行すると
0.97991
0.55217
0.03401
の結果が得られた(当然だが毎回結果が異なる。しかし値はおおよそこのあたりをフラフラする)
この確率計算が正しいことが確認できた

ポアソン分布

ここで発想の転換を行いたい。つまり大変な計算を近似でも構わないので、なんとか楽に済ませる方法がないか探すことになる
その方法はある。ポアソン分布という計算手法を利用すれば良い。ただこの仕組みは若干巧妙だ。先程、利用した二項分布の式の一部に対し
ネイピア数を利用した式にすり替える事で近似値を高速かつ簡潔に求めることができる。利用される発想は極めて哲学的だ



例えば1/6の確率で当たるクジを6回引く場合、単純計算で6\times \frac { 1 }{ 6 } =1.0で大方、当たるだろうと考える。しかし、これをベルヌーイ試行的に考え正確に計算すると

{ \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 6 }=\frac { 15625 }{ 46656 } =0.3348...

つまり、おおよそ33%の確率で全部外れる。おおよそ66%で勝てる

補足説明すると、これは、くじを収めている箱の中で6枚のくじがあり、その中に当選が一枚あって引く毎に中身が一枚減っていく状況を再現しているわけではない。どちらかというとサイコロの特定の出目、例えば「3」等を当選とあらかじめ決めておいて試行回数だけ振る状況を再現している。一回くじを引く毎に中身は元に戻され、1/6という確率は常に保たれている。スマートフォンのゲームなどで確率表記されているものは、この状況を指している時があるので注意すると良い。6回くじを引いて必ず当たるという仕組みではない。

言い方を変える

サイコロを振って「1」が出ると勝ち。これを1/6秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
これは同じ式になる

{ \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 1\div \frac { 1 }{ 6 }  }={ \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 6 }=\frac { 15625 }{ 46656 } =0.3348...

次に思考を飛躍させ「無限に近い小さな時間の中で、無限に近い小さな確率で起きる現象を判定」する事を考える。段階を追って状況を考えてみると

60目のサイコロを振って「1」が出ると勝ち。これを1/60秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
600目のサイコロを振って「1」が出ると勝ち。これを1/600秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
6000目のサイコロを振って「1」が出ると勝ち。これを1/6000秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
...
無限目のサイコロを振って「1」が出ると勝ち。これを「1/無限」秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?


この様に考えると式は以下になって行く。一番下の式がネイピア数の定義の式になっている事が確認出来る

{ \left( 1-\frac { 1 }{ 60 }  \right)  }^{ 60 }=0.36479...\\ { \left( 1-\frac { 1 }{ 600 }  \right)  }^{ 600 }=0.36757...\\ { \left( 1-\frac { 1 }{ 6000 }  \right)  }^{ 6000 }=0.36784...\\ \cdots \\ \displaystyle \lim _{ n\rightarrow \infty  }{ { \left( 1-\frac { 1 }{ n }  \right)  }^{ n } } =\frac { 1 }{ e } =0.36789...

スプレッドシートでの計算>
確率計算とネイピア数の関係 - Google スプレッドシート

計算が正しいかどうか実際にunityを利用してシミュレーション実験してみる


サイコロのテスト

このプログラムを実行すると実際に上記の事象を行いシミュレーション結果を表示する
結果は

0.36497
0.368
0.36906

小数点三桁目から若干ゆらぎはあるが、0.36の付近で安定している。この確率シミュレーションの結果がネイピア数の逆数になる事は間違いないようだ
ここで二項分布で確率を求める式を思い出してみると

\displaystyle P\left[ 5 \right] ={ _{ 60 }{ C }_{ 5 } }{ \left( \frac { 1 }{ 6 }  \right)  }^{ 5 }\underbrace { \boxed { { \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 60-5 } }  }_{ ここに似ている }

この右端の式に似ている事に気が付く。この発想に力を得て二項分布の式を平均値の値 \lambda (ラムダと読む)を固定したままnの数を無限に増やしていくことを考える
平均値の計算式は\lambda=np 。すると確率は以下になる

\lambda =np\quad \Leftrightarrow \quad p=\frac { \lambda  }{ n }

二項分布の式は以下のように変形できる

\displaystyle p\left[ X=k \right] ={ _{ n }{ C }_{ k } }{ p }^{ k }{ \left( 1-p \right)  }^{ n-k }=\frac { n! }{ k!\left( n-k \right) ! } { \left( \frac { \lambda  }{ n }  \right)  }^{ k }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n-k }=\frac { n!{ \lambda  }^{ k } }{ k!\left( n-k \right) !{ n }^{ k } } { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n-k }=\left( \frac { \frac { n! }{ \left( n-k \right) ! }  }{ { n }^{ k } }  \right) \left( \frac { { \lambda  }^{ k } }{ k! }  \right) { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k }=\left( \frac { { _{ n }{ P }_{ k } } }{ { n }^{ k } }  \right) \left( \frac { { \lambda  }^{ k } }{ k! }  \right) { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k }

X=k=出現数
\lambda =平均
p=確率
n=試行回数

このnを無限に増大させ極限をとる事になる

\displaystyle \lim _{ n\rightarrow \infty  }{ \left( \frac { { _{ n }{ P }_{ k } } }{ { n }^{ k } }  \right) \left( \frac { { \lambda  }^{ k } }{ k! }  \right) { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k } } =\lim _{ n\rightarrow \infty  }{ \left\{ \frac { n }{ n } \left( \frac { n-1 }{ n }  \right) \left( \frac { n-2 }{ n }  \right) \cdots \left( \frac { n-k+1 }{ n }  \right)  \right\} \left( \frac { { \lambda  }^{ k } }{ k! }  \right) { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k } } =\lim _{ n\rightarrow \infty  }{ \underbrace { \left\{ 1\cdot \left( 1-\frac { 1 }{ n }  \right) \left( 1-\frac { 2 }{ n }  \right) \cdots \left( 1-\frac { k }{ n } +\frac { 1 }{ n }  \right)  \right\}  }_{ { a }_{ n } } \left( \frac { { \lambda  }^{ k } }{ k! }  \right) \underbrace { { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n } }_{ b_{ n } } \underbrace { { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k } }_{ c_{ n } }  }

変数kは定数として固定であるので

\displaystyle \lim _{ n\rightarrow \infty  }{ { a }_{ n } } =\lim _{ n\rightarrow \infty  }{ \left\{ 1\cdot \left( 1-\frac { 1 }{ n }  \right) \left( 1-\frac { 2 }{ n }  \right) \cdots \left( 1-\frac { k }{ n } +\frac { 1 }{ n }  \right)  \right\}  } =\underbrace { 1\cdot \left( 1-0 \right) \left( 1-0 \right) \cdots \left( 1-0+0 \right)  }_{ \lim _{ n\rightarrow \infty  }{ \frac { 1 }{ n }  } =0より } =1\\ \displaystyle \lim _{ n\rightarrow \infty  }{ { b }_{ n } } =\lim _{ n\rightarrow \infty  }{ { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n } } ={ e }^{ -\lambda  }\\

ポアソン分布の利用上の機能を考えると0\le k<nkは有限なので

\displaystyle \lim _{ n\rightarrow \infty  }{ { c }_{ n } } =\lim _{ n\rightarrow \infty  } \left( 1-\frac { \lambda  }{ n }  \right) ^{ -k }=\lim _{ n\rightarrow \infty  } \frac { 1 }{ \left( 1-\frac { \lambda  }{ n }  \right) ^{ k } } \\ \displaystyle =\lim _{ n\rightarrow \infty  }{ \frac { 1 }{ _{ k }C_{ 0 }\cdot { 1 }^{ k }\cdot { \left( -\frac { \lambda  }{ n }  \right)  }^{ 0 }+_{ k }C_{ 1 }\cdot { 1 }^{ k-1 }\cdot { \left( -\frac { \lambda  }{ n }  \right)  }^{ 1 }+_{ k }C_{ 2 }\cdot { 1 }^{ k-2 }\cdot { \left( -\frac { \lambda  }{ n }  \right)  }^{ 2 }+_{ k }C_{ 3 }\cdot { 1 }^{ k-3 }\cdot { \left( -\frac { \lambda  }{ n }  \right)  }^{ 3 }+…+_{ k }C_{ k }\cdot { 1 }^{ 0 }\cdot { \left( -\frac { \lambda  }{ n }  \right)  }^{ k } }  } \\ \displaystyle =\lim _{ n\rightarrow \infty  }{ \frac { 1 }{ 1+k\cdot -\frac { \lambda  }{ n } +_{ k }C_{ 2 }\cdot \frac { \lambda ^{ 2 } }{ n^{ 2 } } +_{ k }C_{ 3 }\cdot -\frac { \lambda ^{ 3 } }{ n^{ 3 } } +…+{ \left( -\frac { \lambda  }{ n }  \right)  }^{ k } }  }

nを限りなく大きくして極限を取ると

=\frac { 1 }{ 1+0+0+0+…+0 } \\ =1

まとめると

\displaystyle  \therefore \lim _{ n\rightarrow \infty  }{ p\left[ X=k \right]  } =\lim _{ n\rightarrow \infty  }{ { _{ n }{ C }_{ k } }{ p }^{ k }{ \left( 1-p \right)  }^{ n-k } } =\lim _{ n\rightarrow \infty  }{ \left\{ 1\cdot \left( 1-\frac { 1 }{ n }  \right) \left( 1-\frac { 2 }{ n }  \right) \cdots \left( 1-\frac { k }{ n } +\frac { 1 }{ n }  \right)  \right\} \left( \frac { { \lambda  }^{ k } }{ k! }  \right) { \left( 1-\frac { \lambda  }{ n }  \right)  }^{ n }{ \left( 1-\frac { \lambda  }{ n }  \right)  }^{ -k } } =1\cdot \frac { { \lambda  }^{ k } }{ k! } \cdot { e }^{ -\lambda  }\cdot 1=\frac { { \lambda  }^{ k }{ e }^{ -\lambda  } }{ k! }


\displaystyle  \boxed { p\left[ X=k \right] =\frac { { \lambda  }^{ k }{ e }^{ -\lambda  } }{ k! }  }


の結論が得られる。早速、この新しく得られた式を利用してみる
ポアソン分布の計算に確率や試行回数の入力値は必要ない。かわりに必要なものは平均値だ。なので少し問題の解釈を変更する必要がある

600目のサイコロを振って「1」が出ると勝ち。これを1/600秒ごとにサイコロを一回振る事にして1秒後にこのゲームに負けている確率は?
  ↓  ↓  ↓  ↓
ある無限目のサイコロを1秒間に高速に無限回振ると平均1回当たりが出た。このサイコロをもう1秒間、同じ条件で振って負ける確率は?

このように変更する。これを計算すると、このスプレッドシートのセルB8の計算結果になる

ここで二項分布とポアソン分布の関係を確認すると
先に求めていた二項分布の式、6面サイコロを60回振って「1」が出る各回数に応じた確率分布は

\displaystyle P\left[ X=k \right] ={ _{ 60 }{ C }_{ k } }{ \left( \frac { 1 }{ 6 }  \right)  }^{ k }{ \left( 1-\frac { 1 }{ 6 }  \right)  }^{ 60-k }


60面サイコロを600回振って「1」が出る各回数に応じた確率分布

\displaystyle P\left[ X=k \right] ={ _{ 600 }{ C }_{ k } }{ \left( \frac { 1 }{ 60 }  \right)  }^{ k }{ \left( 1-\frac { 1 }{ 60 }  \right)  }^{ 600-k }

二項分布の式の平均値を固定し試行回数を無限にして確率を極小にして得られたポアソン分布の公式に対し、平均値10をセットしたポアソン分布

\displaystyle p\left[ X=k \right] =\frac { { 10 }^{ k }{ e }^{ -10 } }{ k! }

これら得られたグラフをPocketCasで確認すると、ほぼ3つのグラフが重なっている事が確認できる

f:id:cqbosinko:20190803162538p:plain

ポアソン分布に関しては二項定理を利用していないのでkに対して実数が利用できる
平均値を軸にしてグラフの位置を変えても同様の効果が得られるか確かめる

\displaystyle P\left[ X=k \right] ={ _{ 400 }{ C }_{ k } }{ \left( \frac { 1 }{ 8 }  \right)  }^{ k }{ \left( 1-\frac { 1 }{ 8 }  \right)  }^{ 400-k }\\ \displaystyle p\left[ X=k \right] =\frac { { 50 }^{ k }{ e }^{ -50 } }{ k! }

のような関係の式を作成して、これをグラフで見ると

f:id:cqbosinko:20190803171552p:plain

同様にグラフが重なることが確認できた

ポアソン分布の利用

ポアソン分布を利用すると以下の様な問題の確率を求める事が可能となる

  • 国道100km辺りのガソリンスタンド数が17件であった時、あと5km走ってガソリンスタンドに出会う確率は?
  • ある交差点で1ヵ月に発生する交通事故の死亡者数は平均1.5人だった。今後、1ヵ月に死亡事故が発生数する確率は?

ポアソン分布は構造的にネイピア数級数展開(極限、テイラー展開の近似)が利用されているので精度の良い近似を得るために「p(確率)の値は出来るだけ小さな方が良い」という利用制限がある。従ってどの程度の値であれば良いか感覚を掴んで置く必要がある。以下のURLに今回の問題を解く際にまとめたスプレッドシートの計算がある。その計算結果が正しいものであるかどうかを判断する為、乱数を利用したプログラムをunityで作成したので確認してみる

docs.google.com

Case1.

国道100km辺りのガソリンスタンド数が17件であった時、あと5km走ってガソリンスタンドに出会う確率は?

簡単に内容を説明する。この問題はポアソン分布の式を利用すると以下になる。スプレッドシートのセルC1がこの計算を行っている

\displaystyle p\left[ X=k=0 \right] =\frac { { \left( \frac { 17\times 5 }{ 100 }  \right)  }^{ k }{ e }^{ -\left( \frac { 17\times 5 }{ 100 }  \right)  } }{ k! } =\frac { { 0.85 }^{ 0 }{ e }^{ -0.85 } }{ 0! } =0.427414931949...


この式の値が正しいものであるかunityを利用して確かめる


ポアソン分布と二項分布の関係の検証

このプログラムの出力は以下になる

f:id:cqbosinko:20190815104200p:plain

unityのコンソールは出力したテキストをまとめてカウントする機能がある。通常unity画面下にレイアウトされている、このコンソール画面を利用すると乱数により生成された各値の分布状況が確認できる。すると理論値より約2~3%のズレが出てる事が確認できる(何度やってもよく似た結果になる)。ちなみにスプレッドシートのセルE1は二項分布の値。この値にほぼ正確に近似となることが確認できる。つまり確率はこのあたりで収束すると判断して良い

このケースではp(確率)が約17%。この程度でポアソン分布は二項分布と比べこれぐらいズレる。同様にスプレッドシートのCase2.などの各種ケースを見ていくと「ポアソン分布が二項分布の近似」であるという事が確認できる。この近似はpの値が小さくなるほど精度が向上していくと考えるとよい

以下に各ケース検証用のunity乱数生成プログラムを併記する。確認してみると乱数が収束していく様子を実感できる

ゲームにおける無作為性(ランダム)

以下にゲームとしてマジックザギャザリングにおいて無作為性(ランダム)がどう働くか資料として非常に興味深い記事があったのでリンクを紹介する

magic.wizards.com

思うに競技性を尊び技術を競うゲーマーとスマートフォンなどを利用してガチャさえもライトに楽しむ層との間に何らかの「境」がある事は確かだと感じる

オイラーが虚数と円周率、指数関数を繋げた動機を探る(メモ)

対数計算のTips

「対数式の真数と底を入れ替える方法」として単純に逆数を取る方法がある
例えば、\log _{ a }{ b } \log _{ b }{ a } にしたいときは \frac { 1 }{ \log _{ a }{ b }  } =\log _{ b }{ a }  とする

なぜこうなるか?\frac { 1 }{ \log _{ a }{ b }  } =C として

\frac { 1 }{ \log _{ a }{ b }  } =C\quad \Leftrightarrow \quad 1=C\log _{ a }{ b } \quad \Leftrightarrow \quad 1=\log _{ a }{ { b }^{ C } } \quad \Leftrightarrow \quad { a }^{ 1 }={ b }^{ C }\quad \Leftrightarrow \quad \log _{ b }{ a } =C

これをまとめると冒頭の式になる

オイラーの公式が導かれた際の始点、その動機を探る

証明に動機はない。人は動機を持って数式の因果関係を探る
証明が何処か無味無乾燥に感じる時というのは機能の因果関係を表すだけで人の動機が消失しているからと感じる事がある
「人が何故それをやろうと思ったのか」その動機が分かれば、より深くその物事を理解したことになるのではないか?と考える

{ 2 }^{ 0.000001 }=1.000000693

\frac { { 2 }^{ 0.000001 }-{ 2 }^{ 0 } }{ 0.000001-0 } =0.69314742...

1\div \log _{ 10 }{ 0.69314742... } \simeq -2\pi

右辺にマイナスとパイがある。オイラーはおそらくこれを手掛かりにして虚数と指数関数を円周率とつなげようと考えたのではないか?(仮説)

P190 Bスプライン

資料:ゲームアプリの数学P190参照
Bスプライン基底関数は以下になる


\displaystyle B\left( t \right) =\sum _{ i=0 }^{ n }{ { N }_{ i,k }\left( t \right) { P }_{ i } }

\displaystyle { N }_{ i,1 }\left( t \right)=\begin{cases} 1\left( { x }_{ i }\le t<{ x }_{ i+1 } \right)  \\ 0\left( t<{ x }_{ i },{ x }_{ i+1 } <t\right)   \end{cases}  \cdots ①

\displaystyle { N }_{ i,k }\left( t \right) =\frac { t-{ x }_{ i } }{ { x }_{ i+k-1 }-{ x }_{ i } } { N }_{ i,k-1 }\left( t \right) +\frac { { x }_{ i+k }-t }{ { x }_{ i+k }-{ x }_{ i+1 } } { N }_{ i+1,k-1 }\left( t \right) \cdots ②


①は条件式。②はブレンド機能を持つ再帰関数でド・ブーアのアルゴリズムと呼ばれるもの。

②の関数は扱うBスプラインの次数だけ総和計算され階数により再帰的に呼び出される
したがって3次のBスプラインの場合

{ p }_{ 0 }~{ p }_{ 3 } 制御点4で n=3
階数 k=3+1=4


\displaystyle B\left( t \right) =\sum _{ i=0 }^{ 3 }{ { N }_{ i,4 }\left( t \right) { P }_{ i } } ={ N }_{ 0,4 }\left( t \right) { P }_{ 0 }+{ N }_{ 1,4 }\left( t \right) { P }_{ 1 }+{ N }_{ 2,4 }\left( t \right) { P }_{ 2 }+{ N }_{ 3,4 }\left( t \right) { P }_{ 3 }


となる。②を階数4を想定して再帰関数を展開すると


\displaystyle{ N }_{ i,k }\left( t \right) =\frac { t-{ x }_{ i } }{ { x }_{ i+k-1 }-{ x }_{ i } } { N }_{ i,k-1 }\left( t \right) +\frac { { x }_{ i+k }-t }{ { x }_{ i+k }-{ x }_{ i+1 } } { N }_{ i+1,k-1 }\left( t \right) \\ \displaystyle=\frac { t-{ x }_{ i } }{ { x }_{ i+k-1 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+k-2 }-{ x }_{ i } } { N }_{ i,k-2 }\left( t \right) +\frac { { x }_{ i+k-1 }-t }{ { x }_{ i+k-1 }-{ x }_{ i+1 } } { N }_{ i+1,k-2 }\left( t \right)  \right) +\frac { { x }_{ i+k }-t }{ { x }_{ i+k }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+k-2 }-{ x }_{ i+1 } } { N }_{ i+1,k-2 }\left( t \right) +\frac { { x }_{ i+1+k-1 }-t }{ { x }_{ i+1+k-1 }-{ x }_{ i+2 } } { N }_{ i+2,k-2 }\left( t \right)  \right) \\ \displaystyle=\frac { t-{ x }_{ i } }{ { x }_{ i+k-1 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+k-2 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+k-3 }-{ x }_{ i } } { N }_{ i,k-3 }\left( t \right) +\frac { { x }_{ i+k-2 }-t }{ { x }_{ i+k-2 }-{ x }_{ i+1 } } { N }_{ i+1,k-3 }\left( t \right)  \right) +\frac { { x }_{ i+k-1 }-t }{ { x }_{ i+k-1 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+k-3 }-{ x }_{ i+1 } } { N }_{ i+1,k-3 }\left( t \right) +\frac { { x }_{ i+1+k-2 }-t }{ { x }_{ i+1+k-2 }-{ x }_{ i+2 } } { N }_{ i+2,k-3 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ i+k }-t }{ { x }_{ i+k }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+k-2 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+k-3 }-{ x }_{ i+1 } } { N }_{ i+1,k-3 }\left( t \right) +\frac { { x }_{ i+1+k-2 }-t }{ { x }_{ i+1+k-2 }-{ x }_{ i+2 } } { N }_{ i+2,k-3 }\left( t \right)  \right) +\frac { { x }_{ i+1+k-1 }-t }{ { x }_{ i+1+k-1 }-{ x }_{ i+2 } } \left( \frac { t-{ x }_{ i+2 } }{ { x }_{ i+2+k-3 }-{ x }_{ i+2 } } { N }_{ i+2,k-3 }\left( t \right) +\frac { { x }_{ i+2+k-2 }-t }{ { x }_{ i+2+k-2 }-{ x }_{ i+3 } } { N }_{ i+3,k-3 }\left( t \right)  \right)  \right)


k=4にする


\displaystyle { N }_{ i,4 }\left( t \right) =\frac { t-{ x }_{ i } }{ { x }_{ i+4-1 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+4-2 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+4-3 }-{ x }_{ i } } { N }_{ i,4-3 }\left( t \right) +\frac { { x }_{ i+4-2 }-t }{ { x }_{ i+4-2 }-{ x }_{ i+1 } } { N }_{ i+1,4-3 }\left( t \right)  \right) +\frac { { x }_{ i+4-1 }-t }{ { x }_{ i+4-1 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+4-3 }-{ x }_{ i+1 } } { N }_{ i+1,4-3 }\left( t \right) +\frac { { x }_{ i+1+4-2 }-t }{ { x }_{ i+1+4-2 }-{ x }_{ i+2 } } { N }_{ i+2,4-3 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ i+4 }-t }{ { x }_{ i+4 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+4-2 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+1+4-3 }-{ x }_{ i+1 } } { N }_{ i+1,4-3 }\left( t \right) +\frac { { x }_{ i+1+4-2 }-t }{ { x }_{ i+1+4-2 }-{ x }_{ i+2 } } { N }_{ i+2,4-3 }\left( t \right)  \right) +\frac { { x }_{ i+1+4-1 }-t }{ { x }_{ i+1+4-1 }-{ x }_{ i+2 } } \left( \frac { t-{ x }_{ i+2 } }{ { x }_{ i+2+4-3 }-{ x }_{ i+2 } } { N }_{ i+2,4-3 }\left( t \right) +\frac { { x }_{ i+2+4-2 }-t }{ { x }_{ i+2+4-2 }-{ x }_{ i+3 } } { N }_{ i+3,4-3 }\left( t \right)  \right)  \right)


まとめると


\displaystyle { N }_{ i,4 }\left( t \right) =\frac { t-{ x }_{ i } }{ { x }_{ i+3 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+2 }-{ x }_{ i } } \left( \frac { t-{ x }_{ i } }{ { x }_{ i+1 }-{ x }_{ i } } { N }_{ i,1 }\left( t \right) +\frac { { x }_{ i+2 }-t }{ { x }_{ i+2 }-{ x }_{ i+1 } } { N }_{ i+1,1 }\left( t \right)  \right) +\frac { { x }_{ i+3 }-t }{ { x }_{ i+3 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+2 }-{ x }_{ i+1 } } { N }_{ i+1,1 }\left( t \right) +\frac { { x }_{ i+3 }-t }{ { x }_{ i+3 }-{ x }_{ i+2 } } { N }_{ i+2,1 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ i+4 }-t }{ { x }_{ i+4 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+3 }-{ x }_{ i+1 } } \left( \frac { t-{ x }_{ i+1 } }{ { x }_{ i+2 }-{ x }_{ i+1 } } { N }_{ i+1,1 }\left( t \right) +\frac { { x }_{ i+3 }-t }{ { x }_{ i+3 }-{ x }_{ i+2 } } { N }_{ i+2,1 }\left( t \right)  \right) +\frac { { x }_{ i+4 }-t }{ { x }_{ i+4 }-{ x }_{ i+2 } } \left( \frac { t-{ x }_{ i+2 } }{ { x }_{ i+3 }-{ x }_{ i+2 } } { N }_{ i+2,1 }\left( t \right) +\frac { { x }_{ i+4 }-t }{ { x }_{ i+4 }-{ x }_{ i+3 } } { N }_{ i+3,1 }\left( t \right)  \right)  \right)


ここから総和の各項を求めると
i=0の時


\displaystyle { N }_{ 0,4 }\left( t \right) =\frac { t-{ x }_{ 0 } }{ { x }_{ 0+3 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 0+2 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 0+1 }-{ x }_{ 0 } } { N }_{ 0,1 }\left( t \right) +\frac { { x }_{ 0+2 }-t }{ { x }_{ 0+2 }-{ x }_{ 0+1 } } { N }_{ 0+1,1 }\left( t \right)  \right) +\frac { { x }_{ 0+3 }-t }{ { x }_{ 0+3 }-{ x }_{ 0+1 } } \left( \frac { t-{ x }_{ 0+1 } }{ { x }_{ 0+2 }-{ x }_{ 0+1 } } { N }_{ 0+1,1 }\left( t \right) +\frac { { x }_{ 0+3 }-t }{ { x }_{ 0+3 }-{ x }_{ 0+2 } } { N }_{ 0+2,1 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ 0+4 }-t }{ { x }_{ 0+4 }-{ x }_{ 0+1 } } \left( \frac { t-{ x }_{ 0+1 } }{ { x }_{ 0+3 }-{ x }_{ 0+1 } } \left( \frac { t-{ x }_{ 0+1 } }{ { x }_{ 0+2 }-{ x }_{ 0+1 } } { N }_{ 0+1,1 }\left( t \right) +\frac { { x }_{ 0+3 }-t }{ { x }_{ 0+3 }-{ x }_{ 0+2 } } { N }_{ 0+2,1 }\left( t \right)  \right) +\frac { { x }_{ 0+4 }-t }{ { x }_{ 0+4 }-{ x }_{ 0+2 } } \left( \frac { t-{ x }_{ 0+2 } }{ { x }_{ 0+3 }-{ x }_{ 0+2 } } { N }_{ 0+2,1 }\left( t \right) +\frac { { x }_{ 0+4 }-t }{ { x }_{ 0+4 }-{ x }_{ 0+3 } } { N }_{ 0+3,1 }\left( t \right)  \right)  \right) \\ \displaystyle =\frac { t-{ x }_{ 0 } }{ { x }_{ 3 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 2 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 1 }-{ x }_{ 0 } } { N }_{ 0,1 }\left( t \right) +\frac { { x }_{ 2 }-t }{ { x }_{ 2 }-{ x }_{ 1 } } { N }_{ 1,1 }\left( t \right)  \right) +\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } { N }_{ 1,1 }\left( t \right) +\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right)  \right)  \right) \cdots \\ 
\displaystyle \cdots +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } { N }_{ 1,1 }\left( t \right) +\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right)  \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right)  \right)  \right)


n+k+1=8 の節点 \quad x_{ 0 }~{ p }_{ 7 }=\left\{ -3,-2,-1,0,1,2,3,4 \right\}
x_{ 0 }~{ p }_{ 7 }=\left\{ 0,0,0,1/3,2/3,1,1,1 \right\} でも、おそらく大丈夫
パラメータをt\in \left[ 0,1 \right] とすると①より


\displaystyle { N }_{ 0,1 }\left( t \right) =\begin{cases} 1\left( { x }_{ 0 }\le t<{ x }_{ 0+1 } \right)  \\ 0\left( t<{ x }_{ 0 },{ x }_{ 0+1 }<t \right)  \end{cases}\quad \quad =\begin{cases} 1\left( -3\le t<-2 \right)  \\ 0\left( t<-3,-2<t \right)  \end{cases}\quad \quad =0

\displaystyle { N }_{ 1,1 }\left( t \right) =\begin{cases} 1\left( -2\le t<-1 \right)  \\ 0\left( t<-2,-1<t \right)  \end{cases}\quad \quad =0

\displaystyle { N }_{ 2,1 }\left( t \right) =\begin{cases} 1\left( -1\le t<0 \right)  \\ 0\left( t<-1,0<t \right)  \end{cases}\quad \quad =0

\displaystyle { N }_{ 3,1 }\left( t \right) =\begin{cases} 1\left( 0\le t<1 \right)  \\ 0\left( t<0,1<t \right)  \end{cases}\quad \quad =1


これらを{ N }_{ 0,4 }\left( t \right) に代入すると


\displaystyle { N }_{ 0,4 }\left( t \right) =\frac { t-{ x }_{ 0 } }{ { x }_{ 3 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 2 }-{ x }_{ 0 } } \left( \frac { t-{ x }_{ 0 } }{ { x }_{ 1 }-{ x }_{ 0 } } \cdot 0+\frac { { x }_{ 2 }-t }{ { x }_{ 2 }-{ x }_{ 1 } } \cdot 0 \right) +\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } \cdot 0+\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } \cdot 0 \right)  \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } \cdot 0+\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } \cdot 0 \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } \cdot 0+\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } \cdot 1 \right)  \right) \\ \displaystyle =\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right) \\ \displaystyle =\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 1 } } \cdot \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \cdot \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } }


P192の一つ目の式と同じになっていることが確認できる。以下同様に計算していく
i=1の時


\displaystyle { N }_{ 1,4 }\left( t \right) =\frac { t-{ x }_{ 1 } }{ { x }_{ 1+3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 1+2 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 1+1 }-{ x }_{ 1 } } { N }_{ 1,1 }\left( t \right) +\frac { { x }_{ 1+2 }-t }{ { x }_{ 1+2 }-{ x }_{ 1+1 } } { N }_{ 1+1,1 }\left( t \right)  \right) +\frac { { x }_{ 1+3 }-t }{ { x }_{ 1+3 }-{ x }_{ 1+1 } } \left( \frac { t-{ x }_{ 1+1 } }{ { x }_{ 1+2 }-{ x }_{ 1+1 } } { N }_{ 1+1,1 }\left( t \right) +\frac { { x }_{ 1+3 }-t }{ { x }_{ 1+3 }-{ x }_{ 1+2 } } { N }_{ 1+2,1 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ 1+4 }-t }{ { x }_{ 1+4 }-{ x }_{ 1+1 } } \left( \frac { t-{ x }_{ 1+1 } }{ { x }_{ 1+3 }-{ x }_{ 1+1 } } \left( \frac { t-{ x }_{ 1+1 } }{ { x }_{ 1+2 }-{ x }_{ 1+1 } } { N }_{ 1+1,1 }\left( t \right) +\frac { { x }_{ 1+3 }-t }{ { x }_{ 1+3 }-{ x }_{ 1+2 } } { N }_{ 1+2,1 }\left( t \right)  \right) +\frac { { x }_{ 1+4 }-t }{ { x }_{ 1+4 }-{ x }_{ 1+2 } } \left( \frac { t-{ x }_{ 1+2 } }{ { x }_{ 1+3 }-{ x }_{ 1+2 } } { N }_{ 1+2,1 }\left( t \right) +\frac { { x }_{ 1+4 }-t }{ { x }_{ 1+4 }-{ x }_{ 1+3 } } { N }_{ 1+3,1 }\left( t \right)  \right)  \right) \\ \displaystyle =\frac { t-{ x }_{ 1 } }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } { N }_{ 1,1 }\left( t \right) +\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right)  \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right)  \right)  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right)  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right)  \right)  \right)


\displaystyle { N }_{ 4,1 }\left( t \right) =\begin{cases} 1\left( 1\le t<2 \right)  \\ 0\left( t<1,2<t \right)  \end{cases}\quad \quad =0


=\displaystyle \frac { t-{ x }_{ 1 } }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 3 }-{ x }_{ 1 } } \left( \frac { t-{ x }_{ 1 } }{ { x }_{ 2 }-{ x }_{ 1 } } 0+\frac { { x }_{ 3 }-t }{ { x }_{ 3 }-{ x }_{ 2 } } 0 \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } 0+\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } 1 \right)  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } 0+\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } 1 \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } 1+\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } 0 \right)  \right) \\ \displaystyle =\frac { t-{ x }_{ 1 } }{ { x }_{ 4 }-{ x }_{ 1 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } }  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right)


i=2の時


\displaystyle { N }_{ 2,4 }\left( t \right) =\frac { t-{ x }_{ 2 } }{ { x }_{ 2+3 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 2+2 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 2+1 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right) +\frac { { x }_{ 2+2 }-t }{ { x }_{ 2+2 }-{ x }_{ 2+1 } } { N }_{ 2+1,1 }\left( t \right)  \right) +\frac { { x }_{ 2+3 }-t }{ { x }_{ 2+3 }-{ x }_{ 2+1 } } \left( \frac { t-{ x }_{ 2+1 } }{ { x }_{ 2+2 }-{ x }_{ 2+1 } } { N }_{ 2+1,1 }\left( t \right) +\frac { { x }_{ 2+3 }-t }{ { x }_{ 2+3 }-{ x }_{ 2+2 } } { N }_{ 2+2,1 }\left( t \right)  \right)  \right) \cdots \\ \displaystyle \cdots +\frac { { x }_{ 2+4 }-t }{ { x }_{ 2+4 }-{ x }_{ 2+1 } } \left( \frac { t-{ x }_{ 2+1 } }{ { x }_{ 2+3 }-{ x }_{ 2+1 } } \left( \frac { t-{ x }_{ 2+1 } }{ { x }_{ 2+2 }-{ x }_{ 2+1 } } { N }_{ 2+1,1 }\left( t \right) +\frac { { x }_{ 2+3 }-t }{ { x }_{ 2+3 }-{ x }_{ 2+2 } } { N }_{ 2+2,1 }\left( t \right)  \right) +\frac { { x }_{ 2+4 }-t }{ { x }_{ 2+4 }-{ x }_{ 2+2 } } \left( \frac { t-{ x }_{ 2+2 } }{ { x }_{ 2+3 }-{ x }_{ 2+2 } } { N }_{ 2+2,1 }\left( t \right) +\frac { { x }_{ 2+4 }-t }{ { x }_{ 2+4 }-{ x }_{ 2+3 } } { N }_{ 2+3,1 }\left( t \right)  \right)  \right) \\ \displaystyle =\frac { t-{ x }_{ 2 } }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } { N }_{ 2,1 }\left( t \right) +\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right)  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right)  \right)  \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right)  \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } { N }_{ 5,1 }\left( t \right)  \right)  \right)


i=3の時、パターンに沿ってやると


\displaystyle { N }_{ 3,4 }\left( t \right) =\\ \displaystyle \frac { t-{ x }_{ 3 } }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } { N }_{ 3,1 }\left( t \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right)  \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } { N }_{ 5,1 }\left( t \right)  \right)  \right) +\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } { N }_{ 4,1 }\left( t \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } { N }_{ 5,1 }\left( t \right)  \right) +\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 5 } } \left( \frac { t-{ x }_{ 5 } }{ { x }_{ 6 }-{ x }_{ 5 } } { N }_{ 5,1 }\left( t \right) +\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 6 } } { N }_{ 6,1 }\left( t \right)  \right)  \right)


\displaystyle { N }_{ 5,1 }\left( t \right) =\begin{cases} 1\left( 2\le t<3 \right)  \\ 0\left( t<2,3<t \right)  \end{cases}\quad \quad =0

\displaystyle { N }_{ 6,1 }\left( t \right) =\begin{cases} 1\left( 3\le t<4 \right)  \\ 0\left( t<3,4<t \right)  \end{cases}\quad \quad =0


従って


\displaystyle { N }_{ 2,4 }\left( t \right) =\frac { t-{ x }_{ 2 } }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 3 }-{ x }_{ 2 } } \cdot 0+\frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } } \cdot 1 \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } \cdot 1+\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0 \right)  \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } \cdot 1+\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0 \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0+\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } \cdot 0 \right)  \right) \\ =\displaystyle \frac { t-{ x }_{ 2 } }{ { x }_{ 5 }-{ x }_{ 2 } } \left( \frac { t-{ x }_{ 2 } }{ { x }_{ 4 }-{ x }_{ 2 } } \left( \frac { { x }_{ 4 }-t }{ { x }_{ 4 }-{ x }_{ 3 } }  \right) +\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right)


\displaystyle { N }_{ 3,4 }\left( t \right) =\frac { t-{ x }_{ 3 } }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } } \cdot 1+\frac { { x }_{ 5 }-t }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0 \right) +\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0+\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } \cdot 0 \right)  \right) +\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 6 }-{ x }_{ 4 } } \left( \frac { t-{ x }_{ 4 } }{ { x }_{ 5 }-{ x }_{ 4 } } \cdot 0+\frac { { x }_{ 6 }-t }{ { x }_{ 6 }-{ x }_{ 5 } } \cdot 0 \right) +\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 5 } } \left( \frac { t-{ x }_{ 5 } }{ { x }_{ 6 }-{ x }_{ 5 } } \cdot 0+\frac { { x }_{ 7 }-t }{ { x }_{ 7 }-{ x }_{ 6 } } \cdot 0 \right)  \right) \\ \displaystyle =\frac { t-{ x }_{ 3 } }{ { x }_{ 6 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 5 }-{ x }_{ 3 } } \left( \frac { t-{ x }_{ 3 } }{ { x }_{ 4 }-{ x }_{ 3 } }  \right)  \right)


P192~P193の各式と同じになっている事を確認できる

書籍:ゲームアプリの数学 忘備録

行列計算のおぼえがき

個人的なおぼえがき。一般的な憶え方ではない。

\overbrace { \overset { x'=3 }{ \underset { y=2 }{ \begin{bmatrix} a & b & c \\ d & e & f \end{bmatrix} }  } \times \overset { y'=3 }{ \underset { x=2 }{ \begin{bmatrix} 2 & 5 \\ 3 & 6 \\ 4 & 7 \end{bmatrix} }  }  }^{ x'とy'の値は合わせる\\ 必要がある } =\underset { x\times yの行列になる }{ \begin{bmatrix} 2a+3b+4c & 5a+6b+7c \\ 2d+3e+4f & 5d+6e+7f \end{bmatrix} }

  • x'とy'の値があってない場合、それは行列計算として成り立っていない式となる
  • 一項目は横に向かって二項目の縦とひとつひとつ掛け算され総和して計算される

unity固有の問題の解決

unityのVector4、Vector3、Vector2はMatrix4x4等の正方行列と*+演算子で計算できる。この場合ベクトルは数学の慣例に従って「縦の行列」として扱われる
従って下記のような計算は

\begin{bmatrix} a & b & c \end{bmatrix}\begin{bmatrix} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{bmatrix}=\begin{bmatrix} a+2b+3c & 4a+5b+6c & 7a+8b+9c \end{bmatrix}

一項目が「横の行列」なのでVectorで表現できない。なので以下のように「T 転置(transpose)」を使うなどして同じ意味の式に書き換える必要がある

{ \begin{bmatrix} 1 & 4 & 7 \\ 2 & 5 & 8 \\ 3 & 6 & 9 \end{bmatrix} }^{ T }\begin{bmatrix} a \\ b \\ c \end{bmatrix}\quad \Leftrightarrow \quad { \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} }\begin{bmatrix} a \\ b \\ c \end{bmatrix}=\begin{bmatrix} a+2b+3c \\ 4a+5b+6c \\ 7a+8b+9c \end{bmatrix}

ちなみに以下のような行列式はx'とy'の値が異なってしまうので行列式として成り立たない(Error:Invalid dimension. Vector3が右側の行列と乗算できない理由はこのため)

\overset { x'=1 }{ \underset { y=3 }{ \begin{bmatrix} a \\ b \\ c \end{bmatrix} }  } \overset { y'=3 }{ \underset { x=3 }{ \begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \end{bmatrix} }  } \quad =\quad Error

これはP199で言及されている。教科書通りに毎回、転置処理を行うのは実用的でないので式を理解して書き換えた方が良いだろう

曲線のアルゴリズムP186

ベジェ曲線を制御する3点a,b,cを用意
tをパラメーターとした線形補完を行う一次関数を始点中点と中点終点に用意し共にブレンドする

\begin{cases} d\left( t \right) =\left( 1-t \right) a+tb \\ e\left( t \right) =\left( 1-t \right) b+tc \\ p\left( t \right) =\left( 1-t \right) d\left( t \right) +te\left( t \right)  \end{cases}

tは0以上~1以下になる

t\in \left[ 0,1 \right]

この連立方程式を変形してa,b,cに対して整理して行く

\Rightarrow \quad p\left( t \right) =\left( 1-t \right) \left\{ \left( 1-t \right) a+tb \right\} +t\left\{ \left( 1-t \right) b+tc \right\} \\ =\left( 1-t \right) \left( a-ta+tb \right) +t\left( b-tb+tc \right) \\ =a-ta+tb-ta+{ t }^{ 2 }a-{ t }^{ 2 }b+tb-{ t }^{ 2 }b+{ t }^{ 2 }c\\ =a-2ta+2tb+{ t }^{ 2 }a-2{ t }^{ 2 }b+{ t }^{ 2 }c

a,b,cに対して整理

={ t }^{ 2 }a-2ta+a\quad \quad -2{ t }^{ 2 }b+2tb\quad \quad +{ t }^{ 2 }c\\ ={ \left( 1-t \right)  }^{ 2 }a\quad \quad +2\left( 1-t \right) tb\quad \quad +{ t }^{ 2 }c

制御点Pと考える

a={ p }_{ 0 }\quad ,\quad b={ p }_{ 1 }\quad ,\quad c={ p }_{ 2 }\\ \Rightarrow \quad B\left( t \right) ={ \left( 1-t \right)  }^{ 2 }{ p }_{ 0 }\quad +2\left( 1-t \right) t{ p }_{ 1 }\quad +{ t }^{ 2 }{ p }_{ 2 }

方程式を行列式に表現を変更する。「拡大係数行列」と呼ばれるもので、例えばp0に対して行列に直すには以下のように考える

{ \left( 1-t \right)  }^{ 2 }{ p }_{ 0 }\quad =\quad \left( { t }^{ 2 }-2t+1 \right) { p }_{ 0 }\quad =\quad \begin{bmatrix} { t }^{ 2 } & t & 1 \end{bmatrix}\begin{bmatrix} 1 \\ -2 \\ 1 \end{bmatrix}{ p }_{ 0 }

この要領で全部、書き換えると以下になる

\Rightarrow \quad \quad B\left( t \right) =TCG=\begin{bmatrix} { t }^{ 2 } & t & 1 \end{bmatrix}\begin{bmatrix} 1 & -2 & 1 \\ -2 & 2 & 0 \\ 1 & 0 & 0 \end{bmatrix}\begin{bmatrix} { p }_{ 0 } \\ { p }_{ 1 } \\ { p }_{ 2 } \end{bmatrix}

P188 三次エルミート曲線の導出

想定される三次多項式。係数が未知なので

H\left( t \right) ={ c }_{ 0 }+{ c }_{ 1 }t+{ c }_{ 2 }{ t }^{ 2 }+{ c }_{ 3 }{ t }^{ 3 }

H(0)は始点、H(1)が終点。H'(0)は始点の傾き、H'(1)は終点の傾き。各々をこの三次多項式に当てはめると教本通りになるので
P188で用意された各式を利用するとc2に関しては以下のようにc2のみを抽出できる

{ c }_{ 2 }\quad =\quad 3\left( H\left( 1 \right) -H\left( 0 \right)  \right) -2H'\left( 0 \right) -H'\left( 1 \right) \quad =\quad 3\left\{ \left( { c }_{ 0 }+{ c }_{ 1 }+{ c }_{ 2 }+{ c }_{ 3 } \right) -{ c }_{ 0 } \right\} -2{ c }_{ 1 }-\left( { c }_{ 1 }+{ 2c }_{ 2 }+3{ c }_{ 3 } \right)

c3に関しては以下の様に確かに抽出できる

{ c }_{ 3 }\quad =\quad 2\left( H\left( 0 \right) -H\left( 1 \right)  \right) +H'\left( 0 \right) +H'\left( 1 \right) \quad =\quad 2\left\{ { c }_{ 0 }-\left( { c }_{ 0 }+{ c }_{ 1 }+{ c }_{ 2 }+{ c }_{ 3 } \right)  \right\} +{ c }_{ 1 }+\left( { c }_{ 1 }+{ 2c }_{ 2 }+3{ c }_{ 3 } \right)

これらを元の多項式に代入すると

H\left( t \right) ={ c }_{ 0 }+{ c }_{ 1 }t+{ c }_{ 2 }{ t }^{ 2 }+{ c }_{ 3 }{ t }^{ 3 }\\ \Rightarrow \quad H\left( t \right) =H\left( 0 \right) \quad \quad +\quad \quad H'\left( 0 \right) t\quad \quad +\quad \quad \left\{ 3\left( H\left( 1 \right) -H\left( 0 \right)  \right) -2H'\left( 0 \right) -H'\left( 1 \right)  \right\} { t }^{ 2 }\quad \quad +\quad \quad \left\{ 2\left( H\left( 0 \right) -H\left( 1 \right)  \right) +H'\left( 0 \right) +H'\left( 1 \right)  \right\} { t }^{ 3 }\\ \Rightarrow \quad H\left( t \right) =H\left( 0 \right) \quad +\quad H'\left( 0 \right) t\quad +\quad 3H\left( 1 \right) { t }^{ 2 }-3H\left( 0 \right) { t }^{ 2 }-2H'\left( 0 \right) { t }^{ 2 }-H'\left( 1 \right) { t }^{ 2 }\quad +\quad 2H\left( 0 \right) { t }^{ 3 }-2H\left( 1 \right) { t }^{ 3 }+H'\left( 0 \right) { t }^{ 3 }+H'\left( 1 \right) { t }^{ 3 }

これらを始点、終点、始点接線、終点接線ごとにまとめると

H\left( t \right) =H\left( 0 \right) -3H\left( 0 \right) { t }^{ 2 }+2H\left( 0 \right) { t }^{ 3 }\quad \quad +\quad \quad 3H\left( 1 \right) { t }^{ 2 }-2H\left( 1 \right) { t }^{ 3 }\quad \quad +\quad \quad H'\left( 0 \right) t-2H'\left( 0 \right) { t }^{ 2 }+H'\left( 0 \right) { t }^{ 3 }\quad \quad -H'\left( 1 \right) { t }^{ 2 }+H'\left( 1 \right) { t }^{ 3 }

従って

H\left( t \right) =\left( 1-3{ t }^{ 2 }+2{ t }^{ 3 } \right) H\left( 0 \right) \quad +\quad \quad \left( 3{ t }^{ 2 }-2{ t }^{ 3 } \right) H\left( 1 \right) \quad \quad +\quad \quad \left( t-2{ t }^{ 2 }+{ t }^{ 3 } \right) H'\left( 0 \right) \quad \quad +\quad \quad \left( { -t }^{ 2 }+{ t }^{ 3 } \right) H'\left( 1 \right)

になる。これを始点に対して行列に表現を変えると

\left( 1-3{ t }^{ 2 }+2{ t }^{ 3 } \right) H\left( 0 \right) \quad =\quad \begin{bmatrix} 1 & { t }^{ 1 } & { t }^{ 2 } & { t }^{ 3 } \end{bmatrix}\begin{bmatrix} 1 \\ 0 \\ -3 \\ 2 \end{bmatrix}H\left( 0 \right)

なので、これと同様にH\left( t \right) を書き換えると

\Rightarrow \quad \quad H\left( t \right) =TCG=\begin{bmatrix} 1 & { t }^{ 1 } & { t }^{ 2 } & { t }^{ 3 } \end{bmatrix}\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -3 & 3 & -2 & -1 \\ 2 & -2 & 1 & 1 \end{bmatrix}\begin{bmatrix} H\left( 0 \right)  \\ H\left( 1 \right)  \\ H'\left( 0 \right)  \\ H'\left( 1 \right)  \end{bmatrix}

となる。ここでH'(0)とH'(1)に関してプログラムではコントロールポイントの両脇を加算して2で割った値を接線としている。一見乱暴に見えるが始点と終点の2点しかないからベクトルで考えるとこれは正しい接線となる。