PEをMathematicaで

Project Eulerに挑戦してみよう

Project Euler 613 / Pythagorean Ant

30*40*50の直角三角形内にアリがいる。このアリがランダムに方向を選んで直進するとき,斜辺に達する確率を求めて小数第10位まで答えよ。

本家:Problem 613 - Project Euler

3辺の長さを3, 4, 5として考えます。三角形の頂点が
O(0, 0), A(3, 0), B(0, 4) となる座標系をとって,アリの座標を P(x, y) とします。

アリが斜辺に向かう確率は  \dfrac{\angle APB}{2\pi} です。これは x, y であらわせます。

 f(x, y)=\left(\dfrac{\pi}{2}+\arctan\dfrac{y}{3-x}+\arctan\dfrac{x}{4-y}\right)\div 2\pi

これの平均が答えです*1。重積分して,三角形の面積6で割りました。

数値積分すると 0.8 秒。

実は厳密解を求めることもできて 2.1 秒。

*1:最近の問題なので答えの数値は省略します