{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import display, Latex\n", "from IPython.core.display import HTML\n", "css_file = './custom.css'\n", "HTML(open(css_file, \"r\").read()) " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Python version 3.8.5 (default, Jan 27 2021, 15:41:15) \n", "[GCC 9.3.0]\n" ] } ], "source": [ "import sys #only needed to determine Python version number\n", "print('Python version ' + sys.version)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# M62_TD2 : Exercices schémas multipas et Runge-Kutta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rappels schémas multipas\n", "\n", "
\n", "Considérons une méthode numérique à $q=p+1$ étapes (=pas) linéaire.\n", "Elle s'écrit sous la forme générale\n", "$$\n", "u_{n+1} \n", "= \n", "\\sum_{j=0}^p a_ju_{n-j}\n", "+\n", "h\\sum_{j=0}^p b_j\\varphi(t_{n-j},u_{n-j})\n", "+\n", "hb_{-1}\\varphi(t_{n+1},u_{n+1}),\n", "\\qquad\n", "n=p,p+1,\\dots,N-1\n", "$$\n", "où les $\\{a_k\\}$ et $\\{b_k\\}$ sont des coefficients donnés et $p\\ge0$ un entier.\n", " \n", "En notant $\\varphi_{n-j}\\stackrel{\\text{déf}}{=}\\varphi(t_{n-j},u_{n-j})$ et en écrivant explicitement les séries, on a\n", "$$\n", "u_{n+1} \n", "= \n", "a_0u_{n}+a_1u_{n-1}+\\cdots+a_pu_{n-p}\n", "+\n", "h b_0\\varphi_{n}+h b_1\\varphi_{n-1}+\\cdots+h b_{p}\\varphi_{n-p}\n", "+\n", "hb_{-1}\\varphi_{n+1}.\n", "$$\n", "
\n", "\n", "1. La méthode est **consistante** ssi\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=1\n", "\\end{cases}\n", "$$\n", "\n", "1. La méthode est **zéro-stable** ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1.\n", "\\end{cases}\n", "$$\n", "où $\\varrho$ est le premier polynôme caractéristique défini par\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}\n", "$$\n", "\n", "1. **Consistance + zéro-stabilité = convergence**\n", "\n", "1. Une méthode convergente est d'**ordre** $\\omega\\ge1$ si, de plus,\n", "$$\n", "\\sum_{j=0}^p (-j)^{i}a_j+i\\sum_{j=-1}^p (-j)^{i-1}b_j=1 \\quad i=2,\\dots,\\omega.\n", "$$\n", "\n", "1. Soit $\\beta>0$ un nombre réel positif et considérons le problème de Cauchy\n", "$$\\begin{cases}\n", "y'(t)=-\\beta y(t), &\\text{pour }t>0,\\\\\n", "y(0)=1\n", "\\end{cases}$$\n", " Sa solution est $y(t)=e^{-\\beta t}\\xrightarrow[t\\to+\\infty]{}0.$\n", " Si, sous d'éventuelles conditions sur $h$, on a $|u_n|\\xrightarrow[n\\to+\\infty]{}0$ alors on dit que **le schéma est A-stable.**\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : consistance\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "La méthode multipas suivante est-elle consistante?\n", "$$\n", "u_{n+1}=u_{n-1}+ \\dfrac{h}{4}(3\\varphi_{n}-\\varphi_{n-1})\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à 2 pas explicite : \n", "- $p=1$\n", "- $b_{-1}=0$\n", "- $a_0=0$ et $a_1=1$\n", "- $b_0=\\frac{3}{4}$ et $b_1=-\\frac{1}{4}$\n", "\n", "La méthode n'est pas consistante car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-1+\\frac{3}{4}-\\frac{1}{4}\\neq1\n", "\\end{cases}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "La méthode multipas suivante est-elle convergente?\n", "$$\n", "u_{n+1}=-4u_{n}+5u_{n-1}+ h(4\\varphi_{n+1}+2\\varphi_{n})\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à 2 pas implicite : \n", "- $p=1$\n", "- $b_{-1}=4$\n", "- $a_0=-4$ et $a_1=5$\n", "- $b_0=2$ et $b_1=0$\n", "\n", "La méthode est consistante car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=-4+5=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-\\big(0\\times a_0+1\\times a_1\\big)+\\big(b_{-1}+b_0+b_1\\big)=-5+4+2+0=1.\n", "\\end{cases}\n", "$$\n", "\n", "Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{n-j}=r^2-\\big(a_0 r^1+a_1r^0\\big)=r^2-(-4r+5)=r^2+4r-5=(r-1)(r+5)\n", "$$\n", "dont les racines sont $r_0=1$ et $r_1=-5$.\n", "La méthode n'est pas zéro-stable car $|r_1|>1$, donc la méthode ne converge pas." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "La méthode multipas suivante est-elle convergente?\n", "$$\n", "u_{n+1}=-u_{n}+u_{n-1}+u_{n-2}+ 4h\\varphi_{n}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à 3 pas explicite : \n", "- $p=2$\n", "- $b_{-1}=0$\n", "- $a_0=-1$, $a_1=1$ et $a_2=1$\n", "- $b_0=4$, $b_1=0$ et $b_2=0$\n", "\n", "La méthode est consistante car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=-1+1+1=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-(0\\times(-1)+1\\times1+2\\times1)+(0+4+0+0)=-3+4=1.\n", "\\end{cases}\n", "$$\n", "\n", "\n", "\n", "Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{n-j}=r^3-\\big(-r^2+r+1\\big)=r^3+r^2-r-1=(r-1)(r^2-1)=(r-1)^2(r+1)\n", "$$\n", "dont les racines sont $r_0=1$ de multiplicité $2$ et $r_1=-1$.\n", "La méthode n'est pas zéro-stable car $\\varrho'(r_0)\\neq0$, donc la méthode ne converge pas." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIUAAAAaCAYAAACZ6p+qAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADx0lEQVRoBe2a/3XaMBDHCa8DNO0GZAPSTNBkg/yYoGWD8PoX/Jtu0HSCNtmAZoM2G5ARWjag348i+RkjYxmwsQX3npB0Ptl3X53uJOOj+XzeOdD+ITAej9/K6i/W8p6tP4k/e7N/cBwstgjcyQEGDg21v6n9R+Wk65iHeu8Q+CxHOE9Zfad2T7z+wSlSqOxZkyjx22fz0WFP4YNl/3iKEESKS9XL6UNMt+loJTLb0H8b99g1eGVskGwfh1A5Re+F9KGLt+Ih0GYiL2LHWhQJBtgehIPsJQgQJU7VnjEwSR9i4ClnqodcaDJJRxz3QSUxJK2vruMUM9X3aX5RW/KtwQBbpO9GOGg8DjFUbU4htv/qFOpwZn1SbcIHD2waWR2/S6+/Kh9UAORYfOPdai+Q+ByvPuZdXxBWR3KNxwCdrZ4b46D74BAcQ9NBAOcYuvcUhA8EGksygsm/QkG1Q9Ic9mBXchZn7AqqDQPpz1GQ8F4qkqG7xmwLBxYNC4E6Id1/4Jzimk5yJYKG7LlX+adCeATIIqoTAyaDUjnl4SD+cd7Du7pIHn3JE2g5H7uui2yIHAPMD8LB4USkuFD55RjpWmCRt29U+mpfqJiNifqsvKn6pcOfxtVJ2IV9RXrGjAF4h+KArDmSsmmbmt7yz40m3mxEVJOjB6pdmiEHN52wC0cuopgxwPZQHAxORApyGzv6BdLkA6ZzlndqszE6sUKMKVp9VnSnFXaFOEXMGDABoTiYycIpmHDSQZYA6qdlkkZchOikokV2TNKXDOOfVKhD6UrjnkOFA+TIpSHPrwoDouu5R0+el4fjszAwpyzPuHVZoTiY++MUXnKTo9oZ5RzEK59latxMvF2/98ib7Ky63v4WMEgWUvoBui+beyLv1zS/wnYpHLpShNCyajXhtS92kivUu5JbYxf2FVHMGGB7KA4GJ5yC0LIq7xIpHo10+35YIdhXRDFjgO2hOBiccApy+JnpZX4UHXAWyiRzadfd91YBjF1FpC/sK6I2YoBN28bB4MSe4ocKfy75CIcgdXjfY/gGVMmTHk5Pt895EI9VPlHtOw0h583rGT1bgwF6V4jDKyx8ZDMajaYqfdqxFNnTw65Qe+rEQM+6VLkN1W0TOT2nFA48i/QB8SIqZEUZ4Zb88NKtzAu2OjHgZEapg8ri0Ekigzxqgldt4pVNGWtXx6SsPjFhgO3r4uAiBR7L0bPRf5+XWFbmlXwJeScaEwbYtBYOyZdX3EEbGDaWfLxZ10sVHrtVku58a/GoOuQouvTsGDDAqE1w+A8ArHDu4eMM/wAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\left(r - 1\\right) \\left(r + 1\\right)^{2}$" ], "text/plain": [ " 2\n", "(r - 1)⋅(r + 1) " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "sym.var('r')\n", "rho=r**3+r**2-r-1\n", "sym.factor(rho)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : schéma à deux pas d'ordre 4\n", "\n", "La première barrière de Dahlquist affirme qu'un schéma implicite à $q=2$ étapes consistante et zéro-stable peut être d'ordre $\\omega=q+2=4$. \n", "\n", "Construire un schéma implicite à $q=2$ étapes consistante et zéro-stable d'ordre $\\omega=q+2=4$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Un schéma implicite à $q=2$ étapes s'écrit\n", "$$\n", "u_{n+1}=a_0u_n+a_1u_{n-1}+h\\big(b_{-1}\\varphi_{n+1}+b_0\\varphi_n+b_1\\varphi_{n-1}\\big)\n", "$$\n", "\n", "La méthode est d'ordre 4 ssi\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1,\n", "\\\\\n", "\\displaystyle \\sum_{j=0}^p (-j)a_j+\\sum_{j=-1}^p b_j=1\n", "\\\\\n", "\\displaystyle \\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j=1\n", "\\\\\n", "\\displaystyle \\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j=1\n", "\\\\\n", "\\displaystyle \\sum_{j=0}^p (-j)^{4}a_j+4\\sum_{j=-1}^p (-j)^{3}b_j=1\n", "\\end{cases}\n", "$$\n", "ssi\n", "$$\n", "\\begin{cases}\n", "a_0+a_1=1,\n", "\\\\\n", "-\\big(0a_0+1a_1\\big)+\\big(b_{-1}+b_0+b_1\\big)=1\n", "\\\\\n", "\\big(0^2a_0+1^2a_1\\big)-2\\big(-1b_{-1}+0b_0+1b_1\\big)=1\n", "\\\\\n", "-\\big(0^3a_0+1^3a_1\\big)+3\\big((-1)^2b_{-1}+0^2b_0+1^2b_1\\big)=1\n", "\\\\\n", "\\big(0^4a_0+1^4a_1\\big)-4\\big((-1)^3b_{-1}+0^3b_0+1^3b_1\\big)=1\n", "\\end{cases}\n", "$$\n", "ssi\n", "$$\n", "\\begin{pmatrix}\n", "1&1&0&0&0\\\\\n", "0&-1&1&1&1\\\\\n", "0&1&2&0&-2\\\\\n", "0&-1&3&0&3\\\\\n", "0&1&4&0&-4\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "a_0\\\\a_1\\\\b_{-1}\\\\b_0\\\\b_1\n", "\\end{pmatrix}\n", "=\n", "\\begin{pmatrix}\n", "1\\\\1\\\\1\\\\1\\\\1\n", "\\end{pmatrix}\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ a_{0} : 0, \\ a_{1} : 1, \\ b_{0} : \\frac{4}{3}, \\ b_{1} : \\frac{1}{3}, \\ b_{m1} : \\frac{1}{3}\\right\\}$" ], "text/plain": [ "{a₀: 0, a₁: 1, b₀: 4/3, b₁: 1/3, bₘ₁: 1/3}" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "sym.var('a_0,a_1,b_m1,b_0,b_1')\n", "\n", "eq1 = sym.Eq(a_0 + a_1, 1) # eq1 = a_0+a_1-1\n", "eq2 = sym.Eq(-a_1 + b_m1 + b_0 + b_1, 1)\n", "eq3 = sym.Eq(a_1 + 2 * b_m1 - 2 * b_1, 1)\n", "eq4 = sym.Eq(-a_1 + 3 * b_m1 + 3 * b_1, 1)\n", "eq5 = sym.Eq(a_1 + 4 * b_m1 - 4 * b_1, 1)\n", "sym.solve([eq1, eq2, eq3, eq4, eq5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On reconnait la méthode MS$_2$.\n", "\n", "Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^2-a_0r-a_1=(r-1)(r+1)\n", "$$\n", "dont les racines sont $r_0=1$ et $r_1=-1$.\n", "La méthode est zéro-stable car\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "Soit la méthode multipas\n", "$$\n", "u_{n+1}=(1-\\gamma)u_{n}+\\gamma u_{n-1}+ \\frac{h}{4}((\\gamma+3)\\varphi_{n+1}+(3\\gamma+1)\\varphi_{n-1}).\n", "$$\n", "1. Pour quelles valeurs de $\\gamma$ est-elle consistante?\n", "1. Pour quelles valeurs de $\\gamma$ est-elle zéro-stable?\n", "1. Pour quelles valeurs de $\\gamma$ est-elle convergente?\n", "1. Pour quelles valeurs de $\\gamma$ est-elle convergente d'ordre $2$? et d'ordre $3$?\n", "1. Pour $\\gamma=\\frac{1}{2}$ vérifier empiriquement la convergence sur le problème de Cauchy\n", "$$\n", "\\begin{cases}\n", "y'(t) = -4y(t)+t^2, &\\forall t \\in I=[0,1],\\\\\n", "y(0) = 1\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à 2 pas implicite : \n", "- $p=1$\n", "- $b_{-1}=\\frac{\\gamma+3}{4}$\n", "- $a_0=1-\\gamma$ et $a_1=\\gamma$\n", "- $b_0=0$ et $b_1=\\frac{3\\gamma+1}{4}$\n", "\n", "\n", "1. La méthode est consistante pour tout $\\gamma$ car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1-\\gamma+\\gamma=1 \\text{ pour tout }\\gamma,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-\\big(0\\times(1-\\gamma)+1\\times \\gamma\\big)+\\big(\\frac{\\gamma+3}{4}+0+\\frac{3\\gamma+1}{4}\\big)=1 \\text{ pour tout }\\gamma\n", "\\end{cases}\n", "$$\n", "\n", "1. Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^2-(1-\\gamma)r-\\gamma=(r-1)(r+\\gamma)\n", "$$\n", "dont les racines sont $r_0=1$ et $r_1=-\\gamma$.\n", "La méthode est zéro-stable ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n", "donc ssi $-1\\le -\\gamma\\le1$ et $-\\gamma\\neq1$, i.e. ssi $-1< \\gamma\\le 1$.\n", "\n", "1. La méthode est convergente ssi elle est consistante et zéro-stable donc ssi $-1< \\gamma\\le 1$.\n", "\n", "1. La méthode est d'ordre au moins 2 pour tout $\\gamma$ car\n", "$$\n", "\\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j\n", "=\n", "\\big(0^2a_0+1^2a_1\\big)-2\\big(-1b_{-1}+0b_0+1b_1\\big)\n", "=\n", "\\gamma-2\\big(-\\frac{\\gamma+3}{4}+\\frac{3\\gamma+1}{4}\\big)\n", "=1\n", "$$\n", " Pour que la méthode soit d'ordre 3 il faut que\n", "$$\n", "1\n", "=\n", "\\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j\n", "=\n", "-\\big(0^3a_0+1^3a_1\\big)+3\\big((-1)^2b_{-1}+0^2b_0+1^2b_1\\big)\n", "=\n", "-\\gamma+3\\big(\\frac{\\gamma+3}{4}+\\frac{3\\gamma+1}{4}\\big)\n", "=\n", "2\\gamma+3\n", "$$\n", " donc ssi $\\gamma=-1$. Cependant cette valeur n'appartient pas au domain de zéro-stabilité. \n", " On conclut que la méthode est convergente d'ordre $2$ pour $-1< \\gamma\\le 1$ et non convergente sinon.\n", "\n", "1. On définit la solution exacte (calculée en utilisant le module `sympy`) pour estimer les erreurs:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "%reset -f\n", "%matplotlib inline\n", "\n", "from matplotlib.pylab import *\n", "\n", "# variables globales\n", "t0 = 0\n", "tfinal = 1\n", "y0 = 1\n", "\n", "phi = lambda t,y : -4*y+t**2\n", "\n", "gamma=1/2" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{d}{d t} y{\\left(t \\right)} = t^{2} - 4 y{\\left(t \\right)}$" ], "text/plain": [ "d 2 \n", "──(y(t)) = t - 4⋅y(t)\n", "dt " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = \\left(C_{1} + \\frac{\\left(8 t^{2} - 4 t + 1\\right) e^{4 t}}{32}\\right) e^{- 4 t}$" ], "text/plain": [ " ⎛ ⎛ 2 ⎞ 4⋅t⎞ \n", " ⎜ ⎝8⋅t - 4⋅t + 1⎠⋅ℯ ⎟ -4⋅t\n", "y(t) = ⎜C₁ + ─────────────────────⎟⋅ℯ \n", " ⎝ 32 ⎠ " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ C_{1} : \\frac{31}{32}\\right\\}$" ], "text/plain": [ "⎧ 31⎫\n", "⎨C₁: ──⎬\n", "⎩ 32⎭" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = \\frac{t^{2}}{4} - \\frac{t}{8} + \\frac{1}{32} + \\frac{31 e^{- 4 t}}{32}$" ], "text/plain": [ " 2 -4⋅t\n", " t t 1 31⋅ℯ \n", "y(t) = ── - ─ + ── + ────────\n", " 4 8 32 32 " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "t = sym.Symbol('t')\n", "y = sym.Function('y')\n", "edo= sym.Eq( sym.diff(y(t),t) , phi(t,y(t)) )\n", "display(edo)\n", "solgen = sym.dsolve(edo)\n", "display(solgen)\n", "\n", "consts = sym.solve( sym.Eq( y0, solgen.rhs.subs(t,t0)) , dict=True)[0]\n", "display(consts)\n", "solpar=solgen.subs(consts).simplify()\n", "display(solpar)\n", "\n", "sol_exacte = sym.lambdify(t,solpar.rhs,'numpy')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On calcule la solution approchée pour différentes valeurs de $N$:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Multipas 1.97\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmIAAAFACAYAAAAf2hBGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deZwU1dX/8c8BxIC4ogyiyGhkB0WHoOQXDQPEII+Py0MUFXcNURRFo4k4iiYRYxRxA0XAJdGRMcZdUREFUSIBRpB9RAkgm2gUcNhhzu+PauKAM9AD3V3VNd/369UvuqrvVJ9jU8zx3tv3mrsjIiIiIplXI+wARERERKorFWIiIiIiIVEhJiIiIhISFWIiIiIiIVEhJiIiIhISFWIiIiIiIakVdgDpdvDBB3tubm5arr127Vr22WeftFw7k5RH9MQll7jkAfHJJS55QHxySXUexcXFX7v7ISm7oKRV7Aux3Nxcpk6dmpZrjx8/nk6dOqXl2pmkPKInLrnEJQ+ITy5xyQPik0uq8zCzRSm7mKSdhiZFREREQqJCTERERCQkKsREREREQhL7OWIiIiKSGsXFxQ1q1ao1EmiDOnOSUQbM2rJlyxV5eXkrK2qgQkxERESSUqtWrZENGzZsecghh3xbo0YNDzueqCsrK7Ovvvqq1YoVK0YCp1fURtWsiIiIJKvNIYccskZFWHJq1KjhhxxyyGqCHsSK22QwHhEREcluNVSEVU3iv1el9ZYKMRERkTAUFkJuLj/v3Blyc4Nj2SUzyzvzzDOP3Ha8efNmDjzwwGPz8/OP3tXP1q1b9ziAkpKS2sOGDTto2/kJEybUveSSSxqnJ+KdUyEmIiKSaYWF0Ls3LFqEucOiRcGxirFdqlOnTllJSUmd0tJSA3jppZf2y8nJ2VyVa8yfP3/v55577r+F2Mknn7zuqaee+iLVsSZDhZiIiEimFRTAunXbn1u3LjgfJ8OGHUSjRm2pUSOPRo3aUq4Xak906dJl9fPPP38AwKhRow7q0aPHN9teu+GGGxoNGDAgZ9tx06ZNW5eUlNQu//MFBQWHTZ06tV6LFi1a/eEPf2jw+uuv77utR+2GG25odOaZZx554oknNmvSpEmb++6772CA1atX1+jYsWOzVq1atWzWrFmrZ5555gCANWvW1OjUqdPRzZs3b9W0adPWI0aMOLAquagQExERybTFi6t2PhsNG3YQ11/fhOXLa+MOy5fX5vrrm6SiGLvwwgu/ee655w5ct26dzZ07t27Hjh3XVuXnBw4cuLR9+/al8+bNm3P77bf/YFmJuXPn1hk7duz8SZMmzbv33nsbLVy4cK+6deuWvfHGG5/NmTNn7vvvv//pLbfccnhZWRkvvvjifg0bNtxcUlIyZ/78+bP/7//+b01VYtHyFSIiIpnyn//AzTeDVzLf/YgjMhvPnrjsssbMmlW30tc/+WQfNm2y7c5t2FCD667L5YknKt6UvE2bdTzxxC6HCE844YT1S5Ys2XvEiBEHde3adXUVI9+lU089dVW9evW8Xr16Wzp27Ljmgw8+2Oecc85Z3a9fv8MnTZpUr0aNGqxcubL2kiVLah1//PHrCwoKGl911VWHnXHGGau7detWWpX3Uo+YiIhIupWVwYgR0KwZPPkkdO8Odeps36ZuXRg4MJz40mHHImxX56uoW7duq26//fbGF1100Tflz9eqVcvLysr+e7xx48Yqv5+Z/eD4scceO+g///lPrZkzZ86dN2/enPr1629ev359jWOOOWbjxx9/PKdt27brCwoKDrvxxhsPrcp7qUdMREQknYqLoU8fmDwZTjoJHnkE2rQJJuYXFOCLF2NHHBEUYb16hR1t8nbVc9WoUVuWL6/9g/OHHrqJyZNL9vTtr7rqqq/333//rR06dFj/+uuv77vtfG5u7sbRo0cfAPDhhx/WXbp06d47/uz++++/tbS0tGZl137zzTcPGDhw4PI1a9bUmDRp0r7333//0qeffvrAgw8+ePPee+/tr7322r7Lli2rDbBw4cK9GjRosKVPnz7f7LvvvmV//etf61clDxViIiIi6fDtt3DrrfDoo3DIIfC3v8EFF8C23pZevaBXL94fP55OnTqFGmpaDBiwlOuvb8KGDd+Pvv3oR2UMGLA0FZf/8Y9/vPm22277wfyuiy666NvCwsL6LVq0aNWuXbu1TZo02bBjmw4dOqyvVauWN2/evNX555//dV5e3vryrx933HFru3Tp0nTZsmW1b7zxxuW5ubmbr7jiim9OPfXUo9u0adOydevW64488sgNAMXFxXX69+9/eI0aNahVq5Y/8sgji6qShwoxERGRVCorC4qu3/0umBN2zTXwxz/CAQeEHVlmXXllMGT4xz8e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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.optimize import fsolve\n", "\n", "def multipas(phi, tt,y0):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " for i in range(1,len(tt) - 1):\n", " temp = fsolve(lambda x: -x + (1-gamma)*uu[i]+gamma*uu[i-1] + h/4 * ( (gamma+3)*phi(tt[i+1],x)+(3*gamma+1)*phi(tt[i-1],uu[i-1]) ), uu[i])\n", " uu.append(temp)\n", " return uu\n", "\n", "\n", "H = []\n", "err_mp = []\n", "N = 10\n", "for k in range(7):\n", " N+=20\n", " tt = linspace(t0, tfinal, N + 1)\n", " h = tt[1] - tt[0]\n", " yy = [sol_exacte(t) for t in tt]\n", " uu_mp = multipas(phi, tt,y0)\n", " H.append(h)\n", " err_mp.append(max([abs(uu_mp[i] - yy[i]) for i in range(len(yy))]))\n", "\n", "print ('Multipas %1.2f' %(polyfit(log(H),log(err_mp), 1)[0]))\n", "\n", "figure(figsize=(8,5))\n", "plot(log(H), log(err_mp), 'r-o', label='Multipas')\n", "xlabel('$\\ln(h)$')\n", "ylabel('$\\ln(e)$')\n", "legend(bbox_to_anchor=(1.04, 1), loc='upper left')\n", "grid(True)\n", "show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "Soit la méthode multipas\n", "$$\n", "u_{n+1}\n", "=\\left(\\frac{1}{3}b^2+\\frac{1}{2}b\\right)u_{n}\n", "+\\left(\\frac{2}{3}b^2+\\frac{1}{2}b-1\\right)u_{n-1}\n", "+h\\left(\\left(-\\frac{1}{6}b^2-\\frac{1}{4}b+2\\right)\\varphi_{n}\n", " +\\left(-\\frac{1}{6}b^2-\\frac{1}{4}b\\right)\\varphi_{n-1}\\right).\n", "$$\n", "1. Pour quelles valeurs de $b$ est-elle consistante?\n", "1. Est-elle convergente pour ces valeurs?\n", "1. Quel ordre de convergente a-t-elle?\n", "1. Pour les valeurs de $b$ qui donnent la convergence, vérifier empiriquement l'ordre de convergence sur le problème de Cauchy\n", "$$\n", "\\begin{cases}\n", "y'(t) = -10\\big(y(t)-1\\big)^2, &\\forall t \\in I=[0,1],\\\\\n", "y(0) = 2.\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à $q=2$ pas explicite : \n", "- $p=1$\n", "- $b_{-1}=0$\n", "- $a_0=\\frac{1}{3}b^2+\\frac{1}{2}b$ et $a_1=\\frac{2}{3}b^2+\\frac{1}{2}b-1$\n", "- $b_0=-\\frac{1}{6}b^2-\\frac{1}{4}b+2$ et $b_1=-\\frac{1}{6}b^2-\\frac{1}{4}b$\n", "\n", "\n", "1. La méthode est consistante ssi\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=b^2+b-1=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-\\big(0a_0+1a_1\\big)+\\big(b_{-1}+b_0+b_1\\big)=b^2+b-1=1\n", "\\end{cases}\n", "$$\n", "donc ssi $b=-2$ ou $b=1$.\n", "\n", "1. Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^2-a_0r-a_1\n", "=\n", "\\begin{cases}\n", "r^2-\\frac{1}{3}r-\\frac{2}{3}&\\text{si }b=-2,\n", "\\\\\n", "r^2-\\frac{5}{6}r-\\frac{1}{6}&\\text{si }b=1,\n", "\\end{cases}\n", "$$\n", " dont les racines sont \n", "$$\n", "\\begin{cases}\n", "r_0=1,\\ r_1=-\\frac{2}{3}&\\text{si }b=-2,\n", "\\\\\n", "r_0=1,\\ r_1=-\\frac{1}{6}&\\text{si }b=1,\n", "\\end{cases}\n", "$$\n", " La méthode est zéro-stable ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n", " donc elle est vérifiée pour les deux cas.\n", "\n", " La méthode est convergente ssi elle est consistante et zéro-stable donc ssi $b=-2$ ou $b=1$.\n", "\n", "1. La méthode est d'ordre au moins 2 car\n", "$$\n", "\\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j\n", "=\n", "\\begin{cases}\n", "\\frac{2}{3}+2\\frac{1}{6}=1&\\text{si }b=-2,\n", "\\\\\n", "\\frac{1}{6}+2\\frac{5}{12}=1&\\text{si }b=1,\n", "\\end{cases}\n", "$$\n", " La méthode n'est pas d'ordre 3 car\n", "$$\n", "\\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j\n", "=\n", "=\n", "\\begin{cases}\n", "-\\frac{2}{3}+3\\frac{-1}{6}\\neq1&\\text{si }b=-2,\n", "\\\\\n", "-\\frac{1}{6}+3\\frac{-5}{12}\\neq1&\\text{si }b=1,\n", "\\end{cases}\n", "$$\n", "\n", "1. On définit la solution exacte (calculée en utilisant le module `sympy`) pour estimer les erreurs:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "%reset -f\n", "%matplotlib inline\n", "\n", "from matplotlib.pylab import *\n", "\n", "# variables globales\n", "t0 = 0\n", "tfinal = 1\n", "y0 = 2\n", "\n", "phi = lambda t,y : -10*(y-1)**2" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{d}{d t} y{\\left(t \\right)} = - 10 \\left(y{\\left(t \\right)} - 1\\right)^{2}$" ], "text/plain": [ "d 2\n", "──(y(t)) = -10⋅(y(t) - 1) \n", "dt " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = \\frac{C_{1} - t - \\frac{1}{10}}{C_{1} - t}$" ], "text/plain": [ " C₁ - t - 1/10\n", "y(t) = ─────────────\n", " C₁ - t " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ C_{1} : - \\frac{1}{10}\\right\\}$" ], "text/plain": [ "{C₁: -1/10}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKQAAAAtCAYAAAAgCsBRAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGQ0lEQVR4Ae2c7XEUORCG1y4C4LgMfBmAHcGZDA4y4MgA6v75H8VlAERwxWUAROCCDCCDc20GvveRpUGr7fnwzu5odre7StZMSy21Wu+2WhrBye3t7cLJLYAFrq6uHiv7qPREz0t4U9ODqTv0/uZlAQHvoTT6oHSjdK50plSNHJDVTD+PjqMnfIY2en6lDC9ZjU6r9ewduwUMCzggDaM4q54FHJD1bO89GxZwQBpGcVY9Czgg69neezYs4IA0jOKsehZwQNazvfdsWMABaRjFWfUs4ICsZ3vv2bDAVgCpE/4zo+011tB6a4LOmMoCv8aOHk3VYdnPaEDe83PTWaxf6uHvFS2gOflIkgp/RjXCu3jpfTLtTsbc9pHCf0jTC+Wvh2qsunwvXSp/P1RminrSp/pNlynGOfc+NgakJpBbIl+UP7EGGcu/quypnn/kdfQO/3flVa44JV2ijvlNF0D5S229kn7HmI+57fNWBnvXYbRLlRFbcq2pJOSQf1kWTPkegbfVmy5qM4xb+axWgCntOqavMTHk8x6jP5ViP+Kkr+gY5ZDHyx4aMaZDHNck87QRIAUkYseVZdjQFk/xr8FPLOSfpxfP3QJYICzZ0VOxo/pN6Wv0YJQvYtkH5WFpC0zFhco/x+cmUx1AyDKMh2C5fiweu7dr5X8rzwl52vGlLbfKkT8HQMoGfwkwr5XwfAT5OUjwYvBzOtfLWvwoeUD2ObZzqRzAtdF3FQDgXlI79DWobtbYN8nlP6KsyB/naoEHmjR2ltdRQQBUbkIsb4gHLOvFJkKGzLecYTwjjxftJelYdfPTq6BX2JoF8JBsPBJ48IZvitbxTCWPk/xlUS9/RaYrfqQuMeTeBv+yWZvXxjaLlh+Re22M00F4yAAs5YAIgDTLtXh4T3hr8aJ4JkmG+ni+T2aFn8w+UP+sOcMnjdP02uIT3vBFqoyZB41Cckf975LxkImIt/gFB4BGJiDlq0ryoKkuyy3AswiZhWQaEOv5oVLeLlWQp51ekmybN+qS3UtvpLGedA3q0MtyQOLVyqMcK37EJtRri/9W4kcZGI9B/RLUeMiyP7HWSW2Y3mi9pnP23QKn2QBWwCEQ4OlI1tILuC4y2fyxAZrawAuyfJVgpD6fHC0+ZTWo+k2XGoOeW5+5h+SCBOeNfNL7T4kzSahZeu9ew99/9JfzRYto553aCTdFlLfFUoC9uueTfmkc6ANx04Uf5yflTTwdSvzPzi3QerlCkwEwL5W3XZ7gHPGZyu/t5STDcs+EJ9DvfKBTdaAxjdrUTKXnXPsJHlJGXAGf3llq8XAvOhRHBg+3iZfDiyJ/iMTmjbQV0lxw0oEXb/0PoOL80V9a2d6KtxKCUTgnahtXWrL5VedfXsLXGgm1niWq7L0SXo4YcfDgqa++kNkEyHOyqamLxmWFOGbdNqbawCEwBzdK50rYzCTV5SrfG+VhrqIsn3+ta3+0S/21MrPxLTOjbp3jSoDEYz2SAJdnWUaJAYcYlqMifr3srIcSwD9IMA41QF892R4PGz57xjnBS66RyljFOFJrHAey8R07l/NCnAy4AfpGpLZDG8rvHV+jmzrtHFcAZBzAvRWkA6WXSq+U2jYvTbvU0wv1B3vURtgfLAswuVYMfy0+c1Ke/wJQ80qg1XgLDy9L2gklD7lx4xFcvWCkA9UdVG9jZY5PEG9lear0g6e88Z56Lt9nZ7HRgJzdiI5EIbzfgKEShgFCQiTqs1x3XQlUcV1yQNa1/5je+QABLe8y8y9LNnuBoVcCzUamZJ5O2Zn3NbkF0tcnOiZ+tOLNyZXq6tA9ZJd15l3WtVNO3pNzyUQs3Xk8mfhmLs/adqEltK1y66Rk9IUWB6Q5HfNnChCccKCoFUsmXtjcqF6KH617CeZgWwC3EH+nX6J8yTanY2+YxIdsVEpKHjKdJeMdAVN65zmBtpSt+u6ArGr+0Z3zUYIvOSWFm1QC3TIWrMSP4gcvVwrN4d0BOYdZ6NYhbUyS12tqC1icQd5EgAW+nvF8/FOUF4Fx9wfZleVb9WpvcMxxeQyZzdqcHgUYvB8Ullvlbdfi8IZcprhQziaGnP+mJgfc0CuBEt0t9Y2r9frZbtXy1vfVAgKUb2r2dfIOVG/i0hSbbn2I/wPWw/pByUyO4gAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = 1 + \\frac{1}{10 t + 1}$" ], "text/plain": [ " 1 \n", "y(t) = 1 + ────────\n", " 10⋅t + 1" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "t = sym.Symbol('t')\n", "y = sym.Function('y')\n", "edo= sym.Eq( sym.diff(y(t),t) , phi(t,y(t)) )\n", "display(edo)\n", "solgen = sym.dsolve(edo)\n", "display(solgen)\n", "\n", "consts = sym.solve( sym.Eq( y0, solgen.rhs.subs(t,t0)) , dict=True)[0]\n", "display(consts)\n", "solpar=solgen.subs(consts).simplify()\n", "display(solpar.apart())\n", "\n", "sol_exacte = sym.lambdify(t,solpar.rhs,'numpy')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On calcule la solution approchée pour différentes valeurs de $N$:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Multipas b= 1 ordre=2.01\n", "Multipas b=-2 ordre=2.22\n" ] }, { "data": { "image/png": "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2PdSU6F/fy/WVSQPAQ9+1tpO1tqG1trG1tr21tptR97fbq1te+TnTdbaJkdecdbaENraXEREgt7+/W617kUXwebN8Pnn8J//QP36HhVz+DC8+KIr7ngRETBkiJfqG8KMMfEdO3asnXOdkZFB+fLlm7Rq1er8U303IiKiKcC6deuKv/feexVy3p8/f35Et27dTjhBw1uaN29eb/78+Z7910Ee3n333Qp169aNrVu3bmzTpk3r//TTT6U8LSPgwU9ERCRoWeuGc+vXh7ffdj19a9e6zZeNZyeBTZ8ODRvCs8/CjTe6keGSJd1nJUtC+/Zwzz0+aEOALVlCyfPPJ3bJEkp6o7xSpUplr1u3rlRKSooB+Prrr8tGRUVleFLGhg0bSkyYMOF/we/yyy9P/fjjj095RnCgnX/++WkLFixYt379+tX9+/ff/sADD9TytAwFPxERkbysWwfXXANdusA558DixS78nX22R8UkJrqg17YthIfDrFnw73/D+PFuT2djLFFR8OGHvmlGIB04QNgNNxCzaROlbriBmAMHvJM7rrrqqv0TJ048G2DcuHEVOnXq9L+9Avv06VN9wIAB/1tWHRMTE7du3bpjjo5LSEiosWTJksj69evHPv/881WmTJlSJqfHsE+fPtU7duxY++KLL65bq1athkOHDq0EsH///rCWLVvWjY2NbVC3bt3Yzz///GzXxgNhV1555fn16tWLjYmJiRs1alT5vOr88ccfV2zatGn9mJiYuDlz5pxW798111xzsHLlylkArVq1Orhz584Tj8Q7BQU/ERGR3A4dct1yjRvDkiXwzjuwcCHEx3tUTM6wboMGLuwNGeKmBF5zjfu8dGl3bG+tWqlMnequQ83ttxO9dy9nWQt793JW58543EOVlzvvvHPvhAkTyqemppo1a9ZEtGzZ8uCpv3XU4MGDtzVr1ixl7dq1qwcOHHjCsW9r1qwpNXv27A0LFy5c+9prr1VPTEw8KyIiInvq1KkbV69evWbevHnrn3766XOys7P56quvylatWjVj3bp1qzds2LDqpptuOpDXM1NTU8OWL1++9s0339zco0eP2gCTJ08uU79+/djjX02bNj3lHIK33nqrUqtWrfKYNHByQbGBs4iISFCYNg0eeQT++APuuANefx0KsCff8aZPdye2/f473HwzDBsG5+YxgywuDj76aDFxcVeeed397N57OXflSvLtuUpOJnzLFkpmH9maMC0NM2MGFaKjiahShcy8vtOwIamjR3PKIdcWLVoc2rp1a4lRo0ZVuPrqqz0OP6fSpk2bfZGRkTYyMjKzZcuWB/773/+WvvXWW/c/9thj5yxcuDAyLCyM5OTk4lu3bg2/8MILDyUkJJzbs2fPGh06dNjfunXrlLzK7NKly94jZaekpKSE7d69u1j79u3/bt++/UmPe8vL5MmTy3z++eeVfvzxxxN2QjkV9fiJiIhs2QKdOsH117sJd3PmwGefeRz6cg/rFivmevomTsw79IW6bdsokX3cftTZ2e59b5TfunXrfQMHDjz3rrvuOuZIuPDwcJud68FpaWmeTcYEzHHzN40xvP/++xX27NkTvmLFijVr165dXbFixYxDhw6FNW7cOG3ZsmWrGzVqdCghIaFG3759qxW0zFP1+L388suVc95LTEw8C+Dnn38u9dBDD9X65ptvNlatWjXL07apx09ERIqujAz417/guedcKnnpJXjiCSju2dSpw4dd5+DgwRAWBi+/7E5sK+GViBOcTtUz98YbVOzfn5qHDx/tZCpZkuwhQ0jq3Zs9Z/r8nj177i5XrlxW8+bND02ZMqVMzvvR0dFp06ZNOxvghx9+iNi2bdsJfwvlypXLSklJKZZf2dOnTz978ODBOw4cOBC2cOHCMsOHD9/22Wefla9UqVJGiRIl7OTJk8ts3769OEBiYuJZVapUyXzooYf2lilTJvuTTz6pmFeZ48aNK9++ffu/Z86cGVmmTJmsihUrZp2qx69///67+vfvvyvnesOGDcVvueWWOqNHj/6jcePGaQX7X+pYCn4iIlI0/fCDW6W7cqVbUvvmm+4EDg9Nn+52etm48eTDukXNY4+xZ9Ysyn3/PWenpWFKlMD+4x/s80boA6hTp07Gs88+e8L8vLvuuuuvMWPGVKxfv37sBRdccLBWrVqHj7+nefPmh8LDw229evViu3Tpsjs+Pv5Q7s+bNm168KqrrorZvn178b59++6Ijo7O6N69+942bdqc37BhwwZxcXGptWvXPgywdOnSUv379z8nLCyM8PBw+84772zOq77ly5fPatq0af2UlJRiI0eO/ON02vzMM89U27dvX3ivXr1qgevdXLly5RpPylDwExGRomXXLvjnP+Gjj6BmTfj2W7jhBo+LSUx0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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.optimize import fsolve\n", "\n", "def multipas(b, phi, tt, y0):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " for i in range(1,len(tt) - 1):\n", " uu.append( (b**2/3+b/2)*uu[i]+(2*b**2/3+b/2-1)*uu[i-1]+h*(-b**2/6-b/4+2)*phi(tt[i],uu[i])+h*(-b**2/6-b/4)*phi(tt[i-1],uu[i-1]) )\n", " return uu\n", "\n", "\n", "H = []\n", "err_mp1 = []\n", "err_mp2 = []\n", "N = 10\n", "for k in range(7):\n", " N+=20\n", " tt = linspace(t0, tfinal, N + 1)\n", " h = tt[1] - tt[0]\n", " yy = [sol_exacte(t) for t in tt]\n", " uu_mp1 = multipas( 1, phi, tt, y0)\n", " uu_mp2 = multipas(-2, phi, tt, y0)\n", " H.append(h)\n", " err_mp1.append(max([abs(uu_mp1[i] - yy[i]) for i in range(len(yy))]))\n", " err_mp2.append(max([abs(uu_mp2[i] - yy[i]) for i in range(len(yy))]))\n", "\n", "print ('Multipas b= 1 ordre=%1.2f' %(polyfit(log(H),log(err_mp1), 1)[0]))\n", "print ('Multipas b=-2 ordre=%1.2f' %(polyfit(log(H),log(err_mp2), 1)[0]))\n", "\n", "figure(figsize=(8,5))\n", "plot(log(H), log(err_mp1), 'r-o', label='Multipas b=1')\n", "plot(log(H), log(err_mp2), 'b-d', label='Multipas b=-2')\n", "xlabel('$\\ln(h)$')\n", "ylabel('$\\ln(e)$')\n", "legend(bbox_to_anchor=(1.04, 1), loc='upper left')\n", "grid(True)\n", "show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "Soit la méthode multipas\n", "$$\n", "u_{n+1}\n", "=\\left(b^2-\\frac{9}{2}b+\\frac{11}{2}\\right)u_{n}\n", "+\\left(b^2-\\frac{7}{2}b+\\frac{3}{2}\\right)u_{n-1}\n", "+h\\left(\\frac{b}{2}(b-2)\\varphi_{n}\n", " +\\frac{b}{2}\\left(b-\\frac{10}{3}\\right)\\varphi_{n-1}\\right).\n", "$$\n", "- Pour quelles valeurs de $b$ est-elle consistante?\n", "- Est-elle convergente pour ces valeurs?\n", "- Quel ordre de convergente a-t-elle?\n", "- Pour les valeurs de $b$ qui donnent la convergence, vérifier empiriquement l'ordre de convergence sur le problème de Cauchy\n", "$$\n", "\\begin{cases}\n", "y'(t) = y(t)(1-y(t)), &\\forall t \\in I=[0,1],\\\\\n", "y(0) = 2.\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "C'est une méthode à $q=2$ pas explicite : \n", "- $p=1$\n", "- $b_{-1}=0$\n", "- $a_0=b^2-\\frac{9}{2}b+\\frac{11}{2}$ et $a_1=b^2-\\frac{7}{2}b+\\frac{3}{2}$\n", "- $b_0=\\frac{b}{2}(b-2)$ et $b_1=\\frac{b}{2}\\left(b-\\frac{10}{3}\\right)$\n", "\n", "\n", "- La méthode est consistante ssi\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=2b^2-8b+7=1,\n", "\\\\\n", "\\displaystyle-\\sum_{j=0}^p ja_j+\\sum_{j=-1}^p b_j=-\\big(0a_0+1a_1\\big)+\\big(b_{-1}+b_0+b_1\\big)=\\frac{5}{6}b-\\frac{19}{6}=1\n", "\\end{cases}\n", "$$\n", "donc ssi $b=3$. Vérifions ces calculs ci-dessous:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG0AAAAVCAYAAABMiWD6AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAELUlEQVRoBe2Y3VEbMRDHD8YFAKkg0AEfFYR0AOkA6CBM3njLkA4gFSTQAaSCBDqAEjJ0QP4/oVVWsnwY+8D3cDsjS1qtpP3WnpceHx+bruDk5GRFZ32J563H/kD4h67uGM5pmlHHSjiVgY7sTI3PNL5R2zDc0M+vgeX5j8hOOJShdh3mVON14TYdbhjOqYGujUaU/ZmTp2H7MxpY6vJNK+9ShBFpe+qH9FgqpzKXnqgDyFQ/NZ5YB4Q3LRIfx3O21f9VOxb+NuIajSkyLtTCuuathtA6KXFPbUttIRB5tsIIHoIMwl8bQ5Fmarls3yv16Iw64Ex81a54EH51pB+sC9FHo9KYCLkBpxYEVI/lmVNYtKZA0XAmZ2zFfRouBLLCCA7Ez4XaitplnE8t1xtIsKM70Pd95S4iMAQWkYZyU8UHsQQiyg41xANXwTnAG766eTbUPgzG/uAEcd6orzGS7e1yovvgHwcr4UCIX2rBaG6xVS5H1zrUvSiX4uu8lXDCoval4DES4dBpoz7wvKwxl9wJQerwgMXxyLCBBY2hBVJ6eZo+/UZaC+9NzVEE3kG6fWsgfY8poMbEc3LV9rTg0GOpyxbybOl3Nvs/yTIGkYYBUDBpogaeAZRw30KLZ0Ofebjos0iuXfIKOBTwWXdfqd93PJNZcCwPz8nlaV9tLB7L6G+Eg98ss02sHkV8J2LCfMm41BhjkObMI8jBP4Qfu8z2LLIXX6R3iiGAiCf6rkp+u5RLZ3Efevumfi7QGWS5rN7gQNLjGIiYtMYGqygb4Yggw59rDlMHajzsKYVq3hsQX/tixt4WPJb0nipiGBVNn+WCZ1oGVaOJAg+9lEDeW+w9+yD8A6fEnrF5M+jegPiDL/gjwngGcC7eb89vL+USj/C6q36sfuBNy0BE5HveLbzUA3n/VvhgMLewovE7N3/xUGdyBhUd/bTAO5VFjd+oNapHPjnsPeVzBWPhkN81vlZDlpnk0l70ZAbXMMEaI63bvWlBA/RX6tWv+zH7qxV3ZjQdiKBr6hGkBBjM3i7RGdP2xpV7pprrHJTX9Uc4aeW9Z0D3kD2IOt5rk8f6RDqNXKKpGaURHsfo4k3jnKrRUnqMl22oT56gMZcTpgB9aRyjHQvhsGNBP+KZiOVzBWfIQDgUgfOFiFDfO7ki//A1xr9wT4WIiCgwdtSnwoNFAdb231jJ8vHgT1o/0rh6OAcsAiI//OVjDleygVG9o/VNru3IsNd9kmEUBSPPk+PL7xceQitG8E4Os3eEPfyxadWZpr0CsgCVbSqc4E5zngDKfjNUH+XCqYBqMIy0wMcnHokwJZiBwFPe84DzJnAoCumrwRrxhhMaz95j4dtHmdH0SS70jsHK50ioppn4cR1Wh58Xa0AOwZPSRSEy8e7liSvDwqwaIEKqaW3WA8t9/wCuEa6e5qDI/AAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle 2 b^{2} - 8 b + 7$" ], "text/plain": [ " 2 \n", "2⋅b - 8⋅b + 7" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAADgAAAAsCAYAAAAwwXuTAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADr0lEQVRoBe2a7VEUQRCGF4oAToyAM4MDIxAyEI0AzUB+wj8KMgAiEMxAiEAhAzAC8TLA51mm9/bWlUPc3eOo66pmenq++p3umbmZJbu9vc3knZ2dQciRouvB/cjPYrqUjeh8d3e3R/YyqZSl1bsky1L5Kfk1+Ib8qyibVooNh6Wxl5G30A1DtxgC6Q1swQAW3Bd4tVxZGd5Afw2fwVMj7OjBVxhwRfpRRt6DfyD3w7CyBy8p2IyCCamTYGfTpGMGX8bmgzACWQzfyetVHZGVPWh+ItHBeqo0VQ9iw1vYSKqSS2wdO/Ml9s8AaZyHKB0UcV4doe18GM84Lqsq/UwK94msHKIZDT+gE/lL2DjeQxebDtmc9KCh8CnlX5N+Ju+a7YQYy73AsdxUqqTtkvaPhajATmh4AG8jyxfIEZIZsnVcfzY+Im/8b8GnyHmHyF2RE1o3pvZJ2joCiIEb8FClhBw7ZXkbDrBvom5Kbeea6JKcWO0Mm5QFFxjy9bk0wSIruWD7sLLrz/CMTqJ5DyFCI3RFSn3Lz2HTh9Im7arLo2irDfAKin1SgTn+t8TFBpQDpMJXCtxyV0nrKAxztsbWGm1iBu28lqgzpOBvfde2eYgy9ev5VxC6/ZTJPbiYMu44AaKojLBshkYxk8Z8FUicndM+NjRV0ptnCXwWIeqG4aZSJb1TNTyfGSvSxkl5B/tLQi91RoxnGHrYr8TYyR5tLqIlPHhIYXkzycjHMRAe0njDU28H+bvUnfcoFB2mRlP1HNQeJzsiLlvwhiChtEF40dC08Tb6wjPIesxZ04vKHiPTAMfQuc2x3rRF8rgai7gC4F358/sbIfr8kCVEc4Cz7tq5B+cefOIzMA/RJ+6gieYt8O5591NmYtXZrDD/JTObfhtZPd9kRnMxm9Kz92Dc6DtxD3e1uL/FeL6nFpfTUDaZdgIQEH2M9rbtBTq/kJKal1v9QtVViApEb5Vv297Ci/cd5Fao9XMQUD4OCfAF8rAVFPd02oUHfbf0kbZzcOLuYg36CncNQN8r38N+/XHd/fFAhK5x6gJgvHitATJe7TLkX7Cfm8deyptG2GqIYnyAGyBXnxdPAHNcqtM0try/VgGWLK7bLS8odwLKD8mlJs2IrQLEO7GxRFpndb9O2ZSuVYDJSM++CNU6u+u8W1fvUbouAPrNo85LfiDx+Cgf/o8CcV+j1gECwF3Sz1nF71BkPepXqfwr7X0G/m9Z679kwsAEMELVjzt1/+AQ1RtLfwPkKMv3ZG0cNgAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\frac{5 b - 9}{6}$" ], "text/plain": [ "5⋅b - 9\n", "───────\n", " 6 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACIAAAAVCAYAAAAjODzXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRElEQVRIDZ2W2U0kMRBAG0QAHBkMGbC7GUAGDCFABiC+Zn4hgyWDFWSwGwKQAYSACIH3Ghv1UWU0W1KNXffhsqe3VqvVZdd1F6CwXK/Xz5/b8S/8Bfg65raplg2yUdxtXB2AFwgOwSwJjY7aYUOpyWs7A/i3xkTwAO7vzDQmDJRPYR1oOBRBL6BrJ3fZS9/A/1f13INH4Dl4V/nRakdSwNgA16xXQ6XCv5Jf0IR+g3+hTfwLoC3AjusrhWYiWN2ABpjCOQyrHAatnbieKkPrQ18pfJfIGcGiljpL7wV75+hJh1B86CvtSjojGFlteEuQWf3eMGrRlxV1UL6+zsCosK7VkROMarvZ5kASx0htvbMQBkKmL32GkHYE7Z9gVl3vjKBeaZP4BXpcj2AGLwjUDaGViOf5FloVJokYXOzYe5RPrD6Kvg1T0Ndiyqx062j2UUoHsDqoawmu/j37aCidkYjfu2glUmPMVgL5SEUvbT2a6AiahbUSsZVZBU/IPIZMPku++NJnCK0ZsZXZmb4j8/l2HYIDLkS3zY6Ez4EGrUQcQm9DBKMnXwWScljtkFd4mqAqP0B9htBK5A8W95EVge7AY3B4ve3eCbyoG7pxbuqfpPQI0kRw+Ax2oIM5qwSeAbOgoyDo9kdcbEaySmzXTbL2r2Ui24TtUf7/nx4V+Fz7cdNXtEnkqlts9ZE9/b3qdx1RaQkOZ6E33OBH23Q2qp8tvlltmRMvhN+spapT1tFX2qdJ/ou+n4kPrLNrW2Qm6LVefgApX8m/vYXSaAAAAABJRU5ErkJggg==\n", "text/latex": [ "$\\displaystyle \\left[ \\left( 3\\right)\\right]$" ], "text/plain": [ "[(3,)]" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "sym.var('b')\n", "p=1\n", "bm1=0\n", "a0=b**2-sym.Rational(9,2)*b+sym.Rational(11,2)\n", "a1=b**2-sym.Rational(7,2)*b+sym.Rational(3,2)\n", "b0=sym.Rational(1,2)*b*(b-2)\n", "b1=sym.Rational(1,2)*b*(b-sym.Rational(10,3))\n", "\n", "cond1=a0+a1\n", "cond2=-(0*a0+1*a1)+(bm1+b0+b1)\n", "display(cond1)\n", "display(cond2.factor())\n", "display(sym.solve([sym.Eq(cond1,1),sym.Eq(cond2,1)],b))\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dans la suite on considerera $b=3$." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle a_0=1$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle a_1=0$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle b_0=\\frac{3}{2}$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle b_1=- \\frac{1}{2}$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.display import display, Math\n", "display(Math('a_0='+sym.latex(a0.subs(b,3))))\n", "display(Math('a_1='+sym.latex(a1.subs(b,3))))\n", "display(Math('b_0='+sym.latex(b0.subs(b,3))))\n", "display(Math('b_1='+sym.latex(b1.subs(b,3))))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^2-a_0r-a_1\n", "\\stackrel{b=3}{=}\n", "r^2-r\n", "$$\n", " dont les racines sont \n", "$$\n", "r_0=1,\\ r_1=0\n", "$$\n", " La méthode est zéro-stable ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n", " ce qui est bien vérifié.\n", "\n", " La méthode est convergente ssi elle est consistante et zéro-stable donc ssi $b=3$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- La méthode est d'ordre au moins 2 car\n", "$$\n", "\\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j\n", "=\n", "\\big(0^2a_0+1^2a_1\\big)+2\\big(-(-1)b_{-1}+0b_0+1b_1\\big)\n", "\\stackrel{b=3}{=}\n", "1\n", "$$\n", " La méthode n'est pas d'ordre 3 car\n", "$$\n", "\\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j\n", "=\n", "-a_1+3\\big(b_{-1}+b_1\\big)\n", "\\stackrel{b=3}{\\neq}1\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- On définit la solution exacte (calculée en utilisant le module `sympy`) pour estimer les erreurs:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "%reset -f\n", "%matplotlib inline\n", "\n", "from matplotlib.pylab import *\n", "\n", "# variables globales\n", "t0 = 0\n", "tfinal = 1\n", "y0 = 2\n", "\n", "phi = lambda t,y : y*(1-y)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{d}{d t} y{\\left(t \\right)} = \\left(1 - y{\\left(t \\right)}\\right) y{\\left(t \\right)}$" ], "text/plain": [ "d \n", "──(y(t)) = (1 - y(t))⋅y(t)\n", "dt " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = \\frac{1}{C_{1} e^{- t} + 1}$" ], "text/plain": [ " 1 \n", "y(t) = ──────────\n", " -t \n", " C₁⋅ℯ + 1" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left\\{ C_{1} : - \\frac{1}{2}\\right\\}$" ], "text/plain": [ "{C₁: -1/2}" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle y{\\left(t \\right)} = 1 + \\frac{1}{2 e^{t} - 1}$" ], "text/plain": [ " 1 \n", "y(t) = 1 + ────────\n", " t \n", " 2⋅ℯ - 1" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "\n", "t = sym.Symbol('t')\n", "y = sym.Function('y')\n", "edo= sym.Eq( sym.diff(y(t),t) , phi(t,y(t)) )\n", "display(edo)\n", "solgen = sym.dsolve(edo)\n", "display(solgen)\n", "\n", "consts = sym.solve( sym.Eq( y0, solgen.rhs.subs(t,t0)) , dict=True)[0]\n", "display(consts)\n", "solpar=solgen.subs(consts).simplify()\n", "display(solpar.apart())\n", "\n", "sol_exacte = sym.lambdify(t,solpar.rhs,'numpy')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On calcule la solution approchée pour différentes valeurs de $N$:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Multipas b= 3 ordre=1.98\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAFACAYAAAAszc0KAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3debyV8/r/8de1S2gQSqWoDFszZSdyOEqGZMhwjB3DITmZS86Pb8RxTo6pcDQQyrQVkUNElAZDUalUaidUmkiOatuldvv6/XGvji2r9t6117rXutf7+Xisx173sO6uy+puX67Pfd8fc3dEREREJHNkhR2AiIiIiCSXCkARERGRDKMCUERERCTDqAAUERERyTAqAEVEREQyjApAERERkQxTMewAwlKzZk1v2LBhQo79888/U6VKlYQcO5mikgdEJ5eo5AHRySUqeUB0clEe8c2YMeMHd9+v3A4oaS1jC8CGDRsyffr0hBx74sSJtGvXLiHHTqao5AHRySUqeUB0colKHhCdXJRHfGa2pNwOJmlPQ8AiIiIiGUYFoIiIiEiGUQEoIiIikmEy9hpAERERKR8zZsyoVbFixaeA5qi5lCqKgLmFhYVdc3Jyvt92owpAERER2SUVK1Z8qk6dOk3222+//2ZlZXnY8QgUFRXZ6tWrm65ateop4Kxtt6tKFxERkV3VfL/99lun4i91ZGVl+X777beWoCv7++1JjkdERESiJ0vFX+qJfSdxaz0VgCIiIqkkNxcaNuSEE0+Ehg2DZSmRmeWcffbZB21d3rx5M/vss88R7du3P7Skz1auXLkVQF5eXqXHH398363rJ0+eXPmKK644MDERQ5s2bRpNnjy5clk/V1BQYC1atGjSqFGjpoceemizHj161C3rMVQAioiIpIrcXOjWDZYswdxhyZJgWUVgifbcc8+ivLy8PfPz8w3gtdde26t27dqby3KML7/8cveXXnrpfwXgH//4x4Jnnnnm2/KOdVftscce/uGHH+bl5eV9MW/evC/Gjx+/1/jx48s0bYwKQBERkVTRuzcUFPx2XUFBsD5KHn98X+rWbUFWVg5167agWNdtV3To0GHtyJEj9wYYPnz4vuedd96PW7f17Nmzbp8+fWpvXc7Ozm6Wl5dXqfjne/fuXW/69OlVGzdu3PTvf/97rTfffLPa1g5iz54965599tkHHXPMMYc1aNCgeb9+/WoCrF27Nqtt27aHNW3atMlhhx3W9IUXXtgbYN26dVnt2rU7tFGjRk2zs7ObPfnkk/vEi/mZZ56p0apVq8bZ2dnNJkyYUKpuYFZWFtWrVy8C2LRpkxUWFpqZlem/le4CFhERSRVLl5ZtfTp6/PF96dGjARs3Bk2olSsr0aNHAwD++tcfd/TRklx66aU/3nXXXftfeOGFP82fP7/yVVddtebjjz+uWtrP9+3bd3m/fv1qT5gwYRHAm2++Wa349vnz5+85Y8aM+evXr6/QqlWrpuedd97aevXqbX7rrbcW7bvvvkUrV66sePTRRze+5JJLfho1atRederU2Txx4sRFAGvWrKkQ788sKCjImjlz5oK33367ardu3Q768ssv540ePbrarbfe+ruh5z333LNo5syZCwAKCwtp3rx506VLl+5++eWXf3/iiSf+XJb/VioARUREwlZUBM89B2bgce6lqF8/+THtrCuvPJC5c7ffyZo9uwqbNv22XbVxYxY33dSQoUP3i/uZ5s0LGDq0xKHYo48+esOyZct2f/LJJ/c96aST1pYx8hKddtppP1WtWtWrVq1a2LZt23UffPBBlQsuuGDtzTfffMDUqVOrZmVl8f3331datmxZxSOPPHJD7969D+zevXu9zp07r+3YsWN+vGNecsklP8aOnZ+fn5/1ww8/VDjzzDPXn3nmmV/sKJaKFSuyYMGCL3744YcKp59++iHTpk3b46ijjtpY2lw0BCwiIhKm2bPhj3+Ev/wFDj4Y9tjjt9srV4a+fcOJLRG2Lf5KWl9GHTt2/Omuu+468LLLLvtNN7FixYpeVFT0v+VffvmlzH/etsOsZsYTTzyx75o1ayrOmTNn/oIFC76oUaPG5g0bNmQdfvjhv3z22WdftGjRYkPv3r3r9erVa//SHnP06NHVGjdu3HTbV6tWrRpv+/maNWtuOe6449aPHj26ellyUQdQREQkDGvXwl13wYABsM8+8PTTcMUVMHw49O6NL12K1a8fFH9duoQdbemV1KmrW7cFK1dW+t36/fffxKef5u3qH9+9e/cfqlevvqVNmzYbig/hNmzY8JcxY8bsDfDhhx9WXr58+e7bfrZ69epb8vPz4w7VArz99tt79+3bd+W6deuypk6dWu3hhx9e/vzzz+9Ts2bNzbvv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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.optimize import fsolve\n", "\n", "def multipas(phi, tt):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " for i in range(1,len(tt) - 1):\n", " uu.append( uu[i]+h*3/2*phi(tt[i],uu[i])-h/2*phi(tt[i-1],uu[i-1]) )\n", " return uu\n", "\n", "\n", "H = []\n", "err_mp = []\n", "N = 10\n", "for k in range(7):\n", " N+=20\n", " tt = linspace(t0, tfinal, N + 1)\n", " h = tt[1] - tt[0]\n", " yy = [sol_exacte(t) for t in tt]\n", " uu_mp = multipas(phi, tt)\n", " H.append(h)\n", " err_mp.append(max([abs(uu_mp[i] - yy[i]) for i in range(len(yy))]))\n", "\n", "print ('Multipas b= 3 ordre=%1.2f' %(polyfit(log(H),log(err_mp), 1)[0]))\n", "\n", "figure(figsize=(8,5))\n", "plot(log(H), log(err_mp), 'r-o', label='Multipas b=3')\n", "xlabel('$\\ln(h)$')\n", "ylabel('$\\ln(e)$')\n", "legend(bbox_to_anchor=(1.04, 1), loc='upper left')\n", "grid(True)\n", "show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : convergence predictor-corrector\n", "\n", "On notera $\\varphi_k\\stackrel{\\text{déf}}{=}\\varphi(t_k,u_k)$.\n", "Soit les méthodes multipas\n", "\\begin{align*}\n", "u_{n+1}&=u_{n}+\\frac{h}{12}\\left(23\\varphi_{n}-16\\varphi_{n-1}+5\\varphi_{n-2}\\right)&\\text{[P]}\n", "\\\\\n", "u_{n+1}&=u_{n}+\\frac{h}{24}\\left(9\\varphi_{n+1}+19\\varphi_{n}-5\\varphi_{n-1}+\\varphi_{n-2}\\right)&\\text{[C]}\n", "\\end{align*}\n", "- Étudier consistance, ordre et zéro-stabilité de la méthode P\n", "- Étudier consistance, ordre et zéro-stabilité de la méthode C\n", "- Soit la méthode PC suivante:\n", "$$\n", "\\begin{cases}\n", "\\tilde u=u_{n}+\\frac{h}{12}\\left(23\\varphi_{n}-16\\varphi_{n-1}+5\\varphi_{n-2}\\right)\n", "\\\\\n", "u_{n+1}=u_{n}+\\frac{h}{24}\\left(9\\varphi(t_{n+1},\\tilde u)+19\\varphi_{n}-5\\varphi_{n-1}+\\varphi_{n-2}\\right)\n", "\\end{cases}\n", "$$\n", " Calculer empiriquement l'ordre de convergence de la méthode PC sur le problème de Cauchy\n", "$$\n", "\\begin{cases}\n", "y'(t) = \\frac{1}{1+t^2}-2y^2(t), &\\forall t \\in I=[0,1],\\\\\n", "y(0) = 0,\n", "\\end{cases}\n", "$$\n", " dont la solution exacte est $y(t)=\\frac{t}{1+t^2}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction schéma P\n", "\n", "P est une méthode à $q=3$ pas explicite : \n", "- $p=2$\n", "- $b_{-1}=0$\n", "- $a_0=1$ et $a_1=a_2=0$\n", "- $b_0=\\frac{23}{12}$, $b_1=\\frac{-16}{12}$ et $b_2=\\frac{5}{12}$\n", "- La méthode est consistante d'ordre $\\omega=3$ car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1,\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p -ja_j+\\sum_{j=-1}^p b_j=-a_1-2a_2+\\big(b_{-1}+b_0+b_1+b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j=a_1+4a_2-2\\big(-b_{-1}+b_1+2b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j=-a_1-8a_2+3\\big(b_{-1}+b_1+4b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{4}a_j+4\\sum_{j=-1}^p (-j)^{3}b_j=a_1+16a_2-4\\big(-b_{-1}+b_1+8b_2\\big)\\neq1\n", "\\end{cases}\n", "$$\n", "Vérifions ces calculs ci-dessous:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge1$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge2$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge3$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\le4$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "from IPython.display import display, Math\n", " \n", "p=1\n", "bm1=0\n", "a0=1\n", "a1=0\n", "a2=0\n", "b0=sym.Rational(23,12)\n", "b1=sym.Rational(-16,12)\n", "b2=sym.Rational(5,12)\n", "\n", "\n", "aa=[a0,a1,a2]\n", "bb=[b0,b1,b2]\n", "\n", "cond=[]\n", "cond.append(sum(aa)) \n", "cond.append(sum([-j*aa[j]+bb[j] for j in range(len(aa))])+bm1)\n", "if cond==[1,1]:\n", " display(Math(\"\\omega\\ge1\"))\n", " for n in range(2,9):\n", " cond.append(sum( [ (-j)**n*aa[j]+n*(-j)**(n-1)*bb[j] for j in range(len(aa)) ])+n*bm1)\n", " if cond[n]==1:\n", " display(Math(\"\\omega\\ge\"+str(n)))\n", " else:\n", " display(Math(\"\\omega\\le\"+str(n)))\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^3-a_0r^2-a_1r-a_2\n", "=\n", "r^3-r^2=r^2(r-1)\n", "$$\n", " dont les racines sont \n", "$$\n", "r_0=1,\\ r_1=r_2=0\n", "$$\n", " La méthode est zéro-stable ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n", " ce qui est bien vérifié.\n", "\n", " La méthode est convergente car consistante et zéro-stable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction schéma C\n", "\n", "C est une méthode à $q=3$ pas implicite : \n", "- $p=2$\n", "- $b_{-1}=\\frac{9}{24}$\n", "- $a_0=1$ et $a_1=a_2=0$\n", "- $b_0=\\frac{19}{24}$, $b_1=\\frac{-5}{24}$ et $b_2=\\frac{1}{24}$\n", "- La méthode est consistante d'ordre $\\omega=4$ car\n", "$$\n", "\\begin{cases}\n", "\\displaystyle\\sum_{j=0}^p a_j=1,\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p -ja_j+\\sum_{j=-1}^p b_j=-a_1-2a_2+\\big(b_{-1}+b_0+b_1+b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{2}a_j+2\\sum_{j=-1}^p (-j)^{1}b_j=a_1+4a_2-2\\big(-b_{-1}+b_1+2b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{3}a_j+3\\sum_{j=-1}^p (-j)^{2}b_j=-a_1-8a_2+3\\big(b_{-1}+b_1+4b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{4}a_j+4\\sum_{j=-1}^p (-j)^{3}b_j=a_1+16a_2-4\\big(-b_{-1}+b_1+8b_2\\big)=1\n", "\\\\\n", "\\displaystyle\\sum_{j=0}^p (-j)^{5}a_j+5\\sum_{j=-1}^p (-j)^{4}b_j=-a_1+32a_2+5\\big(b_{-1}+b_1+16b_2\\big)\\neq1\n", "\\end{cases}\n", "$$\n", "Vérifions ces calculs ci-dessous:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge1$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge2$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge3$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\ge4$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\omega\\le5$" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import sympy as sym\n", "sym.init_printing()\n", "from IPython.display import display, Math\n", " \n", "p=1\n", "bm1=sym.Rational(9,24)\n", "a0=1\n", "a1=0\n", "a2=0\n", "b0=sym.Rational(19,24)\n", "b1=sym.Rational(-5,24)\n", "b2=sym.Rational(1,24)\n", "\n", "\n", "aa=[a0,a1,a2]\n", "bb=[b0,b1,b2]\n", "\n", "cond=[]\n", "cond.append(sum(aa)) \n", "cond.append(sum([-j*aa[j]+bb[j] for j in range(len(aa))])+bm1)\n", "if cond==[1,1]:\n", " display(Math(\"\\omega\\ge1\"))\n", " for n in range(2,9):\n", " cond.append(sum( [ (-j)**n*aa[j]+n*(-j)**(n-1)*bb[j] for j in range(len(aa)) ])+n*bm1)\n", " if cond[n]==1:\n", " display(Math(\"\\omega\\ge\"+str(n)))\n", " else:\n", " display(Math(\"\\omega\\le\"+str(n)))\n", " break" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Le premier polynôme caractéristique est\n", "$$\n", "\\varrho(r)=r^{p+1}-\\sum_{j=0}^p a_jr^{p-j}=r^3-a_0r^2-a_1r-a_2\n", "=\n", "r^3-r^2=r^2(r-1)\n", "$$\n", " dont les racines sont \n", "$$\n", "r_0=1,\\ r_1=r_2=0\n", "$$\n", " La méthode est zéro-stable ssi\n", "$$\n", "\\begin{cases}\n", "|r_j|\\le1 \\quad\\text{pour tout }j=0,\\dots,p\n", "\\\\\n", "\\varrho'(r_j)\\neq0 \\text{ si } |r_j|=1,\n", "\\end{cases}\n", "$$\n", " ce qui est bien vérifié.\n", "\n", " La méthode est convergente car consistante et zéro-stable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction schéma PC\n", "\n", "Il est d'ordre $4$ car le prédictor est d'ordre $3$ et le corrector d'ordre $4$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On définit la solution exacte pour estimer les erreurs:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "%reset -f\n", "%matplotlib inline\n", "\n", "from matplotlib.pylab import *\n", "\n", "# variables globales\n", "t0 = 0\n", "tfinal = 1\n", "y0 = 0\n", "\n", "phi = lambda t,y : 1/(1+t**2)-2*y**2\n", "\n", "sol_exacte = lambda t : t/(1+t**2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On calcule la solution approchée pour différentes valeurs de $N$ pour les trois schémas:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Multipas P ordre=2.99\n", "Multipas C ordre=3.86\n", "Multipas PC ordre=4.00\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.optimize import fsolve\n", "\n", "\n", "def multipas_P(phi, tt, y0):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " uu.append(sol_exacte(tt[2]))\n", " for i in range(2,len(tt) - 1):\n", " uu.append( uu[i]+h/12* ( 23*phi(tt[i],uu[i])-16*phi(tt[i-1],uu[i-1])+5*phi(tt[i-2],uu[i-2]) ) )\n", " return uu\n", "\n", "def multipas_C(phi, tt, y0):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " uu.append(sol_exacte(tt[2]))\n", " for i in range(2,len(tt) - 1):\n", " temp = fsolve ( lambda x : -x+uu[i]+h/24* ( 9*phi(tt[i+1],x) + 19*phi(tt[i],uu[i])-5*phi(tt[i-1],uu[i-1])+phi(tt[i-2],uu[i-2]) ), uu[i])\n", " uu.append(temp)\n", " return uu\n", "\n", "def multipas_PC(phi, tt, y0):\n", " h = tt[1] - tt[0]\n", " uu = [y0]\n", " uu.append(sol_exacte(tt[1]))\n", " uu.append(sol_exacte(tt[2]))\n", " for i in range(2,len(tt) - 1):\n", " u_tilde = uu[i]+h/12* ( 23*phi(tt[i],uu[i])-16*phi(tt[i-1],uu[i-1])+5*phi(tt[i-2],uu[i-2]) )\n", " uu.append( uu[i]+h/24* ( 9*phi(tt[i+1],u_tilde) + 19*phi(tt[i],uu[i])-5*phi(tt[i-1],uu[i-1])+phi(tt[i-2],uu[i-2]) ) )\n", " return uu\n", "\n", "\n", "H = []\n", "err_p = []\n", "err_c = []\n", "err_pc = []\n", "N = 10\n", "for k in range(7):\n", " N+=20\n", " tt = linspace(t0, tfinal, N + 1)\n", " h = tt[1] - tt[0]\n", " yy = [sol_exacte(t) for t in tt]\n", " uu_p = multipas_P(phi, tt, y0)\n", " uu_c = multipas_C(phi, tt, y0)\n", " uu_pc = multipas_PC(phi, tt, y0)\n", " H.append(h)\n", " err_p.append(max([abs(uu_p[i] - yy[i]) for i in range(len(yy))]))\n", " err_c.append(max([abs(uu_c[i] - yy[i]) for i in range(len(yy))]))\n", " err_pc.append(max([abs(uu_pc[i] - yy[i]) for i in range(len(yy))]))\n", " \n", "print ('Multipas P ordre=%1.2f' %(polyfit(log(H),log(err_p), 1)[0]))\n", "print ('Multipas C ordre=%1.2f' %(polyfit(log(H),log(err_c), 1)[0]))\n", "print ('Multipas PC ordre=%1.2f' %(polyfit(log(H),log(err_pc), 1)[0]))\n", "\n", "figure(figsize=(8,5))\n", "plot(log(H), log(err_p), 'r-o', label='Multipas P')\n", "plot(log(H), log(err_c), 'b-o', label='Multipas C')\n", "plot(log(H), log(err_pc), 'c-o', label='Multipas PC')\n", "xlabel('$\\ln(h)$')\n", "ylabel('$\\ln(e)$')\n", "legend(bbox_to_anchor=(1.04, 1), loc='upper left')\n", "grid(True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rappels schémas Runge-Kutta\n", "\n", "\n", "
\n", "Une méthode de Runge-Kutta à $s\\ge1$ étages s'écrit:\n", "$$\n", "\\begin{array}{c|c}\n", "\\mathbf{c} & \\mathbb{A}\\\\\n", "\\hline\n", "&\\mathbf{b}^T\n", "\\end{array}\n", "\\quad\\implies\\quad\n", "\\begin{cases}\n", "u_0=y(t_0)=y_0,\\\\\n", "u_{n+1}=u_{n}+h \\displaystyle\\sum_{i=1}^sb_iK_i& n=0,1,\\dots N-1\\\\\n", "K_i=\\displaystyle\\varphi\\left( t_n+hc_i,u_n+h\\sum_{j=1}^{s}a_{ij}K_j \\right) & i=1,\\dots s.\n", "\\end{cases}$$\n", "
\n", "\n", "1. Soit $\\omega$ l'ordre de la méthode.\n", " - Si $\\begin{cases}\n", " \\displaystyle\\sum_{j=1}^s b_{i}=1&\n", " \\\\\n", " \\displaystyle c_i=\\sum_{j=1}^s a_{ij}&i=1,\\dots,s\n", " \\end{cases}$ alors la méthode est consistante (i.e. $\\omega\\ge1$)\n", "\n", " - Si $\\displaystyle\\sum_{j=1}^s b_j c_j=\\frac{1}{2}$ alors $\\omega\\ge2$\n", " - Si $\\begin{cases}\\displaystyle\\sum_{j=1}^s b_j c_j^2=\\frac{1}{3}\\\\\\displaystyle\\sum_{i=1}^s\\sum_{j=1}^s b_i a_{ij} c_j=\\frac{1}{6}\\end{cases}$ alors $\\omega\\ge3$ \n", " - Si $\\begin{cases}\\displaystyle\\sum_{j=1}^s b_j c_j^3=\\frac{1}{4}&\\\\\\displaystyle\\sum_{i=1}^s\\sum_{j=1}^s b_i c_i a_{ij} c_j=\\frac{1}{8}\\\\\\displaystyle\\sum_{i=1}^s\\sum_{j=1}^s b_i a_{ij} c_j^2=\\frac{1}{12}\\\\\\displaystyle\\sum_{i=1}^s\\sum_{j=1}^s\\sum_{k=1}^s b_i a_{ij}a_{jk} c_k=\\frac{1}{24}\\end{cases}$ alors $\\omega\\ge4$ \n", "\n", "1. La méthode est **zéro-stable**\n", "\n", "1. **Consistance + zéro-stabilité = convergence**\n", "\n", "1. Soit $\\beta>0$ un nombre réel positif et considérons le problème de Cauchy\n", "$$\\begin{cases}\n", "y'(t)=-\\beta y(t), &\\text{pour }t>0,\\\\\n", "y(0)=1\n", "\\end{cases}$$\n", " Sa solution est $y(t)=e^{-\\beta t}\\xrightarrow[t\\to+\\infty]{}0.$\n", " Si, sous d'éventuelles conditions sur $h$, on a $|u_n|\\xrightarrow[n\\to+\\infty]{}0$ alors on dit que **le schéma est A-stable.**\n", "\n", " Une méthode de Runge-Kutta à $s\\ge1$ étages pour $y'(t)=-\\beta y(t)$ s'écrit:\n", " $$\\begin{cases}\n", " u_0=y_0,\\\\\n", " u_{n+1}=u_{n}+h \\displaystyle\\sum_{i=1}^sb_iK_i& n=0,1,\\dots N-1\\\\\n", " K_i=\\displaystyle -\\beta \\left( u_n+h\\sum_{j=1}^{s}a_{ij}K_j \\right) & i=1,\\dots s.\n", " \\end{cases}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice\n", "Dans la littérature on trouve beaucoup de schémas de Runge-Kutta. Ci-dessous une petite liste de ces méthodes. Pour chaque méthode de Runge-Kutta indiquée, il est indiqué le nombre d'étages $s$, son ordre de convergence $\\omega$ et si le schéma est explicite, semi-implicite ou implicite.\n", "\n", "Exercice: choisir une méthode et vérifier si l'ordre de convergence est correct." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Gauss-1 \t| $\\begin{array}{c|cc} \\frac{1}{2} & \\frac{1}{2}\\\\ \\hline & 1 \\end{array}$ \t| 1 \t| 2 \t| I \t|\n", "| EE \t| $\\begin{array}{c|cc} 1 & 1\\\\ \\hline & 1 \\end{array}$ \t| 1 \t| 1 \t| E \t|\n", "| EI \t| $\\begin{array}{c|cc} 0 & 0\\\\ \\hline & 1 \\end{array}$ \t| 1 \t| 1 \t| I \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Gauss-2 \t| $\\begin{array}{c|cc} \\frac{1}{2}-\\frac{\\sqrt{3}}{6} & \\frac{1}{4} & \\frac{1}{4}-\\frac{\\sqrt{3}}{6}\\\\ \\frac{1}{2}+\\frac{\\sqrt{3}}{6} & \\frac{1}{4}+\\frac{\\sqrt{3}}{6} & \\frac{1}{4}\\\\ \\hline & \\frac{1}{2} & \\frac{1}{2} \\end{array}$ \t| 2 \t| 4 \t| I \t|\n", "| DIRK-2 \t| $\\begin{array}{c|cc} \\frac{1}{3} & \\frac{1}{3} & 0\\\\ 1 & 1 & 0\\\\ \\hline & \\frac{3}{4} & \\frac{1}{4} \\end{array}$ \t| 2 \t| 3 \t| SI \t|\n", "| Hammer & Hollingsworth \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{2}{3} & \\frac{1}{3} & \\frac{1}{3}\\\\ \\hline & \\frac{1}{4} & \\frac{3}{4} \\end{array}$ \t| 2 \t| ? \t| SI \t|\n", "| Randau-IIa-2 \t| $\\begin{array}{c|cc} \\frac{1}{3} & \\frac{5}{12} & -\\frac{1}{12}\\\\ 1 & \\frac{3}{4} & \\frac{1}{4}\\\\ \\hline & \\frac{3}{4} & \\frac{1}{4} \\end{array}$ \t| 2 \t| 3 \t| I \t|\n", "| CN \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ 1 & \\frac{1}{2} & \\frac{1}{2}\\\\ \\hline & \\frac{1}{2} & \\frac{1}{2} \\end{array}$ \t| 2 \t| 2 \t| I \t|\n", "| Heun \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ 1 & 1 & 0\\\\ \\hline & \\frac{1}{2} & \\frac{1}{2} \\end{array}$ \t| 2 \t| 2 \t| E \t|\n", "| EM \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0\\\\ \\hline & 0 & 1 \\end{array}$ \t| 2 \t| 2 \t| E \t|\n", "| \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{2}{3} & \\frac{2}{3} & 0\\\\ \\hline & \\frac{1}{4} & \\frac{3}{4}\\end{array}$ \t| 2 \t| 2 \t| E \t|\n", "| Ralston \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{3}{4} & \\frac{3}{4} & 0\\\\ \\hline & \\frac{1}{3} & \\frac{2}{3} \\end{array}$ \t| 2 \t| 2 \t| E \t|\n", "| \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{3}{4} & \\frac{3}{4} & 0\\\\ \\hline & 0 & 1 \\end{array}$ \t| 2 \t| 1 \t| E \t|\n", "| \t| $\\begin{array}{c|cc} 0 & 0 & 0\\\\ \\frac{2}{3} & \\frac{2}{3} & 0\\\\ \\hline & \\frac{1}{2} & \\frac{1}{2} \\end{array}$ \t| 2 \t| 1 \t| E \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Gauss-3 \t| $\\begin{array}{c|ccc} \\frac{1}{2}-\\frac{\\sqrt{15}}{10} & \\frac{5}{36} & \\frac{2}{9}-\\frac{\\sqrt{15}}{15} & \\frac{5}{36}-\\frac{\\sqrt{15}}{30} \\\\ \\frac{1}{2} & \\frac{5}{36}+\\frac{\\sqrt{15}}{24} & \\frac{2}{9}&\\frac{5}{36}-\\frac{\\sqrt{15}}{24}\\\\ \\frac{1}{2}+\\frac{\\sqrt{15}}{10} & \\frac{5}{36}+\\frac{\\sqrt{15}}{30} &\\frac{2}{9}+\\frac{\\sqrt{15}}{15}&\\frac{5}{36}\\\\ \\hline & \\frac{5}{18} &\\frac{4}{9}& \\frac{5}{18} \\end{array}$ \t| 3 \t| 6 \t| I \t|\n", "| Radau-IIa-3 \t| $\\begin{array}{c|ccc} \\frac{4-\\sqrt{6}}{10} & \\frac{88-7\\sqrt{6}}{360} & \\frac{296-169\\sqrt{6}}{1800} & \\frac{-2+3\\sqrt{6}}{225} \\\\ \\frac{4+\\sqrt{6}}{10} & \\frac{296+169\\sqrt{6}}{1800} & \\frac{88+7\\sqrt{6}}{360}&\\frac{-2-3\\sqrt{6}}{225}\\\\ 1 & \\frac{16-\\sqrt{6}}{36} &\\frac{16+\\sqrt{6}}{36}&\\frac{1}{9}\\\\ \\hline & \\frac{16-\\sqrt{6}}{36} &\\frac{16+\\sqrt{6}}{36}& \\frac{1}{9} \\end{array}$ \t| 3 \t| 5 \t| I \t|\n", "| Lobatto IIIa \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{2} & \\frac{5}{24} & \\frac{1}{3}&-\\frac{1}{24}\\\\ 1 & \\frac{1}{6} &\\frac{2}{3}&\\frac{1}{6}\\\\ \\hline & \\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 3 \t| 4 \t| I \t|\n", "| Lobatto \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{2} & \\frac{1}{4} & \\frac{1}{4}&0\\\\ 1 & 0 &1&0\\\\ \\hline & \\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 3 \t| 4 \t| SI \t|\n", "| Heun3 \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{3} & \\frac{1}{3} & 0&0\\\\ \\frac{2}{3} & 0 &\\frac{2}{3}&0\\\\ \\hline & \\frac{1}{4} & 0 & \\frac{3}{4} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| Kutta \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{2} & \\frac{1}{2} & 0&0\\\\ 1 & -1 &2&0\\\\ \\hline & \\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{2} & \\frac{1}{2} & 0&0\\\\ 1 & -1 &2&0\\\\ \\hline & -\\frac{1}{6} & \\frac{4}{3} & -\\frac{1}{6} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{2} & \\frac{1}{2} & 0&0\\\\ 1 & -1 &2&0\\\\ \\hline & \\frac{1}{6} & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ 1 & 1 & 0&0\\\\ \\frac{1}{2} & \\frac{1}{4} &\\frac{1}{4}&0\\\\ \\hline & \\frac{1}{6} & \\frac{1}{6} & \\frac{2}{3} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{2}{3} & \\frac{2}{3} & 0&0\\\\ \\frac{2}{3} & 0 &\\frac{2}{3}&0\\\\ \\hline & \\frac{1}{4} & \\frac{3}{8} & \\frac{3}{8} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{2}{3} & \\frac{2}{3} & 0&0\\\\ \\frac{2}{3} & \\frac{1}{3} &\\frac{1}{3}&0\\\\ \\hline & \\frac{1}{4} & 0 & \\frac{3}{4} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{2}{3} & \\frac{2}{3} & 0&0\\\\ 0 & -1 &1&0\\\\ \\hline & 0 & \\frac{3}{4} & \\frac{1}{4} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{3} & \\frac{1}{3} & 0&0\\\\ 1 & -1 &2&0\\\\ \\hline & 0 & \\frac{3}{4} & \\frac{1}{4} \\end{array}$ \t| 3 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|ccc} 0 & 0 & 0 & 0 \\\\ \\frac{1}{3} & \\frac{1}{3} & 0&0\\\\ \\frac{2}{3} & \\frac{1}{3} &\\frac{1}{3}&0\\\\ \\hline & \\frac{1}{3} & \\frac{1}{3} & \\frac{1}{3} \\end{array}$ \t| 3 \t| 1 \t| E \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "|Lobatto \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{5-\\sqrt{5}}{10} & \\frac{5+\\sqrt{5}}{60} & \\frac{1}{6} & \\frac{15-7\\sqrt{5}}{60} & 0\\\\ \\frac{5+\\sqrt{5}}{10} & \\frac{5-\\sqrt{5}}{60} &\\frac{15+7\\sqrt{5}}{60} &\\frac{1}{6}&0\\\\ 1 & \\frac{1}{6} & \\frac{5-\\sqrt{5}}{12} & \\frac{5+\\sqrt{5}}{12}& 0 \\\\ \\hline & \\frac{1}{12} & \\frac{5}{12} & \\frac{5}{12} & \\frac{1}{12} \\end{array}$ \t| 4 \t| 6 \t| I \t|| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{4} & \\frac{1}{8} & \\frac{1}{8} & 0 & 0\\\\ \\frac{7}{10} & -\\frac{1}{100} &\\frac{14}{25} &\\frac{3}{20}&0\\\\ 1 & \\frac{2}{7} & 0 & \\frac{5}{7} & 0\\\\ \\hline & \\frac{1}{14} & \\frac{32}{81} & \\frac{250}{567} & \\frac{5}{54} \\end{array}$ \t| 4 \t| 5 \t| SI \t|\n", "| RK4-1 \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0 & 0 & 0\\\\ \\frac{1}{2} & 0 &\\frac{1}{2} &0&0\\\\ 1 & 0 & 0 & 1 & 0\\\\ \\hline & \\frac{1}{6} & \\frac{1}{3} & \\frac{1}{3} & \\frac{1}{6} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| RK4-2 \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{4} & \\frac{1}{4} & 0 & 0 & 0\\\\ \\frac{1}{2} & 0 &\\frac{1}{2} &0&0\\\\ 1 & 1 & -2 & 2 & 0\\\\ \\hline & \\frac{1}{6} & 0 & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| Règle 3/8 \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{3} & \\frac{1}{3} & 0 & 0 & 0\\\\ \\frac{2}{3} &-\\frac{1}{3} & 1 &0&0\\\\ 1 & 1 & -1 & 1 & 0\\\\ \\hline & \\frac{1}{8} & \\frac{3}{8} & \\frac{3}{8} & \\frac{1}{8} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0 & 0 & 0\\\\ 0 &-1 & 1 &0&0\\\\ 1 & -1 & \\frac{3}{2} & \\frac{1}{2} & 0\\\\ \\hline & \\frac{1}{12} & \\frac{2}{3} & \\frac{1}{12} & \\frac{1}{6} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ 1 & 1 & 0 & 0 & 0\\\\ \\frac{1}{2} &\\frac{3}{8} & \\frac{1}{8} &0&0\\\\ 1 & -2 & -1 & 4 & 0\\\\ \\hline & \\frac{1}{6} & \\frac{1}{12} & \\frac{2}{3} & \\frac{1}{12} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{2}{3} & \\frac{2}{3} & 0 & 0 & 0\\\\ \\frac{1}{3} &\\frac{1}{12} & \\frac{1}{4} &0&0\\\\ 1 &-\\frac{5}{4} & \\frac{1}{4} & 2 & 0\\\\ \\hline & \\frac{1}{8} & \\frac{3}{8} & \\frac{3}{8} & \\frac{1}{8} \\end{array}$ \t| 4 \t| 4 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0 & 0 & 0\\\\ 1 &0 & 1 &0&0\\\\ 1 &0 & 0 & 1 & 0\\\\ \\hline & \\frac{1}{6} & \\frac{2}{3} & 0 & \\frac{1}{6} \\end{array}$ \t| 4 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0 & 0 & 0\\\\ \\frac{1}{3} &\\frac{1}{3} & 0 &0&0\\\\ \\frac{2}{3} &\\frac{1}{3} & 0 & \\frac{1}{3} & 0\\\\ \\hline & 0 & -2 & \\frac{3}{2} & \\frac{3}{2} \\end{array}$ \t| 4 \t| 3 \t| E \t|\n", "| \t| $\\begin{array}{c|cccc} 0 & 0 & 0 & 0 & 0\\\\ \\frac{1}{2} & \\frac{1}{2} & 0 & 0 & 0\\\\ \\frac{1}{3} &\\frac{1}{3} & 0 &0&0\\\\ \\frac{2}{3} &\\frac{1}{3} & 0 & \\frac{1}{3} & 0\\\\ \\hline & 0 & -1 & 1 & 1 \\end{array}$ \t| 4 \t| 2 \t| E \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Merson \t| $\\begin{array}{c|ccccc} 0 & 0 & 0 & 0 & 0 &0 \\\\ \\frac{1}{3} & \\frac{1}{3} & 0&0&0&0\\\\ \\frac{1}{3} & \\frac{1}{6} &\\frac{1}{6}&0&0&0\\\\ \\frac{1}{2} & \\frac{1}{8} &0&\\frac{3}{8}&0&0\\\\ 1 & \\frac{1}{2} &0&-\\frac{3}{2}&2&0\\\\ \\hline & \\frac{1}{6} & 0 & 0 & \\frac{2}{3} & \\frac{1}{6} \\end{array}$ \t| 5 \t| 5 \t| E \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Butcher \t| $\\begin{array}{c|cccccc} 0 & 0 & 0 & 0 & 0 &0&0 \\\\ \\frac{1}{4} & \\frac{1}{4} & 0&0&0&0&0\\\\ \\frac{1}{4} & \\frac{1}{8} &\\frac{1}{8}&0&0&0&0\\\\ \\frac{1}{2} & 0 &-\\frac{1}{2}&1&0&0&0\\\\ \\frac{3}{4} & \\frac{3}{16} &0&0&\\frac{9}{16}&0&0\\\\ 1 & \\frac{-3}{7} &\\frac{2}{7}&\\frac{12}{7}&\\frac{-12}{7}&\\frac{8}{7}&0\\\\ \\hline & \\frac{7}{90} & 0&\\frac{32}{90} & \\frac{12}{90} & \\frac{32}{90} & \\frac{7}{90} \\end{array}$ \t| 6 \t| 5 \t| E \t|" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "| \t| Matrice de Butcher \t| s \t| $\\omega$ \t| Exp/Imp/Semi-Implicite \t|\n", "|--------------\t|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\t|---\t|----------\t|----\t|\n", "| Butcher \t| $ \\begin{array}{c|ccccccc} \n", " 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\ \n", " \\frac{1}{2} & \\frac{1}{2} & 0&0&0&0&0&0\\\\ \n", " \\frac{2}{3} & \\frac{2}{9} &\\frac{4}{9}&0&0&0&0&0\\\\ \n", " \\frac{1}{3} & \\frac{7}{36} &\\frac{8}{36}&-\\frac{3}{36}&0&0&0&0\\\\ \n", " \\frac{5}{6} & -\\frac{35}{144} &-\\frac{220}{144}&\\frac{105}{144}&\\frac{270}{144}&0&0&0\\\\ \n", " \\frac{1}{6} & -\\frac{1}{360} &-\\frac{110}{360}&-\\frac{45}{360}&\\frac{180}{360}&\\frac{36}{360}&0&0\\\\ \n", " 1 & -\\frac{41}{160} &\\frac{22}{13}&\\frac{43}{156}&-\\frac{118}{39}&\\frac{32}{195}&\\frac{80}{39}&0\\\\ \n", " \\hline \n", "\t\t\t\t\t\t\t\t& \\frac{13}{200} & 0 &\\frac{11}{40} & \\frac{11}{40} & \\frac{4}{25} & \\frac{4}{25} & \\frac{13}{200}\n", "\t\t\\end{array}$ \t| 7 \t| 6 \t| E \t|" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "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.5" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }