// codeart.ru / Работаем с кодом / Как найти число Пи Форум

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

Автор: Evgeniy Sergeev

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

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

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

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

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



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/х очень медленно сходится к нулю. Есть и другие ряды, которые хорошо сходятся к Пи, но их уже не так легко запомнить.

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

Leave a Reply

« »