diff --git a/tp/runge-kutta.ipynb b/tp/runge-kutta.ipynb index 2d2a98cb8a3e7c644670a346d69b6b3ff8b540c9..891643eb8ddfa1f4b8851af2e1c7a192b5fa1ff9 100644 --- a/tp/runge-kutta.ipynb +++ b/tp/runge-kutta.ipynb @@ -15,7 +15,25 @@ "\n", "## Introduction\n", "\n", - "Nous allons dans ce TP, implémenter quelques méthodes de Runge-Kutta et étudier leur convergence. On considère un pas de temps $h$ uniforme." + "Nous allons dans ce TP, implémenter quelques méthodes de Runge-Kutta et étudier leur convergence. On considère un pas de temps $h$ uniforme. On rappelle qu'ue méthode à un pas explicite est **convergente** si pour toute solution $x(\\cdot, t_0, x_0)$, la suite ${(x_i)}_i$ définie par $x_{i+1} = x_i + h\\, \\Phi(t_i, x_i, h)$ vérifie \n", + "$$\n", + " \\max_{1 \\le i \\le N}\\, \\|{x(t_i, t_0, x_0) - x_i}\\| \\to 0 \n", + " \\quad\\text{quand}\\quad h \\to 0.\n", + "$$\n", + "\n", + "Si la convergence est d'ordre $p$ alors il existe une constante $C \\ge 0$ telle que\n", + "\n", + "$$\n", + " E := \\max_{1 \\le i \\le N}\\, \\|{x(t_i, t_0, x_0) - x_i}\\| \\le C\\, h^p.\n", + "$$\n", + "\n", + "Faisons l'hypothèse que $E = M\\, h^p$ pour un certain $M \\ge 0$. En passant au logarithme, on obtient\n", + "\n", + "$$\n", + " \\log(E) = \\log(M) + p\\, \\log(h).\n", + "$$\n", + "\n", + "Nous en déduisons que si on trace $\\log(E)$ en fonction de $\\log(h)$, on doit obtenir une droite de pente $p$. C'est ce que nous allons vérifier dans ce TP." ] }, { @@ -171,7 +189,7 @@ " println(\"ordre de convergence : p = $(round(p, digits=5))\")\n", "\n", " # Affichage de l'erreur en fonction du pas de temps: on enlève la constante K\n", - " plot!(plts[1], hspan, err ./ K, xaxis=:log, yaxis=:log, label=\"$method_name\", marker=:circle)\n", + " plot!(plts[1], hspan, err, xaxis=:log, yaxis=:log, label=\"$method_name\", marker=:circle)\n", "\n", " # Affichage de la droite de régression\n", " #plot!(plt, hspan, hspan .^ p, label=\"$method_name Regression\", linestyle=:dash)\n", @@ -197,7 +215,7 @@ "\n", " # Affchage de l'erreur en fonction du nombre d'appels à la fonction f\n", " # Nfespan = methode_stages .* Nspan\n", - " plot!(plts[2], Nfespan, err ./ K, xaxis=:log, yaxis=:log, label=\"$method_name\", marker=:circle)\n", + " plot!(plts[2], Nfespan, err, xaxis=:log, yaxis=:log, label=\"$method_name\", marker=:circle)\n", "\n", " # Mise en forme du graphique\n", " plot!(plts[2], xlims=xlims_nfe, ylims=ylims_nfe)\n",