Skip to content
Snippets Groups Projects
Commit a2383288 authored by Olivier Cots's avatar Olivier Cots
Browse files

changement d'horaire

parent c903851b
No related branches found
No related tags found
No related merge requests found
%% Cell type:markdown id: tags:
<img src="https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/LOGO_INP_N7.png" alt="N7" height="80"/>
<img src="https://gitlab.irit.fr/toc/ens-n7/texCoursN7/-/raw/main/logo-insa.png" alt="INSA" height="80"/>
# Méthodes de Runge-Kutta implicites - TP Projet
- Date : 2023-2024
- Durée approximative : inconnue
%% Cell type:markdown id: tags:
**Nom** : "Entrez votre nom ici"
**Prénom** : "Entrez votre prénom ici"
%% Cell type:markdown id: tags:
## Rendu et consignes
Une fois le travail terminé, vous enverrez directement le fichier `.ipynb` par email à l'adresse : `olivier.cots@toulouse-inp.fr`.
- **Date limite du rendu : mercredi 15/11/2023 à 19h.** Attention, à partir de 19h, 1 point est enlevé de la note finale toutes les 30 minutes.
- **Attention :** Le fichier doit être renommé de la façon suivante : `rk_implicites_NOM_Prenom.ipynb`
- **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.
- **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é.
- **Documents autorisés :** vous pouvez utiliser votre polycopié et les TPs précédents.
%% Cell type:markdown id: tags:
## Introduction
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
$$
\max_{1 \le i \le N}\, \|{x(t_i, t_0, x_0) - x_i}\| \to 0
\quad\text{quand}\quad h \to 0.
$$
Si la convergence est d'ordre $p$ alors il existe une constante $C \ge 0$ telle que l'**erreur globale** $E$ vérifie
$$
E := \max_{1 \le i \le N}\, \|{x(t_i, t_0, x_0) - x_i}\| \le C\, h^p.
$$
Faisons l'hypothèse que $E = M\, h^p$ pour un certain $M \ge 0$. En passant au logarithme, on obtient
$$
\log(E) = \log(M) + p\, \log(h).
$$
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 id: tags:
``` julia
# activate local project
using Pkg
Pkg.activate(".")
# load packages
using LinearAlgebra
using Plots
using Plots.PlotMeasures
using Polynomials
#
px = PlotMeasures.px;
```
%% Cell type:code id: tags:
``` julia
# Fonctons auxiliaires
# VOUS POUVEZ METTRE VOS FONCTIONS AUXILIAIRES ICI
```
%% Cell type:markdown id: tags:
## L'exemple d'étude
On s'intéresse (pour les exercices 1, 2 et 3) au problème de Cauchy
$$
\dot{x}(t) = (1-2t) x(t), \quad x(0) = x_0 = 1
$$
sur l'intervalle $[0, 3]$.
%% Cell type:code id: tags:
``` julia
# Définition du problème de Cauchy
f(t, x) = (1-2t)x # Second membre f(t, x)
x0 = 1.0 # Condition initiale
tspan = (0.0, 3.0); # Intervalle de temps
```
%% Cell type:code id: tags:
``` julia
# Solution analytique
function sol(t)
return exp(t-t^2)
end;
```
%% Cell type:code id: tags:
``` julia
# Estimation de la constante de Lipschitz de f sur [0, 3]
# Voir Théorème 8.2.2 pour l'utilité de cette estimation
function dfx(t)
return 1-2t
end
L = maximum(abs.(dfx.(range(0, stop=3, length=1000))))
```
%% Cell type:markdown id: tags:
## La méthode d'Euler implicite
La méthode d'Euler implicite est donnée par :
$$
\left\{
\begin{array}{l}
x_{n+1} = x_n + h f(t_n, x_{n+1}) \\
x_0 = x(t_0)
\end{array}
\right.
$$
### Exercice 1
1. Implémenter la méthode d'Euler implicite avec le point fixe (penser à voir le polycopié Section 8.2).
2. Pourquoi si $h \ge 0.2$, la méthode d'Euler implicite ne marche pas ?
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.
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)$.
**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 id: tags:
``` julia
# AJOUTER VOTRE CODE ICI
```
%% Cell type:markdown id: tags:
## La méthode des trapèzes
La méthode des trapèzes est donnée par le tableau de Butcher :
$$
\begin{array}{c | c c}
0 & 0 & 0 \\[0.2em]
1 & 1/2 & 1/2 \\[0.2em]
\hline
& 1/2 & 1/2 \\
\end{array}
$$
### Exercice 2
1. Implémenter la méthode des trapèzes avec le point fixe.
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.
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 ?
4. Tracer l'erreur globale en fonction du nombre d'évaluation de la fonction $f$.
%% Cell type:code id: tags:
``` julia
# AJOUTER VOTRE CODE ICI
```
%% Cell type:markdown id: tags:
## La méthode de Gauss à 2 étages
La méthode de Gauss à 2 étages est donnée par le tableau de Butcher :
$$
\begin{array}{c | c c}
1/2 - \sqrt{3}/6 & 1/4 & 1/4 - \sqrt{3}/6 \\[0.2em]
1/2 + \sqrt{3}/6 & 1/4 + \sqrt{3}/6 & 1/4 \\[0.2em]
\hline
& 1/2 & 1/2 \\
\end{array}
$$
### Exercice 3
1. Implémenter la méthode de Gauss à 2 étages avec le point fixe.
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.
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 ?
4. Tracer l'erreur globale en fonction du nombre d'évaluation de la fonction $f$.
%% Cell type:code id: tags:
``` julia
# AJOUTER VOTRE CODE ICI
```
%% Cell type:markdown id: tags:
## Un autre exemple
On considère à partir de maintenant l'équation différentielle en dimension 2 :
$$
\dot{x}_1(t) = x_2(t), \quad \dot{x}_2(t) = - x_1(t).
$$
On peut montrer facilement que la norme de $x(t) = (x_1(t), x_2(t))$ est constante le long des solutions :
$$
\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.
$$
### Exercice 4
On considère le problème de Cauchy associé de condition initiale $x_0 = (1, 0)$.
1. Afficher l'approximation de la solution sur $[0, 10]$ pour les méthodes :
- Euler explicite ;
- Euler implicite ;
- Trapèzes ;
- Gauss à 2 étages.
2. Commentaires.
**Attention :** vous ferez un affichage dans le plan $(x_1, x_2)$. Vous fixerez le nombre de pas à $N=100$.
%% Cell type:code id: tags:
``` julia
# AJOUTER VOTRE CODE ICI
```
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment