3 сент. 2010 г.

Приближенные значения числа Пи

Сегодня я, по случаю пятницы, решил усомниться в правдивости открытий древних математиков, и решил перепроверить: так ли уж были хороши рациональные дроби, найденные древними для нахождения приблизительного значения числа Пи?

Таких рациональных дробей известно предостаточно. Взять хотя бы вычисления Архимеда. Древний мудрец вычислил, что число Пи больше 223 / 71 и меньше 22 / 7. Древние вавилоняне считали, что число Пи примерно равно 25 / 8. Древние египтяне представили свои варианты дробей: 22 / 7 и 256 / 81. Индийский гений Рамануджан, живший в начале прошлого века, определил число Пи как дробь 355 / 113.

Так как я не гений, не математик, и не древний вавилонянин, а просто современный человек, то за меня сначала пусть подумает компьютер, а уж потом - и я сам. Поэтому без отрыва от полезного производства, во время кофейного перерыва была создана следующая программа:

#include <iostream>
#include <cmath>

using namespace std;

int main()
{
double constantPi = 3.1415926535897932384626433832795028841971693993751;
double calculatedPi;
double minPi = 3.14149; // Нижняя граница точности наших вычислений.
double maxPi = 3.14160; // Верхняя граница точности наших вычислений.

cout.precision(50); // Выжмем из потока вывода все возможное и невозможное!

cout << "Constant Pi = " << constantPi << "\n" << endl; // Образец для подражания.

// Вычислим в пределах тысячи все подходящие числители и знаменатели.

for (int i = 2; i <= 1000; i++)
{
for (int j = 2; j <= 1000; j++)
{
calculatedPi = (double) j / i;

if (calculatedPi <= maxPi && calculatedPi >= minPi)
{
cout << j << " / " << i << " = " << calculatedPi << endl;
cout << "Constant - Calculated = " << constantPi - calculatedPi << "\n" << endl;
}
}
}

return 0;
}

В результате работы этой замечательной программы я получил следующие результаты:

Constant Pi = 3.141592653589793115997963468544185161590576171875

333 / 106 = 3.1415094339622640084996874065836891531944274902344
Constant - Calculated = 8.3219627529107498276061960496008396148681640625e-005

355 / 113 = 3.141592920353982520964564173482358455657958984375
Constant - Calculated = -2.667641894049666007049381732940673828125e-007

666 / 212 = 3.1415094339622640084996874065836891531944274902344
Constant - Calculated = 8.3219627529107498276061960496008396148681640625e-005

688 / 219 = 3.1415525114155249397640545794274657964706420898438
Constant - Calculated = 4.014217426817623390888911671936511993408203125e-005

710 / 226 = 3.141592920353982520964564173482358455657958984375
Constant - Calculated = -2.667641894049666007049381732940673828125e-007

999 / 318 = 3.1415094339622640084996874065836891531944274902344
Constant - Calculated = 8.3219627529107498276061960496008396148681640625e-005

И что же мы получаем? А получаем мы шесть замечательных дробей, которые каждый из нас теперь может взять в качестве приближенного значения числа Пи. При этом дроби 333 / 106, 666 / 212 и 999 / 318 по вполне понятным законам арифметики и квантовой механики дают один и тот же результат. То же самое касается и дробей 355 / 113 и 710 / 226.

Однако дробь 355 / 113 дает наилучший результат, лучше остальных приближая нас к заветному значению числа Пи. Стоит ли лишний раз говорить, что эту дробь открыл гениальный индус Рамануджан, проживший столь недолгую и трагичную жизнь?

А как же, вы скажете, быть с открытиями древних вавилонян, египтян, Архимеда, и всех остальных, неравнодушных к математике? Очень просто. Нужно всего лишь изменить критерии точности наших вычислений. Уверяю вас, что изменяя переменные minPi и maxPi мы легко сможем получить все те замечательные результаты, что уже знаем о приблизительных значениях числа Пи. А может быть, - кто знает? - вы откроете свою, неизвестную науке замечательную дробь, приближающую нас к значению числа Пи.