Мои два цента ... Это может быть не самым быстрым, но я думаю, что это довольно легко понять. Я придумал это сам во время математической лекции, и я действительно не видел это нигде в литературе. Либо я гений, действительно глупый, либо не обращаю внимания на чтение книг по математике, или на все вышеперечисленное ... :)
В любом случае ... Начните с круга единиц. Мы знаем, что x ^ 2 + y ^ 2 = 1, поэтому y = sqrt (1-x ^ 2). Мы также знаем, что площадь единичного круга равна PI. Если мы теперь возьмем интеграл от функции sqrt (1-x ^ 2) в диапазоне от 0 до 1, мы получим четверть PI. Умножьте это на 4, чтобы получить ПИ:
Если бы мы попытались решить это аналитически, я уверен, что мы просто вернули бы PI. Но написать программу для численного решения достаточно просто. Следующий в C:
#include <math.h>
#include <stdio.h>
void main(void) {
double interval=0.0000001,area=0,x,y;
for (x=0; x<1; x+=interval)
area+=4*interval*sqrt(1-x*x);
printf("pi ~ %.20f\n",area);
}
Запустив его с вышеуказанным значением interval
, мы получим:
pi ~ 3.14159285415672595576
Таким образом, 10 000 000 итераций дают 6 правильных десятичных знаков. Не самый эффективный, но это мой ребенок ...:)