TP5. Equations différentielles, initiation aux schémas numériques

Transcription

TP5. Equations différentielles, initiation aux schémas numériques
L2-maths
Cours Informatique appliquée aux mathématiques
TP5. Equations différentielles, initiation aux schémas
numériques
Créer un dossier TP5 dans lequel vous rangez ce document et créez-y un fichier monTP5.m
dans lequel vous tapez vos commandes avant de les faire exécuter dans la fenêtre de commande.
Nous nous proposons de résoudre le problème de Cauchy pour l’équation différentielle
u̇ = f (u),
(1)
c’est-à-dire trouver une fonction u(t) qui vérifie (1) sur un intervalle (0, T ), avec une condition initiale u(0) = u0 , et ce par plusieurs moyens.
Programmation 1 (Schéma d’Euler Explicite).
On se donne des points t0 = 0 < t1 < . . . < tN = T , espacés de h, et on définit une suite
par
un+1 − un
= f (un )
h
1. Ecrire une fonction
function [t,u]=Euler(f,T0,Tfinal,u0,N);
% EULER solves the differential equation du/dt=f(u) with forward Euler
%
function [t,u]=Euler(f,T0,Tfinal,u0,N) solves the system of
%
first order ordinary differential equations du/dt=f(u) using
%
the forward Euler method. f is a string containing the function
%
name of the right hand side, the simulation runs from starting time
%
T0 to the final time Tfinal, starting with the initial value u0
%
doing N steps.
.
2. L’appliquer à f (u) = u sur l’intervalle [0, 1] pour N = 10 avec u0 = 1.
3. Tracer sur le même graphique la solution exacte U et la solution du schéma u, définie sur
les points de grille. Calculer l’erreur maximale e = max|U (ti ) − ui |.
4. Reproduire les calculs pour N = 10, 20, 40. Calculer les erreurs e1 , e2 , e3 . Représenter ces
quantité sur un graphique en échelle log-log. Que remarquez vous ? Pourquoi ?
Programmation 2 (Schéma de Runge).
1. On introduit le script
function [t,u]=Runge(f,T0,Tfinal,u0,n);
% RUNGE solves the differential equation du/dt=f(t,u) using Runge’s method
%
function [t,u]=Runge(f,T0,Tfinal,u0,n) solves the system of
%
first order ordinary differential equations du/dt=f(t,u) using
%
Runge’s 2nd order method. f is a string containing the function
%
name of the right hand side, the simulation runs from starting time
%
T0 to the final time Tfinal, starting with the initial value u0
%
doing n steps of integration.
dt=(Tfinal-T0)/n;
u(:,1)=u0;
t=T0;
for i=1:n,
Y1=u(:,i);
Y2=u(:,i)+dt/2*feval(f,t,Y1);
u(:,i+1)=u(:,i)+dt*feval(f,t+dt/2,Y2);
t=t+dt;
end;
t=(T0:dt:Tfinal)’;
u=u’;
A quelle discrétisation de l’équation différentielle correspond-il ?
2. L’appliquer à f (u) = −u sur l’intervalle [0, 1] pour N = 10 en écrivant un script
function r=f(t,u)
.
3. Tracer sur le même graphique la solution exacte U et la solution du schéma ur, définie
sur les points de grille. Calculer l’erreur maximale e = max|U (ti ) − uri |.
4. Reproduire les calculs pour N = 10, 20, 40. Calculer les erreurs er1 , er2 , er3 . Représenter
ces quantités sur un graphique en échelle log-log en même temps que les erreurs sur le
schéma d’Euler. Que remarquez vous ? Qu’est-ce que cela signifie ?
Vous devez obtenir quelque chose comme ça :
−1
10
Euler explicite
Runge
pente 1
pente 2
−2
10
−3
10
−4
10
−5
10
1
10
Exercice 1 (Résolution exacte).
On cherche maintenant à résoudre le Problème de Cauchy
u̇ = u(1 − u).
(2)
1. Montrer que la solution générale de l’équation (2) s’écrit, dans certaines conditions, sous
la forme
Cet
u=
1 + Cet
Calculer la constante C pour que u(0) = 12 .
2. Calculer des solutions approchées par les schémas de Euler et Runge.
Programmation 3 (Schéma d’Euler implicite).
1. On considère maintenant l’équation linéaire f (u) = 20u, sur l’intervalle de temps [0, 1],
avec 10 points. Tracer sur le même schéma la solution approchée calculée avec le schéma de
Euler implicite, et la solution exacte. Que constatez vous ? C’est un problème de stabilité.
2. On introduit le schéma de Euler implicite
un+1 − un
= f (un+1 )
h
Ecrire le script matlab permettant de réaliser ce schéma pour f (u) = 20u. Tracer la
solution sur le même graphique que précédemment (utiliser la fonction hold on). Que
constatez vous ?
3. Comment proposez-vous d’utiliser ce schéma pour une fonction f non linéaire du type de
celle rencontrée dans l’exercice précédent.