Informatique tronc commun TP 9
25 janvier 2014
Note : après la séance, vous devez rédiger un compte-rendu de TP et le faire parvenir à votre enseignant, au plus tard une semaine après la séance de TP.
Ce compte-rendu sera pour cette séance le fichier python contenant le code demandé (avant chaque question, on reportera en commentaire le numéro de la question),
Le nom de votre fichier python sera impérativement forme dupont_jean_tp09.py, où dupont est à remplacer par votre nom et jean par votre prénom, les deux étant en minuscules (même la première lettre) et sans caractère accentué.
Dans la mesure du possible, on justifiera le code demandé par des invariants.
1 Méthode des trapèzes
On s’intéresse au calcul approché d’une intégraleI =Rb
af, où a, b∈Ravec a < betf : [a, b]→R est une application «raisonnable». Nous commençons ici par la méthode des trapèzes.
1. Pourn∈N, on noteTnla valeur donnée par la méthode des trapèzes pour l’intégraleRb af lors- qu’on découpe l’intervalle[a, b]en2nintervalles de largeurb−a2n (attention :relire attentivement cette définition).
Écrire une fonction trapeze(f,a,b, n) retournant la liste desTk pourk∈[[0, n[[.
2. Étant donné une suiteuconvergeant vers une limiteL, on peut posern=un−Lpourn∈Net rn=n/n+1. Étudier (rn)permet de donner une idée de la vitesse de convergence de u. Écrire une fonction erreur(L,t) où t est la liste des uk pour k ∈[[0, n[[ (oùn ∈N) et retournant la liste des k associés pourk∈[[0, n[[.
3. Écrire une fonction cv(L, t) où t est la liste des uk pourk ∈[[0, n[[ (oùn∈ N∗) et retournant la liste des rk associés pour k∈[[0, n−1[[.
4. Utiliser ces fonctions pour étudier expérimentalement la convergence de la suite (Tn) dans le cas où a= 1,b= 2 etf :t7→t−1. Vers quelle valeur semble tendre(rn)dans ce cas1?
5. Même question dans le cas de l’application f :t7→et aveca= 0etb= 1 6. Même question pour le cas f :t7→ 1+t12,a= 0 etb= 3.
2 Accélération de convergence
On considère ici une suiteuconvergeant vers une limite L.
1. Attention : inutile d’aller chercher pourntrès grand car plus on découpe l’intervalle[a, b], plus le nombre d’erreurs qui vont s’accumuler va être élevé.
1
On pose n=un−Let rn=n/n+1 pourn∈N. On suppose que rn tend vers une constante K, si bien que pour nassez grand, on peut penser qu’on a :
n≈Kn+1 un−L≈K(un+1−L) (K−1)L≈Kun+1−un
L≈ Kun+1−un K−1
On est donc conduit à définir la suiteu0 définie par :
∀n∈N u0n= Kun+1−un
K−1
et on espère que la suite u0 ainsi définie convergera plus vite versL queu.
1. Écrire une fonction accelere_cv(K,t) prenant en argument K et une liste t de longueur n contenant les valeurs de uk pour k ∈ [[0, n[[ et retournant la liste des valeurs de u0k pour k ∈ [[0, n−1[[.
2. On peut appliquer cette méthode en choisissant bien la constanteK pour définir une suite(Tn0) à partir de la suite (Tn) (indication : la valeur K à prendre est un entier). Écrire une fonction trapeze_acc1(f,a,b,n) retournant la liste desTk0 pourk∈[[0, n[[.
3. Étudiez expérimentalement la vitesse de convergence de (Tn0) dans les trois cas particuliers étudiés plus haut (et trouver vers quelle limite la suite(rn0)associée converge).
4. On peut de nouveau appliquer cette méthode d’accélération à la suite(Tn0)pour obtenir une suite (Tn00). Écrire une fonction trapeze_acc2(f,a,b,n) retournant la liste des (Tn00) pour k∈[[0, n[[.
5. Étudiez expérimentalement la vitesse de convergence de (Tn00) dans les cas particuliers étudiés jusqu’ici.
6. On conjecture alors qu’on peut itérer ce procédé d’accélération de convergence et construire ainsi successivement
Tn(0)
= (Tn), Tn(1)
= (Tn0), Tn(2)
= (Tn00), Tn(3)
= (Tn000), . . . . Vous
préciserez quelle constante Kkvous conjecturez devoir appliquer pour définir Tn(k+1)
à partir de
Tn(k)
.
7. Écrire une fonction R(f, a, b, n) calculant la liste
Tk(k)
pouri∈[[0, n[[.
8. On s’intéresse maintenant au cas où on af :t7→ 1+t12 eta= 0etb= 1. On a alorsI =R1 0
1 1+t2dt.
On sait calculer I de façon exacte mathématiquement (que vaut-elle ?). Expérimentalement, à partir de quelle valeur de n la valeur de Tn(n) est-elle une approximation de I avec une erreur inférieure à 10−9?
9. Pour calculer ceR(n)n , combien a t-on effectué d’appels à la fonctionf?
10. Quelle valeur de k faut-il choisir pour que Tk00 soit une approximation de I avec une erreur inférieure à 10−9?
11. Quelle valeur de k faut-il choisir pour que Tk0 soit une approximation de I avec une erreur inférieure à 10−9?
12. Quelle valeur de k faut-il choisir pour que Tk soit une approximation de I avec une erreur inférieure à 10−9?
2