From c2d1976cd0631428cae8f5b2056f56074791b344 Mon Sep 17 00:00:00 2001 From: Olivier Cots <olivier.cots@irit.fr> Date: Mon, 2 Sep 2024 11:59:17 +0200 Subject: [PATCH] up readme --- tp/derivees.ipynb | 5 +- tp/edo-general.ipynb | 5 +- tp/install.ipynb | 10 ++ tp/rk-implicites.ipynb | 311 ----------------------------------------- tp/runge-kutta.ipynb | 5 +- 5 files changed, 16 insertions(+), 320 deletions(-) delete mode 100644 tp/rk-implicites.ipynb diff --git a/tp/derivees.ipynb b/tp/derivees.ipynb index a7712cb..63e7c41 100644 --- a/tp/derivees.ipynb +++ b/tp/derivees.ipynb @@ -4,9 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/LOGO_INP_N7.png\" alt=\"N7\" height=\"80\"/>\n", - "\n", - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\"/>\n", + "[<img src=\"https://gitlab.irit.fr/toc/etu-n7/controle-optimal/-/raw/master/ressources/Logo-toulouse-inp-N7.png\" alt=\"N7\" height=\"80\"/>](https://gitlab.irit.fr/toc/etu-n7/controle-optimal)\n", + "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\" style=\"margin-left:50px\"/>\n", "\n", "# Calcul de dérivées et équation différentielles\n", "\n", diff --git a/tp/edo-general.ipynb b/tp/edo-general.ipynb index 5ea6967..d125db7 100644 --- a/tp/edo-general.ipynb +++ b/tp/edo-general.ipynb @@ -5,9 +5,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/LOGO_INP_N7.png\" alt=\"N7\" height=\"100\"/>\n", - "\n", - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"100\"/>\n", + "[<img src=\"https://gitlab.irit.fr/toc/etu-n7/controle-optimal/-/raw/master/ressources/Logo-toulouse-inp-N7.png\" alt=\"N7\" height=\"80\"/>](https://gitlab.irit.fr/toc/etu-n7/controle-optimal)\n", + "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\" style=\"margin-left:50px\"/>\n", "\n", "# Intégration numérique\n", "\n", diff --git a/tp/install.ipynb b/tp/install.ipynb index 3616a42..373ba25 100644 --- a/tp/install.ipynb +++ b/tp/install.ipynb @@ -1,5 +1,15 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[<img src=\"https://gitlab.irit.fr/toc/etu-n7/controle-optimal/-/raw/master/ressources/Logo-toulouse-inp-N7.png\" alt=\"N7\" height=\"80\"/>](https://gitlab.irit.fr/toc/etu-n7/controle-optimal)\n", + "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\" style=\"margin-left:50px\"/>\n", + "\n", + "# Installation des packages pour les TPs" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/tp/rk-implicites.ipynb b/tp/rk-implicites.ipynb deleted file mode 100644 index 56e8be1..0000000 --- a/tp/rk-implicites.ipynb +++ /dev/null @@ -1,311 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/LOGO_INP_N7.png\" alt=\"N7\" height=\"80\"/>\n", - "\n", - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\"/>\n", - "\n", - "# Méthodes de Runge-Kutta implicites - TP Projet\n", - "\n", - "- Date : 2023-2024\n", - "- Durée approximative : inconnue" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Nom** : \"Entrez votre nom ici\"\n", - "\n", - "**Prénom** : \"Entrez votre prénom ici\"" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Rendu et consignes\n", - "\n", - "Une fois le travail terminé, vous enverrez directement le fichier `.ipynb` par email à l'adresse : `olivier.cots@toulouse-inp.fr`.\n", - "\n", - "- **Date limite du rendu : mercredi 15/11/2023 à 23h59.** Attention, à partir de 24h, 2 points est enlevé de la note finale toutes les 30 minutes.\n", - "- **Attention :** Le fichier doit être renommé de la façon suivante : `rk_implicites_NOM_Prenom.ipynb`. 4 points enlevés si le nom du fichier n'est pas respecté.\n", - "- **Documents autorisés :** vous pouvez utiliser votre polycopié et les TPs précédents." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Introduction\n", - "\n", - "Nous allons dans ce TP, implémenter quelques méthodes de Runge-Kutta **implicites** (voir **polycopié Section 8.2**) et étudier leur convergence. On considère un pas de temps $h$ uniforme. Une méthode à un pas implicite est convergente si pour toute solution $x(\\cdot, t_0, x_0)$ d'un problème de Cauchy, la suite approximante ${(x_i)}_i$ donnée par la méthode à un pas implicite 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 l'**erreur globale** $E$ vérifie\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." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# activate local project\n", - "using Pkg\n", - "Pkg.activate(\".\")\n", - "\n", - "# load packages\n", - "using LinearAlgebra\n", - "using Plots\n", - "using Plots.PlotMeasures\n", - "using Polynomials\n", - "\n", - "#\n", - "px = PlotMeasures.px;" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Fonctons auxiliaires \n", - "\n", - "# VOUS POUVEZ METTRE VOS FONCTIONS AUXILIAIRES ICI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## L'exemple d'étude\n", - "\n", - "On s'intéresse (pour les exercices 1, 2 et 3) au problème de Cauchy\n", - "\n", - "$$\n", - " \\dot{x}(t) = (1-2t) x(t), \\quad x(0) = x_0 = 1\n", - "$$\n", - "\n", - "sur l'intervalle $[0, 3]$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Définition du problème de Cauchy\n", - "f(t, x) = (1-2t)x # Second membre f(t, x)\n", - "x0 = 1.0 # Condition initiale\n", - "tspan = (0.0, 3.0); # Intervalle de temps" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Solution analytique\n", - "function sol(t)\n", - " return exp(t-t^2)\n", - "end;" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# Estimation de la constante de Lipschitz de f sur [0, 3]\n", - "# Voir Théorème 8.2.2 pour l'utilité de cette estimation\n", - "function dfx(t)\n", - " return 1-2t\n", - "end \n", - "L = maximum(abs.(dfx.(range(0, stop=3, length=1000))))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## La méthode d'Euler implicite\n", - "\n", - "La méthode d'Euler implicite est donnée par :\n", - "\n", - "$$\n", - "\\left\\{\n", - "\\begin{array}{l}\n", - "x_{n+1} = x_n + h f(t_n, x_{n+1}) \\\\\n", - "x_0 = x(t_0)\n", - "\\end{array}\n", - "\\right.\n", - "$$\n", - "\n", - "### Exercice 1\n", - "\n", - "1. Implémenter la méthode d'Euler implicite avec le point fixe (penser à voir le polycopié Section 8.2).\n", - "2. Pourquoi si $h \\ge 0.2$, la méthode d'Euler implicite ne marche pas ?\n", - "3. Tracer la solution approchée et la solution exacte sur le même graphique pour différentes valeurs de $h$ que vous choisirez pour illustrer la convergence de la méthode.\n", - "4. Tracer l'erreur globale de la méthode d'Euler implicite en fonction de $h$ et vérifier que l'erreur est bien en $O(h)$.\n", - "\n", - "**Attention** : pour l'algorithme du point fixe, faites attention aux critères d'arrêts (il y en a 2) ! Voir votre polycopié Section 8.2. Vous fixerez la valeur de la tolérance à $10^{-6}$ et le nombre maximum d'itérations à $1000$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# AJOUTER VOTRE CODE ICI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## La méthode des trapèzes\n", - "\n", - "La méthode des trapèzes est donnée par le tableau de Butcher :\n", - "\n", - "$$\n", - " \\begin{array}{c | c c}\n", - " 0 & 0 & 0 \\\\[0.2em]\n", - " 1 & 1/2 & 1/2 \\\\[0.2em]\n", - " \\hline\n", - " & 1/2 & 1/2 \\\\\n", - " \\end{array}\n", - "$$\n", - "\n", - "### Exercice 2\n", - "\n", - "1. Implémenter la méthode des trapèzes avec le point fixe.\n", - "2. Tracer la solution approchée et la solution exacte sur le même graphique pour différentes valeurs de $h$ que vous choisirez pour illustrer la convergence de la méthode.\n", - "3. Tracer l'erreur globale de la méthode des trapèzes. Quel est l'ordre de convergence de la méthode des trapèzes ?\n", - "4. Tracer l'erreur globale en fonction du nombre d'évaluation de la fonction $f$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# AJOUTER VOTRE CODE ICI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## La méthode de Gauss à 2 étages\n", - "\n", - "La méthode de Gauss à 2 étages est donnée par le tableau de Butcher :\n", - "\n", - "$$\n", - " \\begin{array}{c | c c}\n", - " 1/2 - \\sqrt{3}/6 & 1/4 & 1/4 - \\sqrt{3}/6 \\\\[0.2em]\n", - " 1/2 + \\sqrt{3}/6 & 1/4 + \\sqrt{3}/6 & 1/4 \\\\[0.2em]\n", - " \\hline\n", - " & 1/2 & 1/2 \\\\\n", - " \\end{array}\n", - "$$\n", - "\n", - "### Exercice 3\n", - "\n", - "1. Implémenter la méthode de Gauss à 2 étages avec le point fixe.\n", - "2. Tracer la solution approchée et la solution exacte sur le même graphique pour différentes valeurs de $h$ que vous choisirez pour illustrer la convergence de la méthode.\n", - "3. Tracer l'erreur globale de la méthode de Gauss à 2 étages. Quel est l'ordre de convergence de la méthode de Gauss à 2 étages ?\n", - "4. Tracer l'erreur globale en fonction du nombre d'évaluation de la fonction $f$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# AJOUTER VOTRE CODE ICI" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Un autre exemple\n", - "\n", - "On considère à partir de maintenant l'équation différentielle en dimension 2 :\n", - "\n", - "$$\n", - " \\dot{x}_1(t) = x_2(t), \\quad \\dot{x}_2(t) = - x_1(t).\n", - "$$\n", - "\n", - "On peut montrer facilement que la norme de $x(t) = (x_1(t), x_2(t))$ est constante le long des solutions :\n", - "\n", - "$$\n", - " \\frac{\\mathrm{d}}{\\mathrm{d} t} \\|x(t)\\|^2 = 2\\, \\left( x(t) \\,|\\, \\dot{x}(t) \\right) = 2 \\left( x_1(t) x_2(t) - x_2(t) x_1(t) \\right) = 0.\n", - "$$\n", - "\n", - "### Exercice 4\n", - "\n", - "On considère le problème de Cauchy associé de condition initiale $x_0 = (1, 0)$.\n", - "\n", - "1. Afficher l'approximation de la solution sur $[0, 10]$ pour les méthodes :\n", - "- Euler explicite ;\n", - "- Euler implicite ;\n", - "- Trapèzes ;\n", - "- Gauss à 2 étages.\n", - "2. Commentaires.\n", - "\n", - "**Attention :** vous ferez un affichage dans le plan $(x_1, x_2)$. Vous fixerez le nombre de pas à $N=100$." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "# AJOUTER VOTRE CODE ICI" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Julia 1.9.0", - "language": "julia", - "name": "julia-1.9" - }, - "language_info": { - "file_extension": ".jl", - "mimetype": "application/julia", - "name": "julia", - "version": "1.9.0" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/tp/runge-kutta.ipynb b/tp/runge-kutta.ipynb index 891643e..c44e03a 100644 --- a/tp/runge-kutta.ipynb +++ b/tp/runge-kutta.ipynb @@ -4,9 +4,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/LOGO_INP_N7.png\" alt=\"N7\" height=\"80\"/>\n", - "\n", - "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\"/>\n", + "[<img src=\"https://gitlab.irit.fr/toc/etu-n7/controle-optimal/-/raw/master/ressources/Logo-toulouse-inp-N7.png\" alt=\"N7\" height=\"80\"/>](https://gitlab.irit.fr/toc/etu-n7/controle-optimal)\n", + "<img src=\"https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png\" alt=\"INSA\" height=\"80\" style=\"margin-left:50px\"/>\n", "\n", "# Méthodes de Runge-Kutta\n", "\n", -- GitLab