Seconde SI 1 Nom :......................................
Algorithmes de calcul approch´
e de 3
1. Algorithme de balayage
L’algorithme peut se d´ecrire ainsi :
Algorithme 0.1: Calcul de 3par balayage()
variables enti`eres p
variables r´eelles r
r1
pour p1jusqu’`a 10
faire
tant que r2<3
rr+ 10p
rr10p
Afficher (r)
La traduction en Python peut ressembler `a ceci :
 
r=1
for pi n range(10 ):
while(r*r<3):
r=r+10 ** (-p)
r=r-10 ** (-p)
print(r)
 
Tester ce programme, et v´erifier que les valeurs approch´ees de 3 donn´ees
sont toutes par d´efaut (des troncatures).
Pour am´eliorer son comportement, on peut utiliser les nombres d´ecimaux de
Python : getcontext.prec() d´esigne le nombre de chiffres voulus. On peut
le fixer `a 101 pour avoir 100 d´ecimales de 3 avec l’algorithme pr´ec´edent :
 
from decimal import *
getconte xt ( ) .prec=101
r=Decimal(1)
for pi n range(101 ):
while(r*r<Decimal(3) ) :
r=r+Decimal(10 )** (-p)
r=r-Decimal(10 )** (-p)
print(r)
 
2. Algorithme de Heron d’Alexandrie
1
(a) Simplifier l’expression 3
3en utilisant le fait que 3 = 3×3 :
3
3=........
(b) On admet que le tableau de variations de x7→ 3
xest le suivant sur
[1; +[ :
x1 +
3
x&
Alors si xest une valeur approch´ee de 3 par d´efaut (soit x63), que
peut-on dire de 3
x? .................................
(c) R´eciproquement, x= 2 est une valeur approch´ee par exc`es de 3 (parce
que 22= 4 >3) ; que peut-on alors dire de 3
x=3
2? (on comparera son
carr´e 3
22
=....
.... avec 3) : ........................................................................
(d) Calculer la moyenne de 2 et 3
2; on admettra que c’est une meilleure valeur
approcee de 3 que 2 et que 3
2:.............
L’algorithme de Heron d’Alexandrie consiste `a partir d’une valeur approch´ee
xde 3, puis `a la remplacer r´ep´etitivement par sa moyenne avec 3
x:
 
x=1
for ni n range(10 ):
x=(x+3/x)/2
print(x)
 
Au bout de combien d’it´erations a-t-on 10 d´ecimales correctes ?........
Toutes les approximations de 3 ainsi obtenues sont des fractions :
 
from fractio ns import *
x=Fraction(1)
for ni n range(8):
x=(x+3/x)/2
print(x)
 
3. Questions non not´ees
L’algorithme de Heron est suffisamment rapide pour calculer presque instan-
tan´ement 100 d´ecimales de 3 :
 
from decimal import *
x=Decimal(1)
for ni n range(10 ):
x=(x+Decimal(3)/x)/2
print(x)
 
V´erifier que l’algorithme de Heron peut calculer 1000 d´ecimales de 3 en moins
d’une seconde, ce qui n’est pas le cas avec l’algorithme par balayage.
2
1 / 2 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !