Le nombre irrationnel \sqrt{2} est la solution de l'équation x^2 = 2 .
On souhaite déterminer un encadrement de \sqrt{2} à une precision de 10^{-n} , où n est un entier donné.
On donne la droite y = 2 et la courbe f(x) = x^2 .
Que peut-on dire de \sqrt{2} ?

La courbe de la fonction f définie sur \mathbb{R} par f(x) = x^2 coupe la droite y = 2 en deux points.
L'abscisse du premier est entre -2 et -1 , donc négative. Ce ne peut pas être un encadrement de \sqrt{2} , qui est positive.
Le second est entre 1 et 2 .
Ce point d'intersection a pour abscisse \sqrt{2} .
On en déduit donc que 1 < \sqrt{2} < 2 .
Pour obtenir un encadrement à 0{,}1 de \sqrt{2} , quelles valeurs de f doit-on calculer ?
Il faut faire varier les valeurs de x et calculer f(x) pour se rapprocher de 2 le plus possible. Avec un pas de 0{,}1 , on aura une valeur approchée de \sqrt{2} à 0{,}1 près lorsque f(x) passera au-dessus de 2 .
Or, on sait que :
1 < \sqrt{2} < 2
Donc les valeurs qu'il faut utiliser sont :
f(1{,}1), f(1{,}2), \cdots, f(1{,}9)
Pour obtenir un encadrement à 0{,}1 de \sqrt{2} , quelles valeurs de f doit-on calculer ?
De la même façon, comme 1 < \sqrt{2} < 2 , on va calculer les valeurs de f pour des valeurs espacées de 10^{-n} entre 1 et 2 :
f(1 + 10^{-n}), f(1 + 2 \times 10^{-n}), \cdots, f(1 + 9 \times 10^{-n})
Quel programme Python permet d'encadrer avec une précision de 10^{-n} le nombre \sqrt{2} ?
On applique exactement l'algorithme présenté dans les questions précédentes. Tant que f(x) = x^2 est plus petit que 2 , on avance de \verb/pas/.
L'intervalle contenant \sqrt{2} avec une précision de 10^{-n} sera le \verb/x-pas, x/ avec \verb/x/ la première valeur telle que \verb/x**2 > 2/.
Pour définir une fonction en Python, on utilise le mot-clé \verb/def/ suivi du nom de la fonction et des arguments entre parenthèses. Elle se termine par l'instruction \verb/return/ qui renvoie le résultat souhaité.
Ainsi :
\verb/ def sqrt2(n): /
\verb/ pas = 10**(-n) /
\verb/ x = 1 /
\verb/ while x**2 < 2): /
\verb/ x = x + pas /
\verb/ return (round(x-pas,n), round(x,n)) /