[PDF] [PDF] Utilisation de fonctions avancées (corrigé) 1 - ENSTA Paris

Il s'agit d'utiliser les intégrateurs temporels de MATLAB afin de tion trouvée par la fonction ode23 montre que la fonction ode45 permet d'obtenir un meilleur 



Previous PDF Next PDF





[PDF] Résolution déquations différentielles avec Matlab

1 1 Définition et généralités Une équation différentielle ordinaire (ODE, ordinary differential equation) est une équation reliant une fonction d'une variable réelle 



[PDF] Résolution déquations différentielles avec MATLAB - Solveurs ode

8 fév 2009 · Introduction Fonctions ode23 et ode45 Les principales fonctions de MATLAB qui permettent la résolution des équations différentielles sont : 



[PDF] Résolution déquations différentielles sous Matlab

Introduisons la fonction inconnue Y : x e I ã-ä åy1 (x) y2(x)æe W2 ode™š utilise une mét h ode de R unge- K utta e x plicite à un pas 2 C'est le solveur à 



[PDF] Utilisation de fonctions avancées (corrigé) 1 - ENSTA Paris

Il s'agit d'utiliser les intégrateurs temporels de MATLAB afin de tion trouvée par la fonction ode23 montre que la fonction ode45 permet d'obtenir un meilleur 



[PDF] PDF 9 - IRAMIS

Une équation différentielle ordinaire (ODE) est une équation qui contient des dérivées Les fonctions Matlab ode23 et ode45 implementent les méthode de 



[PDF] Méthodes numériques de résolution déquations - Institut Fresnel

Dans Matlab (Octave), de puissant programmes (fonctions) existent sous le nom Maintenant on peut utiliser la fonction 'lsode' d'Octave ('ODE45' de MatLab) 



[PDF] TP 5 : Modélisation et Simulation - UPMC

MATLAB utilise cinq méthodes générales pour décrire un système dynamique Pour pouvoir utiliser les fonctions MATLAB ode23 et ode45 présentées dans la 



[PDF] Licence de Mathématiques Fondamentales Equations Di érentielles

1- Ecrire une fonction MatLab sol=cp(z,a,b) qui renvoie la valeur approchée de cz,a,b(1) (utilisez ode45 ou une des méthodes précédentes) 2- Pour a et b fixés,  



[PDF] Matlab - Département dinformatique et de recherche opérationnelle

Fonctions MATLAB utilisées pour l'intégration numérique 'équation différentielle', qui est représentée dans MATLAB par l'abréviation 'ODE' L'ordre de



[PDF] EDO

Résoudre l'EDO (1) sur 0s

[PDF] le message andrée chedid fnac

[PDF] grille évaluation projet

[PDF] comment bien faire l amour ? son mari pdf

[PDF] le roman de renart fiche de lecture

[PDF] évaluer un projet d'animation

[PDF] comment évaluer un projet éducatif

[PDF] le roman de renart bibliocollège pdf

[PDF] formation extraction huiles essentielles

[PDF] cours de sexologie pdf

[PDF] inventaire floristique transect

[PDF] comment mieux faire l'amour ? une femme pdf

[PDF] technique d inventaire botanique

[PDF] memoire inventaire floristique

[PDF] relevé floristique définition

[PDF] inventaire floristique définition

MO102 :Introduction à MatlabFeuille d"exercices - CorrigéUtilisation de fonctions avancées (corrigé)

L"objectif de cette feuille d"exercice est de familiariser les élèves avec le maniement de deux types de fonctions très utiles dans beaucoup de domaines de la physique et des ma- thématiques appliquées. Il s"agit d"utiliser les intégrateurs temporels de MATLAB afin de pouvoir simuler des comportements dynamiques, puis de se familiariser avec les fonctions d"optimisation de MATLAB.

1 Intégration d"équations différentielles ordinaires

1.1 Le pendule non-amorti

On commence par étudier la dynamique linéarisée du pendule : +!20sin!= 0, avec!0= 1. L"utilisation

de la fonctionode23nécessite de créer deux programmes, le premier permettant de rentrer les paramètres

