Archimède, célèbre savant grec, a utilisé une astucieuse méthode afin d’encadrer le nombre pi (π). Nous allons voir cette méthode et l’utiliser pour écrire un programme Python permettant d’obtenir un tel encadrement.
Principe mathématique de la méthode d’Archimède pour encadrer pi
Introduction
Étant donné un cercle de centre O et de rayon R, on y inscrit un polygone régulier à n côtés. On construit alors un polygone à n côtés exinscrit à ce même cercle.
Nous savons que le périmètre d’un cercle est égal à 2πR. Ainsi, en notant \(p_n\) le périmètre du polygone inscrit (rouge) et \(P_n\) celui du polygone exinscrit (vert), on a :$$p_n \leqslant 2\pi R \leqslant P_n.$$Il ne reste plus qu’à exprimer le périmètre des polygones…
Expression du périmètre du polygone inscrit
Le polygone inscrit peut être divisé en n triangles isocèles en O (dans l’illustration, en 6 triangles isocèles de sommet O). Notons alors:
- \(\alpha_n=\frac{360}{n}\) l’angle (exprimé en degrés) au sommet principal des triangles isocèles;
- \(c_n\) la mesure des côtés opposés aux sommets principaux (côtés du polygone);
- \(h_n\) la hauteur issue d’un sommet principal.
La hauteur \(h_n\) coupe le triangle isocèle en deux triangles rectangles; l’angle en O mesure alors \(\displaystyle\frac{\alpha_n}{2}=\frac{180}{n}\). On peut alors écrire:$$\sin\left(\frac{\alpha_n}{2}\right)=\frac{\frac{c_n}{2}}{R}$$soit:$$c_n=2R\sin\left(\frac{\alpha_n}{2}\right)=2R\sin\left(\frac{180}{n}\right).$$
En prenant R = 1 (par soucis de simplification), on obtient alors que le périmètre du polygone inscrit est :$$\boxed{p_n=2n\sin\left(\frac{180}{n}\right)}$$
Expression du périmètre du polygone exinscrit
Intuitivement, on peut penser que le polygone exinscrit est un agrandissement du polygone inscrit. Pour avoir le rapport d’agrandissement, il faut regarder la hauteur en orange \(h_n\) et la prolonger jusqu’au cercle: cela donne la hauteur d’un triangle isocèle découpé dans le polygone exinscrit.
Or, cette dernière hauteur est égale au rayon du cercle. Donc pour nous, cette hauteur vaut 1. Le rapport d’agrandissement est donc égal à :$$k_n=\frac{1}{h_n}.$$Or, dans le triangle rectangle que nous avons utilisé précédemment, on peut dire que:$$\cos\left(\frac{\alpha_n}{2}\right)=\frac{h_n}{R}=h_n.$$Par conséquent,$$k_n=\frac{1}{\cos\left(\frac{\alpha_n}{2}\right)}.$$
Le périmètre du polygone exinscrit est donc:$$P_n=k_n \times p_n$$soit:$$P_n=2n \sin \left( \frac{180}{n} \right) \times \frac{1}{ \cos \left( \frac{180}{n} \right) }$$que l’on peut aussi écrire:$$\boxed{P_n=2n\tan\left(\frac{180}{n}\right)}$$
Encadrement de pi
On peut alors déduire des calculs précédents que:$$ 2n \sin \left( \frac{180}{n} \right) \leqslant 2\pi \leqslant 2n\tan\left(\frac{180}{n}\right)$$En effet, le périmètre du cercle est \(2\pi R = 2\pi\times 1=2\pi\).
On peut simplifier par deux les membres de cet encadrement, ce qui donne :$$\boxed{n \sin \left( \frac{180}{n} \right) \leqslant \pi \leqslant n\tan\left(\frac{180}{n}\right)}$$
Méthode d’Archimède pour encadrer pi: programme Python
Voici un programme possible:
from math import sin, tan, radians def archimede(p): a, b = 0, 1 # valeurs arbitraires n = 6 while (b-a) > 10**(-p): a = n * sin( radians(180/n) ) b = n * tan( radians(180/n) ) n = n + 1 return a,b print (archimede(10))
La fonction archimede admet un entier pour argument: c’est la précision que l’on souhaite. Dans notre exemple, on veut un encadrement d’amplitude maximale \(10^{-10}\) donc on appelle archimede(10). Le retour est le suivant:
(3.1415926535564602, 3.1415926536564593)
Et n’oubliez pas que si vous avez des difficultés en maths, je peux vous aider par webcam !
Bonjour, j’aimerais savoir comment on passe de la méthode d’archimède au programme pyhton, je ne comprends pas vraiment la programmation. Merci !
Bonjour. Il suffit juste de prendre la formule du dessus (qui est encadrée) et de faire varier la valeur de \(n\) tant que la différence entre \(a\) et \(b\) est plus grande que \(10^{-p}\) [while (b-a) > 10**(-p)].