Cours Matlab

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 36

UNIVERSITE DE MAROUA

FACULTE DES MINES ET DES INDUSTRIES


PETROLIERES

COURS DE MODÉLISATION ET SIMULATION DES PROCÉDÉS DE


SEPARATIONS ET DE TRANSFORMATION

Niveau : 5 IC Filière : Raffinage et Pétrochimie

Enseignant : Dr. Colince Welba (Chargé de Cours)

1
Chapitre 1. Introduction au logiciel Matlab
• Développé par la société ≪ The MathWorks ≫, MATLAB (matrix laboratoire) est un logiciel
Commercial utilisé à des fins de calcul numérique.
• C’est un langage de programmation de quatrième génération et un environnement de développement.
• MATLAB permet de manipuler des matrices, d'afficher des courbes et des données, de mettre en œuvre des
algorithmes, de créer des interfaces utilisateurs, et peut s’interfacer avec d’autres langages comme le C, C++,
Java, et Fortran.
• Il permet de réaliser des simulations numériques basées sur des algorithmes d'analyse numérique.
• Il peut donc être utilisé pour la résolution approchée d'équations différentielles, d'équations aux dérivées
partielles ou de systèmes linéaires, etc...
• L'objectif de cette partie est premièrement l’apprentissage de ce logiciel parce qu'il est de plus en plus utilisé
dans la recherche scientifique, la simulation des expérimentations des réseaux, en électronique, etc.
• Presque 50% des étudiants de licence et de master utilisent Matlab pendant leurs projets de fin d’étude.

A- Généralités sur Matlab


1 - Interface principale
Au lancement de Matlab, l’interface suivante apparait :

Command window (console d’exécution) : à l’invite de commande « >> », l’utilisateur peut entrer les
instructions à exécuter. Il s’agit de la fenêtre principale de l’interface.
Current directory (répertoire courant) : permet de naviguer et de visualiser le contenu du répertoire courant
de l’utilisateur. Les programmes de l’utilisateur doivent être situés dans ce répertoire pour être visible et donc
exécutable.

2
Workspace (espace de travail) : permet de visualiser les variables définies, leur type, la taille occupée en
mémoire…
Command history : historique des commandes que l’utilisateur a exécutées. Il est possible de faire glisser
ces commandes vers la fenêtre de commande.
Notons que command window est la fenêtre centrale de l’interface, c’est à partir de là que l’utilisateur pourra
lancer les commandes interprétées par Matlab. Le principe est simple et intuitif, le tout est de connaitre les
fonctions appropriées et de respecter leur syntaxe. Premier exemple élémentaire : à l’invite de commande,
taper « 3*5 », puis entrer :
>> 3*5
ans =
15
A la validation de l’instruction, l’interface affiche le résultat de cette dernière. Afin d’alléger l’affichage, un
point-virgule « ; » en fin de commande empêche le renvoie du résultat dans la fenêtre (évidemment
l’instruction est toujours exécutée). Par exemple :
>> 3*5;
>>
Le calcul a été effectué mais le résultat n’est pas affiché..
2 - Premiers pas sur des exemples
Nous proposons en premier lieu un démarrage rapide basé sur un exemple simple. Celui-ci a pour objectif de
montrer comment se pratique Matlab dans une première utilisation basique. Cette section doit donc être
parcourue avec Matlab à côté. Les lecteurs non débutants pourront passer cette section.
2.1 Calcul et tracé d’une fonction sinus
La manipulation commence dans la fenêtre command window, à l’invite de commande :
>> t = [0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6]
t=
Columns 1 through 8
0 0.5000 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000
Columns 9 through 13
4.0000 4.5000 5.0000 5.5000 6.0000
Cette ligne de commande définit un tableau de 13 valeurs (allant de 0 à 6 par incrément de 0.5) nommé «t».
On comprend l’utilité de mettre un « ; » à la fin de la ligne pour éviter l’affichage systématique du résultat des
opérations envoyées. Cela peut devenir très lourd si, par exemple, la taille du tableau est importante.
>> w = 2*pi/6;
>> y = sin(w*t);
Le terme « pi » est une constante prédéfinie et donne donc la valeur de π. Le tableau (ou vecteur) « y », de
même dimension que « t », contient les valeurs résultantes de l’opération appliquée à chaque composante de

3
« t ». « y » représente donc la fonction sinus de période 6 (de pulsation « w »). Il est possible de représenter
graphiquement les points du tableau à l’aide de la fonction suivante :
>> plot (t, y,’*’);
Une nouvelle fenêtre s’ouvre :

2.2 Résolution d’un système d’équations linéaires

4
3 - Les variables
3.1 Aspects élémentaires
Matlab gère de façon automatique les nombres entiers, réels, complexes, les chaînes de caractères…
Ainsi, la déclaration des variables est implicite, et la mémoire nécessaire est automatiquement allouée
lors de la définition de celles-ci. Le symbole d’affectation est le signe « = »
>> x = 4
x=
4
>> x + y
ans =
6
Si l’utilisateur n’affecte pas explicitement le résultat d’une opération à une variable, Matlab l’affecte
automatiquement à la variable « ans ». Concernant le nom des variables, l’interpréteur fait la distinction entre
les minuscules et les majuscules. A la définition d’une variable, celle-ci apparait, accompagnée de quelques
informations, dans la fenêtre Workspace. Il est également possible de connaitre les variables du workspace
(espace de travail) via l’instruction « whos ». Par exemple, après les manipulations précédentes :

La commande « clear » permet de supprimer une variable du workspace (« clear all » les supprime
toutes). Toutes les commandes tapées dans la Command window peuvent être retrouvées et éditées

5
grâce aux touches de direction. Appuyez sur la touche ‘’haut’’ pour remonter dans les commandes
précédentes, et ‘’bas’’ pour redescendre.
3.2 Constantes prédéfinies
Il existe des symboles auxquels sont associés des valeurs prédéfinies. En voici quelques-uns :

6
4.1 Définition d'un vecteur

Un vecteur n’est rien d’autre qu’un tableau de valeurs. Il existe plusieurs façons de créer un vecteur et la plus
simple d’entre elles est de l’écrire explicitement.

L’ensemble des composantes est donné entre crochets et les valeurs sont séparées par un espace (ou une
virgule « , »). Nous avons ici défini un vecteur ligne. Un vecteur colonne est créé en utilisant un point-virgule
« ; » comme délimiteur.

>> v = [1 ; 2 ; 3 ; 4]

v=
1
2
3
4

Bien que simple, cette méthode n’est pas pratique pour définir des vecteurs de taille importante. Une seconde
méthode utilise l’opérateur deux-points « : ». Il permet de discrétiser un intervalle avec un pas constant.
>> v = 0:0.2:1
v=
0 0.2 0.4 0.6 0.8 1
Cette instruction crée un vecteur contenant des valeurs allant de 0 à 1 avec un pas de 0.2. La syntaxe est la
suivante : vecteur = valeur_initial:incrément:valeur_finale. Par défaut, le pas est égal à 1.
>> v = 0:5

v=

0 1 2 3 4 5

7
Enfin, des fonctions prédéfinies permettent de générer des vecteurs automatiquement.

>> v = linspace (0, 10, 1000);

>> v = logspace (-1, 2, 1000);

La première fonction crée un vecteur de 1000 points avec des valeurs allant de 0 à 10 également espacées.
La seconde crée un vecteur de 1000 points sur un intervalle de 10-1 à 102 avec un espacement logarithmique.

On peut accéder aux différents éléments d’un tableau en spécifiant un (ou des) indice(s) entre parenthèses.

v(3) retourne le 3ième élément du vecteur v. L’argument 2:4 permet de sélectionner un bloc d’éléments (ici
du second au quatrième).
4.2 Quelques fonctions utiles
Nous présentons dans ce paragraphe un ensemble de fonctions usuelles liées à l’utilisation des tableaux.
length(v) renvoie la taille du tableau.
max(v) renvoie la valeur maximale du tableau.
min(v) renvoie la valeur minimale du tableau.
mean(v) renvoie la valeur moyenne des éléments du tableau.
sum(v) calcul la somme des éléments du tableau.
prod(v) calcul le produit des éléments du tableau.
sort(v) range les éléments du tableau dans l’ordre croissant.
Toutes les fonctions mathématiques vues au paragraphe I.3.3 sont applicables aux variables de type vecteur.
Dans ce cas, la fonction est opérée sur chacun des éléments du vecteur.

4.3 Définition d'une matrice


La définition d’une matrice est délimitée pas des crochets « [ ] ». Les différents éléments d’une ligne sont
séparés par un espace et les différentes lignes sont séparées par des points-virgules « ; ». Ainsi pour définir
une variable matricielle

8
Matrices particulières
Quelques matrices particulières, et très utilisées, sont définies plus aisément au travers de fonctions. Ces
fonctions prennent en argument les dimensions de la matrice que l’on souhaite construire. Le premier
désigne le nombre de lignes et le second le nombre de colonnes.
La matrice nulle :
>> Z = zeros (2, 3)
Z=
0 0 0
0 0 0

Contrairement aux précédentes, cette dernière fonction prend en argument un vecteur. La taille de la matrice
diagonale est donc déterminée par la taille du vecteur.

9
Extraction de sous-tableaux
Il est souvent utile d'extraire des blocs d'un tableau existant. Pour cela on utilise l’opérateur « : ». Pour cela, il
faut spécifier pour chaque indice la valeur de début et la valeur de fin. La syntaxe générale est donc la suivante
(pour un tableau à deux dimensions) : tableau (début: fin, début: fin).

Construction de matrice par blocs


A partir de matrices et de vecteurs définis préalablement, on peut créer de nouvelles matrices :

Cette opération est réalisée très simplement par la même syntaxe que pour les nombres.
>> N = [M V ; U 0];
Il est impératif que les matrices M, V, U et O aient été définies auparavant. De plus, les blocs composant une
matrice doivent évidemment être de dimension compatible. Si ces conditions ne sont pas respectées, la
commande ne pourra s’exécuter et l’interface affichera une erreur. Nous pouvons mentionner la fonction
blkdiag() qui permet de créer une matrice diagonale à partir des éléments donnés en argument.

4.4 Quelques fonctions utiles


Nous présentons dans ce paragraphe un ensemble de fonctions usuelles liées à l’utilisation des matrices.
10
« size(M) » renvoie les dimensions de la matrice.
« max(M) » renvoie un vecteur-ligne contenant les valeurs maximales associées à chaque colonne.
« min(M) » renvoie un vecteur-ligne contenant les valeurs minimales associées à chaque colonne.
« rank(M) » renvoie le rang de la matrice.
« det(M) » renvoie le déterminant de la matrice.
« diag(M) » extrait la diagonale de la matrice.
« triu(M) » extrait la matrice-triangle supérieure de M. tril donne la matrice-triangle inférieure.
« eig(M) » renvoie un vecteur contenant les valeurs propres de la matrice.
4.5 Opérations sur les matrices
Un des atouts remarquables de Matlab est la possibilité d’effectuer les opérations arithmétiques traditionnelles
de façon naturelle sans avoir à les programmer. Les opérateurs standards sont donc directement applicables
aux matrices. Si la commande entrée ne respecte pas les règles de calcul matriciel (compatibilité des
opérandes), le logiciel renverra une erreur.

11
Les fonctions mathématiques vues au paragraphe I.3.3 traitent également les matrices. Dans ce cas, la fonction
est appliquée à chaque élément. En outre, d’autres fonctions disponibles,
expm logm sqrtm mpower
réalisent quant à elles, des opérations matricielles. Par exemple, les fonctions « exp » et « expm » effectuent
deux opérations tout à fait différentes :

5 - Représentations graphiques
Les bibliothèques de Matlab proposent un très grand nombre de fonctions pour la manipulation d’objets
graphiques. Nous ne présentons ici que quelques principes de base, utiles pour la visualisation de courbes. Si
nous nous concentrons particulièrement sur la représentation graphique à 2 dimensions, il est possible d’aller
bien plus loin : graphismes 3D (courbes, maillages, surfaces…), édition d’IHM (graphical user interface,
GUI), animations… Quelques exemples de représentations 3D sont brièvement présentés.
12
5.1 Graphiques 2D
Comme nous l’avons vu dans l’exemple introductif du paragraphe II.2.1 le tracé d’une courbe s’effectue à
partir de la commande plot(). Celle-ci prend en paramètres deux vecteurs et affiche sur un graphique à
deux axes chaque couple de points (de même indice). Par exemple, plot(x,y) marquera un point pour
chaque couple [x(i),y(i)] avec i allant de 0 à length(x). On représente ainsi les valeurs de y en
fonction des valeurs de x. La fonction renvoie une erreur si x et y ne sont pas de même longueur. Si le premier
vecteur x est omis, y est tracé en fonction de son indice i. Par défaut, chaque point tracé est relié par une droite.
Traçons la fonction sinus dans l'intervalle [ -π,π] avec un pas de 0.01.

Le pas étant faible, la courbe semble parfaitement tracée. Bien évidemment, si l’on diminue le nombre de
points (le pas est augmenté), la courbe apparaitra plus saccadée.
La commande plot prend un troisième argument permettant de spécifier la couleur du tracé et le symbole de
représentation.

13
Il est également possible de tracer plusieurs courbes sur plusieurs fenêtres. Pour cela, une nouvelle fenêtre
(objet graphique figure) doit invoquée avant l’appel à la fonction plot correspondante.
>> plot(x,y)
>> figure(2)
>> plot(x,y2,'r')
D’autres fonctions permettent une représentation différente des données, par exemples sous forme discrète
(stem), d’histogramme (bar), de camembert (pie), d’escalier (stairs), avec échelle logarithmique (semilogx,
semilogy)…
La mise en forme d’une représentation graphique, c’est-à-dire l’insertion de labels, légende, le
dimensionnement des axes, peut être éditée de deux manières. La méthode la plus simple utilise directement
les menus de l’interface de la figure (Edit et Insert). Toutes ces manipulations sont également réalisables à
partir de la Command Window en ligne de commande. Cette seconde méthode est généralement utilisée lors
du développement de programmes. Voici quelques exemples parmi les manipulations les plus simples :
>> xlabel('valeur x')
>> ylabel('valeur y')
>> title('mon graphique')
>> legend('ma courbe')
>> grid on
>> axis([xmin xmax ymin ymax])
5.2 Graphiques 3D
Nous montrons ici les possibilités de Matlab en graphisme 3D sur quelques exemples.
Tracé de courbes dans l’espace
>> t = 0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t)
14
>> grid on
>> axis square
>> xlabel('sin(t)'), ylabel('cos(t)'), zlabel('t')
La fonction prend en argument 3 vecteurs de même taille. Son fonctionnement est similaire à celui de plot.
Elle affiche dans un système d’axe à 3 dimensions les triplets [x(i),y(i),z(i)].

Représentation par maillage dans le plan (x,y)


>> x=[-2:0.1:2];
>> y=[-2:0.1:2];
>> [X,Y]=meshgrid(x,y);
>> colormap([0 0 1]);
>> Z=X.*exp(-X.^2-Y.^2);
>> mesh(X,Y,Z)
>> colormap('default') ;
>> surf(X,Y,Z)
>> xlabel('x'), ylabel('y'), zlabel('Z')
La fonction mesh trace un maillage (séries de lignes entre les points) tandis que la fonction surf trace une
surface. Ces fonctions prennent en argument 2 matrices générées à partir de 2 vecteurs (x et y, pas
nécessairement de même taille) et une matrice Z de dimension (length(y),length(x)). Pour chaque point du
plan (x(i),y(j)), elles affichent la valeur (ou niveau) Z(j,i). Les 2 premières matrices obtenues à l’aide de la
fonction meshgrid définissent tous les points du quadrillage. En fait, le niveau Z(j,i) de chaque point du
maillage est calculé à partir des couples (X(j,i),Y(j,i)). Une quatrième matrice peut être précisée pour définir
une échelle de couleur associée au niveau du maillage. Cette échelle est basée sur une palette de couleurs
prédéfinie par la valeur courante de la variable colormap.

15
6 - Programmation avec Matlab
Dans les précédentes sections, nous avons présenté des séries de commandes lancées depuis la command
window. Pour des calculs complexes et répétitifs, il est préférable (ou plutôt indispensable) de rassembler
l’ensemble des commandes dans un fichier qui constituera le programme à exécuter. On distingue deux types
de fichiers dans Matlab, également appelés m-files : les scripts et les fonctions. Bien que l’environnement de
Matlab propose son propre éditeur (fenêtre Editor), ces fichiers sont de simples fichiers textes avec une
extension .m. Vous pouvez donc utiliser votre éditeur de texte préféré pour créer vos programmes (sans oublier
de modifier l’extension). A partir de Matlab, un m-file est créé ou ouvert, soit depuis le menu Fichier (New >
M-File), soit depuis l’invite en tapant :
>> edit monfichier.m
Un m-file est reconnu, et donc exécutable, s’il se trouve dans le répertoire courant (current directory) ou si le
répertoire contenant est spécifié dans le PATH.
Nous allons voir que Matlab offre la possibilité de réaliser de véritables applications très élaborées. Notons
qu’il utilise un langage de programmation interprété, c’est-à-dire qu’il n’y a aucune phase de compilation et
les instructions du code sont directement exécutées à leur lecture.
6.1 Fichiers SCRIPT
Un fichier script permet regrouper des séries de commandes Matlab. Cela évite d’avoir à saisir plusieurs fois
de longues suites d’instructions. A son lancement, les instructions qu’il contient s’exécutent séquentiellement
comme si elles étaient lancées depuis l’invite de commande. Un script stocke ses variables dans le workspace,
lequel est partagé par tous les scripts. Ainsi, toutes les variables créées dans les scripts sont visibles depuis la
command window et vice versa. Lorsque Matlab détecte une erreur, le programme s’arrête et un message
d'erreur s'affiche à l'écran (avec le numéro de la ligne où l'erreur est détectée).
Editons notre script monfichier.m.

16
Notre script peut ensuite être exécuté, soit en tapant son nom (sans l’extension) à l’invite de commande, soit
en cliquant sur le bouton « run » de l’éditeur (icône avec un triangle vert).
Des annotations peuvent être ajoutées dans le code afin de le commenter. Pour cela, chaque ligne de
commentaires doit être précédée par le caractère %. Les mots suivant ce symbole ne seront pas interprétés.

De manière générale, il est essentiel d’inclure dans le code un nombre conséquent de commentaires. Ils
permettent de documenter un programme et facilitent la relecture, la maintenance de celui-ci.
6.2 Fichiers FUNCTION
Le principe d'une fonction est d'effectuer des opérations à partir d’une ou plusieurs entrées et fournir une ou
plusieurs sorties (résultat). Les variables d’entrées sont des paramètres à spécifier en argument de la fonction,
tandis que les variables de sorties sont des valeurs quelle renvoie. Un m-file function est tout à fait semblable
aux fonctions intégrées de Matlab. Par exemple, la fonction length renvoie la taille du tableau entré en
argument.
>> taille = length(tab);
Un m-file est définit comme une fonction en plaçant en tête du fichier le mot clé function suivit de son
prototype. Un prototype est de la forme
[s1,s2,…] = nomfonction(e1,e2,…)

17
Le membre de gauche regroupe les sorties renvoyées par la fonction et les variables entres parenthèses sont
les entrées. Le nom du fichier doit être identique au nom de la fonction. Ecrivons dans l’éditeur notre fonction
qui permet de calculer l’aire et le volume d’une sphère pour un rayon donné.

L’appel de la fonction s’effectue de la même façon que pour les fonctions prédéfinies dans le logiciel

>> [aire,volume] = mafonction(2);


>> aire
aire =
50.2655
>> volume
volume =
33.5103
Le point fondamental qui différencie une fonction d’un script est le fait que les variables internes soient
locales, c’est-à-dire que les variables définies dans une fonction n’existent que dans celle-ci. De plus, les
variables du workspace ne sont pas visibles depuis une fonction. Ainsi, dans notre exemple, les paramètres A,
V et r ne sont pas connues dans le workspace.
>> whos
Name Size Bytes Class Attributes
aire 1x1 8 double
volume 1x1 8 double
Pour pouvoir utiliser une variable partagée par le workspace et une (voire des) fonction(s), celle-ci doit être
déclarée comme global à la fois dans la command window et dans la (les) fonction(s). Ajoutons à notre
fonction
global x;
x = r;
et écrivons les lignes suivantes dans la command window

>> global x;
>> x = 10;
>> [aire,volume]=mafonction(3);
>> x
x =
3
On constate donc que la variable globale x, a été modifiée lors de l’appel de la fonction.
Notons toutefois que l’utilisation de variables globales est déconseillée, car souvent source d’erreurs
d’exécution, et doit donc être minimisée.
18
Des instructions permettent de contrôler les arguments d’entrées et de sorties d’une fonction:
nargin retourne le nombre d’arguments d’entrée
nargout retourne le nombre d’arguments de sortie
nargchk vérifie le nombre d’arguments d’entrée
inputname retourne le nom d’un argument d’entrée

6.3 Opérateurs relationnels et logiques


Comme dans tout langage de programmation, Matlab possède des opérateurs qui permettent d’établir des
expressions renvoyant en résultat une valeur logique, c’est-à-dire 0 ou 1. Ces expressions logiques sont
généralement utilisées dans les structures de contrôle présentées dans la prochaine section.
Opérateurs relationnels
Ces opérateurs comparent deux opérandes de même dimension :
== égal à
~= différent de
> strictement supérieur à
>= supérieur ou égal à
< strictement inférieur à
<= inférieur ou égal à
Lorsque deux scalaires sont comparés, le résultat est un scalaire qui vaut 1 si la relation est vrai et 0 si elle est
fausse. Si deux matrices sont comparées, le résultat est une matrice de même dimension constituée de 1 et 0,
la relation étant testée élément par élément.
Opérateurs logiques
Ces opérateurs effectuent un test logique entre deux variables logiques de même dimension:
& et
| ou
~ non
xor ou exclusif
any(x) retourne 1 si un des éléments de x est non nul
all(x) retourne 1 si tous les éléments de x sont nuls
Le résultat vaut 1 si le test est vrai et 0 s’il est faux. Pour des matrices, l’opération s’effectue aussi élément
par élément. Concernant les opérandes, une valeur est considérée comme fausse (=0) si elle est nulle. Elle est
considérée comme vrai (=1) si elle est non nulle.

19
6.4 Structures de contrôle
Dans sa forme la plus simple, le déroulement d’un programme est linéaire dans le sens où les instructions qui
le composent s’exécutent successivement. Les structures de contrôle sont des mécanismes qui permettent de
modifier la séquence d’exécution des instructions. Plus précisément, lors de l’exécution, en fonction des
conditions réalisées certaines parties précises du code seront exécutées.
Branchement conditionnel (if … elseif … else)
Cette structure permet d’exécuter un bloc d’instructions en fonction de la valeur logique d’une expression. Sa
syntaxe est :
if expression
instructions …
end
L’ensemble des instructions instructions est exécuté seulement si expression est vraie. Plusieurs tests exclusifs
peuvent être combinés.
if expression1
instructions1 …
elseif expression2
instructions2 …
else
instructions3 …
end
Plusieurs elseif peuvent être concaténés. Leur bloc est exécuté si l’expression correspondante est vraie et si
toutes les conditions précédentes n’ont pas été satisfaites. Le bloc instruction3 associé au else est quant à lui
exécuté si aucune des conditions précédentes n’a été réalisées.

Bien évidement, la variable x doit être définie auparavant. La fonction disp permet d’afficher une chaîne de
caractère spécifiée entre apostrophes. Si x n’est ni positif ni nul, il reçoit la valeur 1.

20
Branchement multiple (switch … case)
Dans cette structure, une expression numérique est comparée successivement à différentes valeurs. Dès qu’il
y a identité, le bloc d’instructions correspondant est exécuté. Sa syntaxe est :
switch expression
case valeur1,
instructions1 …
case valeur2,
instructions2 …
case valeur3,
instructions3 …
………
otherwise
instructions …
end
L’expression testée, expression, doit être un scalaire ou une chaîne de caractère. Une fois qu’un bloc
instructions i est exécuté, le flux d’exécution sort de la structure et reprend après le end. Si aucune case vérifie
l’égalité, le bloc qui suit otherwise est exécuté.

En fonction de la valeur de x une opération particulière est effectuée. Par défaut, resultat prend la valeur 0.
Boucle conditionnelle (while … )
Ce mécanisme permet de répéter une série d’instructions tant qu’une condition est vérifiée. Sa syntaxe est :
while expression
instructions …
end
Le terme expression est une expression logique. Si cette dernière est vraie, le bloc instructions est exécuté.
Puis, expression est de nouveau testé. L’exécution du bloc est répétée tant que le test est vrai.
compteur = 0;
while compteur < 10
disp(‘toujours dans la boucle’) ;
compteur = compteur + 1;
end
Cet exemple affiche 10 fois la chaîne de caractère toujours dans la boucle.
Boucle itérative (for … )
21
Cette boucle exécute le bloc interne autant de fois que spécifié par une variable jouant un rôle de compteur.
Sa syntaxe est :
for variable = debut:increment:fin
instructions …
end
Le compteur variable est initialisé à la valeur debut et évolue jusqu’à la valeur fin par pas de increment. A
chaque itération, le bloc instructions est exécuté. Généralement, variable est un scalaire, et souvent un entier.
N = 5 ;
for k = 1:N
x(k)= 1/k;
end
Cet exemple construit élément par élément un vecteur x de dimension 5.
6.5 Les fonctions

22
B. L’interface graphique (GUI)

23
24
25
C. Application à l’automatique et Simulink
Matlab est le logiciel de prédilection des automaticiens, il possède de nombreuses fonctionnalités spécifiques
à l’Automatique. Les fonctions les plus standards sont regroupées dans la Control System Toolbox. Ce
chapitre présente, sur divers exemples, l’utilisation de Matlab pour l’Automatique. Dans un second temps
nous parlerons d’un second logiciel, Simulink®, intégré à Matlab, lui aussi très utilisé par la communauté des
automaticiens. Il s’agit d’un environnement graphique pour la modélisation et la simulation de systèmes multi-
domaine.
1 - Représentation des systèmes linéaires invariants
1.1 Fonctions de transfert
La Control System Toolbox permet de définir des objets de type tf, c’est-à-dire transfert function. La fonction
du même nom, tf(), crée une fonction de transfert particulière. Elle prend en argument deux vecteurs contenant
les coefficients des polynômes du numérateur et du dénominateur. Ainsi, une fonction de transfert de la forme
:

Dans Matlab, et plus généralement dans la littérature anglo-saxonne, la variable de Laplace p est notée s.

1.2 Connexions de systèmes

Des systèmes complexes peuvent être construits à partir de sous-systèmes élémentaires. Voici les trois
opérations de base pour l’interconnexion de modèles.

Mise en série de deux systèmes :

26
Mise en parallèle de deux systèmes

2 - Analyse des systèmes dynamiques

2.1 Quelques fonctions utiles

27
Bien qu’il soit possible de calculer les caractéristiques d’un système à partir des fonctions standards, il existe
des fonctions dédiées.

pole(G) renvoie les pôles du système.

zero(G) renvoie les zéros du système.

damp(G) renvoie l’amortissement et la pulsation propre associés aux pôles.

dcgain(G) renvoie le gain statique du système.

pzmap(G) représentation graphique des pôles et zéros dans le plan complexe

ctrb(sys) renvoie la matrice de commandabilité de la représentation d’état.

obsv(sys) renvoie la matrice d’observabilité de la représentation d’état.

2.2 Réponses temporelles

Un ensemble de fonctions permettent de calculer et tracer la réponse d’un système à une entrée donnée. Plus
particulièrement, la fonction step simule la réponse indicielle et impulse la réponse impulsionnelle d’un
système donné en argument. Pour les systèmes de type ss, initial calcule le régime libre d’un système pour des
conditions initiales spécifiées. Concernant les options d’affichage, la syntaxe est identique à la fonction plot.

Un clic droit sur la figure permet d’obtenir des informations sur différentes caractéristiques du système testé.
De manière générale, il est possible de calculer la réponse d’un système pour une entrée arbitraire via la
commande lsim. Elle peut prendre trois arguments: le système, le vecteur d’entrée et le vecteur temps. Ces
deux vecteurs doivent évidemment être de même taille. Le vecteur d’entrée peut être construit point par point
ou encore être généré à l’aide de gensig (pour des signaux carré, sinusoïdale ou impulsions).
>> G=tf([1 1],[1 4 3/2]);

28
>> [U,T]=gensig('square',20,70);
>> lsim(G,U,T)
La seconde ligne crée un signal carré périodique de période 20 sur un horizon temporelle de 70s. La fonction
renvoie le vecteur du signal et le vecteur temps.

2.3 Lieux de transfert


L’analyse fréquentielle d’un système peut être effectuée facilement à l’aide des fonctions spécifiques, réalisant
les tracés des lieux de Bode, Nyquist et Black-Nichols :
bode(G)
nyquist(G)
nichols(G)
Pour chacune des commandes, il est possible de spécifier explicitement l’intervalle de pulsations considérées.
La syntaxe des options de traçage est identique à celle de plot. En précisant des arguments de sortie, les
fonctions retournent les vecteurs des valeurs du tracé. Un clic droit sur la figure permet d’obtenir des
informations sur différentes caractéristiques du système testé. Dans le cas de la fonction de nichols, la
commande grid permet de visualiser l’abaque de Black. Enfin, notons la fonction margin qui est similaire à
bode mais affiche en plus les marges de gain et de phase.

3 - Simulink
Simulink7 est un logiciel muni d’une interface graphique pour la modélisation, la simulation et l’analyse des
systèmes dynamiques. Etant intégré à MATLAB, les deux environnements sont parfaitement compatibles et
les différentes fonctionnalités de ce dernier sont alors directement accessibles. Simulink est basé sur une
interface graphique qui permet une contruction aisée et conviviale de schémas-blocs. Chaque bloc composant
le système est sélectionné depuis un ensemble de bibliothèques prédéfinies.
3.1 Création d’un modèle
Simulink peut être lancé depuis l’environnement de MATLAB

- en cliquant, dans la barre d’outils, sur le bouton


29
- ou en tapant simulink
La fenêtre suivante apparaît

La colonne de gauche liste les bibliothèques disponibles. Celles-ci sont rangées par disciplines (Automatique,
Aerospace, Communication, Traitement du signal, Système embarqués…) et regroupent un ensemble de blocs
fonctionnels liés à une catégorie de fonctions particulières. A la sélection d’une bibliothèque, les blocs qui la
composent sont affichés dans la partie de droite.
Un nouveau modèle est créé en cliquant sur l’icone « feuille blanche » (ou dans le menu File > New > Model).
Une fenêtre vide apparaît, elle va servir de support pour construire votre modèle.
L’interface est intuitive et facile à utiliser, un modèle est construit à partir des blocs fonctionnels par glisser-
déposer. Les blocs sont ensuite interconnectés par des flèches dessinées à l’aide de la souris (cliquer-maintenir
sur une entrée ou une sortie puis relâcher sur une entrée ou une sortie). Chaque bloc peut être édité (réglages
de ses paramètres) en double-cliquant dessus. Cette dernière action permet d’ouvrir une fenêtre de dialogue
dans laquelle une description du bloc et des champs paramétrables sont donnés.

30
Par exemple, si l’on souhaite éditer le bloc Sine Wave (obtenu dans la bibliothèque Sources), un double-clique
donne une fenêtre àéditer.
Cette fenêtre décrit la fonction réalisée par le bloc ainsi que les différents paramètres à régler.
Les modèles peuvent être sauvegardés dans des fichiers d’extension « .mdl ». Simulink manipule les fichiers
(sauvegarde, ouverture, fermeture, création…) de façon classique à l’aide du menu File ou des icones. Un
fichier existant (par exemple « monschema.mdl ») peut également être directement invoqué depuis la fenêtre
de commande MATLAB en tapant son nom sans extension :
>> monschema;
3.2 Quelques bibliothèques
Simulink possède de nombreuses bibliothèques, adaptées pour la modélisation d’une multitude de systèmes
de différentes natures. De plus, l’ajout de toolboxes supplémentaires permet d’enrichir les librairies et les
fonctionnalités du logiciel. Nous présentons dans ce paragraphe seulement quelques blocs simples et présents
dans la version de base de Simulink. Nous allons voir quelques blocs standards, souvent utilisés pour la
simulation de systèmes asservis LTI.
Sources
Les sources sont des blocs possédant une ou plusieurs sorties et aucune entrée. Ils sont utilisés pour la
génération de signaux.

31
32
La fonction de transfert peut être directement définie via les paramètres du bloc en suivant la syntaxe de la
fonction tf (vue précédemment). Par ailleurs, si une fonction de transfert a déjà été définie dans le workspace
de MATLAB, elle peut être reprise dans le bloc en spécifiant simplement son nom.
3.3 Simulation
Une fois le modèle réalisé, l’intérêt de Simulink consiste à le simuler. Une simulation peut être lancée soit à
partir de l’icône « lecture » en forme de triangle (ou dans le menu Simulation > Start), soit à partir de
MATLAB avec la commande sim().
Le premier paramètre de simulation (et le seul, dans le cas d’utilisation simpliste de Simulink) à régler est le
temps de simulation. Il peut être spécifié dans le champ à droite de l’icône de lancement d’une simulation. Il
doit être exprimé en seconde.
Pour une utilisation avancée, de nombreuses options permettent de configurer de manière très précise les
paramètres de simulation. De telles configurations sont accessibles dans le menu Simulation > Configuration
Parameters… :

Cette interface donne la possibilité de configurer (entre autres):


- l'horizon temporel de simulation (en sec), le solver utilisé (et ses paramètres) pour la résolution numérique
des équations différentielles,
- la gestion des entrées/sorties avec MATLAB, les variables sauvegardées,
- les notifications d’erreurs ou d’alertes sur différents événements, diagnostic de simulation,
Nous n’entrerons pas plus dans les détails du paramétrage d’une simulation car très complexe et inutile dans
le cadre d’une simple introduction à Simulink.

33
Nous fixons un échelon de valeur initiale 0 (initial value), d’amplitude 1 (final value) et se déclanchant à t=0
(step time). Nous définissons ensuite le système que nous étudions par la variable G précédement définie dans
MATLAB. Enfin, la simulation sera effectuée sur un horizon temporel de 15s.
Après execution de la simulation, la réponse peut être observée en double-cliquant sur l’oscilloscope.
34
La variable a été spécifiée dans la boite de dialogue du bloc Gain. Celle-ci doit être préalablement définie avec
une valeur numérique. Exécutons dans MATLAB la commande :
>> K = 5

35
Bibliographie
 Modélisation des Grands Systèmes Chimiques ,Professeur Georges HEYEN Université de Liège,
Année académique 2012-2013
 Introduction au logiciel de simulation ASPEN-Plus, J. Schwartzentruber Septembre 2005
 Aspen user manual (Freely downloadable from Aspen official website) Palm III, W.L.,
 Introduction to MATLAB 7 for Engineers, McGraw-Hill, 2005
 Polymath user manual (Freely downloadable from Polymath official website) Rudra Pratap,
 Getting started with MATLAB: A quick introduction for scientists and engineers, Oxford University
press, 2003.

36

Vous aimerez peut-être aussi