Vous êtes sur la page 1sur 46

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