Exercice 1 : Approcher le nombre e et majorer le reste
On admet que , et l'on pose . On veut calculer en Python.
def S(n):
s = 0
f = 1
for k in range(n+1):
if k > 0:
f = f*k
s = s + 1/f
return s- a) Expliquez le rôle de la variable `f` et donnez au millionième.
- b) Que vaut ? Comparez à .
- c) On admet la majoration . Vérifiez-la pour .
- d) Pourquoi met-on `f = f*k` à jour dans la boucle plutôt que de recalculer à chaque tour ?
Voir la correction
Réponses
- a) `f` contient ;
- b) , écart
- c) majore l'écart
- d) Une multiplication par tour au lieu de
a) La variable `f` contient la factorielle du rang courant : elle vaut pour , puis elle est multipliée par à chaque nouveau tour, ce qui donne successivement , , , , , . On accumule donc , soit . Deux accumulateurs travaillent en parallèle, l'un additif pour la somme, l'autre multiplicatif pour la factorielle, chacun initialisé à l'élément neutre de son opération, et .
b) On obtient , à comparer à . Les huit premières décimales coïncident, et l'écart vaut environ . Onze termes suffisent donc à une précision que le balayage de l'exercice suivant n'atteindrait qu'après des millions de tours : c'est la puissance des factorielles au dénominateur, qui décroissent bien plus vite que n'importe quelle suite géométrique.
c) Pour : , donc . L'écart réellement constaté, , lui est bien inférieur ✓. Cette majoration est ce que l'énoncé de bac attend : elle GARANTIT la précision sans connaître , alors que la comparaison de la question b) suppose déjà connue la valeur cherchée. C'est toute la différence entre constater une erreur et la majorer.
d) Pour une raison de COÛT. Recalculer à chaque tour demande multiplications, donc au total multiplications, un nombre proportionnel à . La mise à jour `f = f*k` n'en demande qu'UNE par tour, soit au total. Pour , cela fait environ opérations contre . Le principe est général et se retrouve à l'exercice 5 avec les coefficients binomiaux : quand un terme se déduit du précédent par une opération simple, on ne le recalcule jamais depuis le début.
Le fil de la série est posé dès cet exercice : le programme fournit une valeur approchée, et c'est une INÉGALITÉ démontrée qui dit combien elle vaut. Un résultat numérique sans majoration de l'erreur ne vaut rien au bac.