Haute Ecole d'Ingnierie et de Gestion du Canton de Vaud Dpartement Technologies Industrielles
Matlab pour les ingnieurs Quelques exemples
i nstitut d' A utomatisation i ndustrielle
Prof. Freddy Mudry
Introduction Matlab : quelques exemples
Table des matires
1 Informations prliminaires
1.1 Les bases de Matlab 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.2 1.2.1 1.2.2 1.2.3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Donne d'une variable relle ou complexe Cration de vecteurs et matrices Matrices particulires Aide en ligne
1
1 1 2 3 4 4 5 5 5 5
Oprations sur les composantes ou les vecteurs
. . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Mthode de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les chiers de commandes Les chiers de fonctions . . . . . . . . . . . . . . . . . . . . . . . . .
Sauvegarde de donnes sur disque . . . . . . . . . . . . . . . . . . . .
2 Rsolution d'un circuit lectrique
2.1 2.2 Description du circuit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Calcul avec Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
6 7
3 Rponses d'un systme linaire
3.1 3.2 Description du systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fichier Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
8 8
4 Mise en valeur de rsultats exprimentaux
4.1 4.2 4.3 Exemple 1 : caractristique d'un ressort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Exemple 2 : dbit et temprature d'un ux d'air Exemple 3 : spectres du dbit et de la temprature . . . . . . . . . . . . . .
11
11 13 15
5 Rsolution d'une quation direntielle
5.1 5.2 5.3 quation du pendule simple . . . . . . . . . . . . . . . . . . . . . . . . . . . Mise sous forme canonique . . . . . . . . . . . . . . . . . . . . . . . . . . . . Intgration numrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
16 16 17
6 Mouvement d'une charge lectrique
6.1 6.2 6.3 6.4 quations fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description matricielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Description d'tat d'un systme linaire . . . . . . . . . . . . . . . . . . . . Calcul de la trajectoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
19 20 20 21
7 Exercices
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 Rsolution d'un circuit lectrique . . . . . . . . . . . . . . . . . . . . . . . . Rponses frquentielle et temporelle d'un circuit . . . . . . . . . . . . . . . . Rponses frquentielle et temporelle d'un ltre . . . . . . . . . . . . . . . . Portance d'une aile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Modlisation de la caractristique d'une diode . . . . . . . . . . . . . . . . . Chute libre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Saut l'lastique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Particule dans un champ lectromagntique
26
26 26 26 27 28 29 30 30
8 Liste de quelques fonctions Matlab
8.1 Environnement Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 8.1.2 8.1.3 8.1.4 8.1.5 8.1.6 8.1.7 8.1.8 8.1.9 8.2 Commandes et fonctions . . . . . . . . . . . . . . . . . . . . . . . . . Informations sur l'espace de travail . . . . . . . . . . . . . . . . . . . Commandes systme . . . . . . . . . . . . . . . . . . . . . . . . . . . Fentre de commandes . . . . . . . . . . . . . . . . . . . . . . . . . . Caractres spciaux Oprateurs logiques Fonctions logiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
32 32 32 32 33 33 33 34 34 34 35 35 35 35 36 36 36 36 36 37 37 37 38 38 38 38 39 39 39 39 39 40 40 40 41 41 41 41
Variables prdnies, dure, date . . . . . . . . . . . . . . . . . . . . Instructions de contrle
8.1.10 Instructions spciques . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions mathmatiques 8.2.1 8.2.2 8.2.3 8.3 8.3.1 8.3.2 8.3.3 8.3.4 8.3.5 8.3.6 8.4 8.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions lmentaires . . . . . . . . . . . . . . . . . . . . . . . . . . Fonctions trigonomtriques Fonctions prdnies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprateurs sur les matrices
Matrices et algbre linaire
Oprateurs sur les composantes matricielles Matrices prdnies
Manipulation des matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Oprations sur les matrices
Dcomposition et factorisation de matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Textes et chanes de caractres 8.5.1 8.5.2 8.5.3 8.5.4 8.5.5 8.5.6 8.5.7 8.5.8 8.5.9 Graphiques 2D
Fonctions graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Annotation de graphiques . . . . . . . . . . . . . . . . . . . . . . . . Contrle des fentres graphiques Sauvegarde et copie graphique Animations
Objets 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Apparence des graphiques . . . . . . . . . . . . . . . . . . . . . . . . Graphiques tridimensionnels . . . . . . . . . . . . . . . . . . . . . . . Oprations sur les objets graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.6 8.7
Oprations sur les polynmes 8.7.1 8.7.2
Analyse de donnes et statistiques
Analyse de donnes par colonne . . . . . . . . . . . . . . . . . . . . . Analyse et traitement des signaux
8.8
Intgration, interpolation et et drivation numriques . . . . . . . . . . . . .
ii
8.8.1 8.8.2 8.8.3 8.9
Intgration numrique Interpolation Dirences nies
. . . . . . . . . . . . . . . . . . . . . . . . . .
41 41 42 42 42 42 42 42
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Optimisation et quations non linaires . . . . . . . . . . . . . . . . . . . . . 8.10.1 Construction d'un modle . . . . . . . . . . . . . . . . . . . . . . . . 8.10.2 Rponse temporelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.10.3 Rponse frquentielle . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.10 Modlisation et analyse de systmes continus
iii
Introduction Matlab : quelques exemples
Cette introduction Matlab est propose aux tudiants du dpartement d'lectricit et Informatique de l'eivd avant le dbut de leur deuxime anne de formation. Ce cours, donn pendant une journe, permet aux tudiants de travailler individuellement sur les exemples et exercices prsents ci-aprs. Par ce recueil d'exemples, on souhaite montrer que l'usage de l'outil Matlab dans le domaine de l'ingnierie est simple et ecace et ainsi inciter nos tudiants l'appliquer dans les cours et laboratoires qu'ils auront en deuxime et troisime anne. Les commandes Matlab sont prsentes dans des situations relles et susamment explicites pour que leur utilisation soit claire par elle-mme. Les dtails syntaxiques doivent tre recherch par les tudiants en recourant de manire intensive l'aide en ligne Matlab.
1 Informations prliminaires
Matlab est un systme interactif et convivial de calcul numrique et de visualisation graphique destin aux ingnieurs et scientiques. Il possde un langage de programmation puissant et simple utiliser avec lequel l'utilisateur peut eectuer des calculs en ligne ou par l'intermdiaire d'un chier de commandes [3], [4]. Le logiciel Matlab (Mat
rix
Lab
oratory )
est bas sur le calcul matriciel numrique. Tous
les objets utiliss dans Matlab sont donc dnis au travers de matrices ou vecteurs dont les valeurs sont, par dnition, des grandeurs complexes. Il existe un trs grand nombre d'oprateurs et fonctions distribus dans le logiciel de base et dans des botes outils spcialises. A ceci peut s'ajouter un outil de programmation graphique, Simulink, essentiel pour la simulation de systmes dynamiques non linaires. L'environnement Matlab se prsente sous la forme d'un espace de travail dans lequel un interprteur de commandes excute les oprations demandes.
1.1 Les bases de Matlab
1.1.1 Donne d'une variable relle ou complexe
Avec Matlab, on dnit sans autre des variables relles ou complexes ; par exemple
aa bb cc dd
= = = =
-1.234 ; 12/13 ; 4.567 + j*8.765 ; cc' ;
% % % %
nombre rel ngatif nombre rel positif nombre complexe son conjugu complexe
1.1.2 Cration de vecteurs et matrices
Un vecteur ligne est introduit de la manire suivante :
vligne = [20, 6, 43, 66, 70, 8] ;
et un vecteur colonne comme suit :
vcol = [20 ; 6 ; 43 ; 66 ; 70 ; 8] ;
En l'absence de point-virgule ( ;), il s'achera l'cran sous la forme :
>> vligne = 20 6 43
66
70
On peut changer son nom
v = vligne ;
On accde la composante 4 en tapant :
v(4) >> ans = 66
Un vecteur peut tre retourn avec la commande
fliplr
y = fliplr(v) >> y= 8 70 66 43
20
Une matrice peut tre construite de direntes manires ; soit
m = [ 2 4 6 8 ; 1 3 5 7 ; 11 13 17 19]
ou bien
m = [ 2 4 6 8 1 3 5 7 11 13 17 19]
ou bien
v1 v2 v3 m
= = = =
[ 2 4 6 8] ; [ 1 3 5 7] ; [11 13 17 19] ; [v1 ; v2 ; v3]
Ce qui, dans les 3 cas, donne sur l'cran
>> m = 2 4 1 3 11 13
6 8 5 7 17 19
La deuxime colonne s'obtient en tapant
m2 = m( :,2) >> m2 = 4 3 13
L'achage d'une sous-matrice est possible ; par exemple
m3 = m(1 :3,2 :4) >> m3 = 4 6 8 3 5 7 13 17 19
Une matrice transpose se calcule avec l'apostrophe (') :
mt >> 2 4 6 8
= m' mt = 1 3 5 7
11 13 17 19
L'inverse d'une matrice se calcule aussi simplement ; par exemple
minv = inv(m3) >> minv = 6.0 -5.5 -0.5 -8.5 7.0 1.0 3.5 -2.5 -0.5
Dans Matlab, les indices des vecteurs et matrices doivent tre des entiers positifs. L'indice 0 n'est donc pas admis.
1.1.3 Oprations sur les composantes ou les vecteurs
Avec Matlab, il faut tre trs attentif sur le type d'oprations souhaites et cela en particulier lorsque l'on a aaire des multiplications, des puissances, etc. Comme exemple, considrons deux vecteurs que l'on multiplie entre eux :
v1 = [1 ; 2 ; 3] ; v2 = [1, 2, 3] ;
L'opration
v1*v2
eectue le produit d'un vecteur colonne
v1
avec un vecteur ligne
v2
et
le rsultat est une matrice 3x3 :
y1 = v1*v2 >> y1 = 1 2 3 2 4 6 3 6 9
En croisant v1 et v2, on obtient le produit scalaire :
y2 = v2*v1 >> y2 = 14
Alors que si l'on veut eectuer le produit composante par composante, il faut utiliser l'oprateur de multiplication prcd d'un point (.*) :
y3 = v1'.*v2 >> y3 = 1 4 9
1.1.4 Matrices particulires
Les fonctions respectivement. On a galement la possibilit de construire une matrice identit (eye), diagonale (diag), une matrice dont les composantes sont alatoires (rand), un vecteur dont les composantes sont espaces linairement (linspace) ou logarithmiquement (logspace).
ones, zeros
permettent de construire des matrices remplies de 1 et de 0,
1.1.5 Aide en ligne
la moindre interrogation, n'hsitez pas recourir l'aide en ligne qui, gnralement, est trs bien documente par des exemples et des renvois vers des fonctions complmentaires. En tapant par exemple
help logspace
on obtient
LOGSPACE Logarithmically spaced vector. LOGSPACE(d1, d2) generates a row vector of 50 logarithmically equally spaced points between decades 10^d1 and 10^d2. If d2 is pi, then the points are between 10^d1 and pi. LOGSPACE(d1, d2, N) generates N points. See also LINSPACE, :.
1.2 Mthode de travail
1.2.1 Les chiers de commandes
Aprs quelques essais initiaux o les commandes sont passes en ligne, on prouve trs vite le besoin de ne pas perdre le fruit de son travail en crivant les oprations, de plus en plus nombreuses et sophistiques, dans un chier de commandes d'extension Ce chier peut tre crit avec votre diteur de texte d'indiquer son chemin d'accs Matlab l'aide de de commandes crites dans le chier la fentre de commandes.
.m.
ascii
(PFE, UltraEdit, etc.) ou celui
fourni par Matlab. Une fois ce chier sauv dans votre rpertoire de travail, n'oubliez pas
.m
File / Set Path. L'excution de la suite
se fera alors simplement en tapant son nom dans
1.2.2 Les chiers de fonctions
De nouvelles fonctions peuvent tre cres et ajoutes Matlab par l'utilisateur. Il sut pour cela d'crire un chier utilise par la suite. Son entte doit avoir le format suivant :
.m
dont le nom est obligatoirement le nom de la fonction
function [arguments de sortie] = nom_de_fonction (arguments d'entre)
Exemple : transformation des coordonnes rectangulaires en coordonnes polaires
function [module, argument] = rec2pol(x,y) ; % rec2pol(x,y) transforme les coordonnes rectangulaires (x,y) % en coordonnes polaires [module argument] % Remarque : l'argument est fourni en radians % Exemple d'utilisation : % [R A] = rec2pol(2,5) ; % Auteur : fmy / 26.10.2001 module = sqrt(x^2+y^2) ; argument = angle(x + j*y) ;
Ces quelques lignes seront sauves dans un chier dont le nom sera un rpertoire (d crez. On notera que les variables internes la fonction sont locales, contrairement celles d'un chier de commandes qui sont globales. De plus, les lignes prcdes du symbole % (lignes de commentaires) serviront d'aide en ligne lorsque l'on tapera :
:mesfonctions,
rec2pol.m et plac dans
par exemple) contenant l'ensemble des fonctions que vous
help rec2pol
1.2.3 Sauvegarde de donnes sur disque
Les variables dnies dans l'espace de travail peuvent tre sauves dans un chier par la commande :
ascii
save chemin\nom_de_fichier.dat nom_de_variable -ascii
Un tel chier
ascii
peut ensuite tre relu soit par Matlab avec la fonction
load,
soit par
d'autres programmes. Le contenu de la fentre graphique courante peut tre imprim directement sur votre imprimante. On peut galement le sauver dans un chier pour tre ensuite intgr dans un document PostScript
print chemin\nom_de_fichier.eps -depsc -tiff
ou Windows Meta File
print chemin\nom_de_fichier.wmf -meta
2 Rsolution d'un circuit lectrique
tant donn le circuit de la gure 1, on souhaite calculer les valeurs ecaces et phases des courants lorsque
Ug = 220 [V ], R2 = 3 [],
fg = 50 [Hz ], C = 10 [F ],
R1 = 10 [] L = 100 [mH ]
I1
R1
I3 I2
R2
Ug
Fig. 1: Circuit lectrique
2.1 Description du circuit
Pour rsoudre ce circuit, il faut bien entendu commencer par crire les quations qui le dcrivent. Considrant les courants
I1 , I2 , I3
circulant dans les 3 branches du circuit,
celui-ci est compltement dcrit par les quations suivantes :
Ug = R1 I1 + 0 =
1 I2 jC
1 I2 + (R2 + jL) I3 jC 0 = I1 I2 I3
quations que l'on peut rcrire sous forme matricielle :
1 R1 jC 1 0 jC 1 1
0 I1 Ug R2 + jL I2 = 0 0 I3 1
La solution s'obtient en multipliant gauche les 2 membres de l'quation par l'inverse de la matrice dcrivant le circuit :
1 R1 jC I1 1 I2 = 0 jC I3 1 1
0 R2 + jL 1
Ug 0 0
2.2 Calcul avec Matlab
Le calcul des courants par Matlab en interprtant les lignes de commande d'un chier (ici
circuit.m)
dont le contenu est :
% Calcul d'un circuit electrique clear all ; close all ; format compact ; format short g ; % donnees fg = 50 ; w = 2*pi*fg ; Ug = 220 ; % Ug = 220 Veff R1 = 10 ; R2 = 3 ; L = 100e-3 ; C = 10e-6 ; % rappel des equations du circuit % R1 I1 + 1/jwC I2 + 0 I3 = Ug % 0 I1 - 1/jwC I2 + (R2+jwL) I3 = 0 % I1 I2 I3 = 0 % description matricielle du circuit Z = [ R1 +1/(j*w*C) 0 0 -1/(j*w*C) R2+j*w*L 1 -1 -1] ; U = [Ug ; 0 ; 0] ; % vecteur colonne % resolution du circuit I = inv(Z) * U ; % affichage des valeurs I Ieff = abs(I) PhaseI = angle(I) * 180 / pi % affichage sous forme matricielle Courants = [I Ieff PhaseI]
On lance l'excution de ces commandes en tapant simplement le nom du chier sans extension
circuit I = 2.1521 - 5.4723i -0.1719 + 0.6235i 2.3240 - 6.0959i Ieff = 5.8803 0.6468 6.5238 PhaseI = -68.5319
105.4142 -69.1310 Courants = 1.0e+002 * 0.0215 - 0.0547i -0.0017 + 0.0062i 0.0232 - 0.0610i
0.0588 0.0065 0.0652
-0.6853 1.0541 -0.6913
3 Rponses d'un systme linaire
3.1 Description du systme
On considre ici un ltre RLC passe-bas dcrit par sa fonction de transfert :
H (s) =
avec
1 1 + (s/0 ) /Q0 + (s/0 )2 1 , (LC ) Q0 = 0 L R
0 =
Le calcul et traage des rponses frquentielle (g. 2a) et temporelle (g. 2b) se fait tout naturellement l'aide de Matlab comme le montre le chier ci-dessous.
3.2 Fichier Matlab
% calcul des rponses d'un systmme linaire dcrit % par une fonction de transfert d'ordre 2 % 1 % H(s) = -------------------------% (s/w0)^2 + (s/w0)/Q0 + 1 clear all ; close all ; clc ; format compact ; format short g ; % donnes : circuit LC-R (passe-bas) R = 500 ; L = 1e-3 ; C = 1e-9 ; w0 = 1/sqrt(L*C), Q0 = w0*L/R num = [0, 0, 1] ; den = [1/w0^2, 1/Q0/w0, 1] ; % calcul de la rponse frquentielle f0 = w0/2/pi ; ech_log = -2 :0.01 :+2 ; ff = f0*10.^ech_log ; jw = j*2*pi*ff ; num_jw = num(1)*jw.^2 + num(2)*jw + num(3) ; den_jw = den(1)*jw.^2 + den(2)*jw + den(3) ; Hjw = num_jw./den_jw ; Hdb = 20*log10(abs(Hjw)) ; phi = angle(Hjw)/pi*180 ;
Rponse frquentielle dun filtre passebas dordre 2 20
0 |H| [dB]
20
40
60 3 10
10
10 frquence [Hz]
10
10
0 120 50 /H [deg] 150
90 4 60 2 30
100
180
210 150 240 270 10
4
330 300
10 frquence [Hz]
Rponses temporelles dun filtre passebas dordre 2 1.5 x(t), yind(t) 1 0.5 0
10
12
14
16
18
20
2 x(t), ysin(t) 1 0 1 2 0 2 4 6 8 10 12 14 16 18 20
4 x(t), ysqr(t) 2 0 2 4 0 2 4 6 8 10 temps [s] 12 14 16 18 20
Fig. 2: a) Diagrammes de Bode et polaire de la rponse frquentielle
b) Trois rponses temporelles
% calcul de trois rponses temporelles tmax = 10*L/R ; Npts = 1000 ; dt = tmax/Npts ; tt = 0 :dt :tmax-dt ; xti = ones(size(tt)) ; yti = lsim(num, den, xti, tt) ; xts = sin(2*pi*tt*f0) ; yts = lsim(num, den, xts, tt) ; xtc = sign(sin(2*pi*tt*f0)) ; ytc = lsim(num, den, xtc, tt) ; % traage de la rponse frquentielle figure ; subplot(2,1,1) ; semilogx(ff, Hdb) ; grid on ; axis([1e3, 1e7, -60, +20]) ; xlabel('frquence [Hz]') ; ylabel('|H| [dB]') ; title('Rponse frquentielle dun filtre passe-bas dordre 2') subplot(2,2,3) ; semilogx(ff, phi) ; grid on ; axis([1e3,1e7,-180,0]) ; xlabel('frquence [Hz]') ; ylabel('/H [deg]') ; subplot(2,2,4) ; polar(angle(Hjw), abs(Hjw)) ; print -depsc rep_freq_rlc.eps % tracage des rponses temporelles figure ; subplot(3,1,1) ; plot(tt*1e6, xti,'--') ; grid on ; hold on ; plot(tt*1e6, yti) ; axis([0, 20, 0, 1.5]) ; ylabel('x(t), y_{ind}(t)') ; title('Rponses temporelles dun filtre passe-bas dordre 2') subplot(3,1,2) ; plot(tt*1e6, xts,'--') ; grid on ; hold on ; plot(tt*1e6, yts) ; ylabel('x(t), y_{sin}(t)') ; subplot(3,1,3) ; plot(tt*1e6, xtc,'--') ; grid on ; hold on ; plot(tt*1e6, ytc) ; xlabel('temps [\mus]') ylabel('x(t), y_{sqr}(t)') ; print -depsc rep_temp_rlc.eps
10
4 Mise en valeur de rsultats exprimentaux
4.1 Exemple 1 : caractristique d'un ressort
On considre ici un ressort que l'on tend plus ou moins tout en mesurant la force qui lui est applique l'aide d'un dynamomtre dont la prcision est d'environ 0.5 [N]. Les rsultats que l'on a obtenus sont les suivants :
Longueur [cm] Force [N]
4.2 [N] 0.0
5.0 1.1
6.0 2.0
7.0 3.2
8.0 3.9
9.0 4.6
10.0 5.8
11.0 7.0
12.0 8.3
13.0 9.0
14.0 9.5
+1/ 0.5
Dans ce qui suit, on souhaite : 1. Tracer le graphe de la force en fonction de la longueur avec les barres d'erreurs. 2. Mettre en valeur le graphe l'aide d'un titre et d'informations portes sur l'abscisse et l'ordonne. 3. Rechercher une loi polynomiale reprsentant au mieux cette caractristique ; celle d'un ressort est gnralement linaire, ventuellement cubique. 4. Mesurer la qualit des modles proposs pour reprsenter le ressort. 5. Acher les informations sur le graphe lui-mme.
Un programme ralisant le cahier des charges demand peut tre le suivant
% Exemple de traitement des donnees clear all ; close all ; format compact ; format short g ; % elongation d'un ressort : valeurs mesurees x = [4.2 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0] ; % [cm] force = [0.0 1.1 2.0 3.2 3.9 4.6 5.8 7.0 8.1 9.0 9.5] ; % [N] % vecteurs des erreurs
ErrNeg = -0.5*ones(size(force)) ; ErrPos = +1.0*ones(size(force)) ;
% graphes des mesures plot(x,force,'o') ;
% regressions lineaire et cubique coeff1 = polyfit(x,force, 1) % coeff. du polynme d'ordre 1 coeff3 = polyfit(x,force, 3) % coeff. du polynme d'ordre 3
% calcul des graphes des modeles d'ordre 1 et 3
xfit = linspace(0,20,201) ; F1 = polyval(coeff1,xfit) ; F3 = polyval(coeff3,xfit) ;
% abscisse plus fine (200 points) % valeurs du polynme d'ordre 1 % valeurs du polynme d'ordre 3
% tracage des mesures avec erreurs et des modeles errorbar(x,force,ErrNeg, ErrPos,'o') ;
11
hold on ; grid on ; % maintien du graphe et pose d'une grille plot (xfit,F1, xfit,F3,'--') ; axis ([0 20 -5 13]) ; title('Force dun ressort') ; xlabel('x [cm]') ; ylabel('F(x) [N]') ; % affichage des infos texte = ['F_1(x) = ', num2str(coeff1(1),3), ' x texte = [texte, num2str(coeff1(2),3)] ; text(1,11, texte) ; texte = ['F_3(x) = ', poly2str(coeff3,'x')] ; text(2.1,-3, texte) ; + '] ;
% ecart type = sigma = mesure de la dispersion des ecarts F1 = polyval(coeff1, x) ; % valeurs du modele d'ordre 1 ecart1 = force - F1 ; eqm1 = sum(ecart1 .^ 2)/length(ecart1) ; sigma1 = sqrt(eqm1) ; text (1,10.2, ['\sigma _1 = ', num2str(sigma1,3), ' [N]']) ; F3 = polyval(coeff3, x) ; % valeurs du modele d'ordre 3 ecart3 = force - F3 ; eqm3 = sum(ecart3 .^ 2)/length(ecart3) ; sigma3 = sqrt(eqm3) ; text (2.1,-3.8, ['\sigma _3 = ', num2str(sigma3,3), ' [N]']) ; print -deps ressort.eps
Les rsultats sont prsents dans la gure 3.
Force dun ressort 12 F1(x) = 0.98 x + 3.91 10 = 0.197 [N]
1
6 F(x) [N]
2 F3(x) = 0.0012491 x + 0.029026 x + 0.78352 x 3.5353 = 0.19 [N]
3 3 2
4 0
10 x [cm]
12
14
16
18
20
Fig. 3: Force d'un ressort et ses modles d'ordre 1 et 3
12
4.2 Exemple 2 : dbit et temprature d'un ux d'air
Dans cet exemple, on se propose de montrer comment on lit des valeurs fournies par un chier
ascii
et comment on tire quelques informations utiles avant de les porter sur un
graphe (gure 4).
Dbit et temprature dun flux dair 2.6 2.5 Dbit [l/sec] 2.4 2.3 2.2 2.1 2 0 Dbits min et max : 2.18 / 2.42 [l/sec] 500 1000 1500 2000 2500 3000 3500 4000 Dbit moyen = 2.3 [l/sec] Ecart type = 0.04 [l/sec]
50 Temprature moyenne = 42 [C] Ecart type = 1.4 [C] Temprature [C] 45
40 Tempratures min et max : 37.3 / 47.3 [C] 35 0 500 1000 1500 2000 temps [sec] 2500 3000 3500 4000
Fig. 4: Dbit et temprature d'un ux d'air
Lors d'une exprience, on a enregistr l'volution du dbit et de la temprature d'un ux d'air au cours du temps. Les valeurs numriques ont t portes dans un chier comportant 3 colonnes : le temps exprim en secondes le dbit donn en litres par seconde la temprature mesure en degrs Celsius :
air.dat
1.0800000e+002 1.1000000e+002 1.1200000e+002 ....... 3.8940000e+003 3.8960000e+003
gure 4 :
2.3597495e+000 4.4197579e+001 2.3446581e+000 4.2045259e+001 2.3312441e+000 4.2574619e+001 2.2748863e+000 4.2438009e+001 2.2713996e+000 4.2516874e+001
Voici le contenu du programme permettant de lire le chier de donnes et de construire la
% mesures de debit et temperature clear all ; close all ; format compact ; format short g ; % chargement des mesures
13
mesures = load('air.dat') ; temps = mesures( :,1) ; debit = mesures( :,2) ; degre = mesures( :,3) ; % pre-visualisation des mesures subplot(2,1,1) ; plot(temps, debit) ; subplot(2,1,2) ; plot(temps, degres) ; % recherche des valeurs min et max Qmin = min(debit), Qmax = max(debit) Tmin = min(degre), Tmax = max(degre) % calcul des valeurs moyennes DebitMoyen = mean(debit) DegreMoyen = mean(degre) % mesure de la dispersion des valeurs % std = ecart type = deviation standard BruitDebit = std(debit-DebitMoyen) BruitDegre = std(degre-DegreMoyen) % tracage du debit figure ; subplot(2,1,1) ; plot(temps,debit) ; axis([0 4000 2 2.6]) ; title('Dbit et temprature dun flux dair') ; ylabel('Dbit [l/sec]') ; % informations pour le graphe texte1 = ['Dbit moyen = ', num2str(DebitMoyen,2), ' [l/sec]'] ; texte2 = ['Ecart type = ', num2str(BruitDebit,2), ' [l/sec]'] ; text(200,2.51,[texte1 ' ' texte2]) ; texte = ['Dbits min et max : ', num2str(Qmin,3)] ; texte = [texte ' / ', num2str(Qmax,3), ' [l/sec]'] ; text(200,2.1, texte) ; % tracage de la temperature subplot(2,1,2) ; plot(temps,degre) ; axis([0 4000 35 50]) ; xlabel('temps [sec]') ; ylabel('Temprature [C]') ; % information pour le graphe texte1 = ['Temprature moyenne = ', num2str(DegreMoyen,2), ' [C]'] ; texte2 = ['Ecart type = ', num2str(BruitDegre,2), ' [C]'] ; text(200,48,[texte1 ' ' texte2]) ; texte = ['Tempratures min et max : ', num2str(Tmin,3)] ; texte = [texte ' / ', num2str(Tmax,3), ' [C]'] ; text(200,37, texte) ;
14
print -deps airtemp.eps
4.3 Exemple 3 : spectres du dbit et de la temprature
Le but de cet exemple est de montrer comment on peut calculer et acher le spectre des signaux prcdents. Cependant, il est important de bien raliser que, derrire ces calculs, c'est une partie importante du traitement numrique des signaux qui est applique et que ce n'est pas le but de la prsenter ici. L'analyse temporelle faite dans le paragraphe prcdent se poursuit dans l'espace des frquences l'aide des commandes ci-aprs.
% preparation pour l'analyse spectrale % la longueur du signal analyse doit etre une puissance de 2 % inferieure ou egale a la longueur du signal original puissance = floor(log(length(debit))/log(2)) kmax = 2^puissance ; debit2 = debit(1 :kmax) ; degre2 = degre(1 :kmax) ; % suppression de la valeur moyenne debit2 = debit2-mean(debit2) ; degre2 = degre2-mean(degre2) ; % transformation de Fourier des signaux a valeur moyenne nulle Qf = fft(debit2) ; Tf = fft(degre2) ; % relations temps-frequence dt = temps(2)-temps(1) ; duree = kmax*dt ; fmin = 0 ; fmax = 1/dt ; df = 1/duree ; ff = fmin :df :fmax ; % preparation pour le tracage Qfdb = 20*log10(abs(Qf)) ; Tfdb = 20*log10(abs(Tf)) ; ff = ff(1 :kmax/2) ; % le spectre se repete au dela de kmax/2 Qfdb = Qfdb(1 :kmax/2) ; Tfdb = Tfdb(1 :kmax/2) ; % recherche d'un pic spectral eventuel sur le debit [pic kpic]= max(Qfdb) ; fpic = kpic*df ; texte = ['f_{pic} = ', num2str(fpic,2), ' [Hz]'] ; % tracage figure ; subplot(2,1,1) ; plot(ff,Qfdb) ; axis([0 0.1 -20 40]) ; grid ; text(1.1*fpic, 1.1*pic,texte) ; ylabel('Q(f) [dB]') ; title ('Spectres du dbit et de la temprature') ; subplot(2,1,2) ; plot(ff,Tfdb) ; axis([0 0.1 0 60]) ; grid ;
15
xlabel('frquence [Hz]') ; ylabel('T(f) [dB]') ; print -deps airfreq.eps
Spectres du dbit et de la temprature 40 30 20 Q(f) [dB] 10 0 10 20 0 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.1 f
pic
= 0.032 [Hz]
60 50 40 T(f) [dB] 30 20 10 0 0 0.01 0.02 0.03 0.04 0.05 0.06 frquence [Hz] 0.07 0.08 0.09 0.1
Fig. 5: Spectres du dbit et de la temprature
L'analyse spectrale complte par son graphe (gure 5) montre qu'il existe une raie spectrale sur le dbit situe en graphe temporel. bation priodique de priode
f = fpic = 0.032 [Hz ]. 1/fpic 30 [sec] qui
Cela indique la prsence d'une perturn'tait pas du tout perceptible dans le
5 Rsolution d'une quation direntielle
5.1 quation du pendule simple
La mise en quation du pendule simple est traite dans le cours de physique [5]. On y montre que son mouvement est dcrit par une quation direntielle non-linaire d'ordre 2 :
d2 (t) (t) = g sin((t)) = 2 dt L
Dans le cas o l'angle linaire qui est :
(t)
est petit, cette quation peut tre approche par une quation
d2 (t) (t) = g (t) = 2 dt L
5.2 Mise sous forme canonique
Avant de rsoudre numriquement un systme dcrit par une quation direntielle, il faut remplacer cette quation d'ordre
par
quations direntielles d'ordre 1 dont les
16
variables
x1 (t), , xn (t)
sont la variable originale et ses drives successives. Dans notre
cas, cela donne :
x1 (t) (t) (t) x2 (t)
Le systme est alors compltement dcrit par :
dx1 (t) dt dx2 (t) dt
(t) = x2 (t) (t) = g sin(x1 (t)) L
Sous Matlab, la description du systme doit se faire dans un chier qui fournit les
*.m dcrivant la fonction
drives sous la forme d'un vecteur colonne. Dans notre cas, cela donne :
chier EDpendule.m :
% Equation differentielle d'un pendule simple function dx = EDpendule(t, x) ; g = 9.81 ; longueur = 1.0 ; theta = x(1) ; ddtheta = -g/longueur*sin(theta)) ; dx = [dtheta ; ddtheta] ;
Dans une approche plus gnrale, les paramtres (g et direntielle. De plus, sachant que le vecteur comprendre). L'illustration en est donne dans le chier suivant crit pour l'approximation linaire du pendule :
dtheta = x(2) ;
L)
du pendule peuvent tre dnis
dans le programme principal et passs en arguments la fonction dcrivant l'quation
contient les variables
et
l'criture de
la fonction peut se faire dans une forme plus compacte (mais peut-tre moins vidente
chier EDpendlin.m :
% Equation differentielle lineaire function dx = EDpendlin(t, x, options, param) ; g = param(1) ; longueur = param(2) ; dx1 = x(2) ; dx2 = -g/longueur*x(1) ; dx = [dx1 ; dx2] ;
5.3 Intgration numrique
L'intgration numrique d'un systme direntiel se fait l'aide de divers algorithmes d'intgration qui sont fournis par Matlab. L'algorithme le plus frquemment utilis est celui de Runge-Kutta qui, dans Matlab, est dsign sous le nom de Equation, approximation d'ordre 4 et 5).
ode45 (Ordinary Dierentiel
17
A l'appel de
ode45,
il faut donner le nom du chier contenant l'quation direntielle, le
domaine temporel dsir pour la rsolution et les conditions initiales. On peut, si on le souhaite, modier les options de rsolution et fournir des paramtres :
ode45('fichierED.m',[tmin tmax],CI,options,param)
La rsolution du pendule simple est donne ci-dessous. Dans un but de comparaison, on y a ajout la solution linaire qui est trace en traitill dans la gure 6.
Pendule simple 60 40 (t) [deg] 20 0 20 40 60 0 2 4 6 8 10 12 14 16 18 20
2 (t) [rad/sec]
10 temps [sec]
12
14
16
18
20
Fig. 6: volution d'un pendule simple
% Analyse d'un pendule simple clear all ; close all ; format compact ; format short g ; % conditions initiales pos0 = 60*pi/180 ; % radians vit0 = 0 ; % domaine temporel t0 = 0 ; tmax = 20 ; % resolution numerique de l'equation non lineaire % sans passage de parametres [tt1, Xs1] = ode45('EDpendule.m',[t0 tmax],[pos0 vit0]) ; pos1 = Xs1( :,1)/pi*180 ; % degres vit1 = Xs1( :,2) ; % parametres g = 9.81 ; longueur = 1 ; param(1) = g ; param(2) = longueur ; % resolution numerique de l'equation lineaire
18
% avec passage de parametres [tt2, Xs2] = ode45('EDpendlin.m',[t0 tmax],[pos0 vit0],[],param) ; pos2 = Xs2( :,1)/pi*180 ; % degres vit2 = Xs2( :,2) ; % tracage figure ; subplot(2,1,1) ; plot(tt1,pos1,tt2,pos2,'--') ; title('Pendule simple') ; ; ylabel('\theta (t) [deg]') ; subplot(2,1,2) ; plot(tt1,vit1,tt2,vit2,'--') ; ylabel('\omega (t) [rad/sec]') ; xlabel('temps [sec]') ; print -deps pendule.eps
6 Mouvement d'une charge lectrique
6.1 quations fondamentales
On considre ici le mouvement d'une charge magntique
place dans des champs lectrique
et
constants et uniformes (gure 7).
B
Z Y
q v
X
Fig. 7: Charge dans un champ lectromagntique
Les lois de Newton et de l'lectromagntisme [5] permettent alors de dcrire le mouvement de la charge
de masse
= qE +qvB F = m a = mv
Cette quation vectorielle s'crit galement sous la forme :
v x Ex vx Bx y = q Ey + q vy By m v v z Ez vz Bz
19
Eectuant le produit vectoriel, cela donne :
vy Bz vz By Ex v x y = q Ey + q vz Bx vx Bz m v vx By vy Bx Ez v z
On voit ainsi que le mouvement de la charge est dcrit par 3 quations direntielles couples d'ordre 1.
6.2 Description matricielle
Dnissant un vecteur d'tat
Xs
et sa drive
Xs v x y Xs = v v z
vx Xs = vy vz
l'quation du mouvement s'crit :
v x E X (2) Bz Xs (3) By q x q s y = E X Xs = v + y s (3) Bx Xs (1) Bz m m v z Ez Xs (1) By Xs (2) Bx
Ce qui, en terme d'quation matricielle, devient :
q q s (1) X Bz m By 0 +m Xs (1) q q Bz 0 +m Bx Xs (2) + X s = Xs (2) = m q q s (3) By m Bx 0 Xs (3) +m X
q m q m q m
Ex Ey 1 Ez
Une approche analytique du problme permet de montrer que la particule oscille sinusodalement avec une pulsation proportionnelle l'amplitude du champ magntique :
n =
q B m
6.3 Description d'tat d'un systme linaire
La description matricielle ci-dessus porte le nom de reprsentation d'tat d'un systme et correspond l'criture conventionnelle gnrale suivante :
X s = A Xs + B u Y = C Xs + D u
dans laquelle :
Xs est le vecteur d'tat du systme, Y sa sortie, A la matrice d'tat dcrivant le systme,
20
B le vecteur de commande, u le signal de commande, C et D les matrices dcrivant u(1, 1).
la sortie
Y. Xs (3, 1), A(3, 3), Y est constitu des 3 composantes C (3, 3) est alors une matrice unit de
Dans le cas de notre problme, les dimensions des vecteurs et matrices sont
B (3, 1)
et
Admettant que le vecteur de sortie
de la vitesse, on a videmment dimension 3 et le vecteur
Y = Xs . La D(3, 1) est nul.
matrice
6.4 Calcul de la trajectoire
Ce systme tant linaire, le calcul de l'volution temporelle peut se faire sans intgration numrique. Ce qui, dans Matlab, se fait de la manire suivante :
% Mouvement d'une charge dans un champ electromagnetique clear all ; close all ; format compact ; % constantes q = 1.602e-19 ; m = 9.109e-31 ; Bx = 0.0 ; By = 0.01 ; Bz = 0.0 ; Ex = 1.0 ; Ey = 0.0 ; Ez = 0.0 ; % description d'etat : A = q/m * [ 0 -Bz +By +Bz 0 -Bx -By +Bx 0] ;
B = q/m*[Ex ; Ey ; Ez] ; % matrices de sortie : C = [1 0 0 0 1 0 0 0 1] ; D = zeros(3,1) ; % representation d'etat du systeme sys = ss(A,B,C,D) ;
21
% calcul de la reponse indicielle (=> u = 1) : tmax = 1e-8 ; kmax = 1000 ; dt = tmax/kmax ; tt = 0 :dt :tmax ; y = step(sys,tt) ; % extraction des 3 composantes de la vitesse Vx = y( :,1) ; Vy = y( :,2) ; Vz = y( :,3) ;
Comme le vecteur de sortie
contient les 3 composantes de la vitesse de la particule et
que l'on dsire connatre sa trajectoire, il est possible de passer des vitesses aux positions par intgration numrique. Ce qui donne pour la coordonne
x(t)
x(t) =
0
vx (t) dt
x[n] =
k=0
vx [k ] t n = 0 Npoints
Dans Matlab, cette somme cumulative est ralise par la commande qu'il existe galement la fonction prcise) :
cumtrapz
cumsum(on
notera
qui ralise une intgration trapzodale plus
% calcul des positions (integration d'ordre 0 => cumsum) xt = dt*cumsum(Vx) ; yt = dt*cumsum(Vy) ; zt = dt*cumsum(Vz) ; % tracage des positions figure ; subplot (3,1,1) ; plot (tt,xt) ; title('Dplacement de la particule') ; ylabel('x(t)') ; subplot (3,1,2) ; plot (tt,yt) ; ylabel('y(t)') ; subplot (3,1,3) ; plot (tt,zt) ; ylabel('z(t)') ; xlabel('temps [sec]') ;
Les rsultats obtenus sont prsents dans les gures 8 et 9. La visualisation 3D de la trajectoire est ralise simplement avec les commandes
plot3(xt,yt,zt) ; axis square ; grid on ;
22
On peut encore ajouter les vecteurs
0,'x').
Ex
et
By
avec la commande
quiver3(x,y,z, u,v,w,
Pour plus d'informations, on consultera avantageusement l'aide Matlab.
Les commandes ayant servi au traage de la gure 9 sont donnes ci-dessous sans plus de commentaires :
figure ; plot3(xt,yt,zt) ; axis square ; grid ; hold on ; axis([-5e-8,15e-8,-1,1,0,1e-6]) ; h1=quiver3(5e-8,0,0, -5e-8,0,0, 0,'v') ; set(h1,'LineWidth',2) ; text(3.5e-8,-0.15,0, 'E_x') ; h2=quiver3(0,0.5,0, 0,-0.5,0, 0,'v') ; set(h2,'LineWidth',2) ; text(-2e-8,0.4,0, 'B_y') ; title('Trajectoire de la particule') ; print -deps qtraject.eps
15 10 x(t) 5 0 5 1 0.5 y(t) 0 0.5 1 1.5 1 z(t) 0.5 0 0 6 x 10 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 x 10 1
8
% tracage 3D % choix des axes % vecteur E = Ex % vecteur en trait gras % legende pour E % vecteur B = By % vecteur en trait gras % legende pour B
x 10
Dplacement de la particule
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9 x 10
1
8
0.1
0.2
0.3
0.4
0.5 temps [sec]
0.6
0.7
0.8
0.9 x 10
1
8
Fig. 8: Coordonnes d'une particule charge dans un champ lectrique
E = (Ex ; 0; 0)
et
magntique
B = (0; By ; 0)
23
Trajectoire de la particule
x 10 1
0.8
0.6
0.4
0.2
0 1 0.5 0
By
Ex 10 5
15
0.5 1 5
x 10
Fig. 9: Trajectoire d'une particule charge dans un champ lectrique
E = (Ex ; 0; 0)
et
magntique
B = (0; By ; 0)
24
Rfrences
[1] D. M. Etter : Engineering problem solving with Matlab, Prentice Hall, 1993 27, 30 [2] W. J. Palm III : Introduction to Matlab for Engineers, WCB McGraw-Hill, 1998 [3] M. Etique : Introduction au logiciel Matlab, cours bloc, eivd, 2001 1 [4] M. Correvon :Introduction Matlab 5.2 et Simulink 2.2, Laboratoire de Systmes Electromcaniques, eivd, 2002 1 [5] E. Lambert : Cours de physique, eivd, 1999 16, 19 [6] www.mathworks.com : site ociel de Matlab [7] www.scientic.de : site europen de Matlab [8] www.sysquake.com : site d'un logiciel similaire Matlab dont la version dmonstration est gratuite [9] www-rocq.inria.fr/scilab/ : site d'un logiciel libre de la communaut Linux et comparable Matlab [10] www.math.siu.edu/Matlab/tutorials.html : site proposant des tutoriaux intressants et avancs illustrant les possibilits de Matlab
25
7 Exercices
7.1 Rsolution d'un circuit lectrique
tant donn le circuit de la gure 10, calculez les valeurs ecaces et phases des courants et la tension aux bornes de
R1
et
lorsque
Ug = 220 [V ], L = 1 [mH ],
R1 = 100 [], C1 = 10 [F ],
R2 = 200 [], C2 = 100 [nF ]
et que la frquence du gnrateur vaut 50Hz et 250Hz. Plutt que de modier la valeur de la frquence dans le chier, utilisez la commande
input :
frequence = input ('Entrez la frequence du generateur : ') ;
R1 L C2
Ug
C1
R2
Fig. 10: Rsolution d'un circuit lectrique
7.2 Rponses frquentielle et temporelle d'un circuit
On dsire raliser et analyser un ltre passif passe-bas d'ordre 2 : 1. Dessinez le schma du ltre constitu d'une rsistance R, d'une inductance L et d'une capacit C. 2. Calculez littralement sa fonction de transfert. 3. Admettant
L = 10 [mH ], C = 10 [nF ] et R = 500, 1000, 2000 [], calculez et tracez
les graphes similaires ceux des gures 2 et ??. Adaptez le domaine frquentiel celui du circuit. 4. Faites de mme pour les rponses temporelles (gure ??). Si ncessaire, modiez le domaine temporel.
7.3 Rponses frquentielle et temporelle d'un ltre
La ralisation de ltres quelconques se fait partir d'une cellule de base biquadratique dcrite par un polynme d'ordre 2 au numrateur et au dnominateur. Suivant la valeur des coecients du polynme du numrateur, on obtiendra un ltre passe-bas, passe-bande, passe-haut et rjecteur de bande. Des ltres d'ordre suprieur 2 sont raliss en plaant en srie des cellules d'ordre 1 ou 2. Ainsi, un ltre d'ordre 5 sera ralis par la mise en cascade d'une cellule d'ordre 1 et de 2 cellules d'ordre 2.
26
Sachant que les cellules d'ordre 2 de type passe-bas sont gnralement dcrites comme suit :
HP B (j ) = Au 1+
o
1
1 Q0 j n
j 2 n
Au
est le gain,
Q0
le facteur de qualit et
la pulsation caractristique de la cellule
d'ordre 2, on demande : 1. crivez la fonction de transfert de chaque cellule ralisant un ltre passe-bas d'ordre 6 sachant que a) les 3 cellules ont la mme pulsation caractristique b) les facteurs de qualit sont
n = 1000 [rad/sec] ;
et
Q01 = 0.5176, Q02 = 0.7071
Q03 = 1.9319.
2. Calculez la fonction de transfert globale en eectuant le produit des 3 fonctions de transfert ; achez le rsultat avec la commande 3. Tracez sur un mme diagramme de Bode : a) l'amplitude des rponses frquentielles de chaque cellule en traitill ; b) la rponse frquentielle du ltre complet en trait continu ; c) une droite horizontale situe au niveau 3dB en pointill. 4. Par programmation, recherchez la pulsation de coupure de ce ltre ; que vaut-elle ?
zpk.
(la pulsation de coupure correspond une amplitude diminue d'un facteur rapport sa valeur maximum). 5. Tracez la rponse indicielle du ltre.
par
Remarque :
Les valeurs proposes pour la ralisation du ltre correspondent celles d'un
ltre, dit de Butterworth, dont la rponse frquentielle est plate au maximum dans la bande passante.
7.4 Portance d'une aile
Lors des essais de portance d'une aile en fonction de son inclinaison, on a mesur les valeurs suivantes [1] :
Angle [deg] Force [N]
-5 -2.80
0 1.08
5 5.00
10 8.80
15 11.9
17 12.4
19 12.4
21 11.8
1. Tracez le graphe de la portance. Mettez en valeur ce graphe l'aide d'un titre et d'informations sur l'abscisse et l'ordonne. 2. Recherchez une loi polynomiale reprsentant au mieux cette caractristique. Au lieu de modier l'ordre du polynme dans le chier lui-mme, utilisez la commande
input.
3. Sur un mme diagramme, tracez les points mesurs avec le symbole 'o' et en continu, la courbe polynomiale pour un angle compris entre -10 et + 25 degrs. 4. Sachant que la mesure de la force est entache d'une erreur de courbe polynomiale. 5. Quel est le polynme qui vous parat le mieux adapt pour reprsenter cette aile ?
0.5 [N ],
reprenez ce
diagramme et tracez les points mesurs avec les domaines d'erreur et, en continu, la
27
7.5 Modlisation de la caractristique d'une diode
Une diode semi-conductrice est un lment lectronique dont le fonctionnement peut tre reprsent par l'quation suivante :
Id = Is eUd /nVT 1
avec :
Id Ud Is VT = kT /q n
courant traversant la diode tension mesure aux bornes de la diode courant de saturation inverse potentiel thermique valant 26 mV @ T = 300 K facteur technologique (1
< n < 1.8
pour les diodes Si)
Lorsque la diode est conductrice, cette loi s'crit plus simplement :
Id = Is eUd /nVT
Caractristique dune diode 0.18 2
Caractristique dune diode Is = xxx eta = xxx Rd = xxx 0
0.16
0.14 2 0.12
Courant Id [A]
Log10(Id) [A] 0 0.2 0.4 0.6 Tension Ud [V] 0.8 1
0.1
0.08
0.06 8 0.04
0.02
10
0 12 0 0.2 0.4 0.6 Tension Ud [V] 0.8 1
Fig. 11: Modlisation de la caractristique d'une diode
On dit alors que le courant crot exponentiellement avec la tension applique la diode ou, de manire inverse, que la tension aux bornes de la diode crot logarithmiquement avec le courant :
Ud = n VT ln
Id Is
28
Lorsque le courant traversant une diode relle est lev, on doit encore tenir compte d'une chute de tension ohmique due la rsistance de liaison entre la diode idale et les ls de connexion. La chute de tension mesure aux bornes d'une diode relle est alors dcrite par :
Ud = n VT ln
Id Is
+ Rd Id
Sachant que l'on a mesur sur une diode les tensions et courants prsents dans le tableau suivant :
Ud [V ] Id Id
0.2 0.6 nA 1 nA
0.3 15 nA 10 nA
0.4 350 nA 10 nA
0.5 9.0 5
0.6 220 5
0.7 5.5 mA 5 mA
0.87 137 mA 5 mA
A A
A A
1. Avec Matlab, calculez et dessinez les graphes de la gure 11. 2. Indiquez les domaines d'erreur avec la commande 3. Ajustez successivement les paramtres traitill. 4. Achez sur le graphe la valeur des paramtres
errorbar.
Rd Rd
pour obtenir la courbe en
Is
et
pour obtenir la droite en pointill
passant au mieux parmi les points mesurs puis variez
Is , n
et
nalement trouvs.
5. Quelle(s) mthode(s) mathmatique(s) pourriez-vous utiliser pour trouver automatiquement ces paramtres ?
7.6 Chute libre
On considre dans cet exercice un parachutiste qui saute d'un ballon vitesse nulle et descend en chute libre. Les variables utiles la rsolution sont sa position vers le bas, sa vitesse
y (t)
oriente
v (t)
ou
y (t)
et son acclration
a(t)
ou
y (t).
L'quation du mouvement du parachutiste dcoule de la loi de Newton :
my (t) = m g Fair (t)
On considre gnralement que la force de frottement arodynamique est proportionnelle au carr de la vitesse ; on a alors :
Fair (t) = + signe (v (t)) v (t)2
Admettant que : la masse
du parachutiste est de 80 [kg],
la vitesse maximum atteinte est d'environ 200 [km/h], crivez un programme Matlab rpondant aux points suivants : 1. Sachant que le frottement de l'air compense exactement le poids du parachutiste lorsque la vitesse maximum est atteinte, calculez le coecient dynamique. 2. Rsolvez l'quation direntielle de l'volution du parachutiste et dterminez le temps et la hauteur ncessaires pour atteindre le 98% de la vitesse limite.
du frottement aro-
29
7.7 Saut l'lastique
Dans ce qui suit, on se propose d'aborder le problme du saut l'lastique par une modlisation progressive [1]. Les paramtres ncessaires sa description sont : la masse le coecient
m = 80 [kg ] du sauteur, = 0.25 [N/(m/s)2 ] du frottement arodynamique la longueur L = 150 [m] de l'lastique, le coecient d'lasticit k = 10 [N/m] de l'lastique, le coecient de frottement interne = 7 [N/(m/s)] de l'lastique. y (t), la vitesse v (t) ou y (t), l'acclration a(t) ou y (t).
Les variables utiles la rsolution du problme sont : la position
L'quation du mouvement du sauteur dcoule de la loi de Newton :
my (t) = m g Fair (t) Felast (t)
avec :
Fair (t) = + signe (v (t)) v (t)2
k (y (t) L) + v (t) si y (t) > L
Felast (t) =
si y (t) L
crivez un programme Matlab rpondant aux points suivants : 1. Rsolvez l'quation direntielle en considrant un lastique sans frottements internes (
= 0).
2. Tracez les graphes de position, vitesse et acclration ; vous paraissent-ils raisonnables ? 3. Rsolvez l'quation direntielle prenant en compte les frottements de l'lastique. 4. Tracez les graphes ; quelle est l'importance des frottements internes ? 5. A quel instant et quelle vitesse, l'lastique commence-t-il se tendre ? 6. Que valent la vitesse maximum et l'acclration maximum ? A quels instants apparaissentelles ?
7.8 Particule dans un champ lectromagntique
m = 50 1031 [kg ] et de charge q = 8 1019 [C ] se dplaant dans un champ lectrique uniforme E = (1; 1; 1) [V /m] et un champ magntique uniforme B = (0.0; 0.1; 0.0) [T ]. Sachant qu'en l'instant t = 0, la particule quitte l'origine
On considre une particule de masse du rfrentiel avec une vitesse nulle : 1. Calculez les composante de la vitesse et la position de la particule au cours du temps. 2. Tracez des graphes similaires ceux de la gure 12. 3. Sur un nouveau graphe 3D, dessinez les vecteurs
et
B.
30
1 0.8 0.6 0.4 0.2
x 10
Trajectoire y(x) 2.5 2 1.5 1 0.5
x 10
Trajectoire z(x)
0 8
0 x 10
2
7
0 8
0 x 10
2
7
x 10 3 2 1 0 1 x 10
5
2.5 2 1.5 1 0.5
6
x 10
Trajectoire z(y)
0.5 0 1
1 0 x 10
0.2
0.4
0.6
0.8 x 10
1
5
Fig. 12: Dplacement d'une particule
31
8 Liste de quelques fonctions Matlab
Cette liste, qui n'est de loin pas exhaustive, regroupe les commandes et fonctions les plus usuelles. Elle illustre galement la richesse des possibilits oertes. Pour plus de dtails, il faut videmment consulter l'aide en ligne oerte par Matlab et proter des nombreux exemples qui y sont proposs.
8.1 Environnement Matlab
8.1.1 Commandes et fonctions
help what type lookf which demo path cedit version whatsnew info why
Aide Liste les chiers *.m prsents dans le rpertoire courant Imprime un chier Recherche d'une entre dans l'aide Localise les fonctions et chiers Lance la dmonstration Dnition des chemins d'accs aux chiers et fonctions Paramtres d'dition d'une ligne de commande Ache le numro de version de Matlab Ache les chiers README de la toolbox Informations sur Matlab et Mathworks Fournit une rponse alatoire
8.1.2 Informations sur l'espace de travail
who whos save load clear close pack size length disp
Ache les variables courantes Ache les variables courantes avec leurs dimensions Sauve l'espace de travail sur disque Restaure l'espace de travail partir du disque Eace les variables et fonctions de la mmoire Ferme la fentre courante Rorganise la mmoire Renvoie la taille d'une matrice Renvoie la longueur d'un vecteur Ache une matrice de texte
8.1.3 Commandes systme
cd pwd dir, ls delete getenv ! diary
Change le rpertoire courant Ache le rpertoire courant Liste les chiers Suppression de chiers Renvoie la variable d'environnement Appelle et excute une commande systme Sauvegarde le texte d'une session Matlab
32
8.1.4 Fentre de commandes
clc home format echo more quit, exit Matlabrc
Eace le contenu de la fentre de commandes Place le curseur en haut de l'cran Dnit le format d'achage Ache les instructions excutes par un script Contrle de l'achage pagin Ferme Matlab Fichier de dmarrage
8.1.5 Caractres spciaux
[ ] ( ) . .. ... , ; % : !
Dnition de matrices ou vecteurs ; enserre les arguments de sortie des fonctions Gre la priorit des oprations ; enserre les arguments d'entre des fonctions Point dcimal rpertoire parent Indique une ligne suite Sparateur d'arguments ou d'instructions Fin de lignes (matrices) ou suppression de l'achage Commentaires Manipulation de sous matrices ou gnration de vecteurs Appel systme
8.1.6 Oprateurs logiques
< & > | <= ~ >= xor == ~= =
Infrieur Et Suprieur Ou Infrieur ou gal Non Suprieur ou gal Ou exclusif Egal Dirent de Assignation
33
8.1.7 Variables prdnies, dure, date
ans eps realmax realmin pi i, j inf NaN flops nargin nargout computer date clock etime tic, toc cputime
Rponse une expression sans assignation Prcision de la virgule ottante Plus grand nombre ottant Plus petit nombre ottant positif
1
Not a Number Nombre d'oprations ottantes par seconde Nombre d'arguments d'entre d'une fonction Nombre d'arguments de sortie d'une fonction Type du calculateur Date courante Horloge Dure d'excution Ache le dbut et la n d'excution Temps CPU coul
8.1.8 Fonctions logiques
exist any all find isnan isinf finite isieee isempty issparse isstr strcmp
Teste l'existence d'une variable ou d'une fonction Vrai si un lment est vrai Vrai si tous les lments sont vrais Cherche l'indice des lments non nuls Vrai si l'lment n'est pas un nombre Vrai pour tout lment inni Vrai pour tout lment ni Vrai si la reprsentation est au format IEEE Vrai pour une matrice vide Vrai pour une matrice creuse Vrai pour une chane de caractres Comparaison de deux chanes
8.1.9 Instructions de contrle
if, else, elseif for while end break return error
Test conditionnel Instruction de rptition avec compteur Instruction de rptition avec test Terminaison de if, for et while Interrompt une boucle Retour Ache un message et interrompt l'excution
34
8.1.10 Instructions spciques
input keyboard menu pause function eval feval global nargchk
Indicateur d'attente d'entre Considre le clavier comme un chier script Gnre un menu de choix pour l'utilisateur Attente Dnition de fonction Excute une chane de caractre Excute une fonction dnie dans une chane Dnit les variables comme globales Valide le nombre d'arguments d'entre
8.2 Fonctions mathmatiques
8.2.1 Fonctions lmentaires
abs angle sqrt real imag conj gcd lcm round fix floor ceil sign rem exp log log10 log2 pow2
Valeur absolue ou module d'une grandeur complexe Argument d'une grandeur complexe Racine carre Partie relle Partie imaginaire Complexe conjugu PGCD PPCM Arrondi l'entier le plus proche Troncature Arrondi vers le bas Arrondi vers le haut Signe de Reste de la division Exponentielle Log nprien Log dcimal Log base 2 Calcule 2 la puissance y
8.2.2 Fonctions trigonomtriques
sin, cos, tan, cot, sec, csc, asin, acos, atan, acot, asec, acsc, sinh, cosh, tanh, coth, sech, csch, asinh acosh atanh acoth asech acsch
35
8.2.3 Fonctions prdnies
bessel beta gamma rat rats erf erfinv ellipke ellipj expint
Fonction de Bessel Fonction beta Fonction gamma Approximation par un rationnel Format de sortie pour rat Fonction erreur erf Inverse de erf Intgrale elliptique complte Fonction elliptique de Jacobi Fonction intgrale exponentielle pour n=1
8.3 Matrices et algbre linaire
8.3.1 Oprateurs sur les matrices
+, -, *, ^ /, \ '
Addition, Soustraction, Multiplication, Puissance Division droite, Division gauche Transposition conjugue
8.3.2 Oprateurs sur les composantes matricielles
+, -, .*, . ^ ./, .\ .'
Addition, Soustraction, Multiplication, Puissance Division droite, Division gauche Transposition
8.3.3 Manipulation des matrices
diag rot90 fliplr flipud reshape tril triu .' :
Cration ou extraction de la diagonale Rotation de 90 degrs Retournement gauche-droit Retournement haut-bas Redimensionnement Partie triangulaire infrieure Partie triangulaire suprieure Transposition Conversion matrice -> vecteur
36
8.3.4 Matrices prdnies
zeros ones eye diag toeplitz magic compan linspace logspace meshgrid rand randn hilb invhilb vander pascal hadamard
Matrice de 0 Matrice de 1 Matrice identit Matrice diagonale Matrice de Toeplitz Carr magique Matrice compagnon Vecteurs composantes linairement espaces Vecteurs composantes logarithmiquement espaces Grille pour les graphiques 3D Nombres alatoires rpartition uniforme Nombres alatoires rpartition normale Hilbert Inverse de Hilbert (exact) Vandermonde Pascal Hadamard
8.3.5 Oprations sur les matrices
poly det eig trace inv
Polynme caractristique Dterminant Valeurs propres Trace Inversion
8.3.6 Dcomposition et factorisation de matrices
lu rref chol qr nuls ris null orth eig hess schur cdf2rdf rsf2csf balance qz polyeig svd pinv
Dcomposition LU Rduction de lignes Factorisation de Cholesky Dcomposition QR Moindres carrs non-ngatif Moindres carrs avec covariance connue Noyau Orthogonalisation Valeurs et vecteurs propres Forme de Hessenberg Dcomposition de Schur, Forme complexe diagonale vers forme relle diagonale par blocs Forme relle diagonale par blocs vers forme complexe diagonale Mise l'chelle pour le calcul des valeurs propres Valeurs propres gnralisesv Polynme aux valeurs propres Dcomposition en valeurs singulires Pseudo-inverse
37
8.4 Textes et chanes de caractres
abs blanks eval num2str int2str str2num isstr strcmp upper lower hex2num hex2dec dec2hex
Convertit une chane en valeurs numriques Ascii Cre une chane d'espaces Convertit un texte en code Matlab Convertit un nombre en chane Convertit un nombre entier en chane Convertit une chane en nombre Vrai si l'lment est une chane Comparaison de chanes Conversion en majuscule Conversion en minuscule Convertit une chane hxadcimale en ottant Convertit une chane hxadcimale en entier Convertit un entier en une chane hxadcimale
8.5 Fonctions graphiques
8.5.1 Graphiques 2D
plot loglog semilogx semilogy fill polar bar stairs stem errorbar hist rose compass feather
Dessine le graphe d'une fonction Graphe en chelle log-log Graphe en chelle semi-log (abscisse) Graphe en chelle semi-log (ordonne) Graphe de polynmes 2D remplis Graphe en coordonnes polaires Graphe en barres Graphe en marches d'escalier Graphe de raies Graphe avec barres d'erreur Histogramme Histogramme en coordonnes polaires Reprsentation de vecteurs partir de l'origine Reprsentation de vecteurs sur un axe linaire
8.5.2 Annotation de graphiques
title xlabel ylabel zlabel grid text gtext ginput
Titre du graphique Lgende pour l'abscisse Lgende pour l'ordonne Lgende pour la cote Dessin d'une grille Texte Placement de texte avec la souris Entre graphique par la souris
38
8.5.3 Contrle des fentres graphiques
figure gcf clf close hold ishold subplot axes gca axis caxis whitebg cinvert
Ouvre une fentre graphique Retourne le numro de la gure courante Eace la gure courante Ferme la gure courante Gre la surimpression Etat de la surimpression Sous fentres graphiques Axes en position arbitraire Retourne le numro des axes courants Contrle l'apparence et l'chelle des axes Contrle l'chelle des axes et de la pseudocouleur Dessine sur fond blanc Vido inverse
8.5.4 Sauvegarde et copie graphique
print printopt orient
Imprime ou sauve un chier Conguration de l'imprimante Orientation paysage ou portrait
8.5.5 Objets 3D
sphere cylinder peaks
Gnration de sphres Gnration de cylindres Dmonstration
8.5.6 Animations
moviein getframe
movie Initialise l'espace mmoire pour l'animation Enregistre une image pour l'animation Joue l'animation
8.5.7 Apparence des graphiques
view viewmtx hidden shading specular diffuse surfnorm colormap brighten spinmap rgbplot hsv2rgb rgb2hsv
Spcie l'angle de vue Matrice de transformation Gre les lignes caches Mode de remplissage Rectance d'une surface Rectance d'une surface Calcule la surface normale Table de correspondances couleurs Surbrillance ou sous brillance pour colormap Change colormap de manire cyclique Dessine la colormap Conversion hsv vers rgb Conversion rgb vers hsv
39
8.5.8 Graphiques tridimensionnels
mesh meshc meshz surf surfc surfl plot3 plot3 contour contourc contour3 clabel pcolor quiver image waterfall slice
Surface maille Combinaison mesh + dessin des qui-niveaux Surface maille avec plan de rfrence Surface 3D facettes Combinaison surf + dessin des qui-niveaux Surface 3D facettes avec clairage Dessin de lignes et points en 3D ll3 Graphe de polynmes 3D remplis Dessin 2D des qui-niveaux Calcul des valeurs utilises par contour Dessin 3D des qui-niveaux Etiquettes des qui-niveaux (contours) Dessine en pseudocouleur Achage du gradient sous forme de ches Ache une image Reprsentation chute d'eau Visualisation en volume
8.5.9 Oprations sur les objets graphiques
uicontrol uimenu set get reset delete drawno
Cration d'un interface de contrle utilisateur Cration d'un interface menu utilisateur Dnit les proprits d'un objet Lit les proprits d'un objet Rinitialise les proprits d'un objet Supprime un objet Force les vnements graphiques en attente
8.6 Oprations sur les polynmes
poly roots polyval polyvalm conv deconv residue polyfit polyder
Construit un polynme partir des racines Calcul des racines Valeur d'un polynme en un point Valeurs d'un polynme en une matrice de points Multiplication de deux polynmes Division d'un polynme par un autre Dcomposition en lments simples et rsidus Polynme d'approximation Direntiation
40
8.7 Analyse de donnes et statistiques
8.7.1 Analyse de donnes par colonne
max min mean median std sort sum prod cumsum cumprod hist
Valeur max Valeur min Valeur moyenne Valeur mdiane Ecart type Tri en ordre croissant Somme des lments Produit des lments Vecteur des sommes partielles cumules Vecteur des produits partiels cumuls Histogramme
8.7.2 Analyse et traitement des signaux
corrcoef cov filter filter2 cplxpair unwrap nextpow2 fft ffr2 ift ifft2 fftshift
Coecients de corrlation Matrice de covariance Fitrage monodimensionnel Filtrage bidimensionnel Tri en paires complexes Suppression des sauts de phase Puissance de 2 immdiatement suprieure FFT monodimensionnelle (frquences de 0 1) FFT bidimensionnelle FFT inverse FFT inverse FFT (frquences de -1/2 1/2)
8.8 Intgration, interpolation et et drivation numriques
8.8.1 Intgration numrique
quad quad8 trapz
Intgrale de Simpson Intgrale de Newton-Cotes Mthode des trapzes
8.8.2 Interpolation
spline interp1 interp2 interpft griddata
Interpolation spline cubique Interpolation monodimensionnelle Interpolation bidimensionnelle Interpolation 1D par FFT Maillage de donnes
41
8.8.3 Dirences nies
diff gradient del2
Approximation de la drive Approximation du gradient Laplacien sur 5-points
8.9 Optimisation et quations non linaires
fmin fmins fsolve fzero
Minimisation d'une fonction d'une variable Minimisation d'une fonction de plusieurs variables Rsolution d'un systme d'quations non-linaires Zro d'une fonction d'une variable
8.10 Modlisation et analyse de systmes continus
Les fonctions qui suivent, malgr le fait qu'elles sont trs frquemment utilises dans divers domaines, n'appartiennent malheureusement pas aux fonctions de base. Pour pouvoir les utiliser, il faut acqurir la Control ToolBox !
tf tfdata minreal damp dcgain pzmap roots
Cration d'une fonction de transfert Extraction du numrateur et du dnominateur d'une fonction de transfert Suppression des ples compenss par des zros (simplication algbrique) Frquence propre et amortissement/rsonnance Gain en continu Position des ples et zros dans le plan complexe Racines d'un polynme
8.10.1 Construction d'un modle
ord2 feedback parallel series
Cration d'un modle continu d'ordre 2 Mise en raction (positive ou ngative) d'un systme Connexion parallle de deux modles Connexion srie de deux modles
8.10.2 Rponse temporelle
step impulse initial ltiview
Rponse indicielle Rponse impulsionnelle Condition initiale pour une rponse temporelle Visionneuse pour l'analyse de la rponse de systmes linaires
8.10.3 Rponse frquentielle
bode freqresp linspace logspace nichols ngrids nyquist
Diagramme de Bode Rponse une gamme de frquence Vecteurs linairement espacs Vecteurs logarithmiquement espacs Diagramme de Nichols Grille pour les diagrammes de Nichols Diagramme de Nyquist
42