円周率を計算する方法にモンテカルロ法というものがある。
モンテカルロ法は次の手順で円周率を求める。
- 円と、円が内接するような正方形を用意する
- 正方形内にランダムな点を打つ
- 全点と円内の点との数の比を求める
すなわち
\begin{align}
\frac{\mbox{円内の点}}{すべての点} \approx \frac{\pi r^2}{(2r)^2} = \frac{\pi}{4}
\end{align}
の近似計算をしていることになる。
matlabで計算してみた。うまくいってそう。
N=10000;
point=-1+2*rand(N,2);
pin=0;
for i=1:1:N
if norm(point(i,:))<=1
pin=pin+1;
end
end
result=4*pin/N;
コメント