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.