Como posso gerar Pi para um determinado número de casas decimais de um script?

8

Alguém tem um script que eu poderia facilmente executar como:

sh generatepi.sh 10000

onde 10000 é o número de casas decimais π (Pi) geradas.

    
por LanceBaynes 26.04.2011 / 12:00

1 resposta

18

Supondo que você tenha o utilitário bc (Calculadora básica) em seu sistema, você pode usar o seguinte comando e um pouco de boa matemática antiga para calcular π para 10.000 casas decimais:

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

Isso provavelmente levará um bom tempo para ser concluído por 10.000 casas decimais.

Quebrando o comando ...

  • scale = 10000 - especifica o número de casas decimais a serem usadas para o resultado
  • 4 * a (1) - retorna o arco tangente de 1 [que é igual a 45 °: 45 x (π / 180) ou ¼π] e depois multiplica por 4 para obter π.
  • bc -l - canaliza a string de função completa para o utilitário bc , -l especifica para carregar a biblioteca matemática padrão necessária para a função arctangent , a () .

Para envolver isso em um script conforme você especifica na sua pergunta, use seu editor favorito para escrever o seguinte e salvá-lo como generatepi.sh :

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

Em seguida, em um terminal, use chmod +x generatepi.sh da pasta em que você salvou o arquivo, o que fornecerá os direitos de execução do script. A sintaxe é então generatepi.sh [number of places] . Observe que isso usa uma maneira muito básica de manipular parâmetros e não validar a entrada, portanto, certifique-se de passar apenas inteiros positivos como um parâmetro.

A maioria dos sistemas Linux deve ter bc , mas você pode precisar instalá-lo em alguns casos (por exemplo, apt-get no Ubuntu, emerge no Gentoo, etc.). Há também uma porta de bc para Windows .

    
por 26.04.2011 / 14:56