MPSI : TP d`informatique Dichotomie et calculs d

Transcription

MPSI : TP d`informatique Dichotomie et calculs d
MPSI : TP d’informatique
Dichotomie et calculs d’intégrales
1
Dichotomie
1. Traduire en python l’algorithme de calcul de solution approchée d’une équation par la méthode dichotomie.
Pour mémoire, l’algorithme était le suivant :
Entrées : f : fonction, h : flottant strictement positif, a, b flottants
Sorties : un encadrement d’un nombre x ∈ [a, b] tel que f (x) = 0, à la précision h
Variables : deb, f in, m flottants
début
Vérifier que f (a). f (b) < 0, sinon renvoyer une erreur.
deb ← a
f in ← b
tant que f in − deb ≥ h :
f in + deb
m←
2
si f (m). f (deb) < 0 :
f in ← m
sinon:
deb ← m
fin
fin
renvoyer (deb, f in)
fin
Algorithme 1 : dichotomie
2. Démontrer que l’algorithme termine.
3. Calculer le nombre de fois que la boucle "tant que" s’effectue en fonction de a, b, et h.
4. Quelle est l’opération élémentaire potentiellement la plus coûteuse dans cet algorithme ? Dans la suite, lorsqu’on
parlera de complexité, nous compterons uniquement cette opération.
5. Calculer la complexité de cet algorithme. On donnera d’abord la complexité exacte, puis un équivalent, puis un
ordre de grandeur (i.e. un "grand O").
6. Démontrer la correction de cet algorithme.
7. On suppose que f (a) < 0. En quoi cela permet-il d’améliorer la vitesse de l’algorithme ?
Et dans le cas où f (a) > 0, comment se ramener à la situation f (a) < 0 ?
Écrire l’algorithme optimisé, et le programmer sous python.
√
8. Applications immédiates : calculer des valeurs approchées de 2 et π à la précision maximale possible avec le
type flottants.
9. Application moins immédiate : demander à Eric.
2
Calcul approché d’intégrales
1. Programme la méthode des trapèzes ou des rectangles.
1
2. Calculer des valeurs approchées des nombres suivants en utilisant uniquement les opérations élémentaires +, ×, /
(i.e. sans charger la bibliothèque "numpy" ni "math").
(a) ln(2) ;
(b) π ;
(c) e (on pourra utiliser l’algorithme de dichotomie de la partie précédente).
Remarque: Ce n’est pas par cette méthode que numpy calcule les valeurs approchées de ces nombres : vous
verrez très prochainement plus efficace.
2