TP7 - Université des Sciences et de la Technologie HOUARI

Transcription

TP7 - Université des Sciences et de la Technologie HOUARI
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Résolution d’équations différentielles avec
MATLAB
Solveurs ode
Exercice
Djelouah Hakim
Faculté de Physique
Université des Sciences et de la Technologie Houari Boumediene
Algérie
8 février 2009
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
1
Introduction
2
Méthode
Exemple 1 : Oscillateur harmonique
Reformulation
Fichier function
Programme
3
Cas général
4
Exemple 2 : Equation de van der Pol
5
Exercice
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Introduction
Fonctions ode23 et ode45
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Les principales fonctions de MATLAB qui permettent la résolution
des équations différentielles sont :
Introduction
Fonctions ode23 et ode45
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Les principales fonctions de MATLAB qui permettent la résolution
des équations différentielles sont :
ode23 : Méthode de Runge-Kutta dite d’ordre 2,3
Introduction
Fonctions ode23 et ode45
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Les principales fonctions de MATLAB qui permettent la résolution
des équations différentielles sont :
ode23 : Méthode de Runge-Kutta dite d’ordre 2,3
ode45 : Méthode de Runge-Kutta dite d’ordre 4,5 (la plus
utilisée)
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Définition
Soit l’équation différentielle du second ordre connue sous le nom
de équation de l’oscillateur harmonique :
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
d 2y
+ ω02 y = 0
dt 2
Pour résoudre cette équation à l’aide des solveurs ode, il faut
l’exprimer sous une forme vectorielle, pour cela :
Expression sous forme vectorielle
Résolution
d’équations
différentielles
avec MATLAB
Création de 2 vecteurs de dimension 2 correspondant à l’ordre de
l’équation différentielle :
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
vecteur y : solution
y (1) = y
dy
y (2) =
dt
vecteur dydt
dy
dt
d 2y
dydt(2) = 2 .
dt
dydt(1) =
Expression sous forme vectorielle
Résolution
d’équations
différentielles
avec MATLAB
Création de 2 vecteurs de dimension 2 correspondant à l’ordre de
l’équation différentielle :
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
vecteur y : solution
vecteur dydt
dy
dt
d 2y
dydt(2) = 2 .
dt
Transformation de l’équation différentielle d’ordre 2 en un
système de deux équations différentielles du premier ordre :
y (1) = y
dy
y (2) =
dt
dydt(1) =
Exercice
Equation différentielle
2
d y
+ ω02 y = 0
dt 2
d 2y
= −ω02 y
dt 2
Forme vectorielle

 dydt (1) = y (2)

