Calculer pi en ligne de commande sous linux

pi en ligne de commande bash sous linuxL'idée de départ, est de me créer un tee-shirt sur lequel il y aurait pi suivi de 311 décimales pour en faire un "truc" graphique.

Je passe sur l'aspect graphique souhaité, je vous montrerai peut-être une fois l’œuvre terminée...

Soit! C'est très futile, mais les futilités nous emmènent toujours vers des chemins imprévus, comme l'idée d'en faire un billet.

Bref! Pour ce graphisme, j'ai besoin de pi à 311 décimales derrière la virgule, soit 3,(311chiffres).
Ouvrons un terminal, certains dirons une console... et voici la ligne de commande bash avec le résultat:

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

$ echo "scale=311; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
28810975665933446128475648233786783165271201909145648566923460348610\
45432664821339360726024914127372458700660

Explications:

  • "echo" renvoie un affichage sur console (saisie, écriture, résultats)... Voir Initiation au shell (boucle for, do, done)
  • "scale=x" scale permet d'indiquer le nombre de chiffres après la virgule (remplacer x par le chiffre souhaité)
  • "4*a(1)" a(1) se base sur la fonction Arc Tangente a(). Cette formule "4*a(1)", permet entre autres, le calcul du nombre pi.
  • "|" «pipe» redirige le résultat d'une commande dans le flux d'entrée d'une autre commande. Ici la commande suivante sera "bc" qui est une commande de calculatrice «basic calculator»
  • "bc -l" récupère la formule "4*a(1)" après le "pipe" pour effectuer le calcul. L'option "-l" utilise la librairie mathématique standard (Define the standard math library) qui utilise, entre autres, la fonction Arc Tangente a()... Voire "man bc"

Si l'on met à "scale" un nombre plus "gros", par exemple "2000" le temps de réponse est plus long, on peut "mesurer" le temps de réponse avec la commande "time", exemple:

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

$ time echo "scale=2000; 4*a(1)" | bc -l
3.141592653589793238462643383279502884197169399375105820974944592307\
81640628620899862803482534211706798214808651328230664709384460955058\
22317253594081284811174502841027019385211055596446229489549303819644\
(...)
74427862203919494504712371378696095636437191728746776465757396241389\
086583264599581339047802759008
real    0m2.470s
user    0m2.470s
sys    0m0.001s

Pas forcement utile au quotidien, donc nécessaire!

Articles à lire sur des sujets Similaires

Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.

Ajouter un rétrolien

URL de rétrolien : https://chispa.fr/sima78/index.php?trackback/71

Haut de page