Académique Documents
Professionnel Documents
Culture Documents
L2 S2
UE Calcul Scientifique ; initiation MATLAB (LE205)
TP 5 : Modlisation et Simulation
PREMIERE PARTIE : COURS ET EXEMPLES
Thmes abords :
* Equations diffrentielles,
* Forme de Cauchy,
* Solutions numriques dEdo sous MATLAB
Remarque IMPORTANTE : dans ce TP, lorsquun exemple ou un exercice est donn, vous
tes invit fortement le raliser et en noter le rsultat.
I.
Un nombre important de modles physiques peuvent tre dcrits en utilisant les quations
diffrentielles. MATLAB utilise cinq mthodes gnrales pour dcrire un systme
dynamique. Bien qu'elles permettent toutes de reprsenter la plupart des systmes, certaines
sont parfois plus pertinentes. En effet. l'une des mthodes peut fournir des rsultats
numriques plus prcis ou tre conceptuellement plus simple. Les cinq reprsentations sont
les fonctions de transfert, zros-ples-gain, les fractions partielles, les reprsentations d'tat
et la forme de Cauchy.
Dans ce TP, nous nutiliserons que la dernire de ces formes : la forme de Cauchy. Nous
allons tout dabord lappliquer un problme souvent tudi : le ressort linaire.
Un ressort lastique, de masse ngligeable, de raideur h, de
longueur vide y, a son extrmit suprieure S fixe. A
lextrmit infrieure est fix un corps M assimilable un
point matriel de masse m.
Le rle unique de lamortisseur D, de masse ngligeable,
r
r
li M, est dexercer sur le corps la force f f = cv ,
r
o v dsigne la vitesse de M et h un coefficient de
frottement fluide,positif. Les mouvements de M sont
verticaux.
A lquilibre, labscisse l=x-y de M est nulle. Soit F
lensemble des forces externes, on a alors :
m.l + c.l + h.l = F
Dans ce chapitre, nous traiterons l'quation avec les paramtres suivants
m = 2kg
c = 1.4Ns/m
h = 0.l N/m
1
II.
Forme de Cauchy
La forme de Cauchy est un systme de n quations diffrentielles du premier ordre qui est de
la forme :
w(1) (t ) =
M
w (t ) =
( n)
f (1) (t , w)
f ( n ) (t , w)
w(t) = f (t, w )
La fonction f (t, w ) est gnralement contenue dans une unit diffrente, telle qu'un
M-file ou une routine fortran. Pour pouvoir utiliser les fonctions MATLAB ode23 et ode45
prsentes dans la prochaine section, on doit dcrire le modle sous cette forme.
III.
Ecrivons lquation de ressort soumis une force F, F=a sin (t) avec a = 2N,
sous le forme de Cauchy. Prenons pour les valeurs dtat w1 = l et w2=l. Lquation
scrit alors comme suit :
w1 = -c/m w1 h/m w2 + a/m sin(t)
w2 = w1
Ce systme possde une unique solution pour chacun des jeux de conditions initiales.
Commenons la simulation pour une valeur to = 0, pour les conditions initiales suivantes :
w1(0) = 0
w2(0) = 0
Nous allons utiliser la routine ode23 pour rsoudre le systme diffrentiel ainsi obtenu.
En crivant :
>> help ode23
vous remarquez la prsence dans la liste d'un paramtre nomm options, suivi par un nombre
de paramtres Pl, P2, etc. Nous ne nous attarderons pas sur ces paramtres optionnels.
MATLAB leur attribuera une valeur raisonnable. Pour calculer la dynamique du ressort, nous
devons d'abord crire une fonction qui dcrive le systme, comme le fichier springb.m cidessous.
Dans le jargon MATLAB, une telle fonction est appele fichier ode (odefile) (ode est
l'acronyme anglais d'quation diffrentielle ordinaire). Un fichier ode est une fonction qui,
sous sa forme la plus simple, prend un scalaire en entre (gnralement le temps, t dans
l'exemple suivant), un vecteur colonne des tats (w dans l'exemple suivant) et retourne un
vecteur (wd dans l'exemple suivant) qui reprsente la drive de w au temps t.
Voici le code source de la fonction springb.m :
function wd=springb(t,w);
% cette fonction dfinit la dynamique d'un systme
% masse-ressort-amortissement, sujet une force externe
% sinusodale.
% Il est crit en accord avec la syntaxe requise par les
% fonctions de rsolution des edo
% -- attribution des valeurs aux constantes
%
qui dfinissent le systme
a=2.0;
%N
m = 2.0;
%kg
c = 1.4;
%Ns/m
h = 0.1;
%N/m
om= 1.0;
%rad/s
% --- allocation d'espace pour wd
wd = zeros(size(w));
% --- calcul des drives
wd(l) = -c/m*w(l) -h/m*w(2) + a/m*sin(om*t);
wd(2) =w(l);
Pour observer l'oscillation de la masse, crivez les commandes suivantes (nous vous
conseillons de les crire dans un script, tp5.m ; compltez-le fur et mesure du TP) :
>>
>>
>>
>>
>>
>>
>>
Chacune de ces mthodes est en principe, capable de rsoudre n'importe quel systme
d'quations diffrentielles, mais la performance et la prcision sont diffrentes pour chacune
d'entre elles. Il est souvent difficile de choisir la mthode approprie; pour cela il faut une
bonne connaissance des thories mathmatiques sous-jacentes, sujet qui n'intresse pas
ncessairement un utilisateur occasionnel.
La syntaxe reste identique pour toutes ces fonctions. On peut ainsi soumettre le fichier
springb.m une nouvelle fonction comme ode45, l'aide de la syntaxe suivante (en
utilisant les springb, tspan et w0 dfinis la section prcdente) :
>>
>>
>>
>>
Pour faire cela, trois possibilits s'offrent nous: elles sont prsentes la suite.
Solution 1
La solution 1 est la plus simple, mais pas la plus lgante. Elle consiste crer un
nouveau fichier ode springb1.m o la valeur de c est diffrente de celle dans
springb.m :
function wd=springbl(t,w);
% cette fonction dfinit la dynamique d'un systme
% masse-ressort-amortissement, sujet une force externe
% sinusoidale
a =2.0;
m = 2.0;
c = 2.5; %
h = 0.1;
om= 1.0;
Remarque : cette solution nest pas lgante, car elle nous oblige crer X fichiers diffrents
pour X valeurs diffrentes du paramtre c.
Solution2
Nous pouvons dfinir le paramtre que nous dsirons faire varier comme un paramtre global;
function wd=springg(t,w);
% cette fonction dfinit la dynamique d'un systme
% masse-ressort-amortissement, sujet une force externe
% sinusoidale
a = 2.0;
m = 2.0;
global c %
h = 0.1;
om= 1.0;
dclaration de c en global
Remarque : Nous n'avons plus besoin d'utiliser l'diteur pour chaque test d'une nouvelle
valeur pour un paramtre. On doit cependant dfinir un paramtre global, dans notre cas c.
L'utilisation de variables globales est souvent la cause de bogues par exemple dans le cas
o un autre programme utilise une variable de mme nom c. Nous vous conseillons fortement
d'viter cette pratique sauf pour des programmes courts. Utilisez plutt la solution dcrite ciaprs.
Solution 3
On peut ajouter le ou les paramtre(s) la liste des arguments en entre du fichier ode, juste
aprs le vecteur d'tat initial, soit en troisime position. Cependant mfiez-vous : certaines
anciennes versions de MATLAB (dont la version 5.3 qui est utilise en TP) ncessitent
l'intervention, en troisime position, d'une variable flag (introduite pour des raisons de
compatibilit avec Simulink, mais sans objet dans les versions 6 et suivantes), qui va dcaler
ainsi les autres paramtres en quatrime position.
On va donc transformer la fonction springb.m pour obtenir un nouveau fichier
springp.m (fonction 'spring' avec des paramtres), en modifiant la premire ligne pour y
inclure le paramtre c en entre et en supprimant la ligne o la variable c tait dfinie.
function wd=springp(t,w,flag,c);
% cette fonction dfinit la dynamique d'un systme
% masse-ressort-amortissement, sujet une force externe
% sinusoidale
% pour les versions 6 et + : function wd=springg(t,w,c) ;
a = 2.0;
m = 2.0;
% il ny a plus de dclaration de c , ici ; car elle est
% fate dans les paramtres dentre de la fonction
h = 0.1;
om= 1.0;
% --- allocation d'espace
wd = zeros(size(w));
% --- calcul des drives
wd(l) = -c/m*w(l) -h/m*w(2) + a/m*sin(om*t);
wd(2) = w(l);
1 0.5
1
Exercice 2 : quations linaires variant dans le temps.
Rsolvez le systme d'quations diffrentielles en utilisant la fonction ode23 ou ode45 dans
l'intervalle [to,tf]. A partir des conditions initiales, dterminez et tracez les rsultats.
(1)
w' + (1.2-sin(10t) w = 0
, t0 = 0,
tf = 5,
w(t0) = 1
(2)
, t0 = 0,
tf = 5,
w(t0) = 1
(2)
Exercice 5 : pendule
Le mouvement d'un pendule idal de longueur est gouvern par
l'quation : = gl sin , o est l'angle du pendule par rapport la
verticale. Dterminez en fonction de t, pour l'intervalle de temps [0,
10], et tracez et ' en fonction du temps.
Paramtres: g = 9.81m/s2 et l = 0.5 m.
Conditions initiales: (0) = 1 radian, '(0) = 0 rad/s.
Ne soyez pas surpris si les graphiques de et ' ressemblent des sinusodes. La sinusode est
la solution du modle linaris obtenu en substituant sin dans l'quation. Le modle
linaris est excellent, tant que l'angle et sa drive restent au voisinage de 0. Afin de
vrifier que et ' ne sont pas des sinusodes, recommencez la simulation avec une grande
valeur de '(0).
Quatre chats se situent aux quatre coins d'une pice carre de base unit. Au temps t = 0, ils
commencent se poursuivre une vitesse de valeur unit, de la manire suivante. Le chat n1
court en direction du chat n 2, le chat n 2 court en direction du chat n 3, le chat n3 court
en direction du chat n4 et le chat n 4 court en direction du chat n1 jusqu' ce qu'ils se
rejoignent au centre de la pice.
En utilisant ODE23, calculez et tracez les trajectoires des chats. Si vous aimez les
mathmatiques, vous pourrez dterminer la longueur des trajectoires ana1itiquement,
gnraliser le problme des formes de pices diffrentes (par exemple un polygone rgulier)
ou des dimensions suprieures (chats volants dans une pice ttradrique) et ainsi de suite.
10
Exercice 8 : balistique
Un modle balistique simple suppose que seules deux forces agissent sur le projectile: la
pesanteur et la trane. Pour ce modle, les quations du mouvement sont
mv x
mv y
= Wv y / v mg
Wv x / v
Ici vx et vy sont les composantes de la vitesse et v son module. On obtient la trane W grce
l'quation :
W = cW
v2
d2
Le symbole cW correspond au coefficient de trane. Il reste peu prs constant tant que le vol
se fait une vitesse subsonique: est la densit de l'air et d le diamtre du projectile.
(1) Tracez la trajectoire, en utilisant les paramtres suivants: g = 9.81 m/s2, m = 10kg, cW=
0.2, = 1.225 kg/m et d = 0.050 m. Les conditions initiales sont x(0) = 0m, .y(0)= 0m,
v(0) = 250 m/s et l'lvation de l'arme est gale /6.
(2) Si vous avez utilis ode23 avec la valeur de tol par dfaut, le graphique de la trajectoire
est dplaisant, cause du petit nombre de points rsultants. Reprenez le problme en (1) et
gnrez un graphique plus rgulier en donnant la valeur 5e-4 au paramtre tol, pour
remplacer la tolrance par dfaut 1e-3.
Exercice 9 : circuit RLC
La figure ci-contre reprsente un simple circuit lectrique
constitu d'une source de tension E, d'une rsistance H, d'une
bobine L et d'une capacit C. La source de tension produit un
courant alternatif avec :
E = E0 sin( 2 f t )
Pour des conditions initiales nulles, calculez la charge q de la capacit et le courant i qui
circule dans le circuit; tracez ensuite q et i en fonction du temps, de 0 100 millisecondes.
Utilisez ode23 avec tol = 1.Oe-4. Paramtres: E0 = 5 v, r = 400Hz, R = 20 ohm, C = 100mF ,
L = 50mH.
Indication: avec la seconde loi de Kirchhoff, L
di
q
+ Ri + = E et i=q
dt
C
11
12