プロジェクトオイラー613.

この記事の所要時間: 359

No. 613 Pythagorean Ant

問題.

Dave はバルコニーで宿題をしていて,ピタゴラスの直角三角形についての発表の準備でちょうど辺の長さが 30cm, 40cm, 50cm の三角形を切り取ったとき,強い風が吹いてその三角形は庭へ飛んでいきました.

さらに風が吹いて,小さいアリが三角形の上に落ちました.その可哀想なアリは,ランダムな方向にまっすぐ,芝生へ戻るために歩き始めました.

ありの落ちた点として三角形上のすべての点を考え,アリの進む方向はすべての方向について当確率とするとき,アリが三角形の斜辺から出ていく確率はいくらか.小数点以下 10 桁に四捨五入して答えよ.

考え方とプログラム例.(python3)

三角形の直角の頂点を原点として,2 つの辺が \(x\) , \(y\) 軸の正の方向を向くように座標軸をとる.また,辺の長さとして, \(\alpha=30, \beta=40, \gamma=50\) とする.(直角三角形なので三平方の定理 \(\alpha^2+\beta^2=\gamma^2\) が成り立つ). 

アリが落下した点の座標を \((x, y)\)  としたとき,その点から斜辺を見られる角度を \(\theta(x, y)\) とすると,点 \((x, y)\) から出発してアリが斜辺から出ていく確率 \(p(x, y)\) は

\begin{align*}
p(x, y) = \frac{\theta(x, y)}{2\pi}
\end{align*}

となる.

これを三角形内部の各点について平均を取ればよいので,求める確率を \(p\) とすると,

\begin{align}
p &= \frac{\int_S p(x, y)\,dxdy}{\int_S\,dxdy}\\
&= \frac{1}{\alpha\beta\pi}\int_S \theta(x, y)\,dxdy \tag{1}
\end{align}

となる.ここで,\(S\) は三角形の内部,すなわち

\begin{align*}
S = \left\{(x, y) \mid x\geq 0, 0\leq y\leq \frac{\beta}{\alpha}(\alpha-x)\right\}
\end{align*}

である.また,\(\theta(x, y)\) は

\begin{align*}
\theta(x, y) = \frac{\pi}{2} + \arctan{\left(\frac{y}{\alpha-x}\right)} + \arctan{\left(\frac{x}{\beta-y}\right)}
\end{align*}

と書ける.

\(\arctan{x}\) は積分が計算できて

\(\int\arctan{x}\,dx = x\arctan{x}-\frac{1}{2}\log(1+x^2)+C\)

となることを用いて(1) の積分を行えば,

\begin{align*}
p &= \frac{1}{2} – \frac{1}{4\pi}\left\{\frac{\alpha}{\beta}\log\left(1+\frac{\beta^2}{\alpha^2}\right)+\frac{\beta}{\alpha}\log\left(1+\frac{\alpha^2}{\beta^2}\right)\right\}\\
&= \frac{1}{2} – \frac{\gamma^2\log\gamma-\alpha^2\log\alpha-\beta^2\log\beta}{2\alpha\beta\pi}
\end{align*}

ときれいなな式がでてくる.あとはこの式に \(\alpha=30, \beta=40, \gamma=50\) を代入した値を求めるだけです.

代入して値を求めるだけなのでプログラムにするほどでもないですが...

((1)式を数値積分してもよかったが,実際に数式として積分できるので,このほうが誤差が出にくいと考えました.)

答えはこの下にあります.

A. 0.3916721504

スポンサーリンク
sub2
sub2
  • このエントリーをはてなブックマークに追加