Comment puis-je générer Pi à un nombre donné de décimales à partir d'un script?


Réponses:


19

En supposant que vous disposez de l' utilitaire bc(Calculatrice de base) sur votre système, vous pouvez utiliser la commande suivante et un peu de bonnes vieilles mathématiques pour calculer π à 10000 décimales:

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

Cela prendra probablement un certain temps à compléter pour 10 000 décimales.

Décomposer la commande ...

  • scale = 10000 - ceci spécifie le nombre de décimales à utiliser pour le résultat
  • 4 * a (1) - cela renvoie l'arctangente de 1 [ce qui équivaut à 45 °: 45 x (π / 180), ou ¼π] puis multiplie par 4 pour obtenir π.
  • bc -l - canalise la chaîne de fonction complète dans l' utilitaire bc , -l spécifie de charger la bibliothèque mathématique standard requise pour la fonction arctangente, a () .

Pour envelopper cela dans un script comme vous le spécifiez dans votre question, utilisez votre éditeur préféré pour écrire ce qui suit et enregistrez-le sous generatepi.sh:

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

Ensuite, à partir d'un terminal, utilisez chmod +x generatepi.shle dossier dans lequel vous avez enregistré le fichier, ce qui donnera les droits d'exécution du script. La syntaxe est alors generatepi.sh [number of places]. Notez que cela utilise une manière très basique de gérer les paramètres et ne validerait pas l'entrée, alors assurez-vous de ne lui passer que des entiers positifs comme paramètre.

La plupart des systèmes Linux devraient avoir bcmais vous devrez peut-être l'installer dans certains cas (par exemple apt-get sur Ubuntu, emerge sur Gentoo, etc.). Il existe également un port de bc pour Windows .


il existe des calculatrices pi natives pour les fenêtres - les overclockers les utilisent pour les tests de stabilité
Journeyman Geek

~ 3min sur ma machine, assez inutile dans un script. +1 cependant pour l'utilisation bc.
cYrus

Je pense que le "b" dans "bc" signifie "Berkeley" plutôt que "Bench".
user1364368

Merci. Mise à jour vers la 'calculatrice de base' basée sur en.wikipedia.org/wiki/Bc_(programming_language)
Gaff
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.