Académique Documents
Professionnel Documents
Culture Documents
Anas FATTOUH
Anne Universitaire 2004-2005
T.P. Identification, Commande
et Stabilit des Systmes
Matrise EEA
TP 1 : Description dun systme par quation dtat et dobservation (4H)
1. Introduction
Un systme linaire est dfini par un ensemble de n quations tablissant des relations
linaires entre les variables dtat regroupes au sein du vecteur dtat et lensemble des
variables dentres reprsentes par le vecteur de la forme suivante :
n x
u
( ) ( ) ( ) x t Ax t Bu t = + (1)
Des grandeurs de sortie, choisies en fonction des besoins dinformation sur lvolution du
systme, figurent dans le vecteur dobservation qui sexprime en fonction de ltat et de
lentre u par lquation dobservation suivante :
y x
( ) ( ) ( ) y t Cx t Du t = + (2)
, , , A B C D sont des matrices de coefficients constants. est un vecteur colonne contenant
les n variables reprsentant ltat du systme. Dans les systmes mono variables, et sont
des scalaires reprsentant respectivement la variable dentre et la variable de sortie. Les
matrices
x
u y
( ) A n n , ( ) 1 B n , et (1 C n ) ( ) 1 1 D dtermine les relations entre ltat du
systme et les variables dentres et de sorties.
2. Etude dun systme mono variable : la bille en suspension magntique
Soit le systme suivant :
Figure 1 : La bille en suspension magntique.
Le module de la force magntique applique sur la bille est donne par :
2
F Ki h = . Les
quations diffrentielles rgissant le systme sont donnes par :
1
( )
( )
2 2
2
quation mcanique
quation lectrique
d h Ki
m mg
dt h
di
V L Ri
dt
=
= +
(3)
Travail demand :
- Retrouver les deux quations en (3).
- Linariser ces quations autour du point de fonctionnement . Pour cela,
calculer tout dabord le courant nominal pour ce point de fonctionnement
0
0.01 h = m
0
i
( ) 0 dh dt =
- On considre maintenant ltude des variations ( ) i t et ( ) h t autour du point de
fonctionnement. Nous avons alors :
( ) ( )
( ) ( )
0
0
i t i t i
h t h t h
=
=
(4)
Ce qui donne :
( ) ( )
( ) ( )
0
0
i t i t i
h t h t h
= +
= +
(5)
Remplacer (5) dans (3) et liminer les termes dont la grandeur est ngligeable par
rapport dautre.
- A partir des quations linarises, retrouver les quations dtat et dobservation du
systme de la forme (1) et (2) en considrant les variables suivants :
( )
( )
( )
( )
( ) ( ) ( ) ( ) , ,
h t
x t h t u t V t y t h
i t
= = =
t (6)
- Calcul les ples du systme. Les ples correspondent aux valeurs propres de la
matriceA. Utilisez la fonction eig de Matlab. Conclure.
- En utilisant les fonctions lsim et plot de Matlab, calculer et visualiser lvolution de la
hauteur de la bille en fonction du temps (On prendra comme condition initiale
). Conclure. 0.005, 0, 0 h h = = =
i
- La simulation est elle en concordance avec les rsultats thoriques tablis ltape
prcdente?
2
3. Concevoir un retour dtat : placement des ples
Construisons maintenant un retour dtat pour ce systme. Le schma gnral dun tel
systme est le suivant :
Figure 2 : Systme retour dtat complet.
Travail demand :
- Montrer que le systme entre ( ) r t et ( ) y t a la forme suivante :
( ) ( ) ( ) ( )
( ) ( ) ( ) ( )
x t A BK x t Br t
y t C DK x t Dr t
= +
= +
(7)
- Utiliser la fonction place de Matlab pour calculer la matrice de retour dtat K afin
dobtenir les trois ples suivants :
1,2 3
10 10 , 50 p j p = =
Afficher de nouveau la rponse du systme des conditions initiales non nulles.
Conclusion ? Quelles caractristiques prsentent la rponse observe ? Quelle est
maintenant le comportement physique de la bille ? Calculez le dpassement et le temps
de monte ?
- Rpter la question prcdente pour les ples suivants pour le systme (7) :
1,2 3
20 20 , 100 p j p = =
- Comparer la matrice K et les rponses dans le deux cas. Conclure.
- Calculer et visualiser la rponse du systme un chelon de tension de
(utiliser les fonctions ones et size de Matlab pour construire le vecteur dentre). Que
remarquez vous concernant la position de la bille quand ? Donnez une
explication.
0.001 r V =
t
- Modifier le gain statique de systme de telle sorte que . Donner les
quations finales du systme. Calculer et visualiser la rponse du nouveau systme.
Conclure.
( ) lim
t
y t r
=
3
4. Etude similaire pour une balle roulant sur un plant inclin
Soit une balle place sur un plan inclin et pouvant rouler avec seulement un degr de
libert. Un bras de levier est attach lune de ses extrmits lextrmit du plan inclin et
un servomoteur son autre extrmit. Quand le servomoteur tourne dun angle , le levier
change langle du plan inclin. Quand langle change et donne une position incline au
plan, la gravit fait rouler la balle le long du plan. On se propose de concevoir un contrleur
permettant de manipuler la position de la balle.
: 0.015m,
: 0.03m,
-6 2
9.99 10 kgm ,
Figure 3 : La balle roulant sur un plan inclin.
Les quations de Lagrange sur le dplacement de la balle donnent lquation suivante :
( )
2
2
sin 0
J
m r mg mr
R
+ + =
(8)
En linarisant autour de 0 = , nous obtenons lapproximation linaire suivante du systme :
( )
2
sin
J
m r mg
R
+ =
(9)
Lquation qui relie langle du plan celui du servomoteur peut tre approxime comme
linaire par lquation suivante :
d
L
= (10)
En substituant ceci dans lquation de Lagrange linarise, on obtient :
2
J
m r mg
d
R L
+ =
(11)
4
Travail demand :
- Mettre le systme linaris sous la forme dquation dtat et dobservation. Pour cela,
on prendra la position r et la vitesse de la balle comme variables dtat et langle r
du servomoteur comme variable dentre unique.
- Oublions pour notre tude le systme du bras de levier et du servomoteur. Supposons
que nous contrlons uniquement lacclration angulaire du plan inclin par un
vrin pilot par un moteur et prenant appuie au centre du plan. Dans ce contexte, le
vecteur dtat est donc le suivant :
[ ]
T
x r r = . Retrouver dans ce cas les
quations dtat et dobservation suivante :
( )
[ ]
2 2
0 1 0 0
0
0 0 0 0
0
0 0 0 1
1
0 0 0 0
1 0 0 0
mgR J mR
x x u
y x
+
= +
=
(12)
- Calculer la rponse du systme en boucle ouverte un chelon dentre de 0.25m.
Utiliser la fonction step de Matlab qui trace la rponse temporelle dun systme
linaire soumis un chelon. Conclure sur lvolution de la balle.
- On dsire construire un contrleur permettant un dpassement infrieur 5% et un
temps de rponse infrieur 3s. Calculer la matrice K du contrleur afin de placer les
quatre ples aux valeurs suivantes :
1,2 3 4
2 2 , 20, 80 p j p p = = =
- Avec ce contrleur, calculer puis visualiser la rponse un chelon de 0.25m en
utilisant la commande lsim de Matlab.
- Modifier le gain statique du systmepour annuler lerreur statique observe. Mesurer
le temps de rponse et le dpassement du nouveau systme. Sont-ils conformes au
cahier des charges ?
[y,ty]=lsim(A,B,C,D,u,t,X0); calcule la rponse dun systme dfinit par (1)-(2) une entre dfinie par u o
t est le vecteur temps et X0 les conditions initiales.
5
TP 2 : Simulation de trajectoires de phase dun systme de deuxime ordre (4H)
1. Introduction
Dans ce TP nous allons tracer laide du logiciel Matlab diffrentes trajectoires de phases
dun systme du deuxime ordre pour diffrentes conditions initiales. Le TP se droule en
deux parties, la premire tudiera le systme linaire puis dans la seconde partie nous
introduirons un lment non linaire au systme linaire.
2. Cas du systme linaire
Soit le systme deuxime ordre suivant :
Figure 1 : Systme linaire du deuxime ordre.
Travail demand :
- Dcomposez le systme en Figure 1 pour faire apparatre des intgrateurs purs.
- Soit le vecteur dtat dont ses composantes sont les sorties des intgrateurs. Dfinissez
les quations dtat et dobservation de ce systme. Donnez les matricesA, B , et
en mettant les quations sous la forme :
C
D
( ) ( ) ( )
( ) ( ) ( )
x t Ax t Bu t
y t Cx t Du t
= +
= +
(1)
- Quels sont les points singuliers du systme ?
- Dterminez le J acobien en ces points puis laide de Matlab dduisez-en la stabilit.
(On rappel que la stabilit du systme en un point singulier donn peut tre dtermine
partir des valeurs propres du J acobien).
- Dterminez le type des isoclines et donnez lquation gnrale de ces courbes en
fonction du paramtre . m
- Les trajectoires de phases sont paramtres par le temps. Pour tracer les trajectoires il
faut donc avoir les valeurs du vecteur dtat pour chaque instant et ce partir des
conditions initiales. A laide de la fonction lsim de Matlab, calculez les valeurs du
vecteur dtat sur une dure de 10 secondes pour les conditions initiales ci-dessous
puis tracez les trajectoires de phases :
[ ] [ ] [ ] [ ] [ ]
1 2 3 4 5
0 1, 0 2 , 0 3 , 0 4 , 0 5 M M M M M = = = = =
- Ajoutez sur ce mme graphique lisocline correspondant 0 m= .
1
- Que remarquez-vous au niveau des points dintersections des courbes avec cette
isocline ?
- Tracez les courbes de la variable de sortie du systme en fonction du temps. Que
remarquez-vous ?
- Quen dduisez-vous sur le plan de phase ?
[y,ty]=lsim(A,B,C,D,u,t,X0); calcule la rponse dun systme dfinit par (1) une entre dfinie par u o t
est le vecteur temps et X0 les conditions initiales.
3. Cas du systme non linaire
Maintenant nous introduisons une non linarit de type produit dans la boucle de
retour. Le schma bloc devient :
Figure 2 : Systme du deuxime ordre avec non linarit.
Travail demand :
- Dcomposez le systme en Figure 2 pour faire apparatre des intgrateurs purs.
- Donnez le systme dquations dont les variables sont les sorties des intgrateurs purs.
- Quels sont les points singuliers du systme ?
- Dterminez le J acobien en ces points puis laide de Matlab dduisez-en la stabilit.
- Dterminez le type des isoclines et donnez lquation gnrale de ces courbes en
fonction du paramtre . m
- La fonction lsim de Matlab ne sapplique quaux systmes linaires. Pour avoir les
valeurs des variables il faut contourner le problme en utilisant la fonction ode23. A
laide de cette fonction, tracez les trajectoires de phases sur une dure de 10 secondes
pour les conditions initiales suivantes :
[ ] [ ] [ ] [ ] [ ]
1 2 3 4 5
2 3 , 2 2.5 , 1.8 1.5 , 0.6 1, 0.5 1 M M M M M = = = = =
- Indiquez le comportement (convergent ou divergent) du systme pour ces diffrentes
conditions initiales.
- Ajoutez sur ce mme graphique lisocline correspondant 0 m= .
- Que remarquez-vous au niveau des points dintersections des courbes avec cette
isocline ?
- Concluez sur lintrt de cette simulation.
[T,x]=ode23(fichier,t,X0); rsout les quations diffrentielles dfinies dans le fichier fichier.m sur le
temps t et pour les conditions initiales dfinies par X0.
Le fichier.m a la forme suivante :
function dxdt=fichier(t,x)
dxdt=[dx1/dt dx2/dt dxn/dt] ;
2
TP 3 : Application de la mthode des moindres carrs lestimation des
paramtres dun modle (4H)
1. Introduction
Dans ce TP nous allons appliquer la mthode des moindres carrs pour identifier les
paramtres dun systme. Le compte rendu devra comporter les diffrents paramtres
demands ainsi que les listings des programmes.
Considrons le modle gnral suivant identifier :
( )
( )
( )
( )
1
1
d
q B q
y t u t
A q
= (1)
o est lentre, u y est la sortie, est le retard du modle, d
1
q
= et
( )
( )
1 1
1
1 1
1
1
1
A
A
B
B
n
n
n
n
A q a q a q
B q b q b q
= + + +
= + + +
(2)
Le systme (1) peut tre rcrit sous la forme suivante :
( ) ( ) (
( )
1 1
1 1
A B
n n
i i
i i
T
y t a y t i bu t d i
t
= =
+ = + + +
=
) 1
(3)
o est le vecteur de paramtres identifier et est le vecteur de mesures. Ces deux
vecteurs sont dfinis ainsi :
( ) ( ) ( ) ( ) ( )
1 1
1 1
A b
T
n n
T
A B
a a b b
t y t y t n u t d u t d n
=
= + +
(4)
Deux modles seront considrs dans ce TP pour identifier le systme considr :
( )
( )
( )
1 0
2
1 0
Modle 1 :
Y z b z b
G z
U z z a z a
+
= =
+ +
(5)
( )
( )
( )
0
2
1 0
Modle 2 :
Y z b
G z
U z z a z a
= =
+ +
(6)
A partir des donnes entres/sorties, deux mthodes seront appliques pour identifier
les paramtres de chaque modle : moindres carrs non rcursifs et moindres carrs rcursifs.
1
2. Moindres carrs non rcursifs
Dans ce cas, les donnes entres/sorties sont traites par paquets obtenus sur un
horizon de temps. Lestimation ne peut pas donc tre faite en temps rel lors de lacquisition
de donnes ou lors de la lecture dun fichier de donnes.
Lestimation du vecteur est donne par :
( ) ( )
( ) ( )
1
1
1
1
1 1
N
i
N
T
i
F y i i
F i i
=
=
=
=
(7)
o est la taille de mesures. N
Travail demand :
- Rcrire les modles (5) et (6) sous la forme (3)-(4) en prcisant les vecteurs et .
- Ecrire une fonction de Matlab theta=nrls(U,Y) qui calcule lestimation de partir des
mesures ( ) , U Y selon la relation (7) pour les deux modles (5) et (6).
- Tlcharger les mesures contenues dans le fichier data.mat laide de la
fonction load de Matlab.
( , U Y)
- Estimer le vecteur de paramtres laide de la fonction nrls que vous avez crite.
- Calculer et tracer la sortie estime ( ) ( ) ( ) 1
T
y t t t =
et lerreur quadratique
moyenne ( ) ( )
2
1
1
N
i
y i y i
N
=
=
.
- Tracer sur la mme figure la sortie relle ( ) y t . Conclure.
3. Moindres carrs rcursifs
Dans ce cas, lestimation des paramtres se fait partir dune paire entres/sorties
chaque pas dchantillonnage. Donc, lestimation peut tre faite en temps rel lors de
lacquisition de donnes ou lors de la lecture dun fichier de donnes.
Lestimation du vecteur est donne par :
( ) ( ) ( ) ( ) ( )
( ) ( )
( ) ( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( ) ( )
1 1
1
1
1 1
T
T
T
t t F t t t 1
F t t t F t
F t F t
t F t t
t y t t t
+ = + + +
+ =
+
+ = +
(8)
2
Remarquons que nous avons besoin de valeurs initiales de ( ) 0 t =
et pour
pouvoir dmarrer lalgorithme (8). De manire gnrale, le gain dadaptation initial
( 0 F t = )
( ) 0 F est
donne par :
( ) 0 F TI = (9)
o I est la matrice identit de taille approprie (peut tre gnre par la fonction eye de
Matlab) et T est un nombre quelconque suprieur 1 (valeur typique de T est 1000).
Travail demand :
- Ecrire une fonction de Matlab theta=rls(U,Y,T,theta_0) qui calcule lestimation de
partir des mesures ( selon les relations (8)-(9) pour les deux modles (5) et (6). )
)
, U Y
- Tlcharger les mesures contenues dans le fichier data.mat laide de la
fonction load de Matlab.
( , U Y
- Estimer le vecteur de paramtres laide de la fonction rls que vous avez crite pour
deux valeurs initiales de
: ( ) 0 0
et ( ) 0
et diffrentes
valeurs deT . Comparer les rsultats obtenus et conclure.
3
TP 4 : Identification et commande dune rgulation en position angulaire
laide de logiciels WinPim, WinTrac et WinReg (4H)
1. Introduction
Le but de ce TP est la mise en uvre dun rgulateur numrique de type calcul
partir dun modle identifi du procd (Figure 1).
RST
Figure 1 : Rgulation numrique avec un rgulateur . RST
Le travail demand comprend les tapes suivantes :
Identifier un modle du procd (WinTrac et WinPim) :
Acquisition de donnes entres/sorties( ) , u y .
Traitement de donnes.
Choix du modle et estimation paramtrique.
Validation du modle.
Calculer un rgulateur nmatique (WinReg) : RST
Spcification de la dynamique dsire de poursuite
m m
B A .
Spcification de la dynamique dsire de rgulation (la dynamique ). p y
Calcul du rgulateur . RST
Mise en uvre du rgulateur calcul (WinTrac) :
Application du rgulateur sur le procd.
Calcul les paramtres de la rponse indicielle (gaine statique, temps de monte,
dpassement).
Comparaison des paramtres rels avec ceux dsirs utiliss pour calculer le
rgulateur.
Notations : dans le document qui suit les commandes slectionner sont notes en
police diffrente (ex : programme) et les valeurs rentrer manuellement au clavier sont notes
entre guillemets (ex : "5V").
1
2. Description du procd
On considre le systme compos dune embase sur laquelle est fix un moteur
solidaire dune couronne (Figure 2).
Figure 2 : Plate-forme Quanser SRV02.
La rgulation en position angulaire du processus est ralise par un ordinateur
connect la plate-forme par une carte dacquisition de donnes. Le schma bloc du systme
complet est donn en Figure 3.
WinPim
WinTrac
WinReg
C
a
r
t
e
d
a
c
q
u
i
s
i
t
i
o
n
d
e
d
o
n
n
e
s
Bote convertisseur
CAN
Ampli.
Plate
-
Forme
( ) u i
( ) y i
0 10V
5V
( )
m
u t
( )
m
t ( )
m
i
PC
Figure 3 : Schma bloc du systme.
3. Prise en main du matriel exprimental
- Vrifier que les diffrents lments du dispositif sont connects : ordinateur, botier
convertisseur, alimentation (Universal Power Module) et processus (Quanser SRV02).
- Allumer seulement lordinateur.
- Avant de mettre la maquette sous tension assurer vous denvoyer au moteur une
tension de commande de 5V (correspondant larrt du moteur). Pour cela :
Lancer dans
2
programme Advantech Driver for 95 and 98 test utility PCL-812 PG I/O=220H Select
Slectionner
Analog Output Chanel 0 Manual Output "5V" Out
Vous pouvez alors mettre sous tension tous les lments du dispositif
(alimentation et botier). En envoyant une tension de 4.5V (Manuel Output 4.5V) vous
ferez tourner le moteur dans un sens avec 5.5V vous le ferez tourner dans lautre sens.
Ne pas mettre des tensions plus loignes de 5V (risque de dcollage du dispositif sil
tourne trop vite). Revenir 5V et iconifier ce programme il vous servira arrter le
moteur en cas de fausse manuvre.
4. Identification du procd (WinTrac et WinPim)
4.1 Acquisition de donnes entres/sorties (WinTrac)
Lentre du processus est une tension ( ) u t et la sortie est une position angulaire ( ) t .
Le systme se compose donc dun premier ordre et dun intgrateur :
( )
( )
( ) ( ) 1
BO
p
K
H p
U p p Tp
= =
+
(1)
Compte tenu de la prsence de lintgrateur, lidentification en boucle ouverte est impossible
(drive). Le relev des mesures exprimentales va donc tre ralis partir du systme en
boucle ferme par un rgulateur donn ( ) 1 R S T = = = laide du logiciel WinTrac.
Lancer dans
Programme WinPimPlus WinTrac
Slectionner
Priode dchantillonnage "0.01"
Commande temps rel Editer Rgulateur R= "1" S= "1" T= "1"
Consigne SBPA Unit = "5"
Composante continue moyenne = "0"
Amplitude = "0.5"
Longueur du registre = "11"
Diviseur frquence = "5"
Temps rel Caractristiques Voie dacquisition "ADC0"
Nombre dchantillon "1028"
Nom de fichier "votre_nom.a01"
Caractristiques D/A Voie de commande "DAC1"
Echelle "OK"
Commande minimum "OK"
Initialisation nombre de priode
"20"
Condition finale commande finale
"valeur initiale"
Puis lancer la prise de mesure par dbuter.
3
En fin dexcution le fichier votre_nom.a01 contiendra la squence de consigne ( ) r k ,
de commande et de sortie du processus qui sont affiche lcran. ( ) u k ( ) y k
4.2 Traitement de donnes (WinPim)
La valeur moyenne des mesures faites ltape prcdente doit tre supprime avant
de lancer lidentification.
Lancer dans
Programme WinPimPlus WinPim
Slectionner
Priode dchantillonnage "0.01"
Gestion des fichiers de donnes Fichier lire donnes c:\wpimplus\donnes\ votre_nom.A01
Mettre la consigne comme entre par ( ) u i
n colonne contenant les sorties Y(i) "1"
n colonne contenant les entres u(i) "2"
Les courbes apparaissent lcran, liminer les composantes continues par
Filtrer Retrait de la composante continue
Les courbes filtres apparaissent lcran, les enregistrer partir de la fentre gestion des
donnes.
Slectionner
Fichier enregistrer donnes \ votre_nom_f.A01
4.3 Choix du modle et estimation paramtrique (WinPim)
Les valeurs successives des couples ( ) ( ) ( )
, u i y i enregistres vont tre employes
pour calculer le modle du systme par la mthode des moindres carrs.
Lancer lidentification par
Identification paramtrique
Fichier lire donnes c:\wpimplus\donnes\ votre_nom_f.A01
Editer structure structure n1
Moindres carrs rcursifs
Gain dcroissant
Retard = "0"
Degr de A = "2"
Degr de B = "2"
Puis lancer lidentification par Dbuter.
Vrifier que lerreur de prdiction obtenue nest pas trop importante.
4
Enregistrer le modle obtenu par
Enregistrer "votre_nom_mod.mod "
Noter les paramtres du modle qui devront figurer dans le compte rendu.
4.4 Validation du modle (WinPim et WinTrac)
Afin de vrifier que lidentification donne un "bon" modle, nous allons comparer les
rponses indicielles du processus et du modle. Tout dabord tracer la rponse indicielle du
modle.
Toujours dans WinPim slectionner
Simulation du systme
Fichier lire modle votre_nom_mod.mod
Commande Echelon Unit = "0"
Nombre dchantillons = "100"
Amplitude ="1"
Instant dapplication ="20"
Dbuter
Les courbes saffichent, les enregistrer partir de la fentre Simulation 1 par
Fichier Enregistrer courbe "votre_nom_sim.sim"
Puis tracer la rponse indicielle du processus.
Dans WinTrac Slectionner
Priode dchantillonnage "0.01"
Commande temps rel Editer Rgulateur R= "1" S= "1" T= "1"
Consigne Echelon Unit = "5"
Amplitude = "1"
Instant dapplication = "20"
Temps rel Caractristiques Voie dacquisition "ADC0"
Nombre dchantillon "100"
Nom de fichier "votre_nom_valid.A01"
Caractristiques D/A Voie de commande "DAC1"
Echelle "OK"
Commande minimum "OK"
Initialisation nombre de priode "20"
Condition finale commande finale "valeur initiale"
Puis lancer la prise de mesure par dbuter.
La courbe de la rponse indicielle apparat lcran, on lui superpose la rponse
simule partir de la fentre commande temps rel par
Graphique Lire courbe "votre_nom_sim.sim"
Si lidentification est acceptable les deux tracs doivent tre assez proches lun de
lautre. Lancer une impression de ces deux courbes qui devront figurer dans le compte rendu.
5
5. Calcul dun rgulateur nmatique (WinReg) RST
A partir du modle obtenu il sagit dexploiter le logiciel WinReg pour tablir le
correcteur du systme puis de caractriser les performances du systme corrig. RST
Comme le modle identifi est celui de systme en boucle ferme , trouver le
modle en boucle ouverte sachant que :
( )
BF
H z
( )
BO
H z
( )
( )
( ) 1
BO
BF
BO
H z
H z
H z
=
+
Ensuite, vous allez calculer un rgulateur pour le systme en boucle ouverte. Pour cela
lancer WinReg
RST
Priode dchantillonnage "0.01"
Calcul dun rgulateur Spcification du mode rentrer le modle en BO
Retard ="0"
deg A = "2" A(1 ) = "valeur de a1BO"
A(2 ) = "valeur de a2BO"
deg B = "2" B(1 ) = "valeur de b1BO"
B(2 ) = "valeur de b2BO"
Performances Poursuite : racines
0
= "100" = "0.7"
Rgulation : 0 partout
Pr Spcification : Sans intgrateur
Calculer
Le modle du rgulateur apparat, enregistrer dans "votre_nom_rst.reg" le modle et le
rgulateur. Noter les paramtres du rgulateur pour le compte rendu.
6. Mise en uvre du rgulateur calcul (WinTrac)
Il sagit de tester les performances du systme corrig par le rgulateur calcul.
Lancer WinTrac
Priode dchantillonnage "0.01"
Fichier ire rgulateur "votre_nom_rst.reg"
Commande temps rel Editer Rgulateur (les paramtres du rgulateur calcul saffichent)
Consigne Echelon Unit = "5"
Amplitude = "1"
Instant dapplication = "20"
Temps rel Caractristiques Voie dacquisition "ADC0"
Nombre dchantillon "100"
Nom de fichier "votre_nom_bf.A01"
Caractristiques D/A Voie de commande "DAC1"
Echelle "OK"
Commande minimum "OK"
Initialisation nombre de priode "20"
Condition finale commande finale "valeur initiale"
Puis lancer la prise de mesure par dbuter.
La rponse indicielle du systme corrig apparat lcran. Imprimer la courbe, comparer les
performances du systme corrig celles du systme en BF.
6
TP 5 : Identification non paramtrique dun bras liaison flexible (8H)
1. Introduction
Le but de ce TP est de mettre en pratique quelques mthodes didentification non
paramtrique dun systme exprimental constitu dune plate-forme surmonte dun bras
liaison flexible.
Le TP est dcompos en trois parties : La premire partie est consacre lanalyse des
rponses indicielle et impulsionnelle du systme. Les mthodes didentification non
paramtrique temporelle (la mthode de corrlation) et frquentielle (analyse par
transformation de Fourier et spectrale) seront appliques sur les donnes exprimentales en
deuxime et troisime parties.
2. Description du systme
Le systme considr est constitu dune plate-forme pose sur une base et surmonte
dun bras liaison flexible (Figure 1). La plate-forme est entrane dans un mouvement de
rotation par un moteur courant continu. Le couplage entre le moteur et la plate-forme est fait
de manire rigide laide de roues dentes. Le bras est rattach par son extrmit au centre de
la plate-forme. Lattache est conue de telle sorte que le bras puisse effectuer un mouvement
de rotation librement. Ce mouvement de rotation est cependant command par deux ressorts,
dont les extrmits sont attaches la plate-forme et au bras assurant ainsi une liaison flexible
entre les deux pices.
Figure 1 : Ensemble de plate-forme et un bras liaison flexible.
Deux grandeurs peuvent tre mesures laide de potentiomtres : Langle de rotation
de la plate-forme par rapport sa base ( ) t et langle de rotation du bras par rapport laxe
de la plate-forme ( ) t .
Par la suite nous nous intresserons langle de positionnement du bras par rapport
la base + . Cette grandeur constitue donc la sortie y du systme considry = + .
Le systme comporte une grandeur de commande . Celle-ci consiste en une tension gnre
par un ordinateur qui, avant dtre applique aux bornes du moteur courant continu, est
dabord amplifie par un amplificateur de puissance.
u
1
3. Modlisation du systme
Un modle du systme peut tre labor en considrant dune part les quations de
base qui dcrivent le comportement dun moteur courant continu, et dautre part les
quations de la dynamique de la plate-forme ainsi que du bras selon les lois de Newton. Un
schma fonctionnel du systme est reprsent en Figure 2.
Figure 2 : Schma fonctionnel du systme.
Le stator du moteur est compos daimants permanents qui fournissent un champ
magntique suppos constant, son affaiblissement en fonction du courant rotorique restant
faible. Selon cette hypothse, et en ngligeant linductance de lenroulement, la loi des
mailles de Kirchhoff donne :
( ) ( ) ( )
a m m m m
K u t R i t K t = +
`
(1)
O est la tension induite, est la position angulaire du moteur, est la constante
lectrique (ou constante de couple), est le gain damplification et
( ) u t ( )
m
t
m
K
a
K
m
R est la rsistance du
circuit.
Le couple dlivr par le moteur est galement proportionnel au courant qui le
traverse :
m
T
m
i
( ) ( )
m m m
T t K i t = (2)
Les quations dynamiques rgissant le mouvement de la plate-forme ainsi que du bras
sont de natures non linaires d la configuration gomtrique des ressorts. Ces quations
peuvent cependant tre linarises autour de langle dquilibre du bras 0 = qui nous donne
une constante de rigidit quivalente
s
K pour les mouvements rotatif. Le bilan de puissance
donne :
( ) ( ) ( ) ( )
m G m s
J t K T t B t K t =
`` `
(3)
o reprsente linertie de la plate-forme, est le rapport de multiplication de
lengrenage,
m
J
G
K
B est le coefficient de frottement visqueux et
s
K est la constante de rigidit
linarise des ressorts. Cette quation traduit simplement le fait que la variation du moment
cintique de la plate-forme est produite par la somme des moments appliqus. Ceux-ci tant le
moment de force provenant du moteur, un frottement proportionnel la vitesse angulaire de la
plate-forme, ainsi que le moment d la liaison flexible avec le bras. En outre, langle de
rotation de la plate-forme est directement proportionnel celui du moteur
m
:
2
( ) ( )
m G
t K t = (4)
De mme, lquation suivante est obtenue pour dcrire la dynamique du bras :
( ) ( ) ( ) ( )
Br s
J t t K + =
``
`` t (5)
Br
J tant linertie du bras. La variation du moment cintique du bras est gale au moment
transmis par la liaison flexible. Les frottements provenant du mouvement du bras sont
ngligs.
Quelques paramtres utiles sont fournis ci-dessous :
- Gain de lamplificateur de puissance 2.0
a
K = .
- Rsistance 2.6
m
R = .
- Constante de couple 0.00767
m
K N = m A.
- Rapport de lengrenage . 70
G
K =
- Inertie de la plate-forme
7 2
3.87 10
m
J kg m
= .
4. Analyse par les rponses indicielle et impulsionnelle
Dans cette partie, nous allons tudier le systme de la Figure 2 par ses rponses
indicielle et impulsionnelle (voir Figure 3).
Figure 3 : Principe de lanalyse par rponse indicielle.
La Figure 4 montre la rponse indicielle dun systme du deuxime ordre :
( )
2
2
2
s n
n n
K
H p
p p
2
=
+ +
(6)
Les relations entre les paramtres du systme et sa rponse indicielle sont les suivantes :
2
2 2
4
exp , 1 , ,
1 1
r n p m
n
n
D t
t
= = =
(7)
3
r
D :
Dpassement
0.95
s
K
s
K :
Gaine statique
0
m
t :
Temps de
monte
p
t :
Temps de
1
er
sommet
Figure 4 : Rponse indicielle dun systme du deuxime ordre.
Travail demand :
1. A partir des quations dynamiques du (1) (5), dterminer la fonction de transfert du
systme considr :
( )
( )
( ) ( )
( )
Y p p p
U p U p
+
= (8)
(Trouver dabord ( ) ( ) U p p et ( ) ( ) U p p ).
2. Peut-on simplifier cette fonction de transfert partir des valeurs numriques donnes ?
Si oui donner la forme de la fonction de transfert simplifie et commenter-la.
3. Montrer que la rponse impulsionnelle dun systme linaire est donne par la drive
de sa rponse indicielle pour des conditions initiales nulles (Notons que la fonction de
transfert est la transforme de Laplace de la rponse impulsionnelle ). ( ) H p ( ) h t
4. Calculer et tracer les rponses indicielle et impulsionnelle dun systme linaire du
deuxime ordre pour 20
n
rad s = et 0.6 = (utiliser les fonctions step et impulse de
Matlab).
5. A partir de la rponse indicielle, dterminer le dpassement, le gain statique et le
temps de monte. Comparer les valeurs trouves avec les valeurs thoriques (quation
(7)).
6. Rajouter un intgrateur au systme prcdent. Calculer et tracer ses rponses indicielle
et impulsionnelle (utiliser les fonctions step et impulse de Matlab).
7. Comparer les rponses de deux systmes.
4
8. Tlcharger le fichier data1.mat qui contient les vecteurs suivants : u lentre du
systme (8) en volt, la sortie bruit du systme (8) en rad/s et t le temps en seconde. y
9. Dterminer la priode dchantillonnage utilis ltape 8.
10. Tracer lentre et la sortie , que reprsente la sortie ? J ustifier. u y
11. Calculer et tracer la rponse impulsionnelle du systme partir des mesures u et
laide de la fonction diff de Matlab.
y
12. A partir de la rponse impulsionnelle du systme, estimer les paramtres dun modle
continu du systme (8).
13. Calculer et tracer la rponse du modle estim lentre laide de la fonction lsim
de Matlab.
u
14. Comparer les sorties estime et relle du systme en terme de la norme de lerreur
dfinie par :
( )
2
2
1
1
N
k
k
N
=
=
(9)
5. Analyse par les fonctions de corrlations
Dans cette partie, nous cherchons reconstruire la rponse impulsionnelle du systme
partir de lentre et la sortie ( ) h k ( ) u k ( ) y k du systme par la mthode de corrlation. Le
principe de cette mthode est montr dans la Figure 5.
( ) d k
( ) u k
( ) y k
( ) h k
( ) h k
Figure 5 : Principe de la mthode de corrlation.
La sortie du systme en Figure 5 est donne par :
(10) ( ) ( ) ( ) ( ) ( ) ( ) ( )
1
0
, 0,1,2, , 1
N
i
y k h k u k d k h i u k i d k k N
=
= + = + =
Dans le cas o ( ) 0 d k = , cest--dire pas de bruit de mesure, la rponse impulsionnelle
du systme peut tre calcule par dconvolution numrique. Pour cela, la relation (10)
peut tre rcrite sous une forme matricielle comme suit :
5
( )
( )
( )
( )
( )
( ) ( )
( ) ( ) ( )
( )
( )
( )
( )
( ) 1 1
0 0 0 0
1 1 0 0
1 1 2 0
B N A N N X N
y u h
y u u h
y N u N u N u h N
=
. . . . .
_ __
0
1
1
(11)
La solution de (11) est donc :
( )
1
T T
X A A A B
= (12)
Comme le bruit de mesure est invitable, donc ( ) 0 d k , lestimation (12) sera bruite.
Pour amliorer cette estimation, nous allons utiliser les fonctions de corrlation. Multiplier
les deux cots de (10) par donne : ( u k l + )
( ) ( ) { } ( ) ( ) ( ) { } ( ) ( ) { }
0
k
i
E y k u k l h i E u k i u k l E d k u k l
=
+ = + + +
(13)
Sachant que :
( ) ( ) ( ) { } ( ) ( )
1
0
1
lim
N
ab
N
i
R l E a k b k l a i b i l
N
=
= + =
+ (14)
o et sont des variables alatoire, nous obtenons partir de (13) : ( ) a k ( ) b k
( ) ( ) ( ) ( )
1
0
N
yu uu du
i
R l h i R i l R
=
= + +
l (15)
En supposant que et sont des variables alatoires indpendantes moyenne
nulle, alors
( ) u k ( ) d k
( ) 0
du
R l = et en utilisant les proprits suivantes de la fonction de
corrlation ( ) ( )
uy yu
R l R l = et ( ) ( )
uu uu
R i l R l i = nous obtenons :
(16)
( ) ( ) ( ) ( )
( ) ( )
( ) ( )
1
0
1
0
, 0,1,2, , 1
N
uy yu uu
i
N
uu
i
uu
R l R l h i R i l
h i R l i l N
h l R l
=
= =
= =
=
De (16) nous concluons que la rponse impulsionnelle du systme peut tre
estime partir des fonctions de corrlation
( ) h l
( )
uy
R l et ( )
uu
R l par dconvolution
numrique. Pour cela, la relation (16) peut tre rcrite sous une forme matricielle comme
suit :
6
( )
( )
( )
( )
( ) ( ) ( )
( ) ( ) ( )
( ) ( ) ( )
( )
( )
( )
( )
( ) 1 1
0 0 1 1
1 1 0
1 1 2 0
uy uu uu uu
uy uu uu uu
uy uu uu uu
A N N X N B N
R R R R N h
R R R R N h
R N R N R N R h N
=
. . . . .
__ _
0
1
1
(17)
La solution de (17) est donc donne par (12).
Dans le cas particulier o lentre ( ) u l est un bruit blanc moyenne nulle, nous
avons :
( ) ( ) ( ) 0
uu uu
R l R l = (18)
o ( ) l est limpulsion de Dirac. De (16) et (18) nous obtenons :
( ) ( ) ( ) ( )
( ) ( )
0
0
uy uu
uu
R l R l h l
R h l
=
=
(19)
et donc :
( )
( )
( )
, 0,1,2, , 1
0
uy
uu
R l
h l l N
R
= = (20)
Un signal numrique symtrique moyenne nulle similaire un bruit blanc peur tre
gnr par un registre dcalage (Figure 6). Le signal gnr est appel Signal Binaire
Pseudo Alatoire (SBPA). Un signal SBPA ainsi que sa fonction de corrlation sont
montres dans la Figure 7. Les paramtres du SBPA sont la priode et
lamplitudea. Quatre paramtres sont donc choisir pour gnrer un signal SBPA : T ,
, et a.
( )
2 1
n
T =
n m
Figure 6 : Gnration dun signal SBPA.
7
Figure 7 : Un signal SBPA et sa fonction de corrlation.
Travail demand :
1. Ecrire une fonction pour Matlab r=intcor(u,y) qui calcule la fonction de corrlation entre
et selon lquation (14). u y
2. Ecrire une fonction pour Matlab u=sbpa(T,n,m,a,p) qui gnre et trace un signal SBPA
ainsi que sa fonction de corrlation o est le nombre de priodes du signal gnr
(utiliser la fonction intcor que vous avez crite, xor et stairs de Matlab). Notez que le
registre doit tre initialis avec des valeurs 0 et 1 arbitrairement.
p
3. Ecrire un fonction pour Matlab h=ricor(u,y) qui calcule la rponse impulsionnelle dun
systme partir des mesures ( ) , u y sur 2 N chantillons selon lquation (17) et (12).
4. Gnrer un signal SBPA avec les proprits suivantes : 1 T s = , , , 7 n = 1 m = 1 a = ,
. Le signal gnr est-il confirm la thorie (Figure 7) ? 3 p =
5. Calculer la rponse du systme Gd=tf([0 1 0.5],[1 -1.5 0.7],1) lentre gnre ltape
prcdente laide de la fonction filter de Matlab en utilisant que la premire priode
du signal SBPA.
6. Calculer et tracer la rponse impulsionnelle du systme Gd partir de ses
entres/sorties gnres dans les tapes 4 et 5 en utilisant la fonction ricor que vous
avez crite.
7. Tlcharger le fichier data2.mat qui contient les entres/sorties bruites du systme Gd
dont la priode dchantillonnage est 1 s.
8. Calculer et tracer la rponse impulsionnelle du systme Gd partir de ses
entres/sorties bruites en utilisant la fonction ricor.
9. Calculer et tracer la rponse impulsionnelle du systme Gd partir de ses
entres/sorties bruites en utilisant la dconvolution numrique (11)-(12).
10. Comparer les trois rponses impulsionnelles et conclure sur lavantage de lutilisions
des fonctions de corrlation.
8
6. Analyse frquentielle
Dans cette dernire partie, nous allons estimer la fonction de transfert du systme
( H j ) par la transforme de Fourier. Le principe de cette mthode est montr en Figure 8.
Figure 8 : Principe de lanalyse frquentielle.
La fonction de transfert du systme ( ) H j est donne par :
( )
( )
( )
Y
H j
U
= (21)
o ( ) U et ( ) Y sont les transform de Fourier de ( ) u t et ( ) y t respectivement :
(22)
( ) ( )
( ) ( )
j t
j t
U u t e
Y y t e
=
=
dt
dt
Comme nous ne pouvons pas intgrer de , il faut intgrer entre des bornes
temporelles finies [ ] , ce qui introduit une erreur de troncature. Pour rduire leffet de
cette erreur, nous pouvons multiplions le signal temporel par une fentre comme il le montre
la Figure 9.
Figure 9 : Utilisant de la fentre rectangle.
9
Le tableau suivant montre quelques fentres utiles o LLP reprsente la largeur du
lobe principal et HLS reprsente lhauteur relative entre le premier lobe et le secondaire.
Tableau 1 : Quelques fentres temporelles.
Comme nous avons vu dans lanalyse par des fonctions de corrlation, le bruit est
invitable dans la pratique. Dans ce cas lestimation (21)-(22) sera bruite. Afin damliorer
cette estimation, nous allons utiliser les fonctions de densit spectrale, cest pour cette raison
que cette mthode est appele la mthode danalyse spectrale. La fonction de transfert est
donc donne par :
( )
( )
( )
uy
uu
H j
(23)
o ( )
uy
et ( )
uu
sont les transformes de Fourier de la fonction dintercorrlation
( )
uy
R et de la fonctions dautocorrlation ( )
uu
R respectivement. Pour rduire leffet de
troncature, les fonctions de corrlation ( )
uy
R et ( )
uu
R doit tre multiplies par une fentre
temporelle avant dappliquer la transforme de Fourier.
Travail demand :
1. Tlcharger le fichier data2.mat qui contient la rponse bruit ( ) y k du systme
Gd=tf([0 1 0.5],[1 -1.5 0.7],1) lentre ( ) u k dont la priode dchantillonnage est 1 s.
2. A laide de la fonction fft de Matlab, calculer la rponse frquentielle du systme
( H j ) par lanalyse frquentielle (21)-(22) et lanalyse spectrale (23) en utilisant :
o Les mesures ( ) ( ) (
, u k y k
)
sans filtrage.
o Les mesures ( ) ( ) (
, u k y k
)
filtre par une fentre de Hann.
o Les mesures ( ) ( ) (
, u k y k
)
filtre par une fentre de Hamming.
10
3. A laide de la fonction frd de Matlab, gnrer un modle frquentiel du systme pour
chaque cas prcdent.
4. Comparer les modles obtenus avec Gd dans le demain frquentiel laide de la
fonction bode de Matlab. Commenter ces courbes.
11
Annexe : Gnralits sur Matlab
1. Lenvironnement Matlab
Matlab (MatrixLaboratory) est un environnement de calcul numrique matriciel. Aprs le lancement
de Matlab, une fentre de commande apparat qui permet lutilisateur de taper une commande
quelconque obissant la syntaxe de Matlab.
Saisir une
instruction
Lancer
Laide
de Matlab
Lancer
lditeur
de Matlab
Ouvrir
un fichier
Matlab
Lancer les
variables
observateur
Lancer
Simulink
Changer le
rpertoire de
travail
Figure 1 : Fentre de Matlab.
Le symbole >>apparaissant gauche de la fentre de Matlab indique que linterprteur est prt
recevoir une commande. Voici un exemple de session Matlab :
>> A = [ 1 3; 4 2 ]
A =
1 3
4 2
>> A*A
ans =
13 9
12 16
>> quit
16 flops.
Dans cette session on a dfini la matrice et l'on a calcul son carr. Chaque ligne
d'instructions doit se terminer par un retour chariot (touche Entre). La commande pour quitter Matlab
est quit.
1 3
4 2
A
=
1.1 Espace de travail
Comme tout langage de programmation, Matlab permet de dfinir des donnes variables. Les variables
sont dfinies au fur et mesure que l'on donne leurs noms (identificateur) et leurs valeurs numriques
ou leurs expressions mathmatiques. Matlab ne ncessite pas de dclaration de type ou de dimension
pour une variable. Les variables sont stockes dans l'espace de travail (ou workspace) et peuvent tre
utilises dans les calculs subsquents. Pour obtenir la liste des variables actives de l'espace de travail
1
on dispose des commandes who et whos. La commande who affiche le nom des variables actives. La
commande whos donne plus dinformations : le nom, la taille du tableau (nombre de lignes et de
colonnes) associ, l'espace mmoire utilis (en Bytes) et la classe des donnes (principalement double
array s'il s'agit d'un tableau de valeurs relles ou complexes et char s'il s'agit d'un tableau de
caractres). La commande clear permet de nettoyer l'espace de travail : toutes les variables sont
dtruites. Il est possible de ne dtruire qu'une partie des variables en tapant clear nom-var o nom-var
est le nom de la (ou des) variable(s) dtruire.
>> x=2*pi/3; y=sin(x); z=cos(x);
>> A = [ 1 3; 4 2 ]; B = A*A;
>> t = 'bonjour';
>> who
Your variables are :
A B t x y z
>> whos
Name Size Bytes Class
A 2x2 32 double array
B 2x2 32 double array
t 1x7 14 char array
x 1x1 8 double array
y 1x1 8 double array
z 1x1 8 double array
Grand total is 18 elements using 102 bytes
>> clear x y t
>> whos
Name Size Bytes Class
A 2x2 32 double array
B 2x2 32 double array
z 1x1 8 double array
Grand total is 9 elements using 72 bytes
>> clear
>> who
>>
Il est possible de sauvegarder une session Matlab dans un fichier pour une utilisation ultrieure.
L'instruction save nom-fic enregistre toutes les variables de l'espace de travail dans le fichier nom-
fic.mat. Si aucun nom de fichier n'est prcis, le fichier par dfaut est Matlab.mat. Il est possible de
ne sauver qu'une partie des variables (par exemple seulement la variable contenant le rsultat d'un
calcul) en utilisant l'instruction save nom-fic nom-var o nom-var est le nom de la (ou des)
variable(s) sauvegarder. Attention, seul le contenu des variables est sauvegard et non pas l'ensemble
des instructions effectues durant la session. Pour ramener dans l'espace de travail les variables
sauvegardes dans le fichier nom-fic.mat, taper load nom-fic. Dans l'exemple qui suit on calcule le
sinus et le cosinus de 2 pi/3 dans les variables y et z. On sauve ces rsultats dans un fichier toto.mat.
Aprs avoir quitt Matlab on peut vrifier que le fichier toto.mat existe bien mais qu'il ne s'agit pas
d'un fichier ascii. Si l'on relance Matlab et que l'on tape load toto, on peut vrifier que les variables y
et z existent bien et ont les valeurs prcdentes.
>> x=2*pi/3, y=sin(x), z=cos(x)
x =
2.0944
2
y =
0.8660
z =
-0.5000
>> save toto y z
>> quit
6 flops.
Lancer Matlab:
>> load toto
>> who
Your variables are :
y z
>> y
y =
0.8660
>> z
z =
-0.5000
>> x
??? Undefined function or variable 'x'.
>>
La commande diary permet de sauvegarder l'ensemble d'une session dans un fichier ascii pour un
traitement ultrieur (insertion dans un document, impression, ...). Le fichier de sauvegarde par dfaut a
pour nom diary. On provoque la sauvegarde dans le fichier nom-fic, par l'instruction diarynom-fic.
Attention, c'est la commande diary qui dclenche le dbut de sauvegarde; il est impossible de
sauvegarder la partie de la session prcdent son appel. Pour arrter la sauvegarde, taper diary off.
>> x=2*pi/3; y=sin(x);
>> diary toto
>> z=cos(x)
z =
-0.5000
>> diary off
>> t = tan(x)
t =
-1.7321
>>
Si vous ditez le fichier toto, voici ce que vous verrez :
>> z=cos(x)
z =
-0.5000
>> diary off
1.2 Obtenir de laide
Dans une session Matlab, il est possible d'obtenir une aide en ligne sur une commande en tapant help
nom-commande. Par exemple,
>> help diary
3
DIARY Save text of MATLAB session.
DIARY file_name causes a copy of all subsequent terminal input
and most of the resulting output to be written on the named
file. DIARY OFF suspends it. DIARY ON turns it back on.
DIARY, by itself, toggles the diary state.
Use the functional form of DIARY, such as DIARY('file'),
when the file name is stored in a string.
>>
Attention, les commandes Matlab doivent tre tapes en minuscules pour tre reconnues,
mme si elles figurent en majuscules dans l'aide en ligne. On peut galement obtenir de l'aide
par le biais de la commande doc qui donne accs une documentation complte au format
HTML. Pour quitter cette documentation, cliquer sur Exit Program dans le menu File du
navigateur. La commande lookfor permet de rechercher un mot-cl parmi les lignes de
commentaires en entte des fonctions Matlab (ces lignes sont celles affiches par la commande
doc). L'instruction lookfor motcl recherche le mot-cl motcl dans la premire ligne de
commentaire de toutes les fonctions Matlab. L'instruction lookfor motcl -all recherche le mot-
cl dans toutes les lignes de commentaires en entte des fonctions. Attention le mot-cl doit
tre en anglais, les commentaires des fonctions Matlab tant rdigs en anglais. On peut
utiliser une phrase comme mot-cl. Il faut alors l'crire entre guillemets (' '). La commande
lookfor retourne le nom la fonction Matlab (ou des fonctions) o le mot-cl figure dans la
premire ligne de commentaires. Elle retourne galement la ligne de commentaires o figure
le mot-cl. Si le mot-cl n'a t trouv dans aucune ligne de commentaires, Matlab rend la
main sans rien afficher.
>> lookfor determinant
DET Determinant.
>> lookfor 'tridiagonal matrix'
LESP Tridiagonal matrix with real, sensitive eigenvalues.
POISSON Block tridiagonal matrix from Poisson's equation.
TRIDIAG Tridiagonal matrix (sparse).
TRIDIEIG Find a few eigenvalues of a tridiagonal matrix.
TRIDISOLVE Solve A*x = b where A is a square, symmetric tridiagonal matrix.
>> lookfor papillon
>>
1.3 Syntaxe d'une ligne d'instructions
Si une instruction Matlab est suivie d'un point virgule, le rsultat de cette instruction n'est pas affich.
Pour rafficher un rsultat contenu dans une variable, il suffit de taper le nom de la variable. Le
rsultat de la dernire instruction excute peut tre rappel par la commande ans :
>> A = [ 8 1 6; 3 5 7; 4 2 9];
>> A
A =
8 1 6
3 5 7
4 9 2
>> A*A;
>> ans
ans =
91 67 67
67 91 67
67 67 91
>>
4
Plusieurs instructions Matlab peuvent figurer sur une mme ligne. Il faut alors les sparer par une
virgule ou par un point virgule. D'autre part, si une commande est trop longue pour tenir sur une ligne,
il est possible de poursuivre sur la ligne suivante en terminant la ligne par 3 points (...).
>> B = [ 1 3; 4 2 ]; B*B
ans =
13 9
12 16
>> x = 1 + 2 + 3 + 4 + 5 + 6 ...
+7 + 8 + 9 + 10
x =
55
>>
Si la syntaxe de l'instruction soumise est errone ou si vous demandez Matlab d'excuter une
instruction illgale (qui n'a pas de sens mathmatique par exemple), vous obtiendrez un message
d'erreur. Ce message vous indique les sources d'erreurs possibles et doit vous permettre de corriger
rapidement votre erreur.
>> A + B
??? Error using ==> +
Matrix dimensions must agree.
>> C = [ 1 2 3; 4 5]
??? Number of elements in each row must be the same.
>> whose
??? Undefined function or variable 'whose'.
>>
Dans la premire instruction, on tente d'effectuer la somme de deux matrices aux dimensions
incompatibles. Dans le second exemple on tente de dfinir une matrice dont le nombre d'lments dans
chaque ligne diffre. Enfin la troisime instruction est inconnue de Matlab : il ne s'agit n'y d'une
fonction ni d'une variable incorpore ou utilisateur.
1.4 Gestion des fichiers du rpertoire de travail
Un certain nombre de commandes permettent de grer les fichiers du rpertoire de travail. La
commande dir donne la liste des fichiers du rpertoire de travail. La commande cd permet de changer
de rpertoire de travail. La commande type permet d'afficher le contenu d'un fichier. La commande
delete permet de dtruire un fichier. Ces commandes s'utilisent de la mme manire que les
commandes correspondantes du DOS. Enfin la commande edit permet d'ouvrir un diteur de texte. Le
choix de l'diteur a t effectu au moment de l'installation de Matlab sur votre machine, il est possible
de changer votre diteur favori dans les Preferences de Matlab. Il est galement possible d'excuter
des commandes DOS partir de Matlab en faisant prcder la commande d'un point d'exclamation (!).
Si vous avez effectu les exemples du paragraphe prcdent, deux fichiers toto et toto.mat existent
dans votre rpertoire de travail. Voici alors un exemple d'utilisation des commandes de gestion des
fichiers.
>> dir
. .. toto toto.mat
>> edit toto
>> !notepad toto
>>
5
2. Types de donnes et variables
Comme tout langage de programmation, Matlab permet de dfinir des donnes variables. Une variable
est dsigne par un identificateur qui est form d'une combinaison de lettres et de chiffres. Le premier
caractre de l'identificateur doit ncessairement tre une lettre. Attention, Matlab diffrencie
majuscules et minuscules! Ainsi X33 et x33 dsignent deux variables distinctes. Les variables sont
dfinies au fur et mesure que l'on donne leurs noms (identificateur) et leurs valeurs numriques ou
leurs expressions mathmatiques. L'utilisation de variables avec Matlab ne ncessite pas de dclaration
de type ou de dimension. Le type et la dimension d'une variable sont dtermins de manire
automatique partir de l'expression mathmatique ou de la valeur affecte la variable. Une variable
peut tre de type rel, complexe, chane de caractres ou logique. Pour Matlab toute variable est
considre comme tant un tableau d'lments d'un type donn. Matlab diffrencie trois formes
particulires de tableaux. Les scalaires qui sont des tableaux une ligne et une colonne. Les vecteurs
qui sont des tableaux une ligne ou une colonne. Les matrices qui sont des tableaux ayant plusieurs
lignes et colonnes. Une variable Matlab est donc toujours un tableau que l'on appelle variable scalaire,
vecteur ou matrice suivant la forme du tableau.
2.1 Les types de donnes
2.1.1 Les 4 types de donnes Matlab
Les trois principaux types de variables utiliss par Matlab sont les types rel, complexe et chane de
caractres. Il n'y a pas de type entier proprement parler. Le type logique est associ au rsultat de
certaines fonctions. Signalons qu'il est inutile (impossible) de dclarer le type d'une variable. Ce type
est tabli automatiquement partir des valeurs affectes la variable. Par exemple les instructions x =
2; z = 2+i; rep = 'oui'; dfinissent une variable x de type rel, une variable z de type complexe et une
variable rep de type chane de caractres.
>> clear
>> x = 2; z = 2+i; rep = 'oui';
>> whos
Name Size Bytes Class
rep 1x3 6 char array
x 1x1 8 double array
z 1x1 16 double array (complex)
Grand total is 5 elements using 30 bytes
>>
Comme on ne dfinit pas de manire explicite le type d'une variable, il est parfois utile de pouvoir le
dterminer. Cela est possible grce aux commandes ischar, islogical et isreal. ischar(x) retourne 1 si x
est de type chane de caractres et 0 sinon. islogical(x) retourne 1 si x est de type logique et 0 sinon. La
commande isreal(x) est utiliser avec discernement : elle retourne 1 si x est rel ou de type chane de
caractres et 0 sinon (x est complexe partie imaginaire non nulle ou n'est pas un tableau de valeurs
relles ou de caractres).
>> ischar(rep)
ans =
1
>> ischar(x)
ans =
0
>> isreal(z)
ans =
0
>> isreal(x)
ans =
6
1
>> isreal(rep)
ans =
1
>>
2.1.2 Le type complexe
L'unit imaginaire est dsigne par i ou j. Les nombres complexes peuvent tre crits sous forme
cartsienne a+ib ou sous forme polaire r e
it
. Les diffrentes critures possibles sont a+ib, a+i*b,
a+b*i, a+bi et r*exp(it) ou r*exp(i*t) avec a, b, r et t des variables de type rel. Les commandes
imag, real, abs, angle permettent de passer aisment de la forme polaire la forme cartsienne et
rciproquement. Si z est de type complexe, les instructions imag(z) et real(z) retournent la partie
imaginaire et la partie relle de z. Les instructions abs(z) et angle(z) retournent le module et
l'argument de z. On fera attention au fait que les identificateurs i et j ne sont pas rservs. Aussi il est
possible que des variables de noms i et j aient t redfinies au cours d'un calcul antrieur et soient
toujours actives. Si c'est la cas, on peut soit dtruire ces deux variables (clear i j), i et j redeviennent
alors l'unit imaginaire, soit raffecter i ou j la valeur unit imaginaire par l'instruction i = sart(-1).
On se mfiera donc des boucles d'indices i et j dans lesquelles on manipule des variables de type
complexe. On fera galement attention ne pas laisser d'espace autour de l'unit imaginaire afin
d'viter de mauvaises interprtations des donnes dans certains cas. Comparez par exemple,
>> z = [1+i, 2, 3i]
z =
1.0000 + 1.0000i 2.0000 0 + 3.0000i
>> y = [1+i, 2, 3 i]
y =
1.0000 + 1.0000i 2.0000 3.0000 0 + 1.0000i
>>
2.1.3 Le type chane de caractres
Une chane de caractres est un tableau de caractres. Une donne de type chane de caractres (char)
est reprsente sous la forme d'une suite de caractres encadre d'apostrophes simples ('). Une variable
de type chane de caractres tant interprte comme un tableau de caractres, il est possible de
manipuler chaque lettre de la chane en faisant rfrence sa position dans la chane. La concatnation
de chanes de caractres s'effectue selon les rgles de manipulation des tableaux. L'exemple suivant
prsente diffrentes manipulations d'une chane de caractres.
>> ch1 = 'bon'
ch1 =
bon
>> ch2 = 'jour'
ch2 =
jour
>> whos
Name Size Bytes Class
ch1 1x3 6 char array
ch2 1x4 8 char array
Grand total is 7 elements using 14 bytes
>> ch = [ch1,ch2]
ans =
bonjour
>> ch(1), ch(7), ch(1 :3)
ans =
b
ans =
7
r
ans =
bon
>> ch3 = 'soi';
>> ch = [ch(1 :3), ch3, ch(7)]
ans =
bonsoir
>>
Si une chane de caractres doit contenir le caractre apostrophe (') celui-ci doit tre doubl dans la
chane (ainsi pour affecter le caractre apostrophe (') une variable on devra crire '''', soit quatre
apostrophes.
>> rep = 'aujourd'hui'
??? rep = 'aujourd'hui
|
Missing operator, comma, or semi-colon.
>> rep = 'aujourd''hui'
rep =
aujourd'hui
>> apos = ''''
apos =
'
>>
La chane de caractres vide s'obtient par deux apostrophes ''. La commande isempty permet de tester
si une variable de type chane de caractres est vide ou non. La commande strcmp permet de tester si
deux chanes de caractres sont gales ou non.
2.1.4 Le type logique
Le type logique (logical) possde deux formes : 0 pour faux et 1 pour vrai. Un rsultat de type logique
est retourn par certaines fonctions ou dans le cas de certains tests. Dans l'exemple qui suit on
considre une variable x contenant la valeur 123 et une variable y dfinie par l'expression
mathmatique y = exp(log(x)). On teste si les variables x et y contiennent les mmes valeurs. La
variable tst est une variable de type logique qui vaut 1 (vrai) les valeurs sont gales et 0 (faux) sinon.
Suivant la valeur de tst, on affiche la phrase x est gal a y ou la phrase x est diffrent de y. Dans
l'exemple propos, compte tenu des erreurs d'arrondis lors du calcul de exp(log(123)), la valeur de la
variable y ne vaut pas exactement 123. On pourra galement considrer le cas o x=12.
>> x = 123; y = exp(log(x));
>> tst = ( x==y );
>> if tst, disp('x est egal a y '), else disp('x est different de y '), end
x est different de y
>> whos
Name Size Bytes Class
tst 1x1 8 double array (logical)
x 1x1 8 double array
y 1x1 8 double array
Grand total is 3 elements using 24 bytes
>> format long
>> x, y, tst
x =
123
8
y =
1.229999999999999e+02
tst =
0
>> format, clear
>>
2.2 Les vecteurs
2.2.1 Dfinir un vecteur
On dfinit un vecteur ligne en donnant la liste de ses lments entre crochets ([ ]). Les lments sont
spars au choix par des espaces ou par des virgules. On dfinit un vecteur colonne en donnant la liste
de ses lments spars au choix par des points virgules (;) ou par des retours chariots. On peut
transformer un vecteur ligne x en un vecteur colonne et rciproquement en tapant x' (' est le symbole
de transposition). Il est inutile de dfinir la longueur d'un vecteur au pralable. Cette longueur sera
tablie automatiquement partir de l'expression mathmatique dfinissant le vecteur ou partir des
donnes. On peut obtenir la longueur d'un vecteur donn grce la commande length. Un vecteur peut
galement tre dfini par blocs selon la mme syntaxe. Si par exemple x
1
, x
2
et x
3
sont trois vecteurs
(on note x1, x2 et x3 les variables Matlab correspondantes), on dfinit le vecteur bloc (x
1
| x
2
| x
3
) par
l'instruction X = [x1 x2 x3].
>> x1 = [1 2 3], x2 = [4,5,6,7], x3 = [8; 9; 10]
x1 =
1 2 3
x2 =
4 5 6 7
x3 =
8
9
10
>> length(x2), length(x3)
ans =
4
ans =
3
>> whos
Name Size Bytes Class
x1 1x3 24 double array
x2 1x4 32 double array
x3 3x1 24 double array
Grand total is 10 elements using 80 bytes
>> x3'
ans =
8 9 10
>> X = [x1 x2 x3']
X =
1 2 3 4 5 6 7 8 9 10
>>
Les lments d'un vecteur peuvent tre manipuls grce leur indice dans le tableau. Le k-ieme
lment du vecteur x est dsigne par x(k). Le premier lment d'un vecteur a obligatoirement pour
indice 1. En pratique ceci impose de faire des translations d'indices si par exemple on souhaite dfinir
une suite (x
0
, x
1
, ... , x
n
). Le terme x
0
de la suite correspondra l'lment x(1) du vecteur et le terme
x
N
l'lment x(N+1). Il est possible de manipuler plusieurs lments d'un vecteur simultanment.
9
Ainsi les lments k l du vecteur x sont dsigns par x(k :l). On peut galement manipuler facilement
les lments d'un vecteur dont les indices sont en progression arithmtique. Ainsi si l'on souhaite
extraire les lments k, k+p, k+2p,..., k+Np =l, on crira x(k :p :l). Plus gnralement, si K est un
vecteur de valeurs entires, X(K) retourne les lments du vecteur X dont les indices sont les lments
du vecteur K. Reprenons l'exemple prcdent.
>> X(5)
ans =
5
>> X(4 :10)
ans =
4 5 6 7 8 9 10
>> X(2 :2 :10)
ans =
2 4 6 8 10
>> K = [1 3 4 6]; X(K)
ans =
1 3 4 6
>>
Il est trs facile de dfinir un vecteur dont les composantes forment une suite arithmtique. Pour
dfinir un vecteur x dont les composantes forment une suite arithmtique de raison h, de premier terme
a et de dernier terme b, on crira x = a :h :b. Si a-b n'est pas un multiple de h, le dernier lment du
vecteur x sera a + Ent((a-b)/h) h o Ent est la fonction partie entire. La commande linspace permet
de dfinir un vecteur x de longueur N dont les composantes forment une suite arithmtique de premier
terme a et de dernier terme b (donc de raison (a-b)/N). Les composantes du vecteur sont donc
linairement espaces. La syntaxe est x = linspace(a,b,N).
>> x = 1.1 :0.1 :1.9
x =
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
>> x = 1.1 :0.2 :2
x =
1.1000 1.3000 1.5000 1.7000 1.9000
>> x = linspace(1.1,1.9,9)
ans =
Columns 1 through 7
1.1000 1.2000 1.3000 1.4000 1.5000 1.6000 1.7000
Columns 8 through 9
1.8000 1.9000
>>
2.2.2 Vecteurs spciaux
Les commandes ones, zeros et rand permettent de dfinir des vecteurs dont les lments ont
respectivement pour valeurs 0, 1 et des nombres gnrs de manire alatoire.
ones(1,n)
: vecteur ligne de longueur n dont tous les lments valent 1
ones(m,1)
: vecteur colonne de longueur m dont tous les lments valent 1
zeros(1,n)
: vecteur ligne de longueur n dont tous les lments valent 0
zeros(m,1)
: vecteur colonne de longueur m dont tous les lments valent 0
rand(1,n)
: vecteur ligne de longueur n dont les lments sont gnres de
manire alatoire entre 0 et 1
10
rand(m,1)
: vecteur colonne de longueur m dont les lments sont gnrs de
manire alatoire entre 0 et 1
2.3 Les matrices
2.3.1 Dfinir une matrice
On a dj vu que l'on dfinissait la matrice en tapant A = [ 1 3; 4 2 ]. D'une faon
gnrale, on dfinit une matrice en donnant la liste de ses lments entre crochets. Signalons que
Matlab admet d'autres faons d'crire les matrices. Les lments d'une ligne de la matrice peuvent tre
spars au choix par un blanc ou bien par une virgule (
1 3
4 2
A
=