🐡

【TypeScript】数Ⅲだけで分かる円周率の求め方

1 min read

円周率の日らしいので面白い円周率の求め方を紹介します。

予備知識

三角関数の公式

\tan^2\theta+1=\frac{1}{\cos^2\theta}

タンジェントの微分

f(\theta)=\tan\thetaならば
f'(\theta)=\frac{1}{\cos^2\theta}

本題

この積分について考えます。

\int_0^1(\frac{dx}{x^2+1})

x=\tan\thetaと置くと

  • x 0\rightarrow1
    \theta 0\rightarrow\frac{\pi}{4}
  • dx=\frac{dt}{\cos^2\theta}

なので

\int_0^1(\frac{dx}{x^2+1})\\ =\int_0^\frac{\pi}{4} (\frac{1}{tan^2\theta+1}\frac{d\theta}{cos^2\theta})\\ =\int_0^\frac{\pi}{4} (cos^2\theta\frac{d\theta}{cos^2\theta})\\ =[\theta]^\frac{\pi}{4}_0\\ =\frac{\pi}{4}

です。

要するに0~1の間をとても小さく区切って

\frac{1}{x^2+1}
を計算して全部足しあわせて4倍すると大体円周率になります。

コード

const seg = 100000000;

let sum = 0.0;

for (let i = 0; i <= seg; i++) {
  const x = (1.0 / seg) * i;
  const k = 1.0 / (x * x + 1);
  sum += k / seg;
}

const pi = sum * 4;

console.log(pi);

riku@rikuubuntu:~/WebstormProjects/zenn$ ./node_modules/.bin/tsc pi.ts && time node pi.js
3.1415926835900345

real    0m0.827s
user    0m0.823s
sys     0m0.004s


Discussion

ログインするとコメントできます