{
"metadata": {
"name": "S4_Outils_num_SciPy"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 1,
"metadata": {},
"source": [
"S\u00e9ance 4 : Autres outils de calcul num\u00e9rique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"Formation Python du d\u00e9partement M\u00e9catronique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"15h45 - 16h45 (1h)\n",
"\n",
"Introduction de quelques aspects de la bo\u00eete \u00e0 outils *SciPy*.\n",
"\n",
"*A) Simulation de syst\u00e8me dynamique (i.e. R\u00e9solution d'\u00c9quations Diff\u00e9rentielles Ordinaires)*\n",
"\n",
"* R\u00e9solution it\u00e9rative d'un syst\u00e8me dynamique simple par m\u00e9thode d'Euler.\n",
"* Probl\u00e8mes de stabilit\u00e9 (choix du pas de temps).\n",
"* Comparaison avec les m\u00e9thodes ODEs de SciPy (dans `scipy.integrate`).\n",
"\n",
"\n",
"*B) Optimisation num\u00e9rique*\n",
"\n",
"* fonction `fmin` de `scipy.optimize`\n",
"* application \u00e0 l'identification de param\u00e8tres d'une fonction de transfert\n",
"\n"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"A) Simulation de syst\u00e8me dynamique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(c'est \u00e0 dire : r\u00e9solution num\u00e9rique d'\u00e9quation diff\u00e9rentielle ordinaire (\"ODE\" en anglais))"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import scipy.integrate"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"A1) Un exemple simple (1er ordre)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On consid\u00e8re une ED tr\u00e8s simple (lin\u00e9aire, du 1er ordre) qui correspond au mod\u00e8le des syst\u00e8mes physique suivant :\n",
"\n",
"* charge d'un circuit RC (en \u00e9lectronique)\n",
"* mont\u00e9e en temp\u00e9rature d'un syst\u00e8me thermique (circuit RC thermique \u00e9quivalent)\n",
"* l'\u00e9volution de la vitesse d'une bille tombant dans un fluide visqueux.\n",
"\n",
"$$\\tau \\frac{dx}{dt}(t) = u - x(t), \\quad x(0)=0$$\n",
"\n",
"$\\tau$ est la constante de temps (RC, ...) et $u$ est \"l'entr\u00e9e\"."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"u = 2.\n",
"tau = 10.\n",
"\n",
"# Discr\u00e9tisation:\n",
"N = 101\n",
"T = 50\n",
"t = np.linspace(0, T, N)\n",
"dt = t[1] - t[0]\n",
"print('dt = {:.2f}'.format(dt))\n",
"dt/tau"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"dt = 0.50\n"
]
},
{
"output_type": "pyout",
"prompt_number": 2,
"text": [
"0.050000000000000003"
]
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On connait la solution th\u00e9orique $x(t) = u(1-e^{-t/\\tau})$.\n",
"\n",
"*Mini-exercice* :\n",
"\n",
"* Calculer la solution th\u00e9orique \u00e0 partir du vecteur `t` et de `np.exp`\n",
"* puis tracer cette solution"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Calcul analytique :\n",
"x_th = u*(1-np.exp(-t/tau))\n",
"\n",
"# Trac\u00e9\n",
"plot(t, x_th);\n",
"title(u'solution th\u00e9orique');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 98
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"A2) R\u00e9solution num\u00e9rique \"\u00e0 la main\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La r\u00e9solution num\u00e9rique par la m\u00e9thode d'Euler (explicite)\n",
"\n",
"$$ x(t+\\Delta_t) = x(t) + \\Delta_t \\dot{x}(t) $$\n",
"\n",
"Pour notre syst\u00e8me du 1er ordre, on obtient une \u00e9quation aux diff\u00e9rences :\n",
"\n",
"$$ x(t+\\Delta_t) = a x(t) + b u$$ \n",
"avec \n",
"\n",
"* $a = (1- \\Delta_t/\\tau)$ et\n",
"* $b=\\Delta_t/\\tau$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"*Exercice* : impl\u00e9menter cette m\u00e9thode d'Euler (\u00e0 l'aide d'une boucle `for`)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x_eul = np.zeros(N)\n",
"for i in range(N-1):\n",
" x_eul[i+1] = (1-dt/tau)*x_eul[i] + dt/tau*u\n",
"\n",
"plot(t, x_eul, '-+', label='Euler explicite')\n",
"plot(t, x_th, label='sol. analytique')\n",
"title('Comparaison des solutions')\n",
"legend(loc='lower right');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAEICAYAAACgQWTXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8zWf7wPHPyZBBdoJMQWLEStqYNUKraq9qeWz6oNt4\nWtVSoWoVtYqaLWo8tH60BDUOyhN7lFaNChmEyBLZyf3749QhJJGQ5GRc79crLznnu67c4Tq363t/\n71ujlFIIIYQoFYwMHYAQQoiCI0ldCCFKEUnqQghRikhSF0KIUkSSuhBClCKS1IUQohSRpC6Ktbp1\n63Lw4EGDXT8kJAQjIyMyMzMNFsMDgYGB9O/f/5mP79ChA2vWrCnAiERxJEm9lFi3bh3+/v5YWVnh\n4uJChw4dOHz4sKHDem7nz5+nZcuWhg6jWNBoNHneN7sPgB07djzXh4IoGSSplwJz5sxh1KhRjB8/\nntu3bxMaGsq7777Ltm3bDB1arjIyMgwdQokizwmKPFGiRIuNjVUVKlRQmzdvznGf5ORk9eGHHyoX\nFxfl4uKiRo4cqVJSUpRSSu3fv1+5urqqmTNnKicnJ+Xs7Ky2bNmitm/frry9vZW9vb2aNm2a/lwT\nJ05UPXv2VG+++aaysrJSL7zwgjp79qx++7Rp01T16tWVlZWV8vHxUVu2bNFvW7VqlWrWrJkaNWqU\ncnBwUBMmTFBXr15VrVu3Vg4ODsrR0VH17dtXxcbG6o+pUqWK2rt3r1JKqaNHj6oXX3xRWVtbq0qV\nKqnRo0fr99u6davy8fFRtra2KiAgQP35559ZzjFr1ixVv359ZWNjo958802VnJycbVtlZGSoMWPG\nKEdHR1WtWjW1cOFCpdFoVEZGhr69hwwZopydnZWrq6saP368ftvly5dVy5YtlY2NjXJ0dFRvvvlm\nttdISkpSffv2VQ4ODsrW1lY1bNhQRUZGKqWUCg8PV507d1b29vbKy8tLLVu2LEvb9+vXT/97c3Nz\ny3LeKlWqqD179qigoCBVrlw5ZWpqqipUqKB8fX2VUkq1atVKLV++XCmlVGZmpvriiy9UlSpVVMWK\nFdWAAQNUXFycUkqpa9euKY1Go77//nvl4eGhHB0d1Zdffqm/Tm6/B2F4ktRLuKCgIGViYqJPLNmZ\nMGGCatq0qbpz5466c+eOatasmZowYYJSSpccTExM1BdffKHS09PVsmXLlIODg/rXv/6lEhIS1IUL\nF5SFhYUKCQlRSukSi6mpqfrxxx9Venq6mjVrlqpatapKT09XSim1adMmdfPmTaWUUhs3blTly5dX\nt27dUkrpkrqJiYlauHChysjIUElJSerKlStqz549KjU1Vd25c0e1bNlSjRw5Uh+7p6enPqk3adJE\nrV27Viml1P3791VwcLBSSqm//vpLlS9fXu3Zs0elp6ermTNnKi8vL5WWlqY/R+PGjdXNmzdVdHS0\nql27tlqyZEm2bbV48WJVq1YtFRYWpqKjo1VAQIAyMjLSt2+3bt3UiBEjVGJiorp9+7Zq1KiR+vbb\nb5VSSvXu3VtNnTpVKaVUSkqKOnz4cLbXWLJkiercubNKSkpSmZmZ6tSpUyo+Pl4ppVSLFi3Uu+++\nq1JSUtSZM2eUk5OT2rdvn77tc0vqj7ZVYGCg6t+/f5btAQEBasWKFUoppVasWKG8vLzUtWvXVEJC\ngurRo4d+/wdJfdiwYSo5OVmdPXtWmZmZqYsXL+b6exDFgyT1Em7t2rWqcuXKue5TvXp1FRQUpH+9\na9cu5enpqZTSJQcLCwuVmZmplFIqPj5eaTQadezYMf3+L774otq6datSSpdYmjZtqt+WmZmpnJ2d\n1aFDh7K9tq+vr/7YVatWKQ8Pj1xj3bJli/Lz89O/fjRRtWzZUk2cOFHduXMnyzGTJ0/O0ivOzMxU\nrq6u6sCBA/pz/PDDD/rtH3/8sRoxYkS212/durU+SSul1O7du/U99Vu3bikzMzOVlJSk375u3TrV\nunVrpZRSAwYMUMOGDVNhYWG5/owrV65UzZo1U+fOncvy/o0bN5SxsbFKSEjQvzdu3Dg1aNAgpVT+\nkvqj+z7waFJv06aNWrx4sX7bX3/9pUxNTVVGRoY+qYeHh+u3N2rUSG3cuFEplfPvQRQPUlMv4Rwc\nHIiKisp1dEZERARVqlTRv/bw8CAiIiLLOR7chLOwsACgUqVK+u0WFhYkJCToX7u5uem/12g0uLm5\ncfPmTQBWr16Nn58fdnZ22NnZcf78ee7evavf393dPUtskZGR9O7dGzc3N2xsbOjfv3+W/R+1YsUK\nLl26RO3atWnUqBHbt28H4ObNm3h4eGSJyd3dnfDwcP17lStXzvHnedTNmzezxPjoea9fv05aWhrO\nzs76n2/EiBHcuXMHgJkzZ6KUolGjRtStW5dVq1Zle43+/fvTrl07evfujaurK2PHjiU9PZ2IiAjs\n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\noRKw+hRbtQAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 99
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\u00c0 pr\u00e9sent, il s'agit de refaire le calcul en augmentant le pas de temps (cad diminuer $N$)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Question :** \u00e0 partir de quelle valeur de $\\Delta_t$ la solution num\u00e9rique devient elle\n",
"\n",
"* \"mauvaise\", \"impr\u00e9cise\" ?\n",
"* oscillante ?\n",
"* instable ?\n",
"\n",
"(cf. la valeur du coefficient $a$...) "
]
},
{
"cell_type": "heading",
"level": 3,
"metadata": {},
"source": [
"A3) Utilisation d'un solver ODE de SciPy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lorsqu'on a \u00e0 r\u00e9soudre une ED, on a int\u00e9r\u00eat \u00e0 faire appel \u00e0 des routines puissantes et \u00e9prouv\u00e9es, plut\u00f4t que de faire un \"Runge-Kutta maison\"...\n",
"\n",
"cf http://docs.scipy.org/doc/scipy/reference/integrate.html pour la documentation des fonctions *Integration and ODEs* de `scipy.integrate`"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"odeint = scipy.integrate.odeint\n",
"odeint?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 83
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On remarque que solveur `odeint` (et pas que lui !) a besoin de la fonction d\u00e9riv\u00e9e $f(y,t) \\mapsto \\dot{y}$"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def deriv(y,t):\n",
" '''d\u00e9riv\u00e9e calcul\u00e9 en y et au temps t'''\n",
" return 1./tau*(u-y)\n",
"\n",
"# test de la fonction :\n",
"deriv(0,0)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 3,
"text": [
"0.2"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x_ode = odeint(deriv, 0, t)\n",
"\n",
"plot(t, x_eul, '--+', label='Euler explicite')\n",
"plot(t, x_th, label='sol. analytique')\n",
"plot(t, x_ode, '--x', label='odeint')\n",
"title('Comparaison des solutions')\n",
"legend(loc='lower right');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nCA91xhj7IN8BZmZuXA6w+uoAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 100
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Bien s\u00fbr, il serait alors int\u00e9ressant de creuser et jouer sur les param\u00e8tres de la fonction bo\u00eete noire `odeint`.\n",
"\n",
"En particulier, la comparaison brute Euler vs. odeint n'est pas \"juste\" car odeint s'autorise des points d'int\u00e9gration interm\u00e9diaires..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---"
]
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"B) Optimisation num\u00e9rique"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"L'optimisation d'une fonction $f(x)$ consiste \u00e0 trouver la valeur de l'argument $x \\in \\mathbb{R}^n$ qui minimise/maximise cette fonction. \n",
"\n",
"L'optimisation peut servir \u00e0 *mod\u00e9liser (fitter) des donn\u00e9es exp\u00e9rimentales* comme on va le voir ici."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import scipy.optimize\n",
"from scipy.optimize import fmin"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 4
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"La fonction `fmin` est une des m\u00e9thodes disponibles dans `scipy.optimize`. Les autres sont pr\u00e9sent\u00e9s dans la documentation http://docs.scipy.org/doc/scipy/reference/optimize.html\n",
"\n",
"(on notera par exemple qu'il existe des m\u00e9thodes sp\u00e9cialis\u00e9es pour le cas o\u00f9 l'argument $x$ est un scalaire. \u00c7a ne sera pas le cas ici.)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"fmin?"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On reprend les donn\u00e9es du diagramme de Bode de la S\u00e9ance 2"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Chargement de donn\u00e9es (pseudo relev\u00e9 exp\u00e9rimental d'un diagramme de Bode)\n",
"data = np.loadtxt(u'./S2_Objets_et_NumPy/bode_data.csv', delimiter=',')\n",
"# s\u00e9paration des donn\u00e9es :\n",
"f, gain, phase = data.T\n",
"# Trac\u00e9 rapide:\n",
"semilogx(f, gain);"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n24yJgcxMSEk5fls//RQbnGf6IiJS7f77oV8/uPlmMzb/X/86+fqLF9f9fuVY/dpFf9UqZ/qpM32b\nlOnba69M33+U6dtr7+2xed55ZpTN0KFmuoWfh+17vc1f/aqEoiLYutU8phGcjXd0pi8i4pCpU+Gi\ni2DRIt+3cfrp5qw+NtbEQOBsvKNn5IqIOGjpUhg40Ay99MXcuTBlihnq+Y9/mPf27oWzzoL9++3X\nTp3pi4g4KDPTXvvKTL8yzwdz9l9ebm+7lZTp26RM3157Zfr+o0zfXns3jk2AZs3MOscW/agoE/E4\nQUVfRCSIVM66eWzRB+eKvjJ9EZEgsn8/nHaaecDKsTdvZWbCO++4OPeOiIg4r2lTeOYZ+OUva76v\neCdIKNO3116Zvv8o07fX3q1M/7vvSpg0yeT4x1LRFxGJIG3aOLMdZfoiIiFg0SIYPlyZvohIRFC8\nEySU6dtrr0zff5Tp22vvVqZ/onWcindU9EVEQoDG6YuIRBDLggYNlOmLiEQEp546q6JvkzJ9e+2V\n6fuPMn177YMt03eKir6ISARRpi8iEiKcqJ060xcRiSAq+jYp07fXXpm+/yjTt9demb6IiIQ8Zfoi\nIiFCmb6IiHhFRd8mZfr22ivT9x9l+vbaK9MXiRAff/yx210Q8RvbRX/69Ok0aNCAPXv2VL2XlZVF\nUlISycnJLF++3O4uglpsbGxY7NPuNn1t7007T9etb736lq9du9bjPgUzN45Nf+3XjePTjWPT2/36\nwlbR37FjBytWrKBdu3ZV7+Xn57Nw4ULy8/PJyclhwoQJVFRU2O5osMrNzQ2Lfdrdpq/tvWnn6br1\nrefGfzM3uPV7hsvx6cax6e1+fWGr6N911108+eSTNd7Lzs5m1KhRNGrUiMTERNq3b09eXp6tTgaz\nZcuWhcU+7W7T1/betPN03frWq2/5gQMHPO5TMHPj2PTXft04Pt04Nr3dr08sHy1ZssSaNGmSZVmW\nlZiYaO3evduyLMuaOHGiNX/+/Kr1xo0bZ7355ps12gL60Y9+9KMfH37siuYkMjIyKCoqOu79xx57\njKysrBp5vXWSsaNRteYEPdm6IiLiPyct+itWrKjz/fXr11NQUEBqaioAO3fu5MILL+Szzz4jPj6e\nHTt2VK27c+dO4uPjHeyyiIj4ypE7cs8++2y++OILWrZsSX5+Ptdeey15eXkUFhbSt29ftm7detzZ\nvoiIBN5Jz/Q9dWxBT0lJYfjw4aSkpBAdHc2sWbNU8EVEgoQrc++IiIg7dEeuiEgECYqin52dzS23\n3MLIkSNPePFYxC0bN27k9ttvZ/jw4bz88stud0ekhgMHDtC1a1ePx/cHVbyzd+9e7r77bl566SW3\nuyJynIqKCkaOHMkbb7zhdldEqjz00EM0a9aMTp06MXjw4HrXD4oz/UqPPvooEydOdLsbIsd55513\nGDx4MCNHjnS7KyJVVqxYQUpKCq1bt/a4jd+K/tixY4mLi6NLly413s/JySE5OZmkpCSeeOIJwNys\nNWXKFAYOHEhaWpq/uiRSxZvjE2DIkCG89957zJs3L9BdlQjjzbG5atUqVq9ezWuvvcaLL77o0Y2v\nfot3PvzwQ5o2bcoNN9zAunXrADh69CgdO3Zk5cqVxMfH07VrV15//XVWrlzJvHnz6Nq1K2lpadx6\n663+6JJIFW+Oz5KSEt566y0OHTpEp06dmDRpksu9l3DmzbHZqVMnAObNm0fr1q0ZNGhQvdt3ZJx+\nXS677DK2bdtW4728vDzat29PYmIiACNHjiQ7O5t77rmHO+64w19dETmOt8dnr169At9JiUjeHJuV\nRX/MmDEebz+gmX5hYSFt27atep2QkEBhYWEguyByQjo+JVg5eWwGtOjrzlwJZjo+JVg5eWwGtOjX\nnoxtx44dJCQkBLILIiek41OClZPHZkCL/kUXXcSWLVvYtm0b5eXlLFy4kMzMzEB2QeSEdHxKsHLy\n2PRb0R81ahSXXHIJmzdvpm3btsydO5fo6GhmzpxJ//79SUlJYcSIEVUXIkQCScenBCt/H5tBdUeu\niIj4V1DdkSsiIv6loi8iEkFU9EVEIoiKvohIBFHRFxGJICr6IiIRREVfRCSCqOiLiEQQFX0RkQjy\n/wHIPWlR+LyjwQAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 7
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"On reconnait la fonction de tranfert d'un passe-bas du 2\u00e8me ordre\n",
"\n",
"$$ H(f) = \\frac{H_0}{1 + j \\frac{f}{Q f_0} - \\frac{f^2}{f_0^2}} $$ \n",
"\n",
"Les param\u00e8tres \u00e0 identifier sont :\n",
"\n",
"* le gain statique $H_0$\n",
"* la fr\u00e9quence canonique $f_0$\n",
"* le facteur de qualit\u00e9 $Q$\n",
"\n",
"\u00c0 la diff\u00e9rence de la session 2, on souhaite *identifier ces param\u00e8tres automatiquement*. (\"model fitting\")"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# Tranfert du 2\u00e8 ordre:\n",
"def bode_pb2(f, H0, f0, Q):\n",
" '''Bode d'un passe bas du 2\u00e8me ordre\n",
" renvoie gain (dB), phase (\u00b0) \n",
" '''\n",
" H = H0/(1 + 2j*f/(f0*Q) - (f/f0)**2)\n",
" Habs = np.abs(H)\n",
" gain = 20*np.log10(Habs) # -> dB\n",
" phase = np.angle(H)*180/np.pi\n",
" return (gain, phase) # ceci est un 'tuple' \n",
"\n",
"# trac\u00e9 rapide:\n",
"semilogx(f, bode_pb2(f,1,1e3, 10)[0], 'g-');"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 12
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def bode_err((H0, f0, Q)):\n",
" '''erreur quadratique d'ajustement du mod\u00e8le'''\n",
" gain_fit, phase_fit = bode_pb2(f, H0, f0, Q)\n",
" err_gain = (gain - gain_fit)\n",
" err_phase = (phase - phase_fit)\n",
" err = np.sum(err_gain**2) + np.sum(err_phase**2)\n",
" return err\n",
"bode_err((2, 1e3, 10))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 17,
"text": [
"7154.6618314212756"
]
}
],
"prompt_number": 17
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x_opt = fmin(bode_err, x0=(1, 1e3, 10))\n",
"x_opt"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Optimization terminated successfully.\n",
" Current function value: 585.216147\n",
" Iterations: 114\n",
" Function evaluations: 205\n"
]
},
{
"output_type": "pyout",
"prompt_number": 21,
"text": [
"array([ 1.9715475 , 999.80793731, 4.98163544])"
]
}
],
"prompt_number": 21
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# D\u00e9paquetage des param\u00e8tres :\n",
"H0, f0, Q = x_opt\n",
"print('H0 = {:.2f}'.format(H0))\n",
"print('f0 = {:.0f} kHz'.format(f0))\n",
"print(' Q = {:.2f}'.format(Q))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"H0 = 1.97\n",
"f0 = 1000 kHz\n",
" Q = 4.98\n"
]
}
],
"prompt_number": 25
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remarque : dans ce probl\u00e8me d'estimation de param\u00e8tres, on pourrait chercher \u00e9galement\n",
"*l'incertitude* entourant ces param\u00e8tres (incertitude due au erreurs de mesures)."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# diagramme de Bode complet\n",
"fig = plt.figure('Bode', figsize=(6,6))\n",
"\n",
"# gain\n",
"ax1 = fig.add_subplot(2,1,1, xscale='log',\n",
" title='Diagramme de Bode: gain (dB)')\n",
"ax1.plot(f, gain)\n",
"ax1.plot(f, bode_pb2(f, H0, f0, Q)[0], 'r-')\n",
"# phase\n",
"ax2 = fig.add_subplot(2,1,2, sharex=ax1, # sharex -> synchronise les \u00e9chelles. Pratique pour zoomer !\n",
" title=u'Phase (\u00b0)',\n",
" xlabel=u'fr\u00e9quence (Hz)')\n",
"ax2.plot(f, phase, 'b')\n",
"ax2.plot(f, bode_pb2(f, H0, f0, Q)[1], 'r-')\n",
"# ajustement des \"ticks\"\n",
"ax2.set_yticks(np.arange(0,-181,-45)) # (de 0 \u00e0 -180\u00b0, tous les 45\u00b0)\n",
"fig.tight_layout()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\ns2fPpn///rRr184Y4Qpx1+7mMw4waNAgfvrpJ9auXVvdoQpRYXfzOY+KiuLgwYN89dVXrFy58l+f\neTVaE9/evXtxcHBgwoQJnDx5EoDi4mKaN2/O7t278fDwoFOnTqxfv57du3ezdu1aOnXqRLt27Zg6\ndaoxQhbirtzNZzw1NZXvvvuO/Px8WrRowcyZM40cvRDlczef8xYtWgCwdu1a6tWrx4ABA+5YtsG7\nmd9Ojx49iIuLK7UuOjoaf39/fH19ARg1ahQRERHMmTOHGTNmVH+QQlTC3X7Ge/XqVf1BClFJd/M5\nv5mgHnvssXKVbVL3oBITE/Hy8tK/9/T0JDEx0YgRCVG15DMuaoOq+pybVIKSh3bFvU4+46I2qKrP\nuUklqH+O1RcfH4+np6cRIxKiaslnXNQGVfU5N6kE1bFjR86fP09cXBxarZaNGzcyePBgY4clRJWR\nz7ioDarqc260BDV69Gi6du3KuXPn8PLy4rPPPsPCwoIPPviAvn37EhgYyMiRI/U31YSoaeQzLmoD\nQ37Oa9RIEkIIIWoPk2riE0IIIW6SBCWEEMIkSYISQghhkiRBCSGEMEmSoIQQQpgkSVBCCCFMkiQo\nIYQQJkkSlBBCCJMkCUoIIYRJkgQlhBDCJEmCEkIIYZIkQQkhhDBJkqCEKKeQkBBWrVpl7DAYPXo0\nERERd9xny5YtjBo1qpoiEsIwJEEJUYKvry92dnY4OjrSoEEDJk2aRG5uLqDOEmrsGXFPnDjBiRMn\nePjhh/XrJk2ahJubG1OmTNGvGzRoEKdPn+bkyZPGCFOIKiEJSogSNBoNW7duJTs7myNHjnD48GFe\nf/11Y4elt2LFCsaNG6d/v2vXLmxsbLh27RqWlpbs3r1bv2306NF88sknxghTiCohCUqI22jUqBH9\n+vXj9OnT+nVxcXF0794dJycn+vbty7Vr1/Tbhg8fTsOGDXFxcaFXr17ExMTot23bto2WLVvi5OSE\np6cny5Yt02/bunUr7dq1w9XVlW7dut2x1rN9+3Z69eqlf68oCoqiUFxcjKIopWp4ISEh/Pjjj5X+\nOQhhLJKghPiHm3N4xsfH89NPPxEUFKRf/9VXX7FmzRpSU1PRarW89dZb+uMGDhzIhQsXuHr1Ku3b\nt2fs2LH6bZMnT+aTTz4hKyuL06dPc//99wNw9OhRJk+ezMqVK0lPT2fq1KkMHjwYrVZbJq7c3Fxi\n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\n+e/VaLNnz+aBBx4gPDycsLAwDZAQEZFL0oW6IiJSJ672t7xWuvhERERqmwJKRESckgJKRESckgJK\nRESckgJKRESckgJKRESckgJKRESckgJKxCKpqalWlyDi1BRQIhZRQIlcngLKAlb/MNX159dW+zVt\npybbVWebK1nX6v/GVnOG71+XNVi9j9dk29rex2tSQ3UpoCxg9f+8Cqir20YB9fOc4fsroGq+vrME\nlNPei09ERK59ljzyvS45YWaKiEg9UxefiIg4JQWUiIg4JQWUiIg4JQWUiIg4pWsioJYvX86DDz5I\nUlISa9eutbockVqXnp7OQw89xPDhw5k7d67V5YjUmcLCQrp06cKqVat+dl2nHGZ+KadPn2bSpEnM\nmTPH6lJE6oTdbicpKYl3333X6lJE6sSUKVNo3LgxkZGRDBo06LLrXhNHUOdMnz6dRx55xOoyROrE\nihUrGDRoEElJSVaXIlIn1q5dS1RUFIGBgVe0vmUBNXbsWJo3b06HDh2qzF+zZg0RERGEh4czc+ZM\nwLwu6sknn2TAgAHExsZaUa5ItVVnHwcYPHgwq1evZsGCBfVdqkiNVWc/37hxI1u3buXtt9/mjTfe\n+NlrXi3r4tu0aRO+vr6MGjWKPXv2AFBZWUn79u1Zt24drVu3pkuXLixevJh169axYMECunTpQmxs\nLOPHj7eiZJFqqc4+/sMPP/DBBx9QUlJCZGQkjz32mMXVi1yZ6uznkZGRACxYsIDAwEAGDhx42bYt\nu5NEjx49OHjwYJV527dvJywsjJCQEACSkpJYvnw5kydPZsKECfVfpMhVqO4+fscdd9R/kSJXqTr7\n+bmAGj169BW17VTnoLKzswkODna8DwoKIjs728KKRGqX9nFpCGprP3eqgNJNYuV6p31cGoLa2s+d\nKqBat25NVlaW431WVhZBQUEWViRSu7SPS0NQW/u5UwVU586dycjI4ODBg5SVlbFkyRISExOtLkuk\n1mgfl4agtvZzywJqxIgRdO3alf379xMcHMy8efNwc3Pj5Zdf5q677iIqKop7773XcVJN5FqjfVwa\ngrrcz6+pO0mIiEjD4VRdfCIiIucooERExCkpoERExCkpoERExCkpoERExCkpoERExCkpoETOU1FR\nwSuvvEJZWZnVpYg0eAooaTBmzZpFVFQUI0eOvOQ6jz/+OJ06dcLDw6MeK7s6K1euJDk5GYDk5GRS\nUlKqLA8JCSE3N/eS2/fp04f8/Py6LFGkRix73IZIfXv11VdZv349rVq1qjK/oqICNzfzf4WXXnrJ\nitKuSkpKCu+88w5g3qTzpzfq/LkbdyYlJfHGG2/wxBNP1FmNIjWhIyhpEH73u99x4MAB+vfvz4sv\nvsjUqVMZOXIk3bt3Z/To0Zw8eZJhw4bRpUsX4uPj2bx5MwCnTp2iX79+xMTEMG7cOMfRyMGDB6s8\nQfT5559n6tSpAHz//fcMGDCAzp0707NnT/bt2wfAmDFjePTRR+nWrRvt2rXj/fffd2w/c+ZMOnbs\nSGxsLE899dRl2zlfVlYWZWVlNG/e3DHvYjeHMQyD1157jbi4OOLi4ggNDaV3796A+STfcwEn4lQM\nkQYiJCTEOHXqlGEYhjFlyhSjc+fORklJiWEYhjFixAhj06ZNhmEYRmZmphEREWEYhmFMmDDBmDZt\nmmEYhrFq1SrDZrMZp06dMjIzM42YmBhH288//7wxdepUwzAMo3fv3kZGRoZhGIaxdetWo3fv3oZh\nGMbo0aON4cOHG4ZhGGlpaUZYWJhhGIbx8ccfG127djWKi4sNwzCMvLy8y7ZzvsWLFxuPPPKI4/2U\nKVOM1q1bG7GxsY7Jw8PD8b0NwzDKy8uNHj16GCtXrnTMCw0NNQoKCqr7JxWpU+rikwbJZrORmJiI\np6cnAOvWrePYsWOO5ZWVlRQWFrJp0yaWLVsGwMCBA2nSpMkl2zQMg8LCQjZv3sw999zjmH9uwIXN\nZmPIkCEAREZGcvz4ccdnjx07Fi8vLwACAgIoKChgy5YtF23nfIcPH6Zly5ZVvtcTTzxRpbsuNDS0\nyjYTJ06kT58+DBo0yDGvefPmZGVlERERccnvJ1LfFFDSYHl7ezteG4bBmjVrHIF1PuMiXWZubm7Y\n7XbH++LiYmw2G3a7nSZNmvDVV19d9DPPH3xxrl2bzXbBZ9jtdgICAi7ZzuXqu1i958yfP5+srCxm\nz559wTZ6mKI4G52DEgH69evHrFmzHO937twJQM+ePXn77bcBWL16NXl5eYB5xPHDDz+Qm5tLaWkp\nK1euBKBx48aEhoby3nvvAeYP/+7duy/72X379mXevHkUFxcDkJeXh5+f3xW107ZtW3Jycq7oO+7Y\nsYOUlBQWLlx4wbLjx4/rwYnidBRQ0mBcbnTbrFmz2LFjB506dSI6Opo5c+YAMGXKFD777DNiYmJY\ntmwZbdq0AcDd3Z2//OUvxMfH069fP6KiohxtLVq0iLlz5xIbG0tMTAwfffTRRT/z3Ou77rqLxMRE\nOnfuTFxcnGOY+OXaOadbt26OML3c9zQMg1deeYW8vDx69epFXFwcDz74IAA5OTk0bdoUHx+fK/xL\nitQPPQ9KpBpCQ0PZsWMHN9xwg9WlOPTu3ZtFixZVORdVHa+//jqFhYU8/vjjtVyZyNXREZRINTjj\neZpJkybx2muv1Xj7JUuWMG7cuFqsSKR26AhKREScko6gRETEKSmgRETEKSmgRETEKSmgRETEKSmg\nRETEKSmgRETEKf0ftInjJnpscboAAAAASUVORK5CYII=\n"
}
],
"prompt_number": 104
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"---\n",
"\n",
"*fin de la session 4 et fin de cette formation*.\n",
"\n",
"\n",
" \n",
"\n",
"\n",
"Ce support de formation cr\u00e9\u00e9 par\n",
"Pierre Haessig\n",
"est mis \u00e0 disposition selon les termes de la\n",
"licence Creative Commons Attribution 3.0 France."
]
}
],
"metadata": {}
}
]
}