Méthode d'Euler appliquée aux équations différentielles d'ordre 2
\n",
"##
Application à l'étude d'un pendule simple
\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## I - Méthode d'Euler appliqué à une équation différentielle d'ordre 2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### A - Position du problème"
]
},
{
"attachments": {
"Pendule.png": {
"image/png": "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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"Soit une masse $m=1\\;kg$ attachée à un fil inextensible de longueur $l=50\\;cm$, dont l'autre extrémité est reliée à un point $O$ origine d'un repère orthonormé direct.\\\n",
"On se place dans un référentiel galiléen terrestre et on note $\\overrightarrow{g}$ l'accélération de la pesanteur. \\\n",
"La masse $m$ est soumise à deux forces : \n",
"- son poids ;\n",
"- la tension du fil.\\\n",
"Dans une base polaire le principe fondamental de la dynamique conduit à une équation différentielle du mouvement en l'angle $a$ : \n",
"$$ \\ddot{a} + \\dfrac{g}{l}\\sin(a) = 0$$\n",
"\n",
"Cette équation fait apparaître une pulsation caractéristique : $\\omega_0 = \\sqrt{\\dfrac{g}{l}}$.\\\n",
"On se propose ici d'utiliser une méthode d'Euler afin de résoudre cette équation différentielle non linéaire d'odre 2 à coefficients constants."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La méthode d'Euler ne s'appliquant qu'aux équations différentielles d'ordre 1, on va mettre l'équation différentielle précédente sous forme de deux équations différentielles d'ordre 1, couplées, qu'on cherchera à résoudre de concert.\\\n",
"On prend la notation suivante : \n",
"$$ x = \\dot{a}$$\n",
"Alors l'équation descriptive de l'évolution du pendule pesant se met sous la forme : \n",
"$$\\left\\{\\begin{eqnarray}\n",
" \\dot{x} & = & -\\dfrac{g}{l}\\sin(a) \\\\\n",
" \\dot{a} & = & x\n",
"\\end{eqnarray}\\right.$$\n",
"\n",
"En y adjoignant les conditions initiales : \n",
"\n",
"$$\\left\\{\\begin{eqnarray}\n",
" a(t = 0) & = & a_0 \\\\\n",
" \\dot{a}(t=0) & = & 0\n",
"\\end{eqnarray}\\right.$$\n",
"On obtient bien un problème de Cauchy dont on peut trouver une solution graphique approchée par la méthode d'Euler."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour reprendre les notations de la capacité numérique 1 on peut écrire : \n",
"$$ \\dfrac{dX}{dt} = f(t,X)$$ \n",
"avec : $X = \\left[\\begin{eqnarray}\n",
" x \\\\\n",
" a\n",
"\\end{eqnarray}\\right]$.\\\n",
"Finalement on peut conduire les observations suivantes : \n",
"1. $a(t)$ et $x(t)$ sont des listes de `float` dont les éléments sont notés `a[i]` et `x[i]`.\n",
"2. $X$ est une liste de deux liste `X = [x[i],a[i]]`.\n",
"3. $t$ est également une liste de `float`dont les éléments sont noté `t[i]`.\n",
"4. $dt$ est un `float` choisi et tel que `dt = t[i+1] - t[i]`, il correspond au pas de temps.\n",
"5. Il faut prendre garde au fait que la solution du problème est périodique, le nombre de point `N` de résoltion par période doit respecter le théorème de Shannon."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### B - Résolution numérique du problème"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"1. Importer les bibliothèques nécessaires à la résolution et à la représentation du problème."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"2. Définir les constantes et les grandeurs caractéristiques du pendule simple étudié."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"longueur = #longueur du pendule en metre.\n",
"masse = #masse en kilogramme.\n",
"grav = #accélération de la pesanteur en kg.m.s^-2.\n",
"\n",
"w0 = #pulsation de l'oscillation en rad.s^-1.\n",
"f0 = #fréquence des oscillations en Hz."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3. On souhaite représenter l'évolution de la masse $m$ pendant $100$ secondes. Définir une fréquence d'échantillonnage et un nombre de point de résolution respectant \"largement\" le théorème de Shannon."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"Tmax = #durée de la simulation en seconde.\n",
"fech = #fréquence d'échantillonnage (critère de Schannon).\n",
"\n",
"N = #nombre de point d'échantillonnge. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"4. Définir une fonction `pendule` prenant en argument les grandeurs caractéristiques du système est retournant la valeur de la fonction $f(t,X)$."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"5. Définir une fonction `Euler_exp` prenant en argument les grandeurs caractéristiques du système, les conditions initiales, ainsi que toute autre grandeur nécessaire et retournant trois listes : les dates `t[i]`, les angles `a[i]`, les vitesses angulaires `da[i]`."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"6. Ecrire une suite d'instructions permettant de représenter les évolutions de $a(t)$ et $\\dot{a}(t)$ avec les conditions initiales suivante : \n",
"$$\\left\\{\\begin{eqnarray}\n",
" a(t = 0) & = & \\dfrac{\\pi}{200} \\\\\n",
" \\dot{a}(t=0) & = & 0\n",
"\\end{eqnarray}\\right.$$\n",
"Pendant au moins le quart de la durée maximale de résolution."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"\n",
"\n",
"plt.clf()\n",
"fig, ax1 = plt.subplots()\n",
"ax2 = ax1.twinx()\n",
"\n",
"\n",
"plt.xlim(0.0,Tmax/4)\n",
"ax1.grid(True,)\n",
"ax2.grid(True)\n",
"plt.show()\n",
"plt.close()\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### II - Etude énergétique, test de la solution numérique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lorsqu'on obtient une solution numérique, approché, il faut pouvoir contrôler la robustesse de cette solution. Ici on dispose au moins de deux contrôle possible : \n",
"- le diagramme des phases. \n",
"\n",
"Il s'agit de la représentation de $\\dot{a} = f(a)$. Pour une solution harmonique on doit avoir une courbe fermée. Un cercle en l'occurence. \n",
"\n",
"- un bilan énergétique.\n",
"\n",
"La tension du fil est une force centrale, son support d'attache en $O$ est immobile, il reste toujours tendu avec la même tension, alors cette force ne travaille pas. Dans ces conditions le système est conservatif.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"7. Ecrire une suite d'instruction permettant de définir trois liste : énergie cinétique `Ec`, énergie potentielle `Ep` et énergie mécanique `Em`."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"8. Ecrire une suite d'instruction permettant de représenter deux graphes : le diagramme des phases d'un côté et les énergies sur un même graphe d'un autre."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"9. Ecrire une suite d'instructions permettant de mettre en évidence l'effet d'une variation de la fréquence d'échantillonnage sur la robustesse de la solution numérique. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (, line 1)",
"output_type": "error",
"traceback": [
"\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m Tmax = #durée de la simulation en seconde.\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
]
}
],
"source": [
"Tmax = #durée de la simulation en seconde.\n",
"fech = #fréquence d'échantillonnage (critère de Schannon).\n",
"\n",
"N = int() #nombre de point d'échantillonnge. \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"\n",
"plt.clf()\n",
"plt.figure()\n",
"\n",
"\n",
"plt.show()\n",
"plt.close()\n",
"\n",
"plt.clf()\n",
"\n",
"\n",
"plt.grid(True)\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### III - Etude harmonique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Un des avantages de la méthode numérique est de pouvoir avoir une représentation graphique de $a(t)$ et $\\dot{a}(t)$ en gardant l'équation différentielle non linéaire. \\\n",
"On peut alors vérifier plusieurs points : \n",
"- l'isochronisme des petites oscillation ; \n",
"- la période des oscillations quelles que soit $a(t=0)$ ;\n",
"- l'influence de la vitesse initiale sur la période des oscillations. \n",
"\n",
"Pour cela on peut utiliser une représentation spectrale des grandeurs physiques. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"10. En vous inspirant de la capacité numérique 2 , importer les bibliothèques nécessaires à l'étude spectrale des grandeurs physiques."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"11. Ecrire une suite d'instruction permettant de représenter sur un graphe les grandeurs $a(t)$ et $\\dot{a}(t)$, puis deux autres les spectres de ces grandeurs. \\\n",
"Vous vérifierez l'influence des conditions initiales $a_0$ et $\\dot{a}(t=0)$ sur la fréquence des oscillations."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (, line 15)",
"output_type": "error",
"traceback": [
"\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m15\u001b[0m\n\u001b[0;31m date_i =\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n"
]
}
],
"source": [
"longueur = 1.0 #longueur du pendule en metre.\n",
"masse = 0.5 #masse en kilogramme.\n",
"grav = 9.81 #accélération de la pesanteur en kg.m.s^-2.\n",
"\n",
"w0 = np.sqrt(grav/longueur) #pulsation de l'oscillation en rad.s^-1.\n",
"f0 = w0/(2.0*np.pi) #fréquence des oscillations en Hz.\n",
"\n",
"print('f0={0:.2f}'.format(f0))\n",
"\n",
"Tmax = 100.0 #durée de la simulation en seconde.\n",
"fech = 500.0*f0 #fréquence d'échantillonnage (critère de Schannon).\n",
"\n",
"N = int(Tmax*fech) #nombre de point d'échantillonnge. \n",
"\n",
"date_i = \n",
"pos_i = \n",
"vit_i = \n",
"\n",
"\n",
"\n",
"\n",
"\n",
"plt.clf()\n",
"fig, ax1 = plt.subplots()\n",
"\n",
"\n",
"plt.xlim(0.0,Tmax/10)\n",
"ax1.grid(True)\n",
"plt.show()\n",
"plt.close()\n",
"\n",
"plt.subplot(211) #pour le spectre de a\n",
"\n",
"plt.xlim(0,max(a_freq)/50)\n",
"plt.grid(True)\n",
"\n",
"\n",
"plt.subplot(212) #pour le spectre de da\n",
"\n",
"plt.xlim(0,max(a_freq)/50)\n",
"plt.grid(True)\n",
"plt.legend(loc='best')\n",
"\n",
"plt.show()\n",
"plt.close()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}