{ "cells": [ { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgitlab.dsi.universite-paris-saclay.fr%2Fbruno.denis%2Fintro_jupyter/HEAD?labpath=notebooks%2Fsysteme_2e_ordre.ipynb)\n", "[![NbViewer](https://badgen.net/static/render/NbViewer/orange)](https://nbviewer.org/urls/gitlab.dsi.universite-paris-saclay.fr/bruno.denis/intro_jupyter/-/raw/main/notebooks/systeme_2e_ordre.ipynb) \n", "\n", "# Réponse harmonique d'un système dynamique\n", "\n", "Ce carnet Jupyter a pour objectif de tracer le diagramme de Bode d'un système dynamique du 2e ordre. \n", "\n", "Ses fonctionnalités majeures :\n", "- **Interactivité** par utilisation du module `ipywidgets`\n", "- **Diagramming** par utilisation de l'outil Mermaid intégré à Jupyter depuis Jupyter Lab 4.0 et Jupyter Notebook 7.0\n", "\n", "Ses autres fonctionnalités\n", "- **Affichage de formules mathématiques** insérées dans le texte ou en tant que paragraphe\n", "- **Narratif** par utilisation de l'alternance des cellules Markdown et des cellules de code pour expliquer l'usage de la classe `TransferFunction` du module `scipy.signal`\n", "- **Affichage de courbe** par utilisation du module `Matplotlib`.\n" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Frontière d'isolement" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "```mermaid\n", "flowchart LR\n", " %% définition d'activité en forme de rectangle [ ]\n", " entree[\"e(t)\"]\n", " systeme[Système\\ndynamique]\n", " sortie[\"s(t)\"]\n", " %% définition d'un style de forme \"invisible\"\n", " classDef sansCadre fill:#ffffff, stroke:#ffffff\n", " %% description du diagramme\n", " entree:::sansCadre --> systeme --> sortie:::sansCadre \n", "```" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Modèle\n", "\n", "On considère le système dynamique régi par l'équation différentielle suivante\n", "\n", "$$\n", "\\frac{1}{\\omega_0^2}\\frac{d^2s(t)}{dt^2} + \\frac{2\\xi}{\\omega_0}\\frac{ds(t)}{dt} + s(t) = Ke(t)\n", "$$\n", "\n", "où\n", "\n", "- $e(t)$ est l'entrée du système \n", "- $s(t)$ est la sortie du système\n", "- $K$ est le gain statique du système (unité correspondant au rapport des unités de $s(t)$ et de $e(t)$)\n", "- $\\xi$ est le coefficient d'amortissement du système (sans unité)\n", "- $\\omega_0$ est la pulsation propre du système ($\\text{rad}/\\text{s}$ ou $\\text{s}^{-1}$)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "Dans le domaine de Laplace, la fonction de transfert de ce système dynamique est \n", "\n", "$$\n", "H(p) = \\frac{S(p)}{E(p)} = \\frac{K}{1 + \\frac{2\\xi}{\\omega_0}p + \\frac{p^2 }{\\omega_0^2} }\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "slide" }, "tags": [] }, "source": [ "## Codage avec Python\n", "\n", "Pour représenter la fonction de transfert on utilise la classe `TransferFunction` (système linéaire invariant sous sa forme de fonction transfert) du module `scipy.signal`. Dans ce module, une fonction de transfert de type\n", "\n", "$$\n", "H(p) = \\frac{\\sum_{i=0}^n b_{n-i}.p^n}{\\sum_{i=0}^m a_{m-i}.p^m}\n", "$$\n", "\n", "est représentée par `TransferFunction(numerateur, denominateur)`, une instance de la classe `TransferFunction` où `numerateur` est la liste Python $[b_0, b_1 \\dots b_n]$ et `denominateur` est la liste $[a_0, a_1 \\dots a_m]$" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Exemple\n", "\n", "La construction de la fonction transfert $H(p) = \\frac{4p + 3}{5p^2 + 2p + 1}$ donne" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "text/plain": [ "TransferFunctionContinuous(\n", "array([0.8, 0.6]),\n", "array([1. , 0.4, 0.2]),\n", "dt: None\n", ")" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import scipy.signal as signal\n", "\n", "numerateur = [4, 3] # 4p + 3\n", "denominateur = [5, 2, 1] # 5p² + 2p + 1\n", "signal.TransferFunction(numerateur, denominateur)" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Fonction de calcul de la réponse harmonique du système" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "def reponse_harmonique(numerateur=[1], denominateur=[1, 1, 1]):\n", " \"\"\"\n", " Renvoie les listes pulsation, amplitude, phase d'une\n", " sollicitation harmonique faite à un système dont le\n", " numérateur et le dénominateur sont forni en entrée.\n", "\n", " Parameters\n", " ----------\n", " numerateur : list\n", " numérateur de la fonction de transfert du system\n", " denominateur: list\n", " dénominateur de la fonction de transfert du system.\n", "\n", " Returns\n", " -------\n", " pulsation : numpy.ndarray\n", " liste des pulsations d'entrée du système\n", " amplitude : numpy.ndarray\n", " liste des amplutides de sortie du système\n", " phase : numpy.ndarray\n", " liste des déphasages de sortie du système\n", " \"\"\"\n", " h = signal.TransferFunction(numerateur, denominateur)\n", " pulsation, amplitude, phase = h.bode()\n", " return pulsation, amplitude, phase" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Fonction qui trace de la réponse du sytème" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "def trace_bode(pulsation, amplitude, phase):\n", " \"\"\"Trace amplitude et phase en fonction de pulsation.\"\"\"\n", " plt.rcParams['figure.figsize'] = [5, 4]\n", " plt.suptitle('Diagramme de Bode')\n", " \n", " plt.subplot(211)\n", " plt.semilogx(pulsation, amplitude, lw=2)\n", " plt.ylabel('Amplitude (dB)')\n", " plt.grid(which='both')\n", "\n", " plt.subplot(212)\n", " plt.semilogx(pulsation, phase)\n", " plt.xlabel('Pulsation (rad/s)')\n", " plt.ylabel('Phase (deg)')\n", " plt.grid(which='both')\n", "\n", " plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Tracé de la réponse harmonique" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "trace_bode(*reponse_harmonique())" ] }, { "cell_type": "markdown", "metadata": { "editable": true, "slideshow": { "slide_type": "subslide" }, "tags": [] }, "source": [ "### Tracé interactif de la réponse harmonique\n", "\n", "La cellule suivante nécessite l'accès à un noyau d'exécution (*kernel*) pour être interactive. Chaque mouvement du curseur sur un des trois paramètres du système lance l'exécution de la fonction `etude_systeme()` qui trace la nouvelle réponse." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [] }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "67538baa6b4f46c2972ddd592ff6e101", "version_major": 2, "version_minor": 0 }, "text/plain": [ "interactive(children=(FloatSlider(value=5.0, description='k', max=10.0, min=0.1), FloatSlider(value=0.5, descr…" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import ipywidgets\n", "\n", "@ipywidgets.interact(k=(0.1,10.), log_xi=(-2.,2.), w0=(10.,100.))\n", "def etude_systeme(k=5, log_xi=0.50, w0=50):\n", " numerateur = [k]\n", " denominateur = [w0**-2, 2*10**log_xi/w0, 1]\n", " trace_bode(*reponse_harmonique(numerateur, denominateur))" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.11.9" } }, "nbformat": 4, "nbformat_minor": 4 }