amori's blog

よろず技術系と趣味関係の雑記です。アニメの比重が高くなってます・・

二つのボールで円周率というのを解いてみた

解いたとはいっていない→解けた。追記あり

(修正2 20140415:22:GMT, 最後のまとめを正確にさらに修正)

(修正20140414:2330 GMT, 最後の近似の説明が不正確かつtan(θ/2)=√rに気がついたので・・・r→r^2で表記修正)

2つのボールをぶつけると円周率がわかる - 大人になってからの再学習

面白い。こんなシンプルな現象のいったいどこから円周率につながるのかというのに興味が出て、論文を眺めてみたらハードルが高いわw

 

とりあえず力学の定番の手順でどこまでできるかやってみた。

大きい球の速度・質量の初期値をV0, M, 小さい方をv0,mとし、衝突後をV1, v1とする。

運動量保存、エネルギー保存の前提から

 MV_0+mv_0 = MV_1+mv_1

 \frac{1}{2} MV_0^2+\frac{1}{2}mv_0^2 = \frac{1}{2}MV_1^2 + \frac{1}{2}mv_1^2

 m/M=r^2, s=1-r^2として、二つの式を整理すると、

[tex: \left( 

 \begin{array}{b} 

   V_1 \\

   v_1

 \end{array} 

\right)

][tex: =\frac{1}{1+r^2} 

\left( \begin{array}{cc}

 s & 2r^2 \\

2 & -s 

\end{array} \right) 

\left( \begin{array}{c} 

V_0 \\

v_0 

\end{array} \right) ] 

 

[tex:  \mathbf{V_1}= \mathbf{A} \mathbf{V_0}]

あと小さい球が壁に反射するのはvの向きが代わるだけなので、

[tex left( egin{array}{aa} V_2 v_2 end{array} ight) = left( egin{array}{bb} 1 & 0 0 & -1 end{array} ight) left( egin{array}{aa} V_1 v_1 end{array} ight)]

[ mathbf{V_2}=mathbf{B}mathbf{V_1}]

2つの反射をセットにして偶数回目の反射後の球の速度は、

[ mathbf{V_{2m}}=(mathbf{B}mathbf{A})^mmathbf{V_0}]

ということは[ (mathbf{B}mathbf{A})^m]を計算すればよい。

[ (mathbf{B}mathbf{A})=rac{1}{1+r^2} left( egin{array}{bb} s & 2r^2 -2 & s end{array} ight)]

固有値を計算すると、[spm2ri]と虚数解だ。ということはべき乗の定番変換により

(参考)

[ mathbf{V_{2m}}=left(rac{1}{1+r^2}mathbf{P} left( egin{array}{bb} s & -2r 2r & s end{array} ight) mathbf{P^{-1}} ight)^mmathbf{V_0},mathbf{P}=left( egin{array}{bb} 0 & r 1 & 0 end{array} ight)]

これは結局回転行列になり、

[ mathbf{V_{2m}}=mathbf{P} left( egin{array}{bb} cos{m heta} & -sin{m heta} sin{m heta} & cos{m heta} end{array} ight) mathbf{P^{-1}}mathbf{V_0},ただし an{ heta} = 2r/(1-r^2)] ここでtanの倍角/半角公式から

[ an{rac{ heta}{2}}=r]

なるほどπが出てくるわけだ。初期条件を、[V_0 = 1, v_0=0] とすると、

[ left( egin{array}{aa} V_{2m} v_{2m} end{array} ight) =left( egin{array}{aa} cos{m heta} -rac{1}{r}sin{m heta} end{array} ight)]

となる。(以下終了条件とmの値についてのまとめを修正)

衝突終了条件は、

  1. 偶数回反射終了後に、速度が共に負でかつ大きい球の速度が大きくなった場合[v_{2m} < 0 ,rac{v_{2m}}{V_{2m}}<1]
  2. 奇数回(2m-1)反射終了後に小さい球の方向が変わらず負のままの(壁に戻らない)かつ直前(2m-2)の反射で小さい球がまだ大きい球に追いつく場合である。つまり [v_{2m-1}= - v_{2m}<0 ,  -v_{2m-2}>-V_{2m-2}]

1.は偶数回反射で終了であり、

[v_{2m} < 0 ,rac{v_{2m}}{V_{2m}}<1]

[-rac{1}{r}sin{m heta}<0 , - an{m heta} < r ]

[ sin{m heta}>0, - an{m heta} < an{rac{ heta}{2}}]

[m heta < pi, pi - m heta < rac{ heta}{2} ]

両者をあわせて、

[pi - rac{ heta}{2} < m heta < pi  ]

ここでθ/2≒2tan(θ/2)=2r = 2×10^(-N)なので、

[pi imes10^N -1 < 2m < pi imes10^N ]

となり、衝突回数2mは、πをN桁シフトした整数値に一致することがわかる。

(近似について詳細は後述)

2.は奇数回反射つまり2m-1回目で終了する場合であり、

[v_{2m-1}= - v_{2m}<0 , -v_{2m-2}>-V_{2m-2}]

[sin{m heta}<0 , -rac{1}{r} an{(m-1) heta}>1]

(↑数式代替表示:sin(mθ)<0 , (-1/r)tan((m-1)θ) > 1 )

最初の条件は、mθ>π。後者は

[ - an{ ( m - 1 ) heta} > r = an{ heta/2}]

(↑数式代替表示: (-tan((m-1)θ) > r = tan(θ/2) )

[pi - ( m - 1 ) heta > heta/2 ]

(↑数式代替表示: π - (m-1)θ) > r = θ/2 )

[ m heta  < pi + heta/2 ]

mθ>πと合わせて、

[ pi < m heta  < pi + heta/2 ]

[ rac{pi}{ heta/2} < 2m  <rac{pi}{ heta/2} + 1]

[ rac{pi}{ heta/2} - 1 < 2m - 1  <rac{pi}{ heta/2}]

θ/2≒tan(θ/2)=r = 10^(-N)から

[pi imes10^N -1 < 2m -1 < pi imes10^N ]

偶数の場合と同様にπのN桁シフトした整数に相当することがわかる。

やっとでけたあ(^^)(以上修正・修正2終わり)

大学入試で出たら厳しいかもしれないけど、高校数学の範囲で十分に解ける問題なのであるのだな。面白かった。

 

修正2追記: θ/2≒tan(θ/2)の近似について

この近似は厳密にはθ/2<tan(θ/2)なので結論は、

[pi imes10^N -1+ alpha < 2m -1 < pi imes10^N + alpha]

とするほうが正確であるが、誤差αは、tan(θ/2)-θ/2=r - arctan(r)に相当しarctanテイラー展開を考慮すると、小数点以下4N以下の値となる。よってπの10^N倍した数の小数点一位から4N桁以上9が連続する場合は2m-1は小数部を切り上げる値になるが・・・そのようなケースはないような気がするが証明は別のアプローチが必要であろう。

ここまでの結論は衝突回数はπを10^N倍したものの整数部、ただし切り上げの場合がないことかどうかは微妙に保留・・・・