Как я могу сгенерировать Pi для заданного числа десятичных знаков из скрипта?

9

У кого-нибудь есть сценарий, который я мог бы легко запустить как:

sh generatepi.sh 10000

где 10000 - число сгенерированных π (Pi) десятичных знаков.

LanceBaynes
источник
7
С какой целью? Если вам просто нужны цифры: wolframalpha.com/input/?i=N%5BPi%2C+10000%5D
cYrus

Ответы:

19

Предполагая, что в вашей системе есть утилита bc(Basic Calculator) , вы можете использовать следующую команду и немного старой доброй математики для вычисления от π до 10000 десятичных знаков:

echo "scale=10000; 4*a(1)" | bc -l

Это, вероятно, займет много времени, чтобы заполнить 10 000 знаков после запятой.

Нарушая команду ...

  • scale = 10000 - указывает количество десятичных разрядов для использования в результате
  • 4 * a (1) - это возвращает арктангенс 1 [который равен 45 °: 45 x (π / 180) или ¼π], затем умножается на 4, чтобы получить π.
  • bc -l - передать всю строку функции в утилиту bc , -l указывает на загрузку стандартной математической библиотеки, необходимой для функции arctangent, a () .

Чтобы обернуть это в сценарий, как вы указали в своем вопросе, используйте ваш любимый редактор, чтобы написать следующее и сохранить его как generatepi.sh:

#!/bin/bash
echo "scale=$1; 4*a(1)" | bc -l

Затем из терминала используйте chmod +x generatepi.shпапку, в которую вы сохранили файл, который даст права на выполнение скрипта. Синтаксис тогда generatepi.sh [number of places]. Обратите внимание, что здесь используется очень простой способ обработки параметров, и он не проверяет входные данные, поэтому убедитесь, что вы передаете ему только положительные целые числа в качестве параметра.

Большинство систем Linux должны иметь его, bcно в некоторых случаях вам может потребоваться его установка (например, apt-get в Ubuntu, emerge в Gentoo и т. Д.). Также есть порт bc для Windows .

багор
источник
есть родные пи калькуляторы для Windows - оверклокеры используют их для тестирования стабильности
Journeyman Geek
~ 3 минуты на моей машине, довольно бесполезно в сценарии. +1 хоть за использование bc.
cYrus
Я думаю, что «b» в «bc» означает «Беркли», а не «Скамейка».
user1364368
Спасибо. Обновлен до «базового калькулятора» на основе en.wikipedia.org/wiki/Bc_(programming_language)
Gaff