NOMBRES - Curiosités, théorie et usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 15/04/2019

Orientation générale        DicoMot Math          Atlas                   Références                     M'écrire

Barre de recherche          DicoCulture              Index alphabétique       Brèves de Maths    

            

Constante

 

Débutants

Constante PI

Généralités

 

Glossaire

PI

 

 

INDEX

 

Constante PI

 

Programmation

 

Python

 

Introduction

Calcul

Formules

Propriétés

Historique

Valeur

Décimales

Curiosités

Valeur (Suite)

Programmation

 

Sommaire de cette page

>>> Instructions donnant Pi

>>> Calcul itératif de Pi Maple      >>> Python

>>> Calcul rapide de Pi Maple      >>> Python

 

>>> Décimales de Pi

>>> Décimales binaires de Pi

 

 

 

 

 

Programmation DE

Calcul des décimales,

*    Instructions donnant directement la valeur de Pi;

*    méthode simple mais lente en Maple et en Python;

*    méthodes rapides en Maple et en Python.

Extraction des décimales et leur conversion en binaire.

 

Anglais: Pi value to 100 decimal places

 

 

Instructions donnant Pi

Maple

Python simple (15 décimales)

 

Plus de décimale nécessite le calcul de Pi >>>

 

 

 

Calcul itératif de Pi (Maple)

 

Calcul de Pi selon la formule de Gregory-Leibniz:

 

 

Voir Programmation Maple

 

Commentaires

 

La programmation la plus simple avec cette formule.

À chaque itération, on calcule deux termes et leur différence. Ce qui évite de manipuler le signe.

 

Résultat de l'exécution en bleu.

 

Avec 500 000 termes, on obtient ce piètre résultat avec cinq décimales.

D'où la recherche de méthodes plus rapides.

 

 

 

Le calcul en une seule instruction.

N'offre, bien sûr, pas plus de précision.

 

 

Calcul itératif de Pi (Python)

Programme simple

 

Commentaires

La programmation la plus simple avec la méthode de Gregory-Leibniz.

Définition de la fonction calcul de Pi (CalPi) avec nd termes. Le calcul progressif de Pi est mémorisé en PP. L'alternance de signe dans la somme est matérialisée par s qui vaut alternativement 1 et -1

 

Résultat de l'exécution en bleu.

 

Avec cent millions de termes, on obtient sept décimales en quelques minutes de calcul.

 

Programme pour l'exemple

 

Commentaires

 

Méthode "lente" de Gregory-Leibniz.

 

Mise en place d'un compteur de temps (deux premières et deux dernières instructions).

 

On calcule en grande précision (decimal). Compte tenu de la convergence ce mode est totalement inutile, donné pour l'exemple d'utilisation de ce mode de calcul en Python.

 

Toujours du fait de la lenteur, on demande une trace du calcul tous les 10 000 pas de calcul avec n % (qui veut dire mod) 10000 == 1.

 

 

 

 

Résultat de l'exécution en bleu.

 

Avec 50 000 termes (100 000 / 2), on atteint péniblement quatre décimales (résultat en jaune) en 0,13 seconde.

 

Avec ½ milliard de termes et 8 minutes de calcul:

3,1415926515897935218 (issu du calcul)

3,1415926535897932384 (valeur de Pi)

 

 

 

 Calcul rapide de Pi (Maple)

 

Commentaires

Méthode de convergence basée sur le calcul d'un' sorte de moyenne arithmético-géométrique.

 

