Gaudino, casier 5 version 2.1
Lycée Masséna ´
Etude de suites récurrentes P.C.S.I.834
Le but du T.P. est l’étude des suites récurrentes du type un+1 =f(un). Toute l’étude en Python se fera en flottants.
On rappelle que l’affichage d’un graphe se fait essentiellement avec la commande plot sous la forme :
plot(listes des abscisses, listes des ordonnées)
Plus précisément : pour tracer le graphe de sinus entre 0 et 10
from math import * #on charge le module math
import numpy as np #et tous les modules pour l'affichage
import matplotlib as mp #et oui
import matplotlib.pyplot as plt #tout ça
x = np.linspace(0.,10.) #fabrication automatique des abscisses entre 0 et 10
y = [sin(t) for t in x] #les ordonnées du graphe, par compréhension par exemple
plt.plot(x,y,'r-') #le graphe, avec les options : rouge (r) et trait plein (-)
#on aura besoin aujourd'hui de mettre o à la place de - : affichage de gros points
plt.axhline(color='k') #l'axe x. k pour black...
plt.axvline(color='k') #l'axe y. k pour black...
plt.show() #le show affiche le tout (sans cela, rien n'est affiché)
#comment, c'est déjà fini ?
I. Cas général
1. Déclarer la fonction f:x7→ 2 + ln(x) avec un def.
Dans la suite, on pourra utiliser une facilité propre à Python : une manière rapide de faire cela est de taper :
lambda x: l’expression de la fonction, qui dépend de x(lambda x: est l’analogue de x7→). Plus précisément,
écrire f = lambda x: 2. + log(x).
2. On considère la suite (un)n∈Ndéfinie par : u0= 1 et ∀n∈N, un+1 =f(un). Attention, 1 doit être un flottant
(et donc l’auteur de ces lignes a fait une petite erreur. . .).
(a) Programmer Python de manière à calculer le terme un(la valeur de nsera fixé à 20 pour expérimenter).
On ne demande pas de stocker les résultats intermédiaires. Le corrigé que vous montrera votre prof. est à
considérer comme une question de cours (au programme officiel), à restituer sans délai.
(b) Modifier ce programme de manière à obtenir l’ensemble des points de coordonnées (u0, u1),(u1, u2),...,(un−1, un).
En pratique, on cherchera à avoir les deux listes séparées : celle des abscisses, et celle des ordonnées.
(c) ´
Ecrire les instructions qui permettent à Python de tracer sur un même graphe : la fonction fentre 0,1
(zéro virgule un, et pas 0, qui provoquerait une erreur) et 4 en rouge, la première bissectrice en vert, et ces
points (et les axes) en noirs.
(d) Modifier ce qui précède de manière à tracer non pas ces points mais l’escalier qu’ils constituent : on tracera
les segments qui relient les points (u0,0), puis (u0, u1) puis (u1, u1) puis (u1, u2) puis (u2, u2) . . .
(e) Fabriquer une fonction Escargot qui prend comme paramètre la fonction f, la valeur initiale u0, le nombre
de points à calculer n, l’abscisse minimale xmin du graphe et l’abscisse maximale xmax du graphe, et qui
affiche le graphe sur [xmin, xmax] de la fonction, de la première bissectrice, et de l’escalier.
Cette fonction va permettre la visualisation simple de ce type de suite, en particulier en permettant de
zoomer sur les phénomènes intéressants.
Notez quand même que faire tracer un graphe par une sous-fonction est une mauvaise idée : cette fonction
agit sur son environnement, on parle d’effet de bord, et c’est délicat 1. Si cela pose un problème (suivant
l’évolution des versions de Python), abandonnez la fonction et revenez au code précédent.
(f) Pour ceux qui sont en avance (ceci est donc à faire APR`
ES les questions suivantes), on peut raffiner
l’affichage : calculer automatiquement le domaine effectif des x, pour afficher l’escargot complet et la fonction
sans avoir à préciser dans les arguments les valeurs xmin et xmax.
Comprendre également que cette précaution est inutile pour le domaine des y.
3. Regarder le comportement de la suite pour la fonction x7→ 1−cos(x) successivement pour une valeur au choix
de u0>0 puis u0<0.
1. Vous ne savez pas ce que ça veut dire ? Moi non plus, mais dit avec assez d’assurance, ça passe très bien.
1