dydt (2) = −ω02 y (1)
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
On écrit un fichier function correspondant à ces deux lignes
dydt (1) = y (2)
dydt (2) = −ω02 y (1)
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Ecriture du fichier function : oscillateur.m
function dydt=oscillateur(t,y)
omega=1
% ω0 = 1 par exemple
dydt(1)=y(2)
dydt(2)=-omega.^2*y(1)
dydt=dydt’
% on convertit la ligne en colonne.
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
t : vecteur contenant les instants auxquels la solution a été
calculée.
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
t : vecteur contenant les instants auxquels la solution a été
calculée.
y : matrice deux colonnes
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
t : vecteur contenant les instants auxquels la solution a été
calculée.
y : matrice deux colonnes
- la première colonne y( :,1) contient y (t)
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
t : vecteur contenant les instants auxquels la solution a été
calculée.
y : matrice deux colonnes
- la première colonne y( :,1) contient y (t)
- la seconde colonne y( :,2) contient la dérivée
dy /dt
Exemple 1 : Equation de l’oscillateur
harmonique
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Exemple 1 :
Oscillateur
harmonique
Reformulation
Fichier function
Programme
On écrit un fichier .m appelé equadiff dans lequel
1
On définit le domaine d’étude : tinitial = 0, tfinal = 10
deltat=[0 10]
2
On définit les conditions initiales : dy /dt(0) = 0 et
y (0) = 0.25
yinit=[0 0.25]
3
On appelle ode45
[t,y]=ode45(@oscillateur,deltat,yinit)
Cas général
t : vecteur contenant les instants auxquels la solution a été
calculée.
y : matrice deux colonnes
- la première colonne y( :,1) contient y (t)
- la seconde colonne y( :,2) contient la dérivée
dy /dt
Exemple 2 :
Equation de van
der Pol
Exercice
4
On fait la représentation graphique de la solution en fonction
de t :
plot(t,y)
Reformulation du problème
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Reformuler le problème sous la forme d’un système d’équations
différentielles du premier ordre.
Pour utiliser les solveurs ODE, on doit d’abord réécrire les
équations différentielles sous la forme d’un système
équivalent d’équations différentielles du premier ordre.
Reformulation du problème
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Reformuler le problème sous la forme d’un système d’équations
différentielles du premier ordre.
Pour utiliser les solveurs ODE, on doit d’abord réécrire les
équations différentielles sous la forme d’un système
équivalent d’équations différentielles du premier ordre.
On peut écrire une équation différentielle quelconque
d ny
dy d 2 y
d n−1 y
=
f
t,
y
,
,
,
...,
dt n
dt dt 2
dt n−1
sous la forme d’un système d’équation différentielles du
premier ordre en faisant le changement de variable suivant :
y1 = y , y2 =
dy
d 2y
d (n−1) y
, y3 = 2 , ..., yn = (n−1)
dt
dt
dt
Reformulation
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Reformuler le problème sous la forme d’un système d’équations
différentielles du premier ordre.
Le résultat est un système de n équations différentielles du
premier ordre équivalent :
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
dy
= y2
dt
d 2y
= y3
dt 2
...
n
d y
= f (t, y1 , y2 , ..., yn )
dt n
Reformulation
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Reformuler le problème sous la forme d’un système d’équations
différentielles du premier ordre.
Le résultat est un système de n équations différentielles du
premier ordre équivalent :
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
dy
= y2
dt
d 2y
= y3
dt 2
...
n
d y
= f (t, y1 , y2 , ..., yn )
dt n
Remarque : Noter les indices à gauche et à droite du signe =
dky
= yk +1
dt k
Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
1
Equation de van der Pol (Equation différentielle du second
ordre)
dy
d 2y
+y =0
− µ 1 − y2
2
dt
dt
µ étant un paramètre scalaire.
Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
1
Djelouah Hakim
Introduction
Méthode
Cas général
2
Equation de van der Pol (Equation différentielle du second
ordre)
dy
d 2y
+y =0
− µ 1 − y2
2
dt
dt
µ étant un paramètre scalaire.
Il faut créer le vecteur solution yi selon le schéma suivant :
Exemple 2 :
Equation de van
der Pol
y1 = y
dy
y2 =
dt
Exercice
d’où :
d 2y
= µ 1 − y12 y2 − y1
dt 2
Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
1
Djelouah Hakim
Introduction
Méthode
Cas général
2
Equation de van der Pol (Equation différentielle du second
ordre)
dy
d 2y
+y =0
− µ 1 − y2
2
dt
dt
µ étant un paramètre scalaire.
Il faut créer le vecteur solution yi selon le schéma suivant :
Exemple 2 :
Equation de van
der Pol
y1 = y
dy
y2 =
dt
Exercice
d’où :
3
d 2y
= µ 1 − y12 y2 − y1
dt 2
Ensuite faire le changement de variable suivant ;
dydt1 = y2
dydt2 = µ 1 − y12 y2 − y1
Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
L’équation de van der Pol du second ordre
dy
d 2y
− µ 1 − y2
+y =0
dt
dt
est ainsi remplacée par le système d’équations différentielles du
premier ordre :
dydt (1) = y (2)
2
dydt (2) = µ 1 − y (1) y (2) − y (1)
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
dydt=nom_de_fonction(t,y)
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
dydt=nom_de_fonction(t,y)
La sortie de cette fonction dydt est un vecteur colonne qui
représente la dérivée de y.
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
dydt=nom_de_fonction(t,y)
La sortie de cette fonction dydt est un vecteur colonne qui
représente la dérivée de y.
Exemple 2 :
Equation de van
der Pol
Exercice
3
Le code ci-dessous représente l’équation de van der Pol,
pour µ = 1, définie par la fonction vdp1.
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
dydt=nom_de_fonction(t,y)
La sortie de cette fonction dydt est un vecteur colonne qui
représente la dérivée de y.
Exemple 2 :
Equation de van
der Pol
Exercice
3
Le code ci-dessous représente l’équation de van der Pol,
pour µ = 1, définie par la fonction vdp1.
function dydt=vdp1(t,y)
dydt(1)=y(2) ;
dydt(2)=(1-y(1).^2)*y(2)-y(1) ;
%on convertit la ligne en colonne
dydt=dydt’ ;
Fichier function
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Écrire le fichier function qui définit l’équation différentielle.
1
Après avoir obtenu le système d’équations différentielles du
premier ordre, il faut traduire ce système par un fichier
function qui sera appelé par le solveur ODE.
2
Cette fonction doit être obligatoirement sous la forme :
dydt=nom_de_fonction(t,y)
La sortie de cette fonction dydt est un vecteur colonne qui
représente la dérivée de y.
Exemple 2 :
Equation de van
der Pol
Exercice
3
Le code ci-dessous représente l’équation de van der Pol,
pour µ = 1, définie par la fonction vdp1.
function dydt=vdp1(t,y)
dydt(1)=y(2) ;
dydt(2)=(1-y(1).^2)*y(2)-y(1) ;
%on convertit la ligne en colonne
dydt=dydt’ ;
Remarque : vdp1 doit recevoir les arguments t et y bien que t
n’apparaisse pas explicitement dans vdp1.
Exemple 2. Etape 3 :Utiliser un solveur ode45
Résolution
d’équations
différentielles
avec MATLAB
1
Djelouah Hakim
Solveur ode45
Intervalle d’étude : [0 20]
Conditions initiales :
Introduction
Méthode
Cas général
y(1)=2
y(2)=0
Exemple 2 :
Equation de van
der Pol
Exercice
Choisir le solveur à utiliser après avoir défini l’intervalle de
calcul et les conditions initiales :
2
3
Lancer la résolution à l’aide de la commande :
[t,y]=ode45(@vdp1,[0 20], [2 ;0]) ;
Le résultat du calcul est contenu
dans le vecteur temps t
dans la matrice y deux colonnes
y( :,1) contient y1 (⇐⇒ y)
y( :,2) contient y2 (⇔ dy /dt).
Chaque ligne i correspond à la solution y(i), dy /dt (i) à l’instant
t(i).
Exemple 2 . Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Représenter la solution obtenue à l’aide de
plot(t,y( :,1),’-’,t,y( :,2),’- -’)
Exemple 2 . Equation de van der Pol
Résolution
d’équations
différentielles
avec MATLAB
Djelouah Hakim
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Représenter la solution obtenue à l’aide de
plot(t,y( :,1),’-’,t,y( :,2),’- -’)
title(’Solution de l”équation de van der Pol, \mu = 1’) ;
Exercice : Oscillateur harmonique amorti
Résolution
d’équations
différentielles
avec MATLAB
Résoudre l’équation différentielle suivante :
Djelouah Hakim
d 2y
dy
+ ω02 y = 0
+ 2δ
dt 2
dt
Introduction
Méthode
Cas général
Exemple 2 :
Equation de van
der Pol
Exercice
Pour :
ω0 = 1; δ = 0.1;
ω0 = 1; δ = 1;
ω0 = 1; δ = 2;
et en considérant les conditions initiales suivantes :
y (0) = 1
dy /dt (0) = 0
Faire un tracé graphique de tous les cas.