Технологии

Как найти число Пи 

Что нам известно о числе Пи? Что это бесконечно длинное число, что оно показывает отношение длины окружности к ее диаметру. Все это мы много раз слышали в школе. Но как найти число Пи? Знаете ли Вы хоть один действующий алгоритм нахождения числа Пи с заданной точностью? Если нет, то в данном уроке мы рассмотрим простейший алгоритм, позволяющий вычислять Пи.

Начнем с того, что вычисление Пи не всегда нужно, очень часто можно ограничиться значением Пи с точностью до 10 знаков после запятой. Для получения такой большой точности достаточно запомнить простую мнемоническую фразу «Кто и шутя и скоро стремится Пи узнать число тот знает». Если заменить каждое слово на цифру, соответствующую количеству букв в слове, то мы получим Пи — «3.1415926435».

Но иногда хочется разобраться как же получить число Пи с любой, произвольной точностью. И здесь нам помогут бесконечные ряды, которые сходятся к значению числа Пи. Самый простой из рядов — это ряд Лейбница. Его очень просто запомнить:

⨍PI/4 = 1 - 1/3 + 1/5 - 1/7 ...

Как видите это просто бесконечное число дробей с чередующимся знаком. Чтобы реализовать алгоритм, вычисляющий Пи таким образом достаточно написать простую функцию на JavaScript. Вот она:

JS
function iterPi(epsilon) {
// кто и шутя и скоро стремится пи узнать число тот знает
// 3.1415926535
// PI = 4 - 4/3 + 4/5 - 4/7 + ...
n = 1;
myPi = 4;
factor = -4;
while(Math.abs(Math.PI - myPi) > epsilon) {
myPi += factor/(n*2+1);
n++;
factor = -factor;
}
return myPi;
}

Где epsilon — это величина ошибки.

Как видите, получение числа Пи довольно простая задача. Но у ряда Лейбница есть один небольшой недостаток — он очень медленно сходится, и чем большую точность нам нужно получить, тем больше дополнительных операций нужно выполнить. Это связано с тем, что 1/х очень медленно сходится к нулю. Есть и другие ряды, которые хорошо сходятся к Пи, но их уже не так легко запомнить.

А на этом все, спасибо за внимание.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *