seule fonction qui rassemble les pr´ec´edentes.
Question 1 : Coder une seule fonction force globale selon le prototype suivant :
function F = force_globale(t,r,u)
% t est un scalaire, r est un vecteur colonne 2D (la position)
% et u est un angle dans [0, pi].
% F est un vecteur colonne 2D qui contient
% la somme du ‘‘poids’’ et de la ‘‘poussee’’.
Dans les fonctions de base, on a appris `a utiliser des variables globales, afin d’´eviter de les passer
en param`etres, mais les variables globales ont tendance `a ralentir l’ex´ecution d’un programme. Dans
votre fonction force globale, vous avez certainement encore fait appel aux variables globales du
probl`eme.
Question 2 : Coder une deuxi`eme fonction force selon le prototype suivant :
function F = force(t,r,u)
% t est un scalaire, r est un vecteur colonne 2D (la position)
% et u est un angle dans [0, pi].
% F est un vecteur colonne 2D qui contient
% la somme du ‘‘poids’’ et de la ‘‘poussee’’.
mais sans utiliser de variables globales (i.e. mettre toutes les constantes du probl`eme (masse-
Booster, debitEtage1, etc avec leur valeur explicite)).
Question 3 : Comment savoir quelle fonction est la plus efficace ? Quel test mettriez-vous en
place pour tester la rapidit´e des deux fonctions ? Quelle fonction vous semble alors la plus rapide
entre force globale et force ?
On veut ensuite coder la fonction fqui repr´esente l’´equation diff´erentielle de la dynamique
y0=f(t, y),
o`u yest un vecteur colonne 4D (2 dimensions pour rla position et deux dimensions pour vla
vitesse). Elle s’´ecrit sous la forme
f:R×R4→R4
(t, y) = (t, y1, y2, y3, y4)7→ (y3, y4,force(t,[y(1);y(2)])/masse(t)).
La fonction dynamic suivante :
function y = dynamic(t, x, u )
% t est un scalaire, x est un vecteur colonne 4D (position et vitesse)
% et u est un angle entre 0 et pi.
m=masse(t);
F=force(t, x(1:2,1), u);
y=[x(3:4,1);F/m];
qui code la fonction fen MATLAB n’est pas optimis´ee car elle fait appel `a masse et force et donc
encore une fois, il y a doublement des tests pour le choix des phases 1, 2 ou 3.
Question 4 : ´
Ecrivez une version optimis´ee de dynamic en gardant le mˆeme prototype.
function y = dynamic(t, x, u )
% t est un scalaire, x est un vecteur colonne 4D (position et vitesse)
% et u est un angle entre 0 et pi.
2