{ "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.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, Jul 28 2020, 12:59:40) \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_TD1 : Exercices schémas à un pas" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Modèle de Malthus \n", "On modélise la croissance d'une population d'effectif $y(t)\\ge0$ par l'équation différentielle\n", "\\begin{equation}\n", "y'(t)=a y(t), \\qquad a\\in\\mathbb{R}.\n", "\\end{equation}\n", "Dans ce modèle la variation de population est proportionnelle à la population elle-même: le coefficient $a$ est appelé paramètre de Malthus ou potentiel biologique et représente la différence entre le nombre de nouveaux nés par individu en une unité de temps et la fraction d'individus qui meurent en une unité de temps.\n", "On s'intéresse à l'unique solution de cette équation vérifiant $y(t_0)=y_0$ où $y_0$ et $t_0$ sont des réels donnés. \n", "1. Donner l'unique solution théorique à ce problème de Cauchy. Calculer $\\lim_{t\\to+\\infty}y(t)$ en fonction du paramètre $a$.\n", "1. Calculer analytiquement la solution obtenue avec la méthode d'Euler explicite sur l'intervalle $[0;2]$ avec $N_h=5$, ensuite la tracer avec Python et la comparer à la solution exacte.\n", "1. Soit $u_{N_h}(2)$ l'approximation de $y(2)$ obtenue avec la méthode d'Euler explicite et $N_h$ nœuds. \n", " Calculer $u_{N_h}(2)$ avec $N_h=2^i$ et montrer analytiquement que $\\lim_{N_h\\to+\\infty}u_{N_h}(2)=y(2)$. \n", "1. Tracer le graphe de $\\max_{0\\le n\\le N_h}|y(t_n)-u_n|$ en fonction de $N_h$ ainsi que le graphe des courbes $1/N_h$, $1/N_h^2$ ... avec une progression logarithmique en abscisse et en ordonnées. On prendra par exemple $N_h=200$, puis $N_h=300$, $400$, ... $2000$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "L'unique solution du problème de Cauchy $\\begin{cases}y'(t)=a y(t)\\\\y(t_0)=y_0>0\\end{cases}$ pour $t\\ge t_0$ est la fonction $y(t)=y_0e^{at}$. On a\n", "$$\n", "\t\t \\lim_{t\\to+\\infty}y(t)=\n", "\t\t \\begin{cases}\n", "\t\t +\\infty &\\text{si } a>0,\\\\\n", "\t\t y_0 \t &\\text{si } a=0,\\\\\n", "\t\t 0^+ \t &\\text{si } a<0,\n", "\t\t \\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pour $a=1$, $t_0=0$ et $y_0=1$, la solution exacte est $y(t)=e^t$. \n", "\n", "On subdivise l'intervalle $[t_0;T]$ en $N$ intervalles $[t_{n};t_{n+1}]$ de largeur $h=(T-t_0)/N$ avec $t_n=t_0+nh$ pour $n=0,\\dots,N$. \n", "Pour chaque nœud $t_n$, on note $y_n=y(t_n)$; l'ensemble des valeurs $\\{y_0, y_1,\\dots , y_{N} \\}$ représente la solution exacte discrète. \n", "Pour chaque nœud $t_n$, on cherche la valeur inconnue $u_n$ qui approche la valeur exacte $y_n$. \n", "L'ensemble des valeurs $\\{u_0 = y_0, u_1,\\dots , u_{N} \\}$ représente la solution numérique. \n", "\n", "Dans la méthode d'Euler explicite, cette solution approchée est obtenue en construisant une suite récurrente comme suit\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_{n+1}=u_{n}+h\\varphi(t_{n},u_{n}).\n", "\\end{cases}$$\n", "En utilisant ce schéma pour notre EDO on obtient\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_{n+1}=(1+ah)u_n\n", "\\end{cases}$$\n", "soit encore $u_n=(1+ah)^{n}u_0=\\left(1+\\frac{2}{5}\\right)^n$." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "y_0=1.00000000000000 u_0=1.00000000000000 (1+h)^0=1.00000000000000\n", "y_1=1.49182469764127 u_1=1.40000000000000 (1+h)^1=1.40000000000000\n", "y_2=2.22554092849247 u_2=1.96000000000000 (1+h)^2=1.96000000000000\n", "y_3=3.32011692273655 u_3=2.74400000000000 (1+h)^3=2.74400000000000\n", "y_4=4.95303242439511 u_4=3.84160000000000 (1+h)^4=3.84160000000000\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%reset -f\n", "%matplotlib inline\n", "\n", "from matplotlib.pylab import *\n", "\n", "def EE(phi,tt,y0):\n", " uu = [y0]\n", " h=tt[1]-tt[0]\n", " for i in range(len(tt)-1):\n", " uu.append(uu[i]+h*phi(tt[i],uu[i]))\n", " return uu\n", "\n", "phi = lambda t,y : a*y # EDO\n", "sol_exacte = lambda t : y0*math.exp(a*t) # SOLUTION EXACTE\n", "\n", "# INITIALISATION\n", "a = 1\n", "Nh = 5 \n", "t0, y0 = 0, 1\n", "tfinal = 2\n", "\n", "# CALCUL SOLUTION APPROCHEE\n", "tt1 = linspace(t0,tfinal,Nh+1)\n", "uu1 = EE(phi,tt1,y0)\n", "\n", "# CALCUL SOLUTION EXACTE POUR PLOT\n", "yy = [sol_exacte(t) for t in tt1]\n", "\n", "# PLOT\n", "plot(tt1,yy,'m-',tt1,uu1,'go-') \t\n", "legend(['Exacte','Euler explicite'],loc='upper left')\n", "\n", "# PRINT\n", "h1=tt1[1]-tt1[0]\n", "for n in range(Nh):\n", "\tprint ('y_%1d=%1.14f u_%1d=%1.14f (1+h)^%1d=%1.14f' %(n,yy[n],n,uu1[n],n,(1.+h1)**n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On compare les approximations de $y(2)$ avec plusieurs valeurs de $N_h$: \n", "$$\n", "u_{N_h}=(1+ah)^{N_h}u_0=\\left(1+\\frac{2}{N_h}\\right)^{N_h}\\xrightarrow[N_h\\to+\\infty]{}e^2=y(2).\t\t \n", "$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Solution exacte en t=2:\n", "y(2) = 7.38905609893065\n", "\n", "Solution approchee en t=2 avec N points:\n", "N\t sol_approx\t\t\t |erreur|\n", "8 \t 5.9604644775390625 \t 1.428591621391588\n", "16 \t 6.583250172027423 \t 0.8058059269032274\n", "32 \t 6.958666757218805 \t 0.4303893417118454\n", "64 \t 7.166276152788222 \t 0.22277994614242846\n", "128 \t 7.275669793128417 \t 0.11338630580223352\n", "256 \t 7.3318505987410365 \t 0.0572055001896139\n", "512 \t 7.3603235532692795 \t 0.028732545661370956\n", "1024 \t 7.374657160341845 \t 0.014398938588805699\n", "2048 \t 7.381848435880501 \t 0.007207663050149193\n", "4096 \t 7.385450215539008 \t 0.0036058833916428057\n", "8192 \t 7.38725264383889 \t 0.0018034550917604975\n", "16384 \t 7.388154242982074 \t 0.0009018559485767241\n" ] } ], "source": [ "# MAIN\n", "y_2=sol_exacte(tfinal)\n", "print ('\\nSolution exacte en t=2:')\n", "print ('y(2) =',y_2)\n", "print ('\\nSolution approchee en t=2 avec N points:')\n", "print ('N\\t sol_approx\\t\\t\\t |erreur|')\n", "for i in range(3,15):\n", " N=2**i\n", " tt = linspace(t0,tfinal,N+1)\n", " uu = EE(phi,tt,y0)\n", " print (N,'\\t',uu[-1], '\\t',abs(uu[-1]-y_2))\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vérifions la convergence linéaire:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pente par regression lineaire 0.9942137370997959\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "error=[]\n", "H=[]\n", "N=arange(200,1000,100)\n", "for n in N:\n", " tt=linspace(t0,tfinal,n+1)\n", " H.append(tt[1]-tt[0])\n", " yy=[sol_exacte(t) for t in tt]\n", " uu = EE(phi,tt,y0)\n", " error_vec=[abs(uu[i]-yy[i]) for i in range(len(uu))]\n", " error.append(max(error_vec))\n", "\n", "# ESTIMATION ORDRES DE CONVERGENCE par regression\n", "print ('Pente par regression lineaire', polyfit(log(H),log(error), 1)[0])\n", "\n", "# PLOT ERREUR \n", "loglog(H,error,'*-');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Modèle de Verhulst (croissance logistique). \n", "Dans le modèle logistique, on suppose que la croissance de la population d'effectif $y(t)\\ge0$ est modélisée par l'équation différentielle:\n", "\\begin{equation}\n", "y'(t)=(a-by(t))y(t), \\qquad a,b>0.\n", "\\end{equation}\n", "Ce modèle prend en compte une éventuelle surpopulation. \n", "En effet, le taux de croissance de la population est désormais de la forme $a-by(t)$: c'est la différence entre un taux de fertilité $a$ et un taux de mortalité de la forme $by(t)$ qui augmente avec l'effectif de la population.\n", "1. Calculer les solutions exactes de l'équation différentielle. \n", "1. Écrire la relation entre $u_{n+1}$ et $u_n$ obtenue obtenue en appliquant la méthode d'\\textsc{Euler} explicite.\n", "1. Pour $a=b=0.5$ et $t_0=0$, tracer avec python les solutions exactes sur l'intervalle de temps $[0;20]$ pour les valeurs de $y_0$ suivantes:\n", "\t\\begin{align*}\n", "\ty_0&=0.01\n", "\t&\n", "\ty_0&=0.1\n", "\t&\n", "\ty_0&=0.4\n", "\t&\n", "\ty_0&=0.8\n", "\t&\n", "\ty_0&=1\n", "\t&\n", "\ty_0&=1.5\n", "\t&\n", "\ty_0=2\n", "\t\\end{align*} \n", "\tSur un autre graphique à coté, tracer les solutions correspondantes obtenues par la méthode d'Euler explicite avec $N_h=50$. \n", "\tSur un autre graphique à coté, tracer les solutions correspondantes obtenues par la méthode d'Euler explicite avec $N_h=100$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On cherche l'unique solution du problème de Cauchy $\\begin{cases}y'(t)=(a-by(t))y(t)\\\\y(t_0)=y_0\\ge0\\end{cases}$ pour $t\\ge t_0$.\t\n", "\t\t\n", "On écrit l'EDO sous la forme $y'(t) = -b y(t) \\big( y(t)-\\frac{a}{b} \\big).$ \n", "\t\t\t\n", "Si $y(t)=A$ pour tout $t>0$ est solution de l'EDO, alors on doit avoir $A=(a-bA)A$. Donc, soit $A=0$ soit $A=\\frac{a}{b}$. \t\n", "Ainsi la solution constante $y(t)=\\frac{a}{b}>0$ représente l'effectif d'équilibre de la population, directement liée aux contraintes environnementale (densité, ressources, etc.).\n", "\t\t\t\n", "De plus, les solutions sont des fonctions strictement croissantes si $y(t)\\in]0,a/b[$ et décroissantes si $y(t)>a/b$.\n", "\t\t\t\n", "Calculons la solution exacte en remarquant qu'il s'agit d'une EDO à variables séparables. \n", "Pour $y(t)\\neq0$ et $y(t)\\neq\\frac{a}{b}$, on remarque que \n", "$$\n", "-b=\\frac{y'(t)}{ \\left( y(t)-\\frac{a}{b} \\right) y(t) } =\\frac{\\frac{b}{a}y'(t)}{y(t)-\\frac{a}{b}y'(t)}-\\frac{\\frac{b}{a}}{y(t)}.\n", "$$\n", "On doit alors calculer\n", "$$\n", "\\int\\frac{1}{y-\\frac{a}{b}}\\mathrm{d}y-\\int\\frac{1}{y}\\mathrm{d}y=-a\\int 1 \\mathrm{d}t.\n", "$$\n", "On obtient \n", "$$\n", "\\ln\\left( 1-\\frac{b/a}{y} \\right)=-at+C\n", "$$\n", "et on en déduit\n", "$$\n", "y(t)=\\frac{a/b}{1-De^{-at}}.\n", "$$\n", "En imposant la condition initiale $y(0)=y_0$ on trouve la constante d'intégration $D$ et on conclut que toutes les solutions du problème de Cauchy pour $t\\ge0$ sont\n", "$$\n", "y(t)=\n", "\\begin{cases}\n", "0 \t\t\t\t\t\t\t\t\t& \\text{si } y_0=0,\\\\[0.5em]\n", "\\dfrac{a}{b}\t\t\t\t\t\t\t\t& \\text{si } y_0=\\dfrac{a}{b},\\\\[0.5em]\n", "\\dfrac\t{1}{\\left(\\frac{1}{y_0}-\\frac{b}{a}\\right) e^{-at}+\\frac{b}{a}}\t&\\text{sinon.}\n", "\\end{cases}\n", "$$\n", "Remarquons que $\\lim_{t\\to+\\infty}y(t)=\\frac{a}{b}$: une population qui évolue à partir de $y_0$ individus à l'instant initiale tend à se stabiliser vers un nombre d'individus d'environ $a/b$, ce qui représente la capacité de l'environnement. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "La méthode d'Euler explicite (ou progressive) est une méthode d'intégration numérique d'EDO du premier ordre de la forme $y'(t)=\\varphi(t,y(t))$. \n", "On subdivise l'intervalle $[t_0;T]$ en $N$ intervalles $[t_{n};t_{n+1}]$ de largeur $h=\\dfrac{T-t_0}{N}$ avec $t_n=t_0+nh$ pour $n=0,\\dots,N$.\n", "La longueur $h$ est appelé le pas de discrétisation. \n", "Pour chaque nœud $t_n$, on note $y_n=y(t_n)$; l'ensemble des valeurs $\\{y_0, y_1,\\dots , y_{N} \\}$ représente la solution exacte discrète. \n", "Pour chaque nœud $t_n$, on cherche la valeur inconnue $u_n$ qui approche la valeur exacte $y_n$. \n", "L'ensemble des valeurs $\\{u_0 = y_0, u_1,\\dots , u_{N_h} \\}$ représente la solution numérique. \n", "\n", "Dans la méthode d'Euler explicite, cette solution approchée est obtenue en construisant une suite récurrente comme suit\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_{n+1}=u_{n}+h\\varphi(t_{n},u_{n}).\n", "\\end{cases}$$\n", "En utilisant cette construction pour notre EDO on obtient\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_{n+1}=u_{n}+h(a-bu_n)u_n\n", "\\end{cases}$$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from matplotlib.pylab import *\n", "\n", "def EE(phi,tt,y0):\n", " h=tt[1]-tt[0]\n", " uu = [y0]\n", " for i in range(len(tt)-1):\n", " uu.append(uu[i]+h*phi(tt[i],uu[i]))\n", " return uu\n", "\n", "phi = lambda t,y : (a-b*y)*y\n", "\n", "def sol_exacte(t,y0):\n", " if abs(y0-0.)<=1.e-10: # avec des float on ne peut pas\n", " return 0\n", " elif abs(y0-a/b)<=1.e-10:\n", " return a/b\n", " else:\n", " return 1./((1./y0-b/a)*exp(-a*t)+b/a)\n", " \n", "# INITIALISATION\n", "a = 0.5\n", "b = 0.5\n", "t0 = 0\n", "tfinal = 20\n", "yy_0=[0.001, 0.1,0.5,1,1.5,2]\n", "leg=[]\n", "for y0 in yy_0:\n", "\tleg.append('y_0='+str(y0))\n", "\n", "# MAIN\n", "figure(1, figsize=(15, 5))\n", "subplot(1,3,1)\n", "tt=linspace(t0,tfinal,25)\n", "for i in range(len(yy_0)):\n", "\tuu=EE(phi,tt,yy_0[i])\n", "\tplot(tt,uu,'.-')\n", "axis([t0,tfinal,0,2.])\n", "title('25 noeuds')\n", "grid()\n", "legend(leg)\n", "\n", "subplot(1,3,2)\n", "tt=linspace(t0,tfinal,100)\n", "for i in range(len(yy_0)):\n", "\tuu=EE(phi,tt,yy_0[i])\n", "\tplot(tt,uu,'.-')\n", "title('100 noeuds')\n", "axis([t0,tfinal,0,2.])\n", "grid()\n", "legend(leg)\n", "\n", "subplot(1,3,3)\n", "for i in range(len(yy_0)):\n", "\tyy=[sol_exacte(t,yy_0[i]) for t in tt]\n", "\tplot(tt,yy,'-')\n", "axis([t0,tfinal,0,2.])\n", "title('Exacte')\n", "grid()\n", "legend(leg);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : concentration\n", "\n", "L'évolution de la concentration de certaines réactions chimiques au cours du temps peut être décrite par l'équation différentielle \n", "$$\n", "y'(t)=-\\frac{1}{1+t^2}y(t).\n", "$$\n", "Sachant qu'à l'instant $t=0$ la concentration est $y(0)=5$, déterminer la concentration à $t=2$ à l'aide de la méthode d'**Euler implicite** avec un pas $h=0.5$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "\n", "Dans ce cas, le schéma d'Euler implicite s'écrit\n", "$$\n", "u_{n+1}=u_n-\\frac{h}{1+t_{n+1}^2}u_{n+1}.\n", "$$\n", "Elle peut être résolue algébriquement et cela donne la suite\n", "$$\n", "u_{n+1}=\\frac{u_n}{1+\\frac{h}{1+t_{n+1}^2}}.\n", "$$\n", "Si à l'instant $t=0$ la concentration est $y(0)=5$, et si $h=1/2$, alors $t_n=n/2$ et\n", "$$\n", "u_{n+1}=\\frac{4+(n+1)^2}{6+(n+1)^2}u_n.\n", "$$\n", "On obtient donc\n", "$$ \n", "\\begin{array}{ccc}\n", "n\t&\tt_n\t&\tu_n\t\\\\\n", "\\hline\n", "0\t&\t0\t&\t5\t\\\\\n", "1\t&\t0.5\t&\t\\frac{4+1^2}{6+1^2}5 =\\frac{5}{7}5 =\\frac{25}{7}\\approx3.57\\\\\n", "2\t&\t1.0\t&\t\\frac{4+2^2}{6+2^2}\\frac{25}{7} =\\frac{8}{10}\\frac{25}{7}=\\frac{20}{7}\\approx2.86\\\\\n", "3\t&\t1.5\t&\t\\frac{4+3^2}{6+3^2}\\frac{20}{7} =\\frac{13}{15}\\frac{20}{7}=\\frac{52}{21}\\approx2.48\\\\\n", "4\t&\t2.0\t&\t\\frac{4+4^2}{6+4^2}\\frac{52}{21}=\\frac{20}{22}\\frac{52}{21}=\\frac{520}{231}\\approx2.25\\\\\n", "% 5\t&\t2.5\t&\t\\sfrac{15080}{7161}\\approx2.11\\\\\n", "% 6\t&\t3.0\t&\t\\sfrac{301600}{150381}\\approx2.01\n", "\\end{array}\n", "$$\n", "La concentration à $t=2$ est d'environ $2.25$ qu'on peut comparer avec le calcul exact $y(2)=5e^{-\\arctan(2)}\\approx1.652499838$.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité du schéma de Crank-Nicolson\n", "\n", ">Soit le problème de Cauchy:\n", "$$\\begin{cases}\n", "y'(t)+10y(t)=0, & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0.\n", "\\end{cases}$$\n", ">1. Montrer qu'il existe une unique solution globale $y$ $\\in$ $\\mathscr{C}^\\infty(\\mathbb{R},\\mathbb{R})$ que vous préciserez explicitement.\n", ">2. Soit $(u_n)_{n\\in \\mathbb{N}}$ la suite obtenue avec le schéma numérique de Crank-Nicolson. Montrer que $(u_n)_{n\\in \\mathbb{N}}$ est une suite géométrique dont on précisera la raison.\n", "Donner l'expression de $u_n$ en fonction de $n$.\n", ">3. Montrer que la raison $r$ de la suite vérifie $|r|<1$ pour tout $h>0$. Ce schéma est-il inconditionnellement A-stable?\n", ">4. Sous quelle condition sur $h>0$ le schéma génère-t-il une suite positive? " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "C'est un problème deCauchy du type\n", "$$\\begin{cases}\n", "y'(t)=\\varphi(t,y(t)), & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0,\n", "\\end{cases}$$\n", "avec $\\varphi(t,y)=g(y)=-10y$.\n", "\n", "On montre d'abord qu'il existe une et une seule solution locale (ie sur $[-T;T]$) de classe $\\mathscr{C}^1([-T,T],\\mathbb{R})$. \n", "On montre ensuite que cette solution est de classe $\\mathscr{C}^\\infty([-T,T],\\mathbb{R})$. \n", "On montre enfin que la solution admet un prolongement sur $\\mathbb{R}$.\n", "+ Comme $g$ $\\in$ $\\mathscr{C}^1(\\mathbb{R},\\mathbb{R})$, d'après le théorème de Cauchy-Lipschitz il existe $T>0$ et une unique solution $y$ $\\in$ $\\mathscr{C}^1([-T,T],\\mathbb{R})$. \n", "+ Par récurrence, en exploitant l'EDO et la régularité de $g$, on grimpe en régularité sur $y$ ainsi $y$ $\\in$ $\\mathscr{C}^\\infty([-T,T],\\mathbb{R})$. \n", "+ La fonctionne nulle est solution de l'EDO (mais non du problème de Cauchy donné). Par l'unicité de la solution du problème de Cauchy on en déduit que soit $y(t)>0$ pour tout $t$ $\\in$ $[-T,T]$ (ie lorsque $y_0>0$) soit $y(t)<0$ pour tout $t$ $\\in$ $[-T,T]$ (ie lorsque $y_0>0$). De plus, $y$ est décroissante si $y_0>0$ et croissante si $y_0<0$. On en déduit par le théorème des extrémités que la solution $u$ admet un prolongement sur $\\mathbb{R}$ solution de l'EDO.\n", "\n", "Pour en calculer la solution, on remarque qu'il s'agit d'une EDO à variables séparables. L'unique solution constante est $y(t)\\equiv0$, toutes les autres solutions sont du type $y(t)=C e^{-10t}$. En prenant en compte la condition initiale on conclut que l'unique solution du problème de Cauchy est \n", "$$\n", "y(t)=y_0e^{-10t}\n", "$$ \n", "définie pour tout $t$ $\\in$ $\\mathbb{R}$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib.pylab import *\n", "y0=1\n", "exacte = lambda t : y0*exp(-10*t)\n", "tt=linspace(0,3,101)\n", "yy=[exacte(t) for t in tt]\n", "plot(tt,yy);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Le schéma de Crank-Nicolson construit la suite $(u_n)_{n\\in \\mathbb{N}}$ selon la relation\n", "$$\n", "u_{n+1}=u_n-5h(u_{n+1}+u_n), \\qquad \\forall n \\in \\mathbb{N},\n", "$$\n", "pour $h>0$ fixé. \n", "On obtient une formule de récurrence rendue explicite par un calcul élémentaire:\n", "$$\n", "u_{n+1}=-5hu_{n+1}-5hu_n+u_n\n", "$$\n", "d'où\n", "$$\n", "u_{n+1}=\\frac{1-5h}{1+5h}u_n.\n", "$$\n", "Par récurrence on obtient\n", "$$\n", "u_{n}=\\left(\\frac{1-5h}{1+5h}\\right)^nu_0.\n", "$$\n", "Il s'agit d'une suite géométrique de raison\n", "$$\n", "r=\\frac{1-5h}{1+5h}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Pour tout $h>0$ on a\n", "$$\n", "r\n", "=\n", "\\frac{1-5h}{1+5h}\n", "=\n", "1-\\frac{10h}{1+5h}\n", "$$\n", "et\n", "$$\n", "-1\n", "<\n", "1-\\frac{10h}{1+5h}\n", "<\n", "1.\n", "$$\n", "Ce schéma est donc inconditionnellement A-stable car $|u_{n+1}|=|r^{n+1}u_0|\\le|u_0|$.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "Le schéma génère une suite positive ssi\n", "$$\n", "1-\\frac{10h}{1+5h}>0\n", "$$\n", "c'est-à-dire ssi\n", "$$\n", "h<\\frac{1}{5}.\n", "$$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib.pylab import *\n", "\n", "N=6\n", "tt=linspace(0,1,N+1)\n", "\n", "y0=1\n", "exacte = lambda t : y0*exp(-10*t)\n", "yy=[exacte(t) for t in tt]\n", "\n", "phi = lambda t,y : -y**5\n", "def schema(phi,tt,y0):\n", " h=tt[1]-tt[0]\n", " uu=[y0]\n", " for i in range(len(tt)-1):\n", " uu.append((1-5*h)/(1+5*h)*uu[i])\n", " return uu\n", "\n", "plot(tt,yy,label=(\"Exacte\"))\n", "plot(tt,schema(phi,tt,y0),\"-.\",label=(\"Schéma\"))\n", "legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité d'un schéma\n", "\n", ">Soit le problème de Cauchy:\n", "$$\\begin{cases}\n", "y'(t)+\\dfrac{\\sqrt{y(t)}}{2}=0, & \\forall t \\in \\mathbb{R}^+,\\\\\n", "y(0)=y_0>0.\n", "\\end{cases}$$\n", ">1. Soit le schéma numérique défini par la suite $(u_n)_{n\\in \\mathbb{N}}$ suivante\n", "$$\n", "\\frac{u_{n+1}-u_n}{h}+\\frac{u_{n+1}}{2\\sqrt{u_n}}=0, \\qquad \\forall n \\in \\mathbb{N},\n", "$$\n", "pour $h>0$ fixé. Expliciter l'expression de $u_{n+1}$ en fonction de $u_n$.\n", ">4. Montrer que la suite $(u_n)_{n\\in \\mathbb{N}}$ est une suite positive, décroissante et convergente vers $0$. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "C'est un problème de Cauchy du type\n", "$$\\begin{cases}\n", "y'(t)=\\varphi(t,y(t)), & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0,\n", "\\end{cases}$$\n", "avec $\\varphi(t,y)=g(y)=-\\frac{\\sqrt{y}}{2}$.\n", "\n", "Pour $h>0$ fixé on obtient une formule de récurrence rendue explicite par un calcul élémentaire:\n", "$$\n", "u_{n+1}=\\frac{u_n}{1 + \\frac{h}{2\\sqrt{u_n}}}=\\frac{2(u_n)^{3/2}}{2\\sqrt{u_n}+h}, \\qquad \\forall n \\in \\mathbb{N}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "\n", "On étudie la suite\n", "$$\\begin{cases}\n", "u_0>0,\\\\\n", "u_{n+1}=\\frac{2(u_n)^{3/2}}{2\\sqrt{u_n}+h}, \\qquad \\forall n \\in \\mathbb{N},\n", "\\end{cases}$$\n", "pour $h>0$ fixé.\n", "\n", "Par récurrence on montre que si $u_0>0$ alors $u_n>0$ pour tout $n$ $\\in$ $\\mathbb{N}$. De plus, $\\frac{u_{n+1}}{u_{n}}=\\frac{1}{1 + \\frac{h}{2\\sqrt{u_n}}}<1$ pour tout $n$ $\\in$ $\\mathbb{N}$: la suite est monotone décroissante. On a alors une suite décroissante et bornée par zéro, donc elle converge. Soit $\\ell$ la limite de cette suite, alors $\\ell\\ge0$ et $\\ell= \\frac{2\\ell^{3/2}}{2\\sqrt{\\ell}+h}$ donc $\\ell=0$. \n", "\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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Xbj22mv37efZZ5/llFNO4YQTTmD48OFs2bIFgE6dOjFx4kROOeUUCgoKeOeddxg8eDCdO3fmnnvuAWDLli0MGjSIE044gR49esRvWF13j+TrxBNP9Ljavt394IPdf/CD+O5XROJm6dKlMW+bne0eejp8/Ss7u341bN682Xv16uVdunTxyy+/3P/617/69u3bPT8/399++213d9+4caPv3LnT77//fs/Pz/cNGzb4tm3bvGPHjr5mzRovLS31/v37+5YtW9zdfcqUKf6rX/3K3d2PPPJIv/vuu93d/eqrr/YePXr4pk2b/LPPPvM2bdq4u/vOnTt948aN7u5eWlrqnTt39j179uxXa1V/XkCRV5Or8RgPPTk0bQrf/35oR9+6FXJzo65IROph5Uq45hp49NF//5c+77wwyGp9tGjRgkWLFvG3v/2Nl156iREjRnD99ddXOxzuoEGDOOiggwDo1q0bq1evZsOGDSxdunTf2C47duzglFNO2feZoUOHAtCjRw+2bNlCy5YtadmyJdnZ2WzYsIHmzZszceJEXnnlFRo1asQnn3zCunXraFvPKdjSJ9AhNLvcey888QSMGBF1NSJSD/umnSyD7OzwGq9pJ7Oyshg4cCADBw6kR48eTJs2rdrhcPc2zez93K5du3B3zjzzTGZW8/zL3s80atToa59v1KgRu3bt4qGHHqK0tJRFixbRpEkTOnXqRFlZWb3PK33a0AH694cjjlBvF5E0EaadhDffDK/xuDG6fPly/vGPf+xbXrx4MV27dq1yONzqnHzyybz22musWLECgK1bt/LRRx/FXMPGjRs59NBDadKkCS+99BKrV6+u49l8XXpdoWdlhQG77rwTvvgCDjkk6opEpB72TTsJTJsWn31u2bKF8ePHs2HDBho3bsxRRx3FjBkzuPTSSxk/fjzbtm0jJyeH559/vtp9tGnThgceeICRI0eyfft2AG6++WaOPvromGoYNWoU5557LgUFBfTu3Ztjjz02LueW2sPnVuWdd+DEE2HGDCifE1BEkoOGz62dzBo+tyrHHw/HHKNmFxHJOOkX6Gbh5ujLL0NxcdTViIg0mPQLdAiB7g6zZ0ddiYhUElUzb6qpy59Tegb6UUdB375qdhFJMtnZ2axfv16hXgN3Z/369WRnZ9fqc+nVy6WiwkK4+mr4+98hTneQRaR+2rdvT3Fx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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "from matplotlib.pylab import *\n", "\n", "y0=1\n", "\n", "phi = lambda t,y : -0.5*sqrt(y)\n", "exacte = lambda t: 0 if t>=4*sqrt(y0) else (sqrt(y0)-t/4)**2\n", "\n", "N=10\n", "tt=linspace(0,10,N+1)\n", "\n", "def schema(phi,tt,y0):\n", " h=tt[1]-tt[0]\n", " uu=[y0]\n", " for i in range(len(tt)-1):\n", " uu.append(2*(uu[i])**(3/2)/(h+2*sqrt(uu[i])))\n", " return uu\n", "\n", "yy=[exacte(t) for t in tt]\n", "plot(tt,yy,'r-',label=('Exacte'))\n", "plot(tt,schema(phi,tt,y0),'b*',label=(\"Schéma\"))\n", "legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité d'un schéma\n", "\n", ">Soit le problème de Cauchy:\n", "$$\\begin{cases}\n", "y'(t)+y^5(t)=0, & \\forall t \\in \\mathbb{R}^+,\\\\\n", "y(0)=y_0>0.\n", "\\end{cases}$$\n", ">1. Montrer qu'il existe une unique solution globale $y$ $\\in$ $\\mathscr{C}^\\infty(\\mathbb{R}^+,\\mathbb{R}^+)$.\n", ">1. Soit le schéma numérique défini par la suite $(u_n)_{n\\in \\mathbb{N}}$ suivante\n", "$$\n", "\\frac{u_{n+1}-u_n}{h}+u_{n+1}u_n^4=0, \\qquad \\forall n \\in \\mathbb{N},\n", "$$\n", "pour $h>0$ fixé. Expliciter l'expression de $u_{n+1}$ en fonction de $u_n$.\n", ">4. Montrer que la suite $(u_n)_{n\\in \\mathbb{N}}$ est une suite décroissante et convergente vers $0$ pour tout $h>0$ fixé." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "C'est un problème deCauchy du type\n", "$$\\begin{cases}\n", "y'(t)=\\varphi(t,y(t)), & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0,\n", "\\end{cases}$$\n", "avec $\\varphi(t,y)=g(y)=-y^5$.\n", "\n", "On montre d'abord qu'il existe une et une seule solution locale (ie sur $[0;T]$) de classe $\\mathscr{C}^1([0,T],\\mathbb{R})$. \n", "On montre ensuite que cette solution est de classe $\\mathscr{C}^\\infty([0,T],\\mathbb{R})$. \n", "On montre enfin que la solution admet un prolongement sur $\\mathbb{R}$.\n", "+ Comme $g$ $\\in$ $\\mathscr{C}^1(\\mathbb{R}^+,\\mathbb{R}^+)$, d'après le théorème de Cauchy-Lipschitz il existe $T>0$ et une unique solution $y$ $\\in$ $\\mathscr{C}^1([0,T],\\mathbb{R})$. \n", "+ Par récurrence, en exploitant l'EDO et la régularité de $g$, on grimpe en régularité sur $y$ ainsi $y$ $\\in$ $\\mathscr{C}^\\infty([0,T],\\mathbb{R})$. \n", "+ La fonctionne nulle est solution de l'EDO (mais non du problème de Cauchy donné). Comme $y_0>0$, par l'unicité de la solution du problème de Cauchy on a $y(t)>0$ pour tout $t$ $\\in$ $[0,T]$ (car deux trajectoires ne peuvent pas se croiser). De plus, $y$ est décroissante, ainsi la solution est bornée ($y(t)$ $\\in$ $]0,y_0[$). On en déduit par le théorème des extrémités que la solution $y$ admet un prolongement sur $\\mathbb{R}^+$ solution de l'EDO.\n", "\n", "Pour en calculer la solution, on remarque qu'il s'agit d'une EDO à variables séparables. L'unique solution du problème de Cauchy est \n", "$$\n", "y(t)=y_0(4ty_0^4+1)^{-1/4}\n", "$$ " ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y0=1\n", "exacte = lambda t : y0*(4*t*y0**4+1)**(-0.25)\n", "tt=linspace(0,10,101)\n", "yy=[exacte(t) for t in tt]\n", "plot(tt,yy);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Pour $h>0$ fixé on obtient une formule de récurrence rendue explicite par un calcul élémentaire:\n", "$$\n", "u_{n+1}=\\frac{u_n}{1 + u_n^4 h}, \\qquad \\forall n \\in \\mathbb{N}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "On étudie la suite\n", "$$\\begin{cases}\n", "u_0=y_0>0,\\\\\n", "u_{n+1}=\\frac{u_n}{1 + u_n^4 h}, \\qquad \\forall n \\in \\mathbb{N},\n", "\\end{cases}$$\n", "pour $h>0$ fixé.\n", "\n", "Par récurrence on montre que si $u_0>0$ alors $u_n>0$ pour tout $n$ $\\in$ $\\mathbb{N}$. De plus, $\\frac{u_{n+1}}{u_{n}}=\\frac{1}{1 + u_n^4 h}<1$ pour tout $n$ $\\in$ $\\mathbb{N}$: la suite est monotone décroissante. On a alors une suite décroissante et bornée par zéro, donc elle converge. Soit $\\ell$ la limite de cette suite, alors $\\ell\\ge0$ et $\\ell= \\frac{\\ell}{1 + \\ell^4 h}$ donc $\\ell=0$. Ce schéma est donc inconditionnellement A-stable." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAD4CAYAAAD8Zh1EAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8li6FKAAAgAElEQVR4nO3deXyU1b3H8c8v+0IIS8IaNivKIhBs2Gq11LigrdL2VhDtgl7r1YrbtVXAKypXW7RerRZbSxWxdSNuFZWqFamAihIQgoBoyhrWJEBYQsh27h+TYAgzYUJmMpnJ9/165UXmmWdmfg/KNyfnnOccc84hIiLhLyrUBYiISGAo0EVEIoQCXUQkQijQRUQihAJdRCRCxITqg9PS0lzv3r1D9fEiImFp+fLlRc65dG/PhSzQe/fuTW5ubqg+XkQkLJnZZl/PqctFRCRCKNBFRCKEAl1EJEKErA9dRFqfiooKCgoKKCsrC3UpLV5CQgIZGRnExsb6/RoFuog0m4KCAlJSUujduzdmFupyWiznHMXFxRQUFNCnTx+/X3fCLhczm21mu83scx/Pm5k9Zmb5ZpZnZmc2ou7GycuBR86Ae9p5/szLCdpHiUjglZWV0bFjR4X5CZgZHTt2bPRvMv70oc8BxjTw/EVA35qva4E/NaoCf+XlwBs3QclWwHn+fOMmhbpImFGY++dk/p5OGOjOuUXAngZOGQv81XksBdqZWddGV3IiC6ZDxeFjj1Uc9hwXEZGAzHLpDmyt87ig5thxzOxaM8s1s9zCwsLGfUpJQeOOi4h4ER0dTWZm5tGvGTNmBOy9V65cyfz58wP2fo0ViEFRb78XeN01wzk3C5gFkJWV1bidNVIzarpbvBwXEfFTYmIiK1euDMp7r1y5ktzcXC6++OKgvP+JBKKFXgD0qPM4A9gegPc9VvY0iE089lhsoue4iEgTlJSUcPrpp7N+/XoAJkyYwF/+8hcArr/+erKyshg4cCB333330dcsW7aMb33rWwwZMoThw4dTUlLCtGnTmDt3LpmZmcydO5dDhw5x9dVXM2zYMIYOHcrrr78e1OsIRAt9HjDJzF4ERgAlzrkdAXjfYw0eB0DFu/cQfWA7uy2NLpf85uhxEQkvvSe/FZT33TTjew0+f/jwYTIzM48+njJlCuPHj2fmzJlMnDiRm2++mb179/KLX/wCgPvvv58OHTpQVVVFdnY2eXl59OvXj/HjxzN37lyGDRvG/v37SUpKYvr06eTm5jJz5kwApk6dyrnnnsvs2bPZt28fw4cP57zzziM5OTko137CQDezF4DRQJqZFQB3A7EAzrkngPnAxUA+UApcFZRKAQaPww34Mafe9Q8AvhhwEXFB+zARiUS+ulzOP/98XnrpJW644QZWrVp19HhOTg6zZs2isrKSHTt2sHbtWsyMrl27MmzYMADatm3r9bPeffdd5s2bx0MPPQR4pm1u2bKF/v37B+HK/Ah059yEEzzvgBsCVtEJxMVE0TU1kW37DlOwt5RT0ts010eLSACdqCXd3Kqrq1m3bh2JiYns2bOHjIwMNm7cyEMPPcSyZcto3749EydOpKysDOecX9MKnXO88sornH766c1wBWG6lkuvjkkAbN5TGuJKRCRSPPLII/Tv358XXniBq6++moqKCvbv309ycjKpqans2rWLf/zD0zvQr18/tm/fzrJlywA4cOAAlZWVpKSkcODAgaPveeGFF/KHP/wBT7sXPvvss6BeQ1je+t+rYxIf/buYLcUKdBFpnPp96GPGjOHqq6/mySef5NNPPyUlJYVzzjmH++67j3vvvZehQ4cycOBATjnlFM466ywA4uLimDt3LjfeeCOHDx8mMTGR9957j+9+97vMmDGDzMxMpkyZwl133cUtt9zC4MGDcc7Ru3dv3nzzzaBdW1gGes8OngGFzQp0EWmkqqoqr8fXrVt39PuHH3746Pdz5szxev6wYcNYunTpccdrW+21/vznP59ElScnLLtcetd0uWzZcyjElYiItBxhGeg9a/vQ1UIXETkqLAO9V0dPl8uWPaVUVzfuhlMRkUgVloHeJj6GjslxHKmsZveBI6EuR0SkRQjLQIe63S7qRxcRgTAO9F4dNBddREJvzZo1vPHGG6EuAwjjQO9Z24+ugVERaaT777+fgQMHMnjwYDIzM/nkk0+8njdnzhwmTZrk8322bNnC/fffz3e+851gldooYTkPHdRCF2kV8nI8m9iUFHiWys6e1uQF+T7++GPefPNNVqxYQXx8PEVFRZSXl5/Ue/Xs2ZPnn3++SfUEUti20Gtv/9+iPnSRyBSkbSd37NhBWloa8fHxAKSlpdGtW7fjlsOtvYV/+/btjBkzhr59+3L77bcffZ93332X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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "N=50\n", "tt=linspace(0,10,N+1)\n", "\n", "y0=1\n", "exacte = lambda t : y0*(4*t*y0**4+1)**(-0.25)\n", "yy=[exacte(t) for t in tt]\n", "\n", "phi = lambda t,y : -y**5\n", "def schema(phi,tt,y0):\n", " h=tt[1]-tt[0]\n", " uu=[y0]\n", " for i in range(len(tt)-1):\n", " uu.append(uu[i]/(1+h*uu[i]**4))\n", " return uu\n", "\n", "plot(tt,yy,label=(\"Exacte\"),lw=2)\n", "plot(tt,schema(phi,tt,y0),'o',label=(\"Schéma\"))\n", "legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : schéma d'Euler explicite et stabilité\n", "\n", ">Soit le problème de Cauchy:\n", "$$\\begin{cases}\n", "y'(t)+\\sin(y(t))=0, & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0.\n", "\\end{cases}$$\n", ">>1. Montrer qu'il existe une unique solution globale $y$ $\\in$ $\\mathscr{C}^\\infty(\\mathbb{R},\\mathbb{R})$.\n", "1. Écrire le schéma le schéma d'Euler explicite pour ce problème.\n", ">4. Montrer que la suite $(u_n)_{n\\in \\mathbb{N}}$ construite par ce schéma vérifie\n", "$$\n", "|u_{n+1}|\\le |u_n|+h, \\qquad \\forall n \\in \\mathbb{N},\n", "$$\n", "où $h>0$ est le pas de la suite.\n", ">1. En déduire que\n", "$$\n", "|u_{n}|\\le |u_0|+nh, \\qquad \\forall n \\in \\mathbb{N}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": { "heading_collapsed": true }, "source": [ "### Correction\n", "C'est un problème deCauchy du type\n", "$$\\begin{cases}\n", "y'(t)=\\varphi(t,y(t)), & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=y_0>0,\n", "\\end{cases}$$\n", "avec $\\varphi(t,y)=g(y)=-\\sin(y)$.\n", "\n", "On montre d'abord qu'il existe une et une seule solution locale (ie sur $[0;T]$) de classe $\\mathscr{C}^1([0,T],\\mathbb{R})$. \n", "On montre ensuite que cette solution est de classe $\\mathscr{C}^\\infty([0,T],\\mathbb{R})$. \n", "On montre enfin que la solution admet un prolongement sur $\\mathbb{R}$.\n", "+ Comme $g$ $\\in$ $\\mathscr{C}^1(\\mathbb{R},\\mathbb{R})$, d'après le théorème de Cauchy-Lipschitz il existe $T>0$ et une unique solution $y$ $\\in$ $\\mathscr{C}^1([-T,T],\\mathbb{R})$. \n", "+ Par récurrence, en exploitant l'EDO et la régularité de $g$, on grimpe en régularité sur $y$ ainsi $y$ $\\in$ $\\mathscr{C}^\\infty([-T,T],\\mathbb{R})$. \n", "+ Toutes les fonctions constante $y(t)=k\\pi$ pour $k\\in\\mathbb{Z}$ sont solutions de l'équation différentielle car $g(k\\pi)=0$. Pour $y_0$ donné, soit $\\tilde k\\in\\mathbb{Z}$ tel que $y_0\\in[\\tilde k\\pi;(\\tilde k+1)\\pi]$; par l'unicité de la solution du problème de Cauchy on a $y(t)\\in[\\tilde k\\pi;(\\tilde k+1)\\pi]$ pour tout $t$ $\\in$ $[-T,T]$ (car deux trajectoires ne peuvent pas se croiser), i.e. la solution est bornée. On en déduit par le théorème des extrémités que la solution $y$ admet un prolongement sur $\\mathbb{R}$ solution de l'EDO." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Soit $h>0$ fixé et $t_n=nh$ pour tout $n\\in\\mathbb{Z}$. Le schéma d'Euler explicite pour l'EDO donnée construit la suite \n", "$$\n", "u_{n+1}=u_n - h \\sin(u_n), \\qquad \\forall n \\in \\mathbb{N}.\n", "$$\n", "\n", "### Correction\n", "Comme $|a+b|\\le |a|+|b|$ et comme $|-\\sin(x)|\\le1$ pour tout $x\\in\\mathbb{R}$, on conclut que \n", "$$\n", "|u_{n+1}|=|u_n - h \\sin(u_n)| \\le |u_n| + |h \\sin(u_n)| \\le |u_n| + h\n", "$$\n", "pour $h>0$ fixé.\n", "\n", "### Correction\n", "Par récurrence: $|u_{n+1}|\\le |u_n| + h \\le |u_{n-1}| + 2h \\le\\dots\\le |u_0| + (n+1)h$." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "N=100\n", "tt=linspace(0,10,N+1)\n", "\n", "phi = lambda t,y : -sin(y)\n", "\n", "def schema(phi,tt,y0):\n", " h=tt[1]-tt[0]\n", " uu=[y0]\n", " for i in range(len(tt)-1):\n", " uu.append(uu[i]-h*sin(uu[i]))\n", " return uu\n", "\n", "plot(tt,schema(phi,tt,y0),'o',label=(\"Schéma\"))\n", "legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité d'un schéma\n", "\n", ">Un modèle pour la diffusion d'une épidémie se base sur l'hypothèse que sa vitesse de propagation est proportionnelle au nombre d'individus infectés et au nombre d'individus sains. \n", ">\n", ">Si on note $I(t)\\ge0$ le nombre d'individus infectés à l'instant $t\\ge0$ et $A>0$ le nombre d'individus total, il existe une constante $k$ $\\in$ $\\mathbb{R}^+$ telle que $I'(t)=k I(t)(A-I(t))$. \n", ">\n", ">1. Montrer qu'il existe $T>0$ et une unique solution $I$ $\\in$ $\\mathscr{C}^\\infty([0,T])$ au problème de Cauchy:\n", "$$\\begin{cases}\n", "I'(t)=k I(t)(A-I(t)),\\\\\n", "I(0)=I_0>0.\n", "\\end{cases}$$\n", "Montrer que si $00$. \n", "Montrer que si $01. Soit $00$ fixé.\n", ">1. Calculer la solution exacte" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "C'est un problème deCauchy du type\n", "$$\\begin{cases}\n", "I'(t)=\\varphi(t,I(t)), & \\forall t \\in \\mathbb{R}^+,\\\\\n", "I(0)=I_0>0,\n", "\\end{cases}$$\n", "avec $\\varphi(t,I(t))=g(I(t))=kI(t)(A-I(t))$.\n", "\n", "+ Comme $g$ $\\in$ $\\mathscr{C}^1(\\mathbb{R},\\mathbb{R})$, d'après le théorème de Cauchy-Lipschitz il existe $T>0$ et une unique solution $I$ $\\in$ $\\mathscr{C}^1([0,T],\\mathbb{R})$. \n", "+ Par récurrence, en exploitant l'EDO et la régularité de $g$, on grimpe en régularité sur $I$ ainsi $I$ $\\in$ $\\mathscr{C}^\\infty([0,T],\\mathbb{R})$. \n", "+ Puisque la fonction nulle et la fonction constante $I(t)=A$ sont solutions de l'équation différentielle, si $00$ fixé. On obtient une formule de récurrence rendue explicite par un calcul élémentaire:\n", "$$\n", "I_{n+1}=\\frac{1+kAh}{1+kI_nh}I_n.\n", "$$\n", "Si $00$ quelque soit $n$;\n", "+ $I_n$ est majorée par $A$ car\n", "$$\n", "I_{n+1} \\le A \\quad\\iff\\quad (1 + k A h ) I_n \\le (1 + k I_n h) A \\quad\\iff\\quad I_n \\le A\n", "$$\n", "donc par récurrence $I_{n+1} \\le A$ quelque soit $n$;\n", "+ si $I_n\\to \\ell$ alors $\\ell=\\frac{1+k A h}{1+k\\ell h}\\ell$ donc $\\ell=0$ ou $\\ell=A$;\n", "+ $I_n$ est une suite monotone croissante (encore par récurrence on montre que $|I_{n+1}|\\ge|I_n|\\ge\\dots\\ge|I_0|$);\n", "\n", "donc $I_n\\to A$ lorsque $n\\to+\\infty$ indépendamment du pas $h>0$ choisi." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "On a déjà observé qu'il y a deux solutions constantes de l'EDO: la fonction $I(t)\\equiv0$ et la fonction $I(t)\\equiv A$.\n", "\n", "Pour chercher toutes les solutions non constantes on remarque qu'il s'agit d'une EDO à variables séparables donc on a \n", "\\begin{align*}\n", " % I'(t)=k I(t)(5000-I(t))\\\\\n", " % \\frac{I'(t)}{I(t)(5000-I(t))}&=k\\\\\n", " % \\frac{\\mathrm{d}\\,I}{I(5000-I)}&=k\\mathrm{d}\\,t\\\\\n", " % \\int\\frac{1}{I(5000-I)}\\mathrm{d}\\,I&=k\\int\\mathrm{d}\\,t\\\\\n", " % \\int\\frac{1}{I}\\mathrm{d}\\,I-\\int\\frac{1}{5000-I}\\mathrm{d}\\,I&=5000k\\int\\mathrm{d}\\,t\\\\\n", " % \\ln(I)+\\ln(5000-I)&=5000kt+c\\\\\n", " % \\ln\\frac{I}{5000-I}&=5000kt+c\\\\\n", " % \\frac{I}{5000-I}&=De^{5000kt}\\\\\n", " % I(t)&=\\frac{5000De^{5000 k t}}{1+De^{5000 k t}}\\\\\n", "I(t)&=\\frac{A}{De^{-A k t}+1}\n", "\\end{align*}\n", "\n", "La valeur numérique de la constante d'intégration $D$ est obtenue grâce à la CI:\n", "\\begin{align*}\n", "% I(0)&=\\frac{A}{De^{0}+1}\\\\\n", "D&=\\frac{A-I_0}{I_0}\n", "\\end{align*}\n", "\n", "Exemple avec $A=5000$, $I_0=160$, $k=\\frac{\\ln(363/38)}{35000}$ et $h=1$:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "A=5000\n", "I0=160\n", "k=log(363/38)/35000\n", "\n", "D=(A-I0)/I0\n", "\n", "exacte = lambda t : A/(D*exp(-A*k*t)+1)\n", "h=1\n", "tt=arange(0,30,h)\n", "yy=[exacte(t) for t in tt]\n", "\n", "phi = lambda t,I : k*I*(A-I) \n", "\n", "def schema(phi,tt,y0):\n", " uu=[I0]\n", " for i in range(len(tt)-1):\n", " uu.append((1+k*A*h)/(1+k*uu[-1]*h)*uu[-1])\n", " return uu\n", "\n", "plot(tt,yy,label=(\"Exacte\"))\n", "plot(tt,schema(phi,tt,y0),label=(\"Schéma\"))\n", "legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité du schéma d'Euler expicite dans le cas d'un système\n", ">Soit le problème de Cauchy:\n", "$$\\begin{cases}\n", "y''(t)+1001y'(t)+1000y(t)=0, & \\forall t \\in \\mathbb{R},\\\\\n", "y(0)=1,\\\\\n", "y'(0)=0.\n", "\\end{cases}$$\n", ">1. Écrire le problème comme un système de 2 EDO d'ordre 1 et en calculer la solution.\n", ">1. Écrire le schéma le schéma d'Euler explicite pour ce problème.\n", ">4. Pour quelles valeurs de $h$ le schéma est A-stable?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Soit $\\mathbf{z}(t)=(y(t),y'(t))^T$ alors $y''(t)+1001y'(t)+1000y(t)=0$ se réécrit \n", "$$\n", "\\mathbf{z}'(t)=\n", "-\\begin{pmatrix}\n", "0&-1\\\\\n", "1000&1001\n", "\\end{pmatrix}\n", "\\mathbf{z}(t)\n", "$$\n", "Cette matrice a pour valeurs propres $\\lambda_1=1$ et $\\lambda_2=1000$ et pour vecteurs propres associés $\\mathbf{v}_1=(-1,1)^T$ et $\\mathbf{v}_2=(0,1000)^T$ (ci dessous le calcul formel des valeurs et vecteurs propes).\n", "Ainsi\n", "$$\n", "\\mathbf{z}(t)=c_1\\mathbf{v}_1e^{-\\lambda_1t}+c_2\\mathbf{v}_2e^{-\\lambda_2t}\n", "$$\n", "et\n", "$$\n", "y(t)=-c_1e^{-t}-c_2e^{-1001t}.\n", "$$\n", "Il s'agit d'un problème stiff!" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAzCAYAAABGxyzzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADxUlEQVR4Ae1c0XETMRB1mBSQCR2YDmKoANNBTAeQMuw/JiUAFTBOB5AKmKQD0gGBEnjPuWWcQ3fS5XZPEt6dUXTSbbS7791Jsrzjo/V6fTILyGaz+R3o9q5CEAA/Qd6ewb8blF+tclmI3+5GNwLbFmfkcHuEN/QHLi7A+Lfu//U7pSMA/t7DxxXfUJf/CIHjKWLB0yNT+E/Ye4Fyib67KWyXbgM4nMFHTp8LXI/et5gTCie5Rn9AfUVwUXMxv0H9BuUgSW0w+Awc7lFeosxRVMR0yoXjnNdPUO/IpMe45lPI9ke2D1GIAcoK5QLxf9HEwJRQOLpCuQ04/B19SwQU3HoH9L0rEQFrQpfwg9NKW2Sq5X0XRQTMCE18+04VY/GhgIAZoRhbyOrbufmUq/wYWhKa4urzFCXXSUfA8mNLaO0Uz+Tt5efS6qRZTq7h+JAZhrva0AZRNX4zQuE8t+Z0NhS09MnmSDUo68EYG2wsrO08ZXzrKZfnw/OAY/KG+vlxAJwxXdaE8kiLJyFt4dN92zzp7XveHoGAKaEg7BN8u0d9Lj7imtPtW5R30nfgtWwMZdYaBYfZGrrnFd9GHsa/Qs1NEOvXaJtvEGCnWEH8nL0oy4dqtkUf9xRfUfNFeJKYEwrnuIHgmaXLHgLAhcei6mI65ap76wNGEXBCoxDVpeCE1sVX1FsnNApRXQpOaF18Rb11QqMQ1aXghNbFV9RbJzQKUV0KTmhdfEW9dUKjENWlkHz0h6OqM4TWmxAMnaSEam09S8hzxM14UuyG4u4lFIPym5GkhGDoJiVUa+uFghrblyvuIXa7YuydcmEgKSEYekkJ1dp6XUGN7c8YdxLeffH1Etr3j617qQnV2notNyZvFhePFqH8Ti+UFCY5Q7xP0dZ7GDXf3+LiGU0opieuszE51daLGbS+X2o8owkFcJI6wS+yu4Ska+t12Zqqv8h4NAhNAVDyZmK62noxe9b3J49Hg9DQ2ilAyVPMXCJtPbGRqy4yntGEcovfIBpaS6XvTlsvF4tit9R4RhPaBJiaUK2tJ/jmqouLR4vQ1IRqbb1cRIrd4uIZQqgs8LIuSlAzTD9JCdXaen8dsL2YLO5WGJ12W3qPmsePWoEGSOBTSJHDga6E4AV0UhKqtfV2zmn/yRX3ALvBkP2Hp4Kw1NeJB8F/eKo+2uIeD1lD46O5RnYEnNDsFOg64ITq4pl9NCc0OwW6DsjHljl2SXJMt7OAthzp6Vr00VQQaPOFQXf8yRvK393b/xFkSfZSMe6DmCDA84F/OPsDSB36BQ61DpIAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}0 & -1\\\\1000 & 1001\\end{matrix}\\right]$" ], "text/plain": [ "⎡ 0 -1 ⎤\n", "⎢ ⎥\n", "⎣1000 1001⎦" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%reset -f\n", "import sympy as symb\n", "symb.init_printing()\n", "\n", "symb.var('t')\n", "M = symb.Matrix(((0,-1), (1000,1001)))\n", "M" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJUAAAAVCAYAAABPEqyXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAD4ElEQVRoBe2a4XHTQBCFRYYCQujAdJCQCkg6SNIB0AH8tP8xoYNABUzSQZIKMrgD0kEy7sC873yrOZ9OlkIObB3eGXmlvZVu39Pe3klyNZ/Pq3Abj8ej8Hi7v8xPzEcuvnJdJ47vbx+n4t6pAplMJp90uB+YtrvdDIw8b92eLR4D572B/wWZjAjYidSh9Gdn2MAfxUbCX2o70P4sFaLs597+IP1G27ls97FvTj9di8E4k/4W99N1rHMGz3uM3yWVjLsCfyt9kCLBt/9U27H2GzcodU4um+/7u673qO2tNhLrleyNpJKNGL9IX0lX0uBqxJ3bz/dFP+907UZctKfExzd43sHmOXX4bfpjdF+kgHvbkfRIGzf2nwo3Sdupto/q+Edb52r/oLZdaZdQ+GmfG8xxjS23H/14oQ+rkmbr0oPnPQBY47ekOhPZq0r3sU6+9zcpuM5G7Z4qmmkiojvZjhQ7VQvJ7ecu6vmDR+vH2Tt+SuC9gX9HJDCnd01pVKq6AnQQta5mYkxVUsNGO5Lbb3HVxS99nYWGtv2CeA8hOvwvZaEK3YQt7As05DPlMPKY+vZlY5F8J/1VemNE8fSpDnu5/RIEwCN8rqr6dtrgeTcggXb4SSoWv/Wawxx0A3C4kaaSMX1AwqbKng9stiJAEi+3X9zdLxkYjH2kBN5jnA4/ayrITk0bdgLJlFqrWPtQ9OuegT7HDx6p6n2kRN4dfioVo3fVCGfk9VpP+enlVv4Q1ld4sntu0gKmTaw6Pcght1/cJ2uKvthL4D2Jn6RqFZ8kjLzrVqegQf4kZ/JdV+CWfZd+tXHd1A01m3t6zemXANKVKIlTmibFSMwbz3sz8kWBYvpj9BrxsR9VqhLIeiHvAcd+m3BMjKmpxyqVYcjtF2KHx1XVMPQthfcQk8NPUlGyUzcD56X1lBKKRXubL/7rFJ5MWfzGQuWcKvaZb8jtF/ZHAsNnHymF9xCrw09STbUdhi3Bfk2Sr1B8PMR/XWKLaKs+dRyKi8f4R2kS34mPmfdG772pyu1n1/XaJXBkazssgvcInMPPmopPH4zelPBx+UI3gk8g3JC1vJ9Svxafm44VyqVsjPRr6fCdEKD4gMwgYWGO5ntUPBBy+6kbJ8THu70+UhLvhtfhtw/KvF/I8RRmF//vtBKXZQFJzj8jeol8i+E9xM/0h/Bhs+8IcydsfxoMUNXh8SlSEu81fpdUyjKmENZLjLatPJEBzxv8hVNx51VK4T3Gb5UKAvh63/hc08nM1gEG4O1PK30JvC/hr//5CTM+406k17IgJ4ahibjiX59X0n1fJTQgDpn3FP7fiF25F8t9eQkAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle \\left(t - 1000\\right) \\left(t - 1\\right)$" ], "text/plain": [ "(t - 1000)⋅(t - 1)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p=M.charpoly(t)\n", "symb.factor(p)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPcAAAAzCAYAAABL9Z7xAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIbUlEQVR4Ae1d4VXcOBAmeRTA4zpYOoCjAkgH5K6CIx2El3/84+U6SFLBJXSQuwruoIPQQYAO9r5PaDZer+wdkVlL9o7e08qWxtLMZ49mJMvaF/P5fOdnwuXl5V7qeuQ/pvI9zw6B2rCvjR87pDdb06Zwe6lhG41/RTzsoL1B/kMrvu+g9WxbBL60cOd9YF6p4M/C85BX30d2BFEfk0a12fxu8yR1jIrY8Bekt6nymPcK5X/3lHvRBhAA5q+a1eL8HOevm3kFjv1ZyAQ95z6C9hHxAk3cID3ieVdzvZYbF1Kx75B+7KrA8x0BR2BYBKCPNLRBwfta7rTcqIBWYIa0tCUI/IMPDgvY2fT2VoF4ZD9Tli11K8YoL3iWoeZ3yHSA+B55dyn5hshD29eIx4j0qpM6mlRuEM/IPOLREIx2tQE+OK74hHiP+Csi+ZpEmLJsqRs0ZnnBO+cSrpBeU7YoC91iDkFKKvgF2v+GeI644l0nlRv8f43CFGM8gsjxROiVwPxbHHdN6pF8VAHyTFa21I0Yq7zgmx4sJ7GCYlM2yhLPP+B0ad6D5QMHuuefwM9n8tVse2XMDQIKs4/0zyahHzsCW4oAjUtqMvlf5J9CT+hdFgton50OjbAMGxa8rCh3JFox8Ysr/MAR2C4ETiEuh4XtIF4ty0sHWm+65kvD1iXlRiFdX/ZEV6W59fYdgdIIKK3yfgV88jU0vYsl672k3Ch8g8hZuCXfHXkeHIFtREAUt08firrljZtCg3zW7JAWyo1MTlbRrLvVbiDmh47AGgR+WVM+VLEsIuOcWQjN2fJ3yOEsYGryIJLnJbEX+QdX5fRury15yONYTz1l2fQoTJ4yNdYWocWq87138YDnkbpLBaf3HSbDm8rNiQHRfhNm2SAqKvqu3ESQRCVTli0h7lZmRYWh7CnjJHkysVYDRlzk9QF8c/HZXXDLcUCXnMzy/bYHR8AR+IEADR6Hq+0gltvUILYbyTz/HOnDDL6MucMJCmpiNFMuJ3cENoIArSFXR7YDPdJbWvd2QanzyAv5CQtrRLl5Qp+9JhejjZFMXEiP2S4f8/mUZUvdl9HIC53gmo97pGciCI7p5f6G+IfkVZT+B17oie/ImJs9EzOrCwCSPSeDeBdcKM9OiN+Yj3qxzZRlC3es9TNieWml+aHIMVJOoDE9wbnZ5DPqswrkKejKLhhkL8RYpdUGf2FtuZXkNdUzZdlSOI9VXvBNV5ez0GMI38gkeD6lWy6TBSFzDNw7j46AI9CJgHjgh03lrtJyd4rgBY6AI5BCQPT4gMotE1SSmbrA8xwBR2AECMQhBDndp3JzvM3AcYUHR8ARmAYCe1RueS3Rt9RuGuK6FI7AdiBAQ71kubdDbJfSEZg+AjTUwXKHMXfDV5++6C6hIzB9BILlnr6YLqEjsIUIcMwdxtqw3DKxtoUwuMiOwOQQuKdyyyy5vBKbnJQuUBoB79DTuEwgl7r8yLXl8rF5UcuNB+0QvHAdeZV/OqDhDzSyhxUx7dy43poObWUH8MD7/YCUXzZx7fQgQSv7pphB+2ufMy2P1nTGMt9RucVyG9e9vjqAwwes2j8dyOEPtDeQZe3G9dZ061FOU4AP+Qpwj3LyPE1pl6uV3a7Fp5ooH45Uz5mWR2s6Y5kpb3DL5f324G45AOIDxm2VuCj/L2MBf7o6LX+gS25cDwa4pzQ3rg/Bmk7qfW4KfuhdcFvcjQet7JtgBG2rnjMtj9Z0ljKDNyo2wyPH3LLsdBay/Oc5CGg3rremew6v7Wv4f1Mbt9poVCt7m78hz7U8WtNZyih6/P0lbuxtrHmwcZelJJXUxe9nxQNqsiQdZ/i+FgXWdM22so9jLy9zLtnXZ16glT2zWlNyLY/WdJZCiHI/7aGGmvkQpraSsWx0knU13KA++fj3TOIumdD1VZJRxn+p2PjfRmllz+DbnFTLozWduSA/PuG+pVvOQOstGh8y/EeNgMxV9Lm2VGxrOjWDXYRDKHZsWyt7F6tD5Gt5tKazlu2YFeLeLiw3dz0Ns6bWLXl9AQH5OGcdHNZ069qrqVwre0metTxa0+XIzCFD2OhULLfs3sACD3kIpMbaUoP08hzXWtNJG2NItbKXlEXLozWdmcyw1vS+6SWGLcqDciPzFhl0K39H9JCBALATd5ygtoPk3VnTtRuq+Vwre0kZtDxa0xnLLMaZr2B3xHLzmBuaSyHPPegR0G5cb02n57A8pVb2kpxqebSms5KZW5TTkIS3NE3l5tJPjrtdwfOh1m5cb02Xz2m5K7Syl+Pwaflz6q3REZhq/gGBVhYtnZXM3Ft9sWhqodxQavZG1Hi+oC8RZBJCxqkleOhrs5M/YKfauN6aro/Z2sq0sg/A9yTvI/CVf/dc7OW/2wKTHz7wj8QuEGUs2SKxPUU77N0YxGOo6k8HMvhj767ZuN6aLoA3kh+t7ObibMF95DLi66bevpjP50tAovABGR+RqtYcg477nb9BSsvvoSACuAfsvblWP/xX1NCs+LNgg3jufQQ9DSNnyA9wLKsilybUhDMq9VsQyUyv5HvqCDgCdSIgVnuh2GRzMeYWnqHU9Nn5auyd5HnqCDgCdSIQrTYt98qfEq4odxSBhOe4cFanSM6VI+AIRAQ4O86h2MocWVK5QUjLfYW4mFaPFXniCDgClSAAPeUEOF/RhUUrbbaSyk0iXMCvhfiRu2wd1L7Wzx0BR6AQAtBLuuKnSDtfXe/28cYLEW8QzxCTvUO8fobypQk4nK+4CX1teVk+Am3MUcPSPciv0eQKfxYyYcy9j6A/RBM0uid9TXVabrkIFfHdJF91scKuQPedr9AkurXvQso2n2sEBHOmNeDuz0L+PVbfx9gRcD+4Exz3GtD/AQcHAuqV38xkAAAAAElFTkSuQmCC\n", "text/latex": [ "$\\displaystyle \\left( \\left[\\begin{matrix}-1 & -1\\\\1 & 1000\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 & 0\\\\0 & 1000\\end{matrix}\\right]\\right)$" ], "text/plain": [ "⎛⎡-1 -1 ⎤ ⎡1 0 ⎤⎞\n", "⎜⎢ ⎥, ⎢ ⎥⎟\n", "⎝⎣1 1000⎦ ⎣0 1000⎦⎠" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P, D = M.diagonalize()\n", "P,D" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHQAAAAzCAYAAABGxyzzAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADxUlEQVR4Ae1c0XETMRB1mBSQCR2YDmKoANNBTAeQMuw/JiUAFTBOB5AKmKQD0gGBEnjPuWWcQ3fS5XZPEt6dUXTSbbS7791Jsrzjo/V6fTILyGaz+R3o9q5CEAA/Qd6ewb8blF+tclmI3+5GNwLbFmfkcHuEN/QHLi7A+Lfu//U7pSMA/t7DxxXfUJf/CIHjKWLB0yNT+E/Ye4Fyib67KWyXbgM4nMFHTp8LXI/et5gTCie5Rn9AfUVwUXMxv0H9BuUgSW0w+Awc7lFeosxRVMR0yoXjnNdPUO/IpMe45lPI9ke2D1GIAcoK5QLxf9HEwJRQOLpCuQ04/B19SwQU3HoH9L0rEQFrQpfwg9NKW2Sq5X0XRQTMCE18+04VY/GhgIAZoRhbyOrbufmUq/wYWhKa4urzFCXXSUfA8mNLaO0Uz+Tt5efS6qRZTq7h+JAZhrva0AZRNX4zQuE8t+Z0NhS09MnmSDUo68EYG2wsrO08ZXzrKZfnw/OAY/KG+vlxAJwxXdaE8kiLJyFt4dN92zzp7XveHoGAKaEg7BN8u0d9Lj7imtPtW5R30nfgtWwMZdYaBYfZGrrnFd9GHsa/Qs1NEOvXaJtvEGCnWEH8nL0oy4dqtkUf9xRfUfNFeJKYEwrnuIHgmaXLHgLAhcei6mI65ap76wNGEXBCoxDVpeCE1sVX1FsnNApRXQpOaF18Rb11QqMQ1aXghNbFV9RbJzQKUV0KTmhdfEW9dUKjENWlkHz0h6OqM4TWmxAMnaSEam09S8hzxM14UuyG4u4lFIPym5GkhGDoJiVUa+uFghrblyvuIXa7YuydcmEgKSEYekkJ1dp6XUGN7c8YdxLeffH1Etr3j617qQnV2notNyZvFhePFqH8Ti+UFCY5Q7xP0dZ7GDXf3+LiGU0opieuszE51daLGbS+X2o8owkFcJI6wS+yu4Ska+t12Zqqv8h4NAhNAVDyZmK62noxe9b3J49Hg9DQ2ilAyVPMXCJtPbGRqy4yntGEcovfIBpaS6XvTlsvF4tit9R4RhPaBJiaUK2tJ/jmqouLR4vQ1IRqbb1cRIrd4uIZQqgs8LIuSlAzTD9JCdXaen8dsL2YLO5WGJ12W3qPmsePWoEGSOBTSJHDga6E4AV0UhKqtfV2zmn/yRX3ALvBkP2Hp4Kw1NeJB8F/eKo+2uIeD1lD46O5RnYEnNDsFOg64ITq4pl9NCc0OwW6DsjHljl2SXJMt7OAthzp6Vr00VQQaPOFQXf8yRvK393b/xFkSfZSMe6DmCDA84F/OPsDSB36BQ61DpIAAAAASUVORK5CYII=\n", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}0 & -1\\\\1000 & 1001\\end{matrix}\\right]$" ], "text/plain": [ "⎡ 0 -1 ⎤\n", "⎢ ⎥\n", "⎣1000 1001⎦" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symb.simplify(P*D*P**-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "\n", "Soit $h>0$ fixé et $t_n=nh$ pour tout $n\\in\\mathbb{Z}$. \n", "Le schéma d'Euler explicite pour le système donné construit la suite \n", "$$\n", "\\begin{aligned}\n", "\\mathbf{u}_{n+1}\n", "&=\n", "\\mathbf{u}_n \n", "-h\n", "\\begin{pmatrix}\n", "0&-1\\\\\n", "1000&1001\n", "\\end{pmatrix}\n", "\\mathbf{u}_n\n", "\\\\\n", "&=\n", "\\begin{pmatrix}\n", "1 & h\\\\\n", "-1000h & 1-1001h\n", "\\end{pmatrix}\n", "\\mathbf{u}_n\n", "\\\\\n", "&=\n", "\\begin{pmatrix}\n", "1 & h\\\\\n", "-1000h & 1-1001h\n", "\\end{pmatrix}^{n+1}\n", "\\mathbf{u}_0,\\\\\n", "&=\n", "\\begin{pmatrix}\n", "-1 & -1\\\\\n", "1000 & 1\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "1-1000h & 0\\\\\n", "0 & 1-h\n", "\\end{pmatrix}^{n+1}\n", "\\begin{pmatrix}\n", "-1 & -1\\\\\n", "1000 & 1\n", "\\end{pmatrix}^{-1}\n", "\\mathbf{u}_0\\\\\n", "&=\n", "\\begin{pmatrix}\n", "-1 & -1\\\\\n", "1000 & 1\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "(1-1000h)^{n+1} & 0\\\\\n", "0 & (1-h)^{n+1}\n", "\\end{pmatrix}\n", "\\begin{pmatrix}\n", "-1 & -1\\\\\n", "1000 & 1\n", "\\end{pmatrix}^{-1}\n", "\\mathbf{u}_0, \\qquad \\forall n \\in \\mathbb{N}.\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left[\\begin{matrix}1 & h\\\\- 1000 h & 1 - 1001 h\\end{matrix}\\right]$" ], "text/plain": [ "⎡ 1 h ⎤\n", "⎢ ⎥\n", "⎣-1000⋅h 1 - 1001⋅h⎦" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "symb.var('h')\n", "M = symb.Matrix(((1,h), (-1000*h,1-1001*h)))\n", "M" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\left( \\left[\\begin{matrix}-1 & -1\\\\1000 & 1\\end{matrix}\\right], \\ \\left[\\begin{matrix}1 - 1000 h & 0\\\\0 & 1 - h\\end{matrix}\\right]\\right)$" ], "text/plain": [ "⎛⎡ -1 -1⎤ ⎡1 - 1000⋅h 0 ⎤⎞\n", "⎜⎢ ⎥, ⎢ ⎥⎟\n", "⎝⎣1000 1 ⎦ ⎣ 0 1 - h⎦⎠" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "P, D = M.diagonalize()\n", "P , D" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "Le schéma est A-stable si $\\lim_{n\\to+\\infty}\\mathbf{u}_{n+1}=\\mathbf{0}$. \n", "Il faut donc que\n", "$$\\begin{cases}\n", "|1-1000h|<1\\\\\n", "|1-h|<1\n", "\\end{cases}$$\n", "d'où la condition $h<\\frac{2}{1000}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : A-stabilité du $\\vartheta$-schéma\n", ">Pour calculer la solution approchée du problème de Cauchy\n", "$$\\begin{cases}\n", "y(t_0)=y_0,\\\\\n", "y'(t)=\\varphi(t,y(t)).\n", "\\end{cases}$$\n", "considérons la $\\vartheta$-méthode suivante:\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_{n+1}=u_{n}+h\\left(\\vartheta\\varphi(t_{n+1},u_{n+1})+(1-\\vartheta)\\varphi(t_{n},u_{n})\\right).\n", "\\end{cases}$$\n", "avec $\\vartheta \\in [0;1]$.\n", ">\n", ">Soit $\\varphi(t,y(t))=-\\beta y(t)$ avec $\\beta>0$. \n", "Donner une condition sur $h$ pour que la $\\vartheta$-méthode soit A-stable. Pour quelles valeurs de $\\vartheta$ la méthode est inconditionnellement A-stable?\n", "\n", "*Remarque*: pour $\\vartheta=0$ on retrouve la méthode d’Euler explicite, pour $\\vartheta=1$ la méthode d’Euler implicite, pour $\\vartheta=\\frac{1}{2}$ la méthode de Crank-Nicholson." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Correction\n", "$$\n", "u_{n+1}=u_n-\\beta h(\\vartheta u_{n+1}+(1-\\vartheta)u_n)\n", "\\iff\n", "u_{n+1} =\\frac{1-\\beta h (1-\\vartheta)}{1+\\beta h \\vartheta} u_n =\\frac{(1+\\beta h\\vartheta)-\\beta h }{1+\\beta h \\vartheta} u_n\n", "$$\n", "Par induction\n", "$$\n", "u_n=\\left(1-\\frac{\\beta h }{1+\\beta h \\vartheta}\\right)^n y_0\n", "$$\n", "Il s'agit d'une suite géométrique de raison $q=1-\\frac{\\beta h }{1+\\beta h \\vartheta}$. \n", "\n", "La suite tends à zéro ssi $|q|<1$ (la convergence est monotone ssi $0\\le q<1$):\n", "$$\n", "-1<1-\\frac{\\beta h }{1+\\beta h \\vartheta}<1\n", "\\iff\n", "0<\\frac{\\beta h }{1+\\beta h \\vartheta}<2\n", "\\iff\n", "(1-2\\vartheta)\\beta h < 2\n", "$$\n", "Pour $\\vartheta\\ge \\frac{1}{2}$ la méthode est inconditionnellement A-stable, \n", "pour $\\vartheta< \\frac{1}{2}$ la méthode est A-stable ssi $h<\\frac{2}{(1-2\\vartheta)\\beta}$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Déduction d'un schéma Predictor-Corrector\n", "\n", "Écrire le schéma predictor-corrector basé sur AM-3 AB-2. Attention à bien initialiser la suite récurrente." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "\n", "+ AB-1\n", "$u_{n+1}=u_n+h\\varphi(t_n,u_n)$\n", "+ AB-2\n", "$u_{n+1}=u_n+\\frac{h}{2}\\left(3\\varphi(t_n,u_n)-\\varphi(t_{n-1},u_{n-1})\\right)$\n", "+ AB-3\n", "$u_{n+1}=u_n+\\frac{h}{12}\\left(23\\varphi(t_n,u_n)-16\\varphi(t_{n-1},u_{n-1})+5\\varphi(t_{n-2},u_{n-2})\\right)$\n", "+ AM-3\n", "$u_{n+1}=u_n+\\frac{h}{24}\\left(9\\varphi(t_{n+1},u_{n+1})+19\\varphi(t_n,u_n)-5\\varphi(t_{n-1},u_{n-1})+\\varphi(t_{n-2},u_{n-2}\\right)$\n", "donc\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_1=u_0+h\\varphi(t_0,u_0)\\\\\n", "u_{2}=u_1+\\frac{h}{2}\\left(3\\varphi(t_1,u_1)-\\varphi(t_0,u_0)\\right)\\\\\n", "\\tilde u=u_n+\\frac{h}{12}\\left(23\\varphi(t_n,u_n)-16\\varphi(t_{n-1},u_{n-1})+5\\varphi(t_{n-2},u_{n-2})\\right)\\\\\n", "u_{n+1}=u_n+\\frac{h}{24}\\left(9\\varphi(t_{n+1},\\tilde u)+19\\varphi(t_n,u_n)-5\\varphi(t_{n-1},u_{n-1})+\\varphi(t_{n-2},u_{n-2}\\right)\n", "\\end{cases} $$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Ordre d'un schéma\n", "\n", "Une méthode numérique à un pas a été utilisée pour résoudre une équation différentielle avec condition initiale. \n", "Les résultats obtenus par cette méthode en prenant des pas de temps $h = 0.1$, $h = 0.05$ et $h = 0.025$ sont donnés dans le tableau suivant \n", "(remarque: une valeur sur deux est affichée pour $h = 0.05$ et une valeur sur quatre est affichée pour $h = 0.025$)\n", "$$\\begin{array}{|c|c|c|c|}\n", "\\hline\n", "t_i &y_i\\text{ pour }h=0.1 \t&y_i\\text{ pour }h=0.05 &y_i\\text{ pour }h=0.025\\\\\n", "\\hline\n", "1.0 &0.500000 \t\t\t&0.500000 &0.500000\\\\\n", "1.1 &0.512084 \t\t\t&0.512242 &0.512280\\\\\n", "1.2 &0.511698 \t\t\t&0.512101 &0.512196\\\\\n", "1.3 &0.500927 \t\t\t&0.501559 &0.501704\\\\\n", "1.4 &0.482686 \t\t\t&0.483447 &0.483619\\\\\n", "1.5 &0.459861 \t\t\t&0.460633 &0.460804\\\\\n", "\\hline\n", "\\end{array}\n", "$$\n", "En calculant le rapport des erreurs et sachant que $y(1.5)=0.460857$, déterminer l’ordre de la méthode numérique utilisée." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "La méthode utilisée est d’ordre $2$, en effet, pour $t=1.5$ nous avons\n", "$$\n", "\\frac{E(h = 0. 05)}{E(h = 0. 025)}\n", "=\n", "\\frac{|0.460633 - 0.460857|}{|0.460804 - 0.460857|}\n", "= 4.226\n", "\\simeq\n", "2^2. \n", "$$\n", "Si on a accès à `polyfit` on peut tracer la courbe d'erreur en echèlle logaritmique et estimer la pente:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "application/javascript": [ "IPython.notebook.set_autosave_interval(300000)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Autosaving every 300 seconds\n", "Ordre\t 2.12\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%reset -f\n", "%matplotlib inline\n", "%autosave 300\n", "\n", "from matplotlib.pylab import *\n", "\n", "H=[0.1,0.05,0.025]\n", "err=[]\n", "y=0.460857\n", "err.append(abs(y-0.459861))\n", "err.append(abs(y-0.460633))\n", "err.append(abs(y-0.460804))\n", "\n", "print ('Ordre\\t %1.2f' %(polyfit(log(H),log(err), 1)[0]))\n", "\n", "subplot(1,2,1)\n", "loglog(H,err, 'r-o');\n", "grid()\n", "subplot(1,2,2)\n", "plot(log(H),log(err), 'r-o');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Interpolation, Quadrature et EDO\n", "\n", "+ Soit $f$ une fonction de classe $\\mathcal{C}^1([-1,1])$. Écrire le polynôme $p\\in\\mathbb{R}_2[\\tau]$ qui interpole $f$ aux points $-1$, $0$ et $1$.\n", "+ Construire une méthode de quadrature comme suit:\n", "$$\n", "\\int_{0}^{1}f(\\tau)\\mathrm{d}\\tau \\approx \\int_{0}^{1}p(\\tau)\\mathrm{d}\\tau.\n", "$$\n", "*NB*: on intègre sur $[0,1]$ mais on interpole en $-1$, $0$ et $1$.\n", "\n", "+ À l'aide d'un changement de variable affine entre l'intervalle $[0,1]$ et l'intervalle $[a,b]$, en déduire une formule de quadrature pour l'intégrale\n", "$$\n", "\\int_{a}^{b}f(x) \\mathrm{d}x\n", "$$\n", "lorsque $f$ est une fonction de classe $\\mathcal{C}^1([2a-b,b])$. \n", "*Remarque*: $[2a-b,b]=[a-(b-a),a+(b-a)]$\n", "\n", "+ Considérons le problème de Cauchy: trouver $y \\colon [t_0,T]\\subset \\mathbb{R} \\to \\mathbb{R}$ tel que\n", " $$\\begin{cases}\n", "\ty'(t) = \\varphi(t,y(t)), &\\forall t \\in [t_0,T],\\\\\n", "\ty(t_0) = y_0,\n", "\t\\end{cases}$$\n", "\tdont on suppose l'existence d'une unique solution $y$.\n", "\n", "\tOn subdivise l'intervalle $[t_0;T]$ en $N$ intervalles $[t_{n};t_{n+1}]$ de largeur $h=\\dfrac{T-t_0}{N}$ avec $t_n=t_0+nh$ pour $n=0,\\dots,N$.\n", "\tUtiliser la formule obtenue au point 3 pour approcher l'intégrale\n", "\t$$\n", "\t\\int_{t_n}^{t_{n+1}}\\varphi(t,y(t))\\mathrm{d}t.\n", "\t$$\n", "\tEn déduire un schéma à deux pas implicite pour l'approximation de la solution du problème de Cauchy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "\n", "On cherche les coefficients $\\alpha$, $\\beta$ et $\\gamma$ du polynôme $p(\\tau)=\\alpha+\\beta \\tau+\\gamma \\tau^2$ tels que\n", "$$\n", "\\begin{cases}\n", "p(-1)=f(-1),\\\\\n", "p(0) =f(0),\\\\\n", "p(1) =f(1),\n", "\\end{cases}\n", "\\qquad\\text{c'est à dire}\\qquad\n", "\\begin{cases}\n", "\\alpha-\\beta+\\gamma=f(-1),\\\\\n", "\\alpha=f(0),\\\\\n", "\\alpha+\\beta+\\gamma=f(1).\n", "\\end{cases}\n", "$$\n", "Donc $\\alpha=f(0)$, $\\beta=\\frac{f(1)-f(-1)}{2}$ et $\\gamma=\\frac{f(1)-2f(0)+f(-1)}{2}$." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle - \\frac{- 2 f_{0} + t^{2} \\left(2 f_{0} - f_{1} - f_{m1}\\right) + t \\left(- f_{1} + f_{m1}\\right)}{2}$" ], "text/plain": [ " ⎛ 2 ⎞ \n", "-⎝-2⋅f₀ + t ⋅(2⋅f₀ - f₁ - fₘ₁) + t⋅(-f₁ + fₘ₁)⎠ \n", "────────────────────────────────────────────────\n", " 2 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as symb\n", "symb.init_printing()\n", "\n", "symb.var('f_0,f_1,f_m1,t')\n", "\n", "p=symb.interpolate([(1,f_1),(0,f_0),(-1,f_m1)], t).factor(t)\n", "p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On en déduit la méthode de quadrature\n", "$$\n", "\\int_{0}^{1}f(\\tau)\\mathrm{d}\\tau\n", "\\approx\n", "\\int_{0}^{1}p(\\tau)\\mathrm{d}\\tau\n", "=\n", "\\alpha+\\frac{\\beta}{2}+\\frac{\\gamma}{3}\n", "=\n", "\\frac{-f(-1)+8f(0)+5f(1)}{12}.\n", "$$" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{2 f_{0}}{3} + \\frac{5 f_{1}}{12} - \\frac{f_{m1}}{12}$" ], "text/plain": [ "2⋅f₀ 5⋅f₁ fₘ₁\n", "──── + ──── - ───\n", " 3 12 12" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q=(symb.integrate(p,(t,0,1)).simplify())\n", "q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Soit $x=m\\tau+q$, alors\n", "$$\n", "\\int_{a}^{b} f(x)\\mathrm{d}x\n", "=\n", "m\\int_{0}^{1}f(m\\tau+q)\\mathrm{d}\\tau\n", "\\quad\\text{avec}\\quad\n", "\\begin{cases}\n", "a=q,\\\\\n", "b=m+q,\n", "\\end{cases}\n", "\\quad\\text{i.e.}\\quad\n", "\\begin{cases}\n", "m=b-a,\\\\\n", "q=a,\n", "\\end{cases}\n", "$$\n", "d'où le changement de variable $x=(b-a)\\tau+a$. On en déduit la formule de quadrature\n", "$$\n", "\\int_{a}^{b}\\!\\!\\!\\!f(x)\\mathrm{d}x\n", "=\n", "(b-a)\\int_{0}^{1}f\\left((b-a)\\tau+a\\right)\\mathrm{d}\\tau\n", "\\approx\n", "(b-a)\\frac{-f(2a-b)+8f(a)+5f(b)}{12}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On pose $a=t_n$ et $b=t_{n+1}$ d'où la formule de quadrature\n", "$$\n", "\\int_{t_{n}}^{t_{n+1}}\\!\\!\\!\\!f(t)\\mathrm{d}t\n", "\\approx\n", "(t_{n+1}-t_{n}) \\frac{-f(2t_{n}-t_{n+1})+8f(t_{n})+5f(t_{n+1})}{12}\n", "=\n", "h \\frac{-f(t_{n-1})+8f(t_{n})+5f(t_{n+1})}{12}.\n", "$$\n", "En utilisant la formule de quadrature pour l'intégration de l'EDO $y'(t)=\\varphi(t,y(t))$ entre $t_n$ et $t_{n+1}$ on obtient\n", "$$\n", "y(t_{n+1})=y(t_n)+\\int_{t_n}^{t_{n+1}} \\varphi(t,y(t))\\mathrm{d}t\n", "\\approx\n", "h \\dfrac{-\\varphi(t_{n-1},y(t_{n-1}))+8\\varphi(t_{n},y(t_{n}))+5\\varphi(t_{n+1},y(t_{n+1}))}{12}.\n", "$$\n", "Si on note $u_n$ une approximation de la solution $y$ au temps $t_n$, on obtient le schéma à deux pas implicite suivant:\n", "$$\n", "\\begin{cases}\n", "u_0=y(t_0)=y_0,\\\\\n", "u_1\\text{ à définir},\\\\\n", "u_{n+1}=u_n+ h \\dfrac{-\\varphi(t_{n-1},u_{n-1})+8\\varphi(t_{n},u_{n})+5\\varphi(t_{n+1},u_{n+1})}{12} & n=1,2,\\dots N-1\n", "\\end{cases}\n", "$$\n", "On peut utiliser une pédiction d'Euler explicite pour initialiser $u_1$:\n", "$$\n", "\\begin{cases}\n", "u_0=y(t_0)=y_0,\\\\\n", "u_1=u_0+h\\varphi(t_0,u_0),\\\\\n", "u_{n+1}=u_n+ h \\dfrac{-\\varphi(t_{n-1},u_{n-1})+8\\varphi(t_{n},u_{n})+5\\varphi(t_{n+1},u_{n+1})}{12} & n=1,2,\\dots N-1\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Interpolation, Quadrature et EDO\n", "\n", "1. Soit $h>0$ et $f\\colon [a-h,a+h] \\to\\mathbb{R}$ une fonction de classe $\\mathscr{C}^1([a-h,a+h])$. Écrire le polynôme $p\\in\\mathbb{R}_1[x]$ qui interpole $f$ aux points $a-h$ et $a$, i.e. l'équation de la droite $p\\in\\mathbb{R}_1[x]$ qui passe par les deux points $(a-h,f(a-h))$ et $(a,f(a))$.\n", "2. Construire une méthode de quadrature comme suit:\n", " $$\n", "\\int_{a}^{a+h}f(x)\\mathrm{d}x \\approx \\int_{a}^{a+h}p(x)\\mathrm{d}x.\n", "$$\n", " *NB*: on intègre sur $[a,a+h]$ mais on interpole en $a-h$ et $a$.\n", "3. Considérons le problème de Cauchy: trouver $y \\colon [t_0,T]\\subset \\mathbb{R} \\to \\mathbb{R}$ tel que\n", " $$\\begin{cases}\n", " y'(t) = \\varphi(t,y(t)), &\\forall t \\in [t_0,T],\\\\\n", " y(t_0) = y_0,\n", " \\end{cases}$$\n", " dont on suppose l'existence d'une unique solution $y$. \n", " On subdivise l'intervalle $[t_0;T]$ en $N$ intervalles $[t_{n};t_{n+1}]$ de largeur $h=\\dfrac{T-t_0}{N}$ avec $t_n=t_0+nh$ pour $n=0,\\dots,N$. \n", " Utiliser la formule obtenue au point 2 pour approcher l'intégrale\n", " $$\n", " \\int_{t_n}^{t_{n+1}}\\varphi(t,y(t))\\mathrm{d}t.\n", " $$\n", " En déduire un schéma à deux pas explicite pour l'approximation de la solution du problème de Cauchy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "$p(x)=\\dfrac{f(a)-f(a-h)}{a-(a-h)}(x-a)+f(a)=\\dfrac{f(a)-f(a-h)}{h}(x-a)+f(a)$." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{- a f_{a} + a f_{amh} + f_{a} h + t \\left(f_{a} - f_{amh}\\right)}{h}$" ], "text/plain": [ "-a⋅fₐ + a⋅fₐₘₕ + fₐ⋅h + t⋅(fₐ - fₐₘₕ)\n", "─────────────────────────────────────\n", " h " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sympy as symb\n", "symb.init_printing()\n", "\n", "symb.var('a,h,f_a,f_amh,t')\n", "\n", "p=symb.interpolate([(a,f_a),(a-h,f_amh)], t).factor(t)\n", "p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On en déduit la méthode de quadrature\n", "\\begin{align*}\n", "\\int_{a}^{a+h}f(x)\\mathrm{d}x\n", "&\\approx\n", "\\int_{a}^{a+h}p(x)\\mathrm{d}x\n", "\\\\&=\n", "\\dfrac{f(a)-f(a-h)}{h}\\left[ \\frac{(x-a)^2}{2} \\right]_a^{a+h}+f(a)\\left[ x \\right]_a^{a+h}\n", "\\\\&=\n", "\\dfrac{f(a)-f(a-h)}{2h}\\left((a+h-a)^2-(a-a)^2 \\right)+f(a)(a+h-a)\n", "\\\\&=\n", "\\dfrac{f(a)-f(a-h)}{2h} h^2 + hf(a)\n", "\\\\&=\n", "h \\dfrac{3f(a)-f(a-h)}{2}.\n", "\\end{align*}" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$\\displaystyle \\frac{h \\left(3 f_{a} - f_{amh}\\right)}{2}$" ], "text/plain": [ "h⋅(3⋅fₐ - fₐₘₕ)\n", "───────────────\n", " 2 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "q=(symb.integrate(p,(t,a,a+h)).simplify())\n", "q" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On pose $a=t_n$ et $a+h=t_{n+1}$ d'où la formule de quadrature\n", "$$\n", "\\int_{t_{n}}^{t_{n+1}}\\!\\!\\!\\!f(t)\\mathrm{d}t\n", "\\approx\n", "(t_{n+1}-t_{n}) \\frac{3f(t_n)-f(2t_{n}-t_{n+1})}{2}\n", "=\n", "h \\frac{3f(t_n)-f(t_{n-1})}{2}.\n", "$$\n", "En utilisant la formule de quadrature pour l'intégration de l'EDO $y'(t)=\\varphi(t,y(t))$ entre $t_n$ et $t_{n+1}$ on obtient\n", "$$\n", "y(t_{n+1})=y(t_n)+\\int_{t_n}^{t_{n+1}} \\varphi(t,y(t))\\mathrm{d}t\n", "\\approx\n", "h \\dfrac{3\\varphi(t_{n},y(t_{n}))-\\varphi(t_{n-1},y(t_{n-1}))}{2}.\n", "$$\n", "Si on note $u_n$ une approximation de la solution $y$ au temps $t_n$, on obtient le schéma à deux pas implicite suivant:\n", "$$\n", "\\begin{cases}\n", "u_0=y(t_0)=y_0,\\\\\n", "u_1\\text{ à définir},\\\\\n", "u_{n+1}=u_n+ h \\dfrac{3\\varphi(t_{n},u_{n})-\\varphi(t_{n-1},u_{n-1})}{2} & n=1,2,\\dots N-1\n", "\\end{cases}\n", "$$\n", "On peut utiliser une prédiction d'Euler explicite pour initialiser $u_1$:\n", "$$\n", "\\begin{cases}\n", "u_0=y(t_0)=y_0,\\\\\n", "u_1=u_0+h\\varphi(t_0,u_0),\\\\\n", "u_{n+1}=u_n+ h \\dfrac{3\\varphi(t_{n},u_{n})-\\varphi(t_{n-1},u_{n-1})}{2} & n=1,2,\\dots N-1\n", "\\end{cases}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercice : Construction d'un schéma\n", "\n", "Considérons le problème de Cauchy \n", ">trouver une fonction $y \\colon I\\subset \\mathbb{R} \\to \\mathbb{R}$ définie sur un intervalle $I=[t_0,T]$ telle que\n", "$$\\begin{cases}\n", "y'(t) = \\varphi(t,y(t)), &\\forall t \\in I=[t_0,T],\\\\\n", "y(t_0) = y_0,\n", "\\end{cases}$$\n", "avec $y_0$ une valeur donnée et supposons que l'on ait montré l'existence et l'unicité d'une solution $y$ pour $t\\in I$.\n", "\n", "On subdivise l'intervalle $I=[t_0;T]$, avec $T<+\\infty$, en $N$ intervalles $[t_{n};t_{n+1}]$ de largeur $h=(T-t_0)/N$ avec $t_n=t_0+nh$ pour $n=0,\\dots,N$. \n", "Pour chaque nœud $t_n$, on note $y_n=y(t_n)$ et on cherche la valeur inconnue $u_n$ qui approche la valeur exacte $y_n$\n", "\n", "Si nous intégrons l'EDO $y'(t)=\\varphi(t,y(t))$ entre $t_{n-2}$ et $t_{n+1}$ nous obtenons\n", "$$\n", "y_{n+1}-y_{n-2}=\\int_{t_{n-2}}^{t_{n+1}} \\varphi(t,y(t))dt.\n", "$$\n", "Écrire le schéma obtenu en approchant l'intégrale $\\int_{t_{n-2}}^{t_{n+1}} \\varphi(t,y(t))\\mathrm{d}t$ par l'intégrale $\\int_{t_{n-2}}^{t_{n+1}} p(t) \\mathrm{d}t$ où $p$ est le polynôme interpolant $\\varphi$ en $t_{n}$ et $t_{n-1}$ (attention à bien initialiser la suite définie par récurrence pour qu'on puisse effectivement calculer tous les termes). Le schéma obtenu est-il explicite?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Correction**\n", "Le polynôme interpolant $\\varphi$ en $t_{n}$ et $t_{n-1}$ a équation\n", "$$\n", "p(t) \n", "= \\frac{\\varphi(t_n,y_n)-\\varphi(t_{n-1},y_{n-1})}{t_n-t_{n-1}}(t-t_n)+ \\varphi(t_n,y_n).\n", "$$\n", "On intègre ce polynôme entre $t_{n-2}$ et $t_{n+1}$:\n", "\\begin{align*}\n", "\\int_{t_{n-2}}^{t_{n+1}} p(t) \\mathrm{d}t\n", "&= \\frac{\\varphi(t_n,y_n)-\\varphi(t_{n-1},y_{n-1})}{h}\\left[\\frac{(t-t_n)^2}{2}\\right]_{t_{n-2}}^{t_{n+1}}+ \\varphi(t_n,y_n)\\left[t\\right]_{t_{n-2}}^{t_{n+1}}\n", "\\\\\n", "&=\\frac{\\varphi(t_n,y_n)-\\varphi(t_{n-1},y_{n-1})}{2h}\\left[ (t_{n+1}-t_n)^2-(t_{n-2}-t_n)^2 \\right]+ \\varphi(t_n,y_n)\\left[t_{n+1}-t_{n-2}\\right]\n", "\\\\\n", "&=\\frac{3}{2}h\\left(\\varphi(t_n,y_n)+\\varphi(t_{n-1},y_{n-1})\\right).\n", "\\end{align*}\n", "On obtient le schéma explicite\n", "$$\\begin{cases}\n", "u_0=y_0,\\\\\n", "u_1=u_0+h\\varphi(t_0,u_0), \\\\\n", "u_{n+1}=u_{n-2}+\\frac{3}{2}h\\left(\\varphi(t_n,u_n)+\\varphi(t_{n-1},u_{n-1})\\right).\n", "\\end{cases}$$" ] } ], "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": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "384px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }