Académique Documents
Professionnel Documents
Culture Documents
Commentaires
Lorsqu’on écrit une boucle, on doit s’assurer de deux choses à savoir :
qu’elle ne boucle pas à l’infini, et donc que son exécution finit par s’arrêter
qu’à la sortie, elle produit le résultat escompté.
Pour démontrer la terminaison d’une boucle, on exhibe une quantité, fonction des
paramètres et strictement positive, qui décroit strictement à chaque itération. C’est le
variant. Pour démontrer qu’une boucle produit le résultat escompté, on exhibe un
invariant, c-à-d une propriété qui :
est vérifiée avant l’entrée dans la boucle
si elle est vérifiée avant une itération, alors elle est vérifiée après celle-ci
le résultat escompté à la fin de la boucle, est modélisé par
<Condition_finale> = <Invariant> et <Condition d’arrêt>
A noter qu’il est souvent utile de représenter l’invariant en utilisant un dessin.
Exercice 1 : Ecrire avec invariant, variant puis preuve de validité, les algorithmes permettant de
résoudre les problèmes suivants :
1/4
Recherche séquentielle d’un élément val dans un vecteur V[1..n]
Recherche séquentielle avec sentinelle en position 0, d’un élément val dans un vecteur
V[1..n]
Recherche dichotomique d’un élément val dans un vecteur trié V[1..n].
Indication : Réduire systématiquement l’intervalle de recherche à un point.
Fusion de deux vecteurs triés par ordre croissant A[p..q] et B[r..s] dans C[n..m].
A partir d’un sous-vecteur trié V[1..i-1], créer un vecteur trié V[1..i], par insertion de V[i]
2/4
Si x > 0 alors pgcd (x, 0) = x
Si x > 0 et y > 0, alors pgcd(x, y) = pgcd (y, r) où r est le reste de la division de x par y.
On précisera les éléments suivants : invariant, variant, condition de sortie, condition finale.
Exercice 4
Dire ce que fait le programme suivant et le prouver :
i := 1 j := n
tantque i<j faire
si t(i)<=t(j) alors i := i+1
sinon j := j-1
resultat := t(i)
3/4
On s’intéresse maintenant à une méthode itérative dite du gradient qui à chaque pas améliore
l’approximant xn en évoluant dans une direction d dans laquelle f diminue. Autrement dit on
prend xn+1 = xn + dn, étant un paramètre positif. On peut alors, une fois qu’on a trouvé dn,
soit minimiser f(xn+1 = xn + dn) par rapport à
soit se contenter de prendre assez petit
6.9) Faites une proposition pour dn en utilisant le développement de Taylor de f(xn+1 = xn + dn)
au voisinage de xn
On considère maintenant la méthode dite de Newton qui consiste à remplacer localement la
fonction f par la parabole correspondant au développement limité à l’ordre 2.
6.10) Donner le développement limité de f(xn + ∆x) à l’ordre 2 ainsi que la valeur de ∆x qui le
minimise
6.11) Déduire un algorithme itératif de calcul d’une approximation de x*.
6.12) Rappeler le développement limité f(xn + ∆x, yn + ∆y) d’une fonction différentiable f de
deux variables x, y autour de (xn, yn).
6.13) Donner une condition simple paramétrée par un réel positif , pour que (xn + ∆x, yn +
∆y) soit une meilleure approximation que (xn, yn).
6.14) Proposer une méthode du gradient en dimension 2 pour la calcul d’une valeur
approchée du minimum d’une fonction différentiable.
4/4