Transcript énoncé

Utilisation de Pyplot
Dans tout ce TD, on effectuera des trac´es et il convient donc de commencer par charger le module
d´edi´e en tapant
from matplotlib import pyplot as plt
1
Suite de Feigenbaum
On consid`ere la suite (un )n∈N d´efinie par son premier terme u0 = 0.4 et la relation de r´ecurrence
∀n ∈ N∗ , un = aun−1 (1 − un−1 )
o`
u a est une constante r´eelle.
On va s’int´eresser au comportement de la suite (un ) pour diff´erentes valeurs de a.
Question 1. Ici, on veut visualiser pour diff´erentes valeurs de a les termes successifs u0 , u1 , . . . , un
pour diff´erentes valeurs de a.
a. Ecrire une fonction graphe prenant en argument un r´eel a et un entier n ≥ 1. Cette fonction, qui
ne renverra rien, effectuera le trac´e de la ligne polygonale passant par les points de coordoon´ees
(k, uk ) pour k = 0, . . . , n (pour a ´egal `a la valeur argument).
b. Tester la fonction pr´ec´edente pour n = 30 et a ∈ {1.1, 2.21, 2.9, 3.12, 3.51}.
La question pr´ec´edente montre que selon la valeur de a, le comportement de (un ) est tr`es variable :
- il peut y avoir convergence (cas a = 1.1, a = 2.21 et a = 2.9) ;
- (un ) peut osciller entre deux valeurs limites et plus pr´ecis´ement il peut y avoir convergence de
(u2n ) et (u2n+1 ) vers deux limites diff´erentes (cas a = 3.12) ;
- (un ) peut osciller entre quatre valeurs limites et il y a convergence de (u4n ), (u4n+1 ), (u4n+2 ) et
(u4n+3 ) vers quatre limites diff´erentes (cas a = 3.51).
Nous allons montrer que plus a augmente (en restant dans [0, 4]) plus le comportement de (un ) est
chaotique. Pour une valeur donn´ee de a, on a constat´e que la suite (un ) oscille entre plusieurs valeurs
limites. Pour visualiser celles-ci (et leur nombre), on peut essayer, pour une valeur donn´ee de a, de
dessiner les points de coordonn´ees (a, un ) pour n = 200..220. Dans le cas d’une suite convergente, les
points vont se superposer. Si on a convergence de (u2n ) et de (u2n+1 ), on verra deux points etc.
Question 2.
a. Ecrire une fonction valeurs prenant en argument un nombre a et stockant le trac´e des points
de coordonn´ees (a, un ) pour n = 200..220.
b. Visualiser l’ensemble des points pour a variant entre 1 et 3.8 par pas de 0.01.
c. Retrouver sur le dessin pr´ec´edent les r´esultats d´ecrits plus hauts.
Question 3. On constate que, quand a augmente, la suite commence par converger puis oscille entre
deux valeurs puis entre quatre etc. D´eterminer graphiquement une estimation des valeurs limites de
a (a1 ´etant la valeur pour laquelle (un ) cesse de converger, a2 celle pour laquelle on obtient des
oscillations entre quatre valeurs, a3 celle pour laquelle on passe `a 8 valeurs). Faire des visualisations
plus fines pour raffiner vos estimations.
2
Un peu de chimie
On veut doser une solution d’acide ´ethano¨ıque par de la soude. Dans un b´echer de 250 mL contenant
vA = 10,0 mL de solution d’acide ´ethano¨ıque `a doser et 100 mL d’eau distill´ee, on a introduit l’´electrode
monobloc du pH-m`etre et la cellule du conductim`etre. On a mis en marche l’agitation magn´etique,
laquelle n’a pas vari´e pendant tout le dosage.
On a dress´e le tableau des mesures dans le fichier dosage.csv en resserrant les mesures au niveau de
l’´equivalence.
1
Un fichier CSV est un fichier texte, lisible par un tableur (OpenOffice, Excel, ...), contenant des donn´ees
sur chaque ligne s´epar´ees par un caract`ere de s´eparation (g´en´eralement une virgule, un point-virgule
ou une tabulation).
Exemple : voici les premi`eres lignes du fichier dosage.csv :
Volume ;pH ;sigma
0 ;3.20 ;135
0.55 ;3.38 ;122
Ce fichier contient le volume de soude vers´ee, le Ph mesur´e ainsi que la conductivit´e σ que nous
n’utiliserons pas. Le caract`ere de s´eparation choisi est ici le point-virgule ’ ;’. Les volumes sont class´ees
par ordre croissant.
Question 1. Dans cette question, on va importer les donn´ees du fichier pour pouvoir ensuite les traiter
avec Python. Commencez par copier les fichiers dosage.csv et dosage.py pr´esents dans l’espace
partag´e et placez la copie dans votre espace personnel (id´ealement, votre clef USB). Vous travaillerez
d´esormais avec ces fichiers.
a. Ouvrir le fichier dosage.csv avec un ´editeur de texte afin de voir sa structure. Refermer le
fichier.
b. Ouvrir le fichier dosage.py avec Pyzo. Ce script a pour objet de stocker dans des listes volume,
Ph et sigma les donn´ees num´eriques du fichier CSV. Vous allez devoir l’ex´ecuter pour r´ecup´erer
ces listes mais, pour cela, il faudra corriger quelques erreurs. Commencez par essayer de comprendre ce qu’il fait (sans ex´ecuter) puis passez `a la suite.
c. Compl´eter la seconde ligne pour indiquer `a Python le dossier de travail.
d. Ex´ecuter le script. Les listes volume, Ph et sigma sont-elles constitu´ees de flottants comme
d´esir´e ? Si ce n’est pas le cas, modifiez le script en cons´equence et recommencez.
Pour doser notre solution d’acide, on doit chercher le volume d’´equivalence ve . Nous proposons ici
deux m´ethodes
Question 2. M´ethode par recherche de point d’inflexion.
La courbe donnant le Ph en fonction du volume de soude vers´ee pr´esente un point d’inflexion lorsque
l’on atteint le volume d’´equivalence. Un tel point d’inflexion correspond `a un maximum de la d´eriv´ee.
a. Faire le graphique donnant le Ph en fonction du volume (P h = f (v)). N’oubliez pas d’ajouter
la ligne d’importation du module graphique.
b. Soit f une fonction d´efinie sur [a, b] et x0 , . . . , xn−1 une subdvision de [a, b]. On consid´erera que
)−f (xi )
i+1
f 0 ( xi +x
) ≈ f (xxi+1
. On peut ainsi obtenir deux listes lv et Phder permettant le trac´e du
2
i+1 −xi
0
graphe de f . Faire ce travail.
c. Ecrire une fonction donnant l’indice o`
u l’on trouve le maximum d’une liste. Conclure sur la
valeur de ve .
Question 3. M´ethode de Gran.
On admet que la fonction F d´efinie par F (v) = 10−Ph(v) .v est une fonction affine sur ]0, ve ] s’annulant
en ve . Retrouver graphiquement le volume d’´equivalence.
3
Retour sur le DM1
On pose M = 20 et m = 10.
A un nombre c quelconque, on associe la suite (un ) d´efinie par
u0 = 0
et
un+1 = u2n + c pour n ≥ 0.
S’il existe, on note k le plus petit entier tel que l’on ait 0 ≤ k ≤ m et |uk | > M .
On d´efinit alors la fonction f par
k
s’il existe
f : c 7→
m + 1 sinon.
2
Question 1. Donner le code d´efinissant la fonction f .
Question 2. Donner les instructions qui permettent de tracer la courbe repr´esentative de la fonction
f sur [−2, 2], en cr´eant une liste LX de 401 valeurs ´equir´eparties entre −2 et 2 inclus.
Python peut manipuler des nombres complexes. On peut ainsi supposer que le nombre c varie dans C.
La seule chose `
a savoir est que le nombre complexe i est repr´esent´e par 1j. Par exemple, le complexe
1 + 2i est repr´esent´e par 1 + 2j.
Question 3. Construire la liste de listes T telle que L[u][v] repr´esente f (xu + iyv ) o`
u xu prend 501
valeurs comprises entre −2 et 0.5 et yv prend 501 valeurs entre −1.1 et 1.1.
Question 4. La liste T code une image (T[i][j] correspond `a un pixel dont la couleur est donn´ee pa
la valeur de l’entier). En utilisant les fonctions plt.imshow et plt.show, visualiser cette image.
3