Initialisation de a (moyenne arithmétique), de b, moyenne géométrique et de p la valeur initiale donnée à Pi  (ici, une valeur très proche: 2 + rac(2) = 3,4142…

 

Chaque itération met à jour ces moyennes.

En fin de calcul, affectation des nouvelles valeurs à ces moyennes.

 

La convergence est extraordinaire. Avec ces cinq itérations, on obtient 84 décimales justes. Une décimale de plus et la quantité de décimales est doublée.

 

Impression du résultat de calcul

3.1415926535 8979323846 2643383279 5028841971 6939937510 5820974944 5923078164 0628620899 8630440947

 

a := sqrt(2); b := 0; p := 2+sqrt(2); for i to 5 do an := 1/2*(a^(1/2)+1/a^(1/2)); bn := a^(1/2)*(b+1)/(b+a); pn := p*bn*(1+an)/(1+bn); a := an; b := bn; p := pn end do: print(evalf(p, 100)):

Listing pour copie dans Maple.

 

 

Calcul rapide de Pi (Python)

 

Programme rapide simple

 

Avec une itération de plus

 

Commentaires

Méthode identique à celle vue ci-dessus.

 

Note: pour le calcul de an, le logiciel n'a pas admis ½ (---) mais a préféré (----) / 2 . J'avoue en ignorer la raison.

 

Résultat de calcul

Avec seulement cinq itérations, on a bien les 84 décimales exactes comme ci-dessus, et cela en une fraction de seconde.

 

Avec six itérations, on attient 170 décimales exactes sur 200 chiffres demandés.

 

Programme hyper rapide (programmation avancée)

 

 

Les dernières décimales jusqu'à la 10 000e.

3,14 …

         

 

Ce programme utilise la formule d'Almkvist Berndt basée aussi sur le principe de la moyenne arithmético-géométrique:

Sa convergence est quadratique.

 

Avec les 18 itérations (range 18) demandées, réalisées en une fraction de seconde, on obtient plus de 10 000 décimales exactes (je n'ai pas testé au-delà).

 

Source: Rosetta Code

 

Dernière ligne pour comparaison avec les données fournies par Maple avec evalf (Pi, 10000)

 

 

Décimales de Pi (Maple)

 

Procédure nommée p (pour Pi) demandant un entier positif n comme entrée.

Calcul avec une précision égale à n (Digits:=n).

Détail des calculs pas à pas et impression du résultat.

a)    suppression de la virgule avec op(1,…).

b)   conversion de ce nombre en décimal; astuce pour obtenir les chiffres dans une liste, mais à l'envers.

c)    mise à l'endroit des chiffres de la liste et suppression des crochets par op(  ).

 

En bleu, résultat de ces trois opérations.

 

 

Il n'est pas interdit de compacter toutes ces étapes en une seule instruction …

 

Listing pour copie directe dans Maple

p := proc (n::posint) local a, b, c, d; Digits := n; c := op(ListTools:-Reverse(convert(op(1, evalf(Pi, n)), base, 10))) end proc: p(10);

 

 

Décimales binaires de Pi (Maple)

Nombre Pi  en binaire

 

Utilisation de l'instruction de conversion en binaire en précisant la quantité de décimales (50).

Sans oublier de convertir le nombre Pi en format flottant (evalf) avec suffisamment de décimales.

 

attention.png  Pour obtenir 50 chiffres binaires exacts de Pi, il faut au moins 17 décimales.

Nombre Pi  et ses décimales, une par une

 

Procédure nommée p (pour Pi) demandant un entier positif n comme entrée.

Calcul avec une précision égale à n (Digits:=n).

Détail des calculs pas à pas et impression du résultat.

d)   calcul des décimales de Pi en binaire. Ne pas oublier evalf.

e)    suppression de la virgule avec op(1, b).

f)     conversion de ce nombre en décimal; astuce pour obtenir les chiffres dans une liste, mais à l'envers.

g)   mise à l'endroit des chiffres de la liste et suppression des crochets par op(  ).

 

En bleu, le résultat de ces quatre opérations.

 

Il n'est pas interdit de compacter toutes ces étapes en une seule instruction …

 

Listing pour copie directe dans Maple

p := proc (n::posint) op(ListTools:-Reverse(convert(op(1, convert(evalf[n](Pi), binary, n)), base, 10))) end proc: p(10);

 

 

 

 

 

Suite PI

*  Décimales de Pi – Course aux décimales

*  Décimales de Pi – Observations

*  Historique du calcul de Pi

*  Mnémotechnique de Pi

*  Réduites de Pi – Calculs

*  Approximations de Pi par des racines

*  Approximations de Pi avec la suite de Farey

Voir

*  Arc tangente

*  Calcul mentalIndex

*  Cercle

*  Constantes Mathématiques

*  FractionGlossaire

*  GéométrieIndex

*  PiGlossaire

*  Quadrature du cercle

Site

*    OEIS A00601 – Expansion of Pi in base 2

Cette page

http://villemin.gerard.free.fr/Wwwgvmm/Geometri/PiProgra.htm