PSI_Mat2_2015_24¶
- Thème : tracé de courbes, développements limités, calcul d’équivalent.
Documentation¶
Correction d’un exercice de maths avec Python, issu des annales pour les oraux du concours Centrale-Supélec.
- Sujet : PSI 1, http://www.concours-centrale-supelec.fr/CentraleSupelec/MultiY/C2015/PSI-Mat2-2015-24.pdf
- Dates : séances de révisions, vendredi 10 et samedi 11 juin (2016).
- Auteur : Lilian Besson, pour le cours d’informatique pour tous en prépa MP au Lycée Lakanal (http://perso.crans.org/besson/infoMP/),
- Licence : MIT Licence (http://lbesson.mit-license.org).
-
PSI_Mat2_2015_24.
q0
()[source]¶ Préliminaires :
- Comme pour tous ces exercices, on commence par importer les modules requis, ici numpy et matplotlib :
>>> import numpy as np >>> import matplotlib.pyplot as plt
- En question 4 on a besoin de
scipy.integrate.quad()
, on l’importe ici :
>>> from scipy.integrate import quad
-
PSI_Mat2_2015_24.
q1
()[source]¶ Question 1.
On nous demandait de tracer, pour \(n = 2 \dots 7\), ces courbes \(\mathcal{C}_n = \{ (x_n(t), y_n(t)), t \in [0, 2\pi] \}\), définies par :
\[\begin{split}x_n(t) &= 4 \cos(t) - \cos(nt) \\ y_n(t) &= 4 \sin(t) - \sin(nt)\end{split}\]Cela suggère d’utiliser une boucle
for n in range(2, 7+1)
et les fonctions généraliséesnumpy.cos()
etnumpy.sin()
:N = 300 # Nb points t = np.arange(0, 2*np.pi, N) # t = 0 .. 2*pi avec 300 points plt.hold(True) # Mettre tous les dessins sur la même figure for n in range(2, 7 + 1): # Rappel: range(a, b) = [a, a+1, .., a+b-1] borne b non incluse ! x = 4 * np.cos(t) - np.cos(n * t) y = 4 * np.sin(t) - np.sin(n * t) plt.plot(x, y, label=("n = %d" % n)) # et pas (t, x) ou (t, y) plt.legend() # Afficher la légende, décrite avec les label=... plus haut plt.title("Cn pour n = 2..7") # On met un joli titre plt.show() # On montre la figure !
Cela donne une figure comme celle ci-dessous :
-
PSI_Mat2_2015_24.
q2
()[source]¶ Question 2.
À l’aide de la figure, on observe les symétries suivantes :
- symétrie par rapport à l’axe \(x\), car \(t \mapsto 4 \sin(t)\) et \(t \mapsto - \sin(n t)\) sont symétriques par rapport à \(\pi\),
- pour \(n\) impaire (vert, cyan, doré sur notre figure 1), symétrie par rapport à l’axe \(y\), car \(t \mapsto 4 \cos(t)\) et \(t \mapsto - \cos(n t)\) sont symétriques par rapport à \(\pi\) si \(n\) est impaire (mais \(t \mapsto - \cos(n t)\) ne l’est pas si \(n\) est pair).
-
PSI_Mat2_2015_24.
q3
()[source]¶ Question 3.
À l’aide de la figure, on observe que seule la courbe rouge (\(n = 4\)) admet des points non-réguliers, et qu’elle en a trois, correspondant à \(t = 0, 2\pi/3, 4\pi/3\).
Il faudrait aussi prouver la même chose, faites le sur papier (c’est un bon exercice). Si besoin, cf. le chapitre 24.3.3 de ce cours de MPSI (§24.3.3 p692).
Les deux fonctions \(t \mapsto x_n(t)\) et \(t \mapsto y_n(t)\) sont de classes \(\mathcal{C}^{\infty}\), mais pour étudier les points non-réguliers (aussi appelés singuliers), il faut trouver les points où le vecteur vitesse \(v(t) = [x_n'(t), y_n'(t)]\) s’annule.
On calcule d’abord le vecteur vitesse :
\[v(t) = [x_n'(t), y_n'(t)] = [ -4 \sin(t) + n \sin(nt), +4 \cos(t) - n \cos(nt)].\]On cherche à avoir \(n'(t) = 0\), soit \(4 \sin(t) = n \sin(n t)\) et \(4 \cos(t) = n \cos(n t)\).
En prenant la somme des carrés des deux côtés, on obtient d’abord que \(n'(t) = 0 \implies 4^2 = n^2 \implies n = 4\) : c’est déjà pas mal, on vient de prouver que seule la courbe \(n = 4\) peut avoir des points non-réguliers.
Désormais, pour \(n = 4\), \(n'(t) = 0\) ssi \(\sin(t) = \sin(4 t)\) et \(\cos(t) = \cos(4 t)\). On remarque déjà que les trois points observés, \(t = 0, 2\pi/3, 4\pi/3\), fonctionnent, mais on doit montrer que ce sont les seuls.
Si \(\sin(t) = \sin(4 t)\) et \(\cos(t) = \cos(4 t)\), alors en utilisant l’identité d’Euler, cela implique que \(\mathrm{e}^{it} = \mathrm{e}^{4it}\) qui implique que \(\mathrm{e}^{3it} = 1\), et donc \(3t = 0 \;\mathrm{mod}\; 2\pi\), or \(t \in [0, 2\pi]\), donc cela implique que \(t \in \{0, 2\pi/3, 4\pi/3\}\).
Et voilà.
-
PSI_Mat2_2015_24.
l
(n)[source]¶ Calcule la longueur \(l_n\) de façon approchée via la fonction
scipy.integrate.quad()
(quad(f, a, b)
), appliquée àdOM_sur_dt()
définie dans le corps de la fontiondef l(n): ...
.En effet,
dOM_sur_dt()
doit dépendre den
, maisscipy.integrate.quad()
a besoin d’une fonction qui n’accepte qu’un seul paramètre : sif
est \(t \mapsto f(t)\), alorsquad(f, a, b)
\(\simeq \int_{a}^{b} f(t) \; \mathrm{d}t\).Note
En fait,
scipy.integrate.quad()
accepte une fonction du genre \(g : (t, n) \mapsto g(t, n)\) si on l’appelle commequad(g, 0, 1, args=(8))
(qui sera une approximation de \(\int_{a = 0}^{b = 1} g(t, n = 8) \; \mathrm{d}t)\).
-
PSI_Mat2_2015_24.
q4
()[source]¶ Question 4.
Il faut se souvenir de la formule donnant la longueur d’un arc paramétré. Encore une fois, si besoin, cf. le chapitre 24.1 de ce cours de MPSI (§24.1 p680).
La formule a connaître est :
\[l_n = \int_{t = 0}^{t = 2\pi} \left\| \frac{\overrightarrow{OM}(t)}{\mathrm{d} t} \right\|_2 \mathrm{d} t.\]- On définit une fonction dOM_sur_dt(t) qui calcule \(\left\| \frac{\overrightarrow{OM}(t)}{\mathrm{d} t} \right\|_2 = \sqrt{x_n'(t)^2 + y_n'(t)^2}\) (note : c’est une fonction exacte),
- On utilise ensuite la fonction
scipy.integrate.quad()
pour calculer l’intégrale de façon numérique, - On met tout ça dans une fonction \(l(n)\) qui donnera la longueur de la courbe en fonction de n,
- On calcule la liste des valeurs de \(l(n)\) par une liste en compréhension, avec \(n = 1 .. 20\),
- On affiche ces valeurs (avec
matplotlib.pyplot.plot()
).
Cela donne une figure comme celle ci-dessous :
-
PSI_Mat2_2015_24.
q5
()[source]¶ Question 5.
On s’inspire de la figure précédente pour deviner une forme que peut avoir \(l_n\) pour \(n \to +\infty\). Son comportement semble parfaitement linéaire... En lisant la figure précédente, on trouve \(l_n \simeq 2 \pi \times n\).
On calcule :
\[\begin{split}&\left\| \frac{\overrightarrow{OM}(t)}{\mathrm{d} t} \right\|_2 \\ &= \sqrt{x_n'(t)^2 + y_n'(t)^2} \\ &= \sqrt{(- 4 \sin(t) + n \sin(n t))^2 + (4 \cos(t) - n \cos(n t))^2}\end{split}\]Donc pour \(n \to +\infty\), \(- 4 \sin(t) + n \sin(n t) = \mathcal{O}(n \sin(n t))\), \(4 \cos(t) - n \cos(n t) = \mathcal{O}(- n \cos(n t))\), puisque \(- 4 \sin(t), 4 \cos(t) \in [-4, 4]\) sont bornés.
Donc pour \(n \to +\infty\) :
\[\begin{split}\sqrt{((- 4 \sin(t) + n \sin(n t))^2 + (4 \cos(t) - n \cos(n t))^2} \\ \simeq \sqrt{n^2 \sin^2(n t) + n^2 \cos^2(n t)} \\ = n \sqrt{\sin^2(n t) + \cos^2(n t)} \\ = n.\end{split}\]Ainsi, \(\int_{0}^{2\pi} \lim_{n\to\infty} \left\| \frac{\overrightarrow{OM}(t)}{\mathrm{d} t} \right\|_2 \mathrm{d}t = \int_{0}^{2\pi} n \mathrm{d}t = 2 \pi n\). Reste à justifier comment on peut inverser l’intégrale et la limite.
On se souvient du théorème de convergence dominée, et sur papier on ferait proprement un calcul justifiant qu’on a une borne uniforme qui convient (comme \(|4 \cos(t) - n \cos(nt)| \leq 4 + n\) et \(|- 4 \sin(t) + n \sin(nt)| \leq 4 + n\) c’est assez rapide).
Conclusion : \(l_n \simeq_{n \to \infty} 2 \pi n\).
Note
Au tableau et sur papier, vous devriez justifier mieux, surtout les \(\simeq\) et \(\mathcal{O}\). (J’ai juste la flemme.)
Sortie du script¶
$ python PSI_Mat2_2015_24.py
Test automatique de toutes les doctests ecrites dans la documentation (docstring) de chaque fonction :
Trying:
import numpy as np
Expecting nothing
ok
Trying:
import matplotlib.pyplot as plt
Expecting nothing
ok
Trying:
from scipy.integrate import quad
Expecting nothing
ok
7 items had no tests:
__main__
__main__.l
__main__.q1
__main__.q2
__main__.q3
__main__.q4
__main__.q5
1 items passed all tests:
3 tests in __main__.q0
3 tests in 8 items.
3 passed and 0 failed.
Test passed.
Plus de details sur ces doctests peut etre trouve dans la documentation de Python:
https://docs.python.org/3/library/doctest.html (en anglais)
Le fichier Python se trouve ici : PSI_Mat2_2015_24.py
.