From f60c7d937c594d17339f9ad159eba5f763c3187a Mon Sep 17 00:00:00 2001 From: Olivier Cots <66357348+ocots@users.noreply.github.com> Date: Fri, 29 Sep 2023 13:14:32 +0200 Subject: [PATCH] update tp RK --- tp/runge-kutta.ipynb | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/tp/runge-kutta.ipynb b/tp/runge-kutta.ipynb index 2d2a98c..891643e 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", -- GitLab