importants (typiquement : temps d"intégration, options, etc.), et le second contient explicitement la dynamique,

soit par exemple :

Première fonction :pendulin.m:

function [T,X] = pendulin(X0,Tf);

TSPAN = [0 Tf];

[T,X] = ode23(@pendulinODE,TSPAN,X0); Seconde fonction, appelée par le premier programme :pendulinODE.m: function xdot = pendulinODE(T,x); xdot = [0 1; -1 0] *x;

L"appel du premier programme permet de régler la condition initiale :X0, ainsi que le temps d"intégration

Tf. On forme le vecteurTSPAN = [0 Tf], indiquant que l"on intègrera l"équation du temps 0 au temps

Tf. Une autre solution possible pour définir l"échelle de temps est de donner un vecteur complet des instants

de calcul, soit du type :TSPAN = [T0 T1 ... Tf](pour des instants choisis à l"avance), soit du type :

TSPAN = [T0 :dT :Tf], avec un instant initial, un pas de temps fixé et un instant final. Cependant, les

algorithmes préprogrammés de MATLAB sont optimisés pour une utilisation avec un pas de temps non fixé. Le

programmeode23se charge lui-même, à chaque itération, de calculer le pas de temps optimal, garantissant

certaines tolérances définies par l"utilisateur. Le calcul de la solution temporelle, avec les conditions initiales0=:1et_0= 0, et pour un temps d"intégrationTf=1000, s"obtient par : [T,X] = pendulin([.1 0],1000);

Le vecteurXcontient le déplacement et la vitesse. On peut représenter par exemple le déplacement en

fonction du temps : plot(T,X( :,1),"-b") set(gca,"FontSize",18) 1 xlabel("Temps(s)") ylabel("Deplacement (m)") xlim([0 Tf/2]) grid on On obtient alors la figure 1.0 100 200 300 400 500 Temps (s)-0.1-0.08-0.06-0.04-0.0200.020.040.060.080.1

Deplacement (rad)FIGURE1 - Solution numérique (déplacement) de l"équation du pendule linéaire avec l"intégrateur temporel

ode23- Echelle logarithmique selon y.

0 200 400 600 800 1000

Temps (s)10-1010

-810 -610 -410 -210 0

Erreur absolueFIGURE2 - Erreur absolue entre la solution analytique de l"équation du pendule linéaire et la solution numé-

rique avec l"intégrateur temporelode23- Echelle logarithmique selon y.

On constate immédiatement un problème! Alors que la dynamique initiale est conservative, la solution

numérique montre une décroissance de l"énergie. On peut la comparer avec la solution analytique connue sur

la même figure, ou bien représenter l"erreur commise par l"intégrateur numérique. Par exemple :

» figure

» semilogy(T, abs(.1

*cos(T)-X( :,1)))

La figure 2 présente cette erreur.

2

0 100 200 300 400 500

Temps (s)-0.15-0.1-0.0500.050.1

Deplacement (rad)

ode23 ode23etode45- Echelle logarithmique selon y.

Afin de remédier à cette erreur, une première solution consiste à changer l"intégrateur numérique. L"algo-

rithme programmé dans la fonctionode23reprend la méthode de Runge-Kutta du second ordre. La même

méthode existe avec un développement au quatrième ordre, il s"agit deode45. La comparaison avec la solu-

tion trouvée par la fonctionode23montre que la fonctionode45permet d"obtenir un meilleur comportement

(voir figure 3). Cependant, aux temps longs, les erreurs existent toujours (voir figure 4, courbe rouge). Il faut

alors changer les tolérances d"erreur de l"intégrateurode45. Deux tolérances sont réglables : une tolérance

relative (RelTol, valeur par défaut : 10-3), qui contrôle la précision de la solution calculée à chaque pas, et une

tolérance absolue (AbsTol, valeur par défaut : 10-6), qui contrôle le comportement de la solution aux petites

valeurs, lorsque l"on est proche de zéro. Afin d"augmenter la précision de la solution numérique, il faut changer

ces valeurs, ce qui se fait dans la première fonction :pendulin.m: function [T,X] = pendulin(X0,Tf);

TSPAN = [0 Tf];

options = odeset("RelTol",1e-7,"AbsTol",1e-8); [T,X] = ode45(@pendulinODE,TSPAN,X0,options); La figure 4 montre l"évolution des erreurs pour les trois méthodes utilisées.

Pour intégrer le problème complet non linéaire, il faut modifier les deux programmes de départ. Attention,

on ne peut plus écrire la dynamique sous forme matricielle, il faut donc séparer chaque composante, ce qui

donne, par exemple : function [T,X] = pendule(X0,Tf);

TSPAN = [0 Tf];

options = odeset("RelTol",1e-7,"AbsTol",1e-8); [T,X] = ode45(@penduleODE,TSPAN,X0,options); function xp = penduleODE(t,x); 3

0 200 400 600 800 1000

Temps (s)10-1010

-810 -610 -410 -210 0

Erreur absolue

ode23 ode45

ode45 Tolerance diminueeFIGURE4 - Erreur absolue entre la solution analytique de l"équation du pendule linéaire et la solution numé-

- Echelle logarithmique selon y. xp(1)=x(2); xp(2)=-sin(x(1)); xp=xp( :);

Avec une condition initiale éloignée de X(0)=0, on peut observer la déformation de la solution temporelle

due à la non linéarité (voir figure 5 pourX(0) =2

1.2 Equation de Van der Pol

Par rapport au cas précédent, on souhaite pouvoir, dans le cas de l"équation de Van der Pol, passer le

paramètreà la dynamique à intégrer. Les paramètres à passer dans les intégrateurs typeode45se mettent

après les options. Ce qui donne, par exemple, pour intégrer l"équation de Van der Pol : function [T,X] = vdp(X0,Tf,mu);

TSPAN = [0 Tf];

options = odeset("RelTol",1e-4,"AbsTol",1e-6); [T,X] = ode45(@vdpODE,TSPAN,X0,options,mu); function xdot = vdpODE(t,x,mu); xdot(1)=x(2); xdot(2)=-x(1)+mu *(1-x(1)^2)*x(2); xdot=xdot( :); Pour calculer trois trajectoires correspondant aux cas := 1,= 3et= 6, il suffit alors de rentrer en ligne de commande : 4

0 10 20 30 40 50

Temps (s)-2-1.5-1-0.500.511.52

Deplacement (rad)

Non lineaire

lineaireFIGURE5 - Déplacement pour l"équation du pendule linéaire et non linéaire, avec l"intégrateur temporel

ode45.

» [T1,X1]=vdp([.2 0],200,1);

» [T3,X3]=vdp([.2 0],200,3)

» [T6,X6]=vdp([.2 0],200,6)

Cela donne la figure 6, représentant les déplacementsX1,X3etX6(voir figure 6 (a)), et les orbites dans

l"espace des phases (voir figure 6 (b)).

0 10 20 30 40 50

Temps (s)-2.5-2-1.5-1-0.500.511.522.5

Deplacement

μ = 1

μ = 3

μ = 6

(a) (b)

FIGURE6 - Déplacement (a) et solution dans l"espace des phases (b) pour= 1;3;6pour les intégrateurs

temporelsode45etode15s.

On remarque qu"en augmentant, la période des oscillations augmente et le cycle limite se déforme de plus

en plus, faisant apparaître une zone de transition très raide où le comportement temporel est quasiment vertical.

A cause de ce comportement particulier, pour lequel en un très court instant on passe à des valeurs extrê-

mement différentes, on dit que le problème est numériquementraide. L"intégrateur va devoir en effet trouver

ces valeurs extrêmes pour un pas de temps qui va devenir infiniment petit.

Si l"on intègre l"équation de Van der Pol, pour= 1000, avecode45, le temps d"exécution est relative-

ment grand. Le solveur n"est en fait pas du tout adapté à la résolution de cette raideur. Il faut donc employer

5

un autre solveur de MATLAB, programmé afin de faire face aux problèmes raides, par exemple :ode15s. Il

permet de résoudre le problème en un temps beaucoup plus court (environ 400 fois plus court) qu"en utilisant

ode45. On trouve alors les solutions présentées sur la figure 7, qui sont exactement les mêmes dans les deux

cas.0 500 1000 1500 2000 2500

Temps (s)-2.5-2-1.5-1-0.500.511.522.5

Deplacement

ode45 ode15s -3 -2 -1 0 1 2 3 x-1500-1000-500050010001500 dx/dt ode45 ode15s(a) (b)

FIGURE7 - Déplacement (a) et solution dans l"espace des phases (b) pour= 1000pour les intégrateurs

temporelsode45etode15s. 6quotesdbs_dbs27.pdfusesText_33