{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Cha\u00eene de ressorts\n", "\n", "_Examen 2022_\n", "\n", "On consid\u00e8re pour commencer une masse $m$ suspendue \u00e0 un ressort de raideur $k$ et de longueur au repos $L$. A l'\u00e9quilibre la masse est \u00e0 la position $z_{eq} = -L - a_{eq}$ o\u00f9 $a_{eq}$ est l'allongement du ressort. On fera attention aux signes !\n", "\n", "```{image} ressorts.png\n", ":alt: Cha\u00eene de ressort\n", ":width: 70%\n", ":align: center\n", "```\n", "\n", "On prendra $k = 10$ N/m, $m=0.03$ kg, $g = 9.81$ m/s$^2$ et $L=30$ cm.\n", "\n", "1. Ecrire une fonction Python qui renvoie l'acc\u00e9l\u00e9ration de la masse en fonction de sa position $z$ et du champ de gravit\u00e9 $g$. \n", "\n"]}, {"cell_type": "markdown", "metadata": {}, "source": ["2. R\u00e9soudre num\u00e9riquement l'\u00e9quation diff\u00e9rentielle avec pour condition initiale $z=-L$ et $v_0=0.1$ m/s et donner la position et la vitesse apr\u00e8s $0.1$ s. "]}, {"cell_type": "markdown", "metadata": {}, "source": ["3. Tracer la position sur environ 10 p\u00e9riodes."]}, {"cell_type": "markdown", "metadata": {}, "source": ["4. V\u00e9rifier que l'\u00e9nergie totale du syst\u00e8me est conserv\u00e9e."]}, {"cell_type": "markdown", "metadata": {}, "source": ["5. Ajuster votre graphique par une sinuso\u00efde et v\u00e9rifier que l'on a bien la relation $\\omega = \\sqrt{k/m}$. "]}, {"cell_type": "markdown", "metadata": {}, "source": ["6. Retrouver la fr\u00e9quence d'oscillation cette fois en calculant la transform\u00e9e de Fourier num\u00e9rique de la position. Comment am\u00e9liorer la r\u00e9solution de la valeur d\u00e9duite ?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["On consid\u00e8re maintenant une cha\u00eene de masses reli\u00e9es par des ressorts. On prendre $N=10$ masses num\u00e9rot\u00e9es de $0$ \u00e0 $N-1$.\n", "\n", "On note $z_i(t)$ la position de la masse num\u00e9ro $i$ et $l_i(t)$ la longueur de chaque ressort ($l_i(t)>0$). On a $z_i(t) = -\\sum_{j=0}^{j=i} l_j(t)$ \n", "\n", "7. Ecrire une fonction qui \u00e0 partir d'un tableau des positions $z_i$ renvoit un tableau des alongements $a_i =l_i - L$.\n", "\n"]}, {"cell_type": "markdown", "metadata": {}, "source": ["L'acc\u00e9l\u00e9ration d'une masse $i$ est donn\u00e9e par : \n", "\\begin{equation} \\frac{d^2 z_i}{dt^2} = -g + \\frac{k}{m}(a_i - a_{i+1})\n", "\\end{equation}\n", "\u00e9tant entendu que pour la derni\u00e8re masse, il n'y a pas de terme en $a_{i+1}$.\n", "\n", "8. Ecrire une fonction qui renvoie sous forme d'un tableau l'acc\u00e9l\u00e9ration en fonction des positions $z_i$. "]}, {"cell_type": "markdown", "metadata": {}, "source": ["\u00c0 l'\u00e9quilibre, en pr\u00e9sence du champ de gravit\u00e9, l'alongement $a_i$ est donn\u00e9 par la masse totale situ\u00e9e en dessous ($j\\ge i$) : $a_i^\\mathrm{eq} = (N-i)\\frac{mg}{k}$. \n", "\n", "9. V\u00e9rifier que pour cette position, l'acc\u00e9l\u00e9ration est bien nulle. (Il s'agit ici de tester la fonction \u00e9crite \u00e0 la question pr\u00e9c\u00e9dente.)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["10. R\u00e9soudre l'\u00e9quation diff\u00e9rentielle en prenant comme conditions initiales, pour chacune des masses, une vitesse nulle et une position d\u00e9plac\u00e9e de 20 cm vers le haut par rapport \u00e0 sa position d'\u00e9quilibre en pr\u00e9sence du champ de gravit\u00e9.\n"]}, {"cell_type": "markdown", "metadata": {}, "source": ["11. Qu'observez-vous dans le spectre du mouvement ?"]}, {"cell_type": "markdown", "metadata": {}, "source": ["12. On consid\u00e8re maintenant qu'\u00e0 l'instant $t=0$, le syst\u00e8me est \u00e0 l'\u00e9quilibre. Cependant, on coupe le ressort num\u00e9ro \"0\". Ecrire une nouvelle fonction qui renvoit l'acc\u00e9l\u00e9ration en fonction des positions."]}, {"cell_type": "markdown", "metadata": {}, "source": ["13. R\u00e9soudre l'\u00e9quation diff\u00e9rentielle. Tracer la position de la masse num\u00e9ro $N-1$ en fonction de $t$ jusqu'\u00e0 environ 0.4 s. Qu'observe-t-on ? "]}, {"cell_type": "markdown", "metadata": {}, "source": ["14. Tracez la position des masses num\u00e9ro 0, 4 et 9 dans le r\u00e9f\u00e9rentiel en chute libre. Tracer aussi dans ce r\u00e9f\u00e9rentiel la position du centre de masse (position moyenne des masses)."]}, {"cell_type": "markdown", "metadata": {}, "source": ["**Fonctions utilis\u00e9es**"]}, {"cell_type": "code", "execution_count": 17, "metadata": {"tags": ["keep"]}, "outputs": [], "source": ["from scipy.optimize import curve_fit\n", "from numpy.fft import rfft, rfftfreq\n", "from scipy.integrate import solve_ivp\n"]}], "metadata": {"celltoolbar": "Tags", "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.8.8"}, "varInspector": {"cols": {"lenName": 16, "lenType": 16, "lenVar": 40}, "kernels_config": {"python": {"delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())"}, "r": {"delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) "}}, "types_to_exclude": ["module", "function", "builtin_function_or_method", "instance", "_Feature"], "window_display": false}}, "nbformat": 4, "nbformat_minor": 4}