Vous êtes sur la page 1sur 21

1

Ecole Supérieure privée A.U. 2021-2022 : Semestre 1


de l’Aéronautique et des Technologies TP Maths Appliquées
Enseignante : Marwa Bouali Classe : 3GA et 3GT

TP 0 : Initiation à MATLAB

Objectif
Ce document est un guide d’initiation à MATLAB. MATLAB est un programme interactif de
calcul scientifique utilisable pour la résolution numérique de nombreux problèmes mathématiques ou
appliqués. En outre, MATLAB dispose de potentialités graphiques importantes.
L’objectif de ce document est de permettre au débutant de rapidement se familiariser avec MAT-
LAB. Aussi, seules les fonctionnalités les plus courantes de MATLAB sont présentées.

1. Introduction
MATLAB (Matrix Laboratory) est un logiciel de calcul matriciel à syntaxe ’simple’ (relativement
à des langages évolués comme C, C++). MATLAB est un interpréteur de commandes : les instructions
sont interprétées et exécutées ligne par ligne (pas de compilation avant de les exécuter).
Il existe deux modes de fonctionnement :
- mode interactif : c’est le mode calculette. MATLAB exécute les instructions au fur et à mesure
qu’elles sont données par l’usager.
- mode exécutif : c’est le mode programmation. MATLAB exécute ligne par ligne un fichier
".m" (programme en langage MATLAB).

1.1. Lancement de MATLAB


Pour lancer MATLAB, tapez matlab dans votre console Linux ou cliquez simplement sur l’icône
dans un environnement Windows. Pour quitter, tapez la commande :
 quit

1.2. L’environnement de travail


Le ’bureau’ MATLAB est une fenêtre contenant d’autres sous-fenêtres. Les principaux outils dis-
ponibles depuis ce bureau sont :
- COMMAND WINDOW : fenêtre de commandes permettant d’entrer toutes les commandes MAT-
LAB. Il est a noter que toutes les commandes sont en minuscules et en anglais.
- COMMAND HISTORY : historique des commandes lancées depuis la fenêtre de commande.
- WORKSPACE : il liste les variables en mémoire, il permet également de parcourir graphiquement
le contenu des variables.
- CURRENT FOLDER : un navigateur de fichier intégré à MATLAB pour visualiser le répertoire
de travail courant et y effetuer les opérations classiques tel que renommer ou supprimer un fichier.
2

- Le HELP BROWSER : un navigateur permettant de parcourir l’aide de MATLAB. L’aide est un


outil précieux pour trouver les fonctions et apprendre leur fonctionnement (notamment le format
des données à fournir en entrée ainsi que les valeurs renvoyées par la fonction).

Par la suite, il est conseillé de tester toutes les instructions précédées de  dans la command window.
Lorsque vous optenez une erreur, essayez d’en comprendre la signification. Avec un peu de pratique,
vous verrez que les messages d’erreur sont en général explicites.

2. Aide en ligne
MATLAB offre une aide en ligne très compléte. Tapez :

 help commande
pour une explication de l’utilisation de la commande MATLAB commande

 lookfor sujet
pour une liste des commandes MATLAB qui concernent le sujet sujet

 helpwin
pour ouvrir un guide des commande MATLAB sur différents sujets.

Essayez par exemple :

 help det

 lookfor eigenvalue
3

 helpwin

3. Déclaration des variables


La première étape pour commencer à utiliser MATLAB est de définir des vecteurs et des matrices
comme variables (toutes les variables sont des matrices). Le sigle = indique l’affectation. Pour intro-
duire un vecteur ou une matrice, on indique les éléments entre crochets [ ]. Un espace ou une virgule
séparent les éléments d’une même ligne ; un point-virgule indique un passage à la ligne suivante de la
matrice.

a=5 variable scalaire (1 × 1)

 b = [4 6] vecteur ligne (1 × 2)

 c = [−5; 6] vecteur colonne (2 × 1)

 d = [2 3; −1 7] matrice carrée (2 × 2)

 e = [1 − 1 2; 7 7 − 2] matrice (2 × 3)

Chaque ligne d’instructions est terminée par un retour-chariot (touche Entrée) qui valide la ligne.
La ligne d’instructions est alors interprétée et les instructions
 qu’elle contient sont immédiatement
exécutées. Le résultat respectivement
 un message d’erreur est affiché en cas de bon fonctionnement
respectivement en cas d’erreur . L’affichage du résultat d’une instruction est parfois indésirable : pour
le supprimer, il suffit de terminer l’instruction par un point-virgule. Par exemple :
4

 d = [2 3; −1 7];

Conseil : Utiliser la touche ↑ pour rappeler une commande antérieure, puis, après éventuelle mo-
dification, la relancer par un retour-chariot (touche Entrée).

Il faut noter que MATLAB montre les nombres avec quatre chiffres après la virgule, tandis que
la représentation interne est faite avec 16 chiffres. Pour changer la façon de montrer les nombres en
MATLAB, on utilise la commande format. Par exemple, si avant de taper

 pi (en MATLAB la variable pi est une approximation de Π), nous écrivons

 format long nous obtiendrons 3.14159265358979

 format short nous obtiendrons 3.1416

 format long e nous obtiendrons 3.141592653589793e + 00

 format short e nous obtiendrons 3.1416e + 00.

4. Workspace
MATLAB permet de connaître plusieures informations sur les variables déclarées. Tapez :

 who pour afficher toutes les variables.

 whos pour afficher toutes les variables avec indication sur leur taille.

 size (a) pour afficher les dimensions de la matrice a.

 clear var pour effacer la variable var.

 clear ( ou clear all) pour effacer toutes les variables.

5. Opérations fondamentales
MATLAB peut effectuer plusieurs opérations entre matrices. Les opérations fondamentales peuvent
être partagées en deux catégories, opérations matricielles et opérations élément par élément.

5.1. Opérations matricielles


Les opérations matricielles usuelles sont définies par +, −, ∗, /, ∧

 C =A+B est la somme matricielle ci,j = ai,j + bi,j


P
 C =A∗B est le produit matriciel ci,j = k ai,k bk,j

 C = A/B est la division matricielle C = AB −1


5

 C = B∧3 est la troisième puissances matricielles (C = B ∗ B ∗ B)

Il faut remarquer que cettes opérations sont bien définies seulement si les matrices ont des dimen-
sions cohérentes. Pour l’addition A + B, A et B doivent avoir la même taille ; pour le produit A ∗ B,
le nombre des colonnes de A et le nombre des lignes de B doivent être égaux ; les opérateurs A / B et
B ∧ 3 demandent une matrice B carrée. Par exemple :

 A = [1 2 3; 4 5 6] ; B = [7 8 9; 10 11 12] ; C = [13 14; 15 16; 17 18] ;

 A+B
ans=

8 10 12
14 16 18
 A+C
? ? ? Error using =⇒ +
Matrix dimensions must agree.

 A∗C
ans=

94 100
229 244
 A∗B
? ? ? Error using =⇒ ∗
Inner matrix dimensions must agree.

Notez que MATLAB renvoie un message d’erreur si les dimensions des matrices ne s’accordent pas
avec l’opération commandé.
On peut remarquer que lorsqu’aucune variable d’affectation n’est spécifiée pour stocker le résultat
de l’opération, MATLAB stocke le résultat dans une variable appelée ans (diminutif pour answer).
Cette variable sera écrasée à chaque nouvelle opération. Pour éviter cela, on peut spécifier le nom
d’une variable pour stocker le résultat. On pourra alors réutiliser le résultat de l’opération plus tard.

5.2. Opérations élément par élément


Pour exécuter des opérations entre matrices élément par élément il faut faire précéder l’opérateur
d’un point. Les opérateurs élément par élément sont donc .∗, ./, .∧

 C = A. ∗ B est le produit élément par élément ci,j = ai,j bi,j

ai,j
 C = A ./ B est la division élément par élément ci,j = bi,j

 C = A.∧ 3 est la troisième puissances élément par élément ci,j = a3i,j

Exercice 1.

On pose
6

   
1 −1 7 3 −2 −1
A = −4 2 11, B = 7 8 6 .
8 0 3 5 1 3
Que font les instructions suivantes :

A. ∗ B, A./B, A.∧ 3 et cos(A).

6. Manipulation des matrices


Après avoir défini la matrice A (par exemple la matrice carrée A de taille n), MATLAB permet les
opérations suivantes sur les sous-matrices de A.

6.1. Extraction de sous-matrices


 A(2, 3) extraction de élément a2,3

 A(:, 5) extraction de la colonne [a1,5 ; . . . ; an,5 ]

 A(1 : 4, 3) extraction de la sous-colonne [a1,3 ; . . . ; a4,3 ]

 A(1, :) extraction de la ligne [a1,1 ; . . . ; a1,n ]

 diag(A) extraction de la diagonale [a1,1 ; . . . ; an,n ]

Exercice 2.
Soient A la matrice et v le vecteur définies par
 
1 −1 7
−4 2 11 
A= , v = 1 2 4 7 .
8 0 3 
5 6 7
Que font les instructions suivantes :

diag(A), diag(v), diag(diag(A)), A(2, 1), A(:, 3), A(1 : 3, 2) et A(1, :).

6.2. Construction de matrices particulières


MATLAB permet en plus de défini des matrices particulières (une fois définis les entiers n, m et le
vecteur v).

 A =eye(n) matrice identité n × n

 A =diag(v) matrice diagonale avec v comme diagonale

 A =zeros(n, m) matrice de zéros avec n lignes et m colonnes

 A =ones(n, m) matrice de un avec n lignes et m colonnes


7

 A =rand (n, m) matrice aléatoire avec n lignes et m colonnes

 x = [but : pas : fin] vecteur ligne de points équidistribués avec pas pas entre but et fin.

Pour les matrices carrées, il suffit de donner un seul argument à ces fonctions. La commande help
permet de recevoir des informations (en anglais !) sur une fonction ; essayez :

 help eye

Essayez par exemple :

 eye(3)

 diag([1, 5, 0, 4])

 zeros(2,4)

 ones(1,5)

 rand(2,3)

 x=[-2 : 0.5 : 2]

MATLAB permet aussi de manipuler les matrices par blocs. Essayez par exemple :

 C=[ones(3), rand(3,2) ; rand(2,3), eye(2)]

On peut ensuite par exemple en extraire la sous-matrice formée des trois dernières colonnes :

 C1=C( : , 3 : 5)

et on retrouve ones(3) en faisant afficher C(1 : 3 , 1 : 3).

Quelques opérations ou fonctions moins usuelles sont proposées. En analyse numérique, nous pour-
rons avoir à nous servir des suivants :
- tril renvoie la partie triangulaire inférieure d’une matrice, éléments diagonaux compris ; essayez
par exemple :
 A=rand(4,4)
 tril(A)

- triu renvoie la partie triangulaire supérieure d’une matrice ; essayez par exemple :
 A=rand(3,3)
 triu(A)

6.3. Fonctions matricielles


Soit A une matrice, MATLAB permet d’effectuer directement les opérations suivantes :
8

 C = A’ transposée de A, ci,j = aj,i

 C = inv(A) inverse de A (matrice carrée), C = A−1

 d = det(A) déterminant de A (matrice carrée)

 nrm = norm(A) norme 2 de A

 v = eig(A) valeurs propres de A (matrice carrée)

Essayez par exemple :

 A = [1 2 3; −1 4 − 3; 0 5 2] ;

 A’

 inv(A)

 det(A)

 norm(A)

 eig(A)

Exercice 3.
On note A, B et C les matrices suivantes :
 
1 3 2    
 −5
A=
3 1 , B = 1 −2 5 , C = 10 −5 .
−10 0 3 6 1 −1 3 1
1 0 −2
Si possible :
1. Calculer les matrices AB, BA et AB T .
2. Calculer les déterminants des matrices A, B et C.
3. Calculer les inverses des matrices A, B et C.
4. Calculer les valeurs propres de la matrice E = AAT .

6.4. Système linéaire


Soit A une matrice carrée de taille n et soit b un vecteur de taille n, alors le vecteur x, solution du
système linéaire Ax = b est défini par

 x = A∧ − 1 ∗ b

Cette commande est théoriquement correcte, cependant si on est intéressé seulement à la solution
x et pas à l’inverse A−1 , il est préférable utiliser un backslash

 x = A\b
9

Cette commande résout le système linéaire avec des algorithmes fiables et optimales. Essayez par
exemple :

 A = [2 3 4 ; 7 6 5 ; 2 8 7] ;

 b = [1 ; 2 ; 3] ;

 x = A\b

6.5. Compte-rendu
Vous devez rédiger un compte-rendu dans lequel vous répondrez à toutes les questions de cet exer-
cice.
Soient les vecteurs colonnes et la matrice suivants :
       
1 −5 −1 2 3 4
u1 = 2, u2 =  2 , u3 = −3, A = 7 6 5.
3 1 7 2 8 7
(a) Structures MATLAB

1. Entrer ces données sous MATLAB.


2. Calculer u1 + 3u2 − u3 /5.
3. Calculer le produit scalaire entre les vecteurs u1 et u2 .
4. Calculer le produit Au1 .

(b) Commandes MATLAB


Trouver les commandes MATLAB permettant de :
1. Calculer ku1 k2 , ku2 k1 , ku3 k∞ ;
2. Déterminer les dimensions de la matrice A, en extraire le nombre de colonnes ;
3. Calculer le déterminant et l’inverse de A.
(c) Résolution de systèmes linéaires
Proposer deux méthodes permettant de résoudre le problème Ax = u1 , et déterminer les commandes
MATLAB associées.

7. Graphisme 2D
MATLAB offre plusieurs possibilités pour tracer un graphe en 2D. On va en présenter deux : la
commande plot et la commande fplot.
Avant d’expliquer ces deux commandes en détail, on souligne qu’avec plot on doit toujours utiliser des
vecteurs, alors qu’avec fplot non. On considère maintenant la fonction f (x) = x3 − 2 sin x + 1 et on
voit comment on peut tracer son graphe dans l’intervalle [−1, 1], en utilisant les commandes plot et
fplot.

7.1. Commande plot


Pour tracer le graphe de f (x) il faut passer par les étapes suivantes :
10

• Définir la fonction f (x) :

 f = ’x.∧ 3 − 2 ∗ sin(x) + 1’ ;

le mot f contient la définition de la fonction choisie (les guillements font partie de la définition
dans la syntaxe MATLAB).
• Définir un vecteur de points dans l’intervalle donné :

 x = [−1 : 0.1 : +1] ;

on a défini un vecteur de 21 points equidistribués dans l’intervalle donné, avec un pas de 0.1.
• Évaluer la fonction f dans l’intervalle [−1, 1], en utilisant la commande eval :

 y = eval(f ) ;

on note que dans la définition de la fonction f on a dû écrire .∧ (puissance élément par élément)
et pas ∧ (puissance matricielle), parce qui’il faut évaluer la fonction en chaque élément du vecteur
x, C’est-à-dire :

y(i) = x(i)3 − 2 sin(x(i)) + 1, pour i = 1, . . . , 21,


la variable y est donc un vecteur qui contient les valeurs de f pour chaque entrée du vecteur x.
• Tracer le graphe :

 plot(x, y) ; grid ;

cette commande ouvre une fenêtre avec le graphe. La commande grid dessine une grille de repére.
D’une façon plus simple, on trace le graphe de f (x) comme suit :

 x = −1 : 0.1 : +1 ;

 y = x.∧ 3 − 2 ∗ sin(x) + 1 ;

 plot(x, y) ; grid ;

7.2. Commande fplot


Pour tracer le graphe avec la commande fplot il faut passer par les étapes suivantes :

• Définir la fonction f (x)

 f = ’x∧ 3 − 2 ∗ sin(x) + 1’ ;

• Tracer le graphe :

 fplot(f, [−1, 1]) ; grid ;


11

La commande fplot demande la définition de la fonction f et de l’intervalle où il faut la tracer.


La définition des vecteurs x et y n’est plus nécessaire et on note que dans la définition de f il
suffit d’écrire f = ’x∧ 3 − · · · ’ au lieu de f = ’x.∧ 3 − · · · ’, comme on avait fait pour utiliser plot.
Pour plus de détails sur les fonctions plot et fplot tapez help plot ou help fplot.

7.3. Piège
Pourquoi l’instruction

 x = 0 : 1 : 2 ∗ pi ;

 y = x ∗ sin(x)
provoque-t-elle une erreur ? Parce que, pour MATLAB, les vecteurs-lignes sont des cas particuliers de
matrices, que les matrices ont une façon bien particulière de se multiplier entre elles, qui diffère de la
multiplication terme à terme. Au lieu de y = x ∗ sin(x), il faut écrire y = x. ∗ sin(x). De même, au lieu
de y = sin(x)/x, il faut écrire y = sin(x)./x, et au lieu de y = 2∧ x, il faut écrire y = 2.∧ x, lorsque x
est un vecteur-ligne. Cette erreur est très fréquente.

7.4. Titres et labels


Il est recommandé de mettre une légende à une figure. La commande xlabel permet de mettre un
texte en légende sous l’axe des abscisses. La syntaxe est

xlabel( ’Axe x’)

pour obtenir le mot Axe x en légende. La commande ylabel fait de même pour l’axe des ordonnées.
La commande title permet de donner un titre à la figure. La syntaxe est

title(’Le titre’)

pour obtenir comme titre Le titre. Prenons l’exemple de la fonction f (x) = x3 − 2 sin x + 1, en ajoutant
un titre et des labels des axes à la représentation graphique. On aura donc

 f = ’x∧ 3 − 2 ∗ sin(x) + 1’ ;

 fplot(f, [−1, 1]) ; grid ;

 title(’Graphe de f (x)’) ;

 xlabel(’Axe x’) ;

 ylabel(’Axe y’) ;

7.5. Plusieurs courbes sur le même graphique


Décrivons maintenant quelques fonctions très utiles pour les graphes. Si l’on souhaite placer deux
courbes sur le même graphe on utilise la commande hold on (à utiliser avec la commande hold off ).
Prenons comme exemple les fonctions f1 (x) = sin(2x) − 1 + x et f2 (x) = x3 − 2 sin(x) pour tracer leurs
graphes dans l’intervalle [−1, 1] sur la même fenêtre. Ainsi d’ajouter un titre et des labels des axes sur
le graphe. En utilisant la commande fplot, il faut procéder de la façon suivante :
12

• Définir les fonctions :

 f 1 = ’sin(2 ∗ x) − 1 + x’ ;

 f 2 = ’x∧ 3 − 2 ∗ sin(x)’ ;

• Tracer le graphe :

 fplot(f 1, [−1, 1]) ; grid ; hold on

La commande hold on affiche tous les prochains graphes sur la fenêtre qu’on vient d’ouvrir.
Donc le graphe :

 fplot(f 2, [−1, 1]) ;

est affiché sur la même fenêtre. La commande hold off arrête cet effet.
• Ajouter un titre et des labels des axes sur le graphe :

 title(’Graphes de f1 et f2 ’) ;

 xlabel(’Axe x’) ;

 ylabel(’Axe y’) ;

 hold off

Une seconde méthode permet également d’afficher plusieurs courbes sur la même figure. Il suffit d’ap-
peler ces differentes courbes dans la même fonction plot en les séparant par des virgules. On écrira
par exemple :

 x = −1 : 0.01 : 1 ;

 f 1 = sin(2 ∗ x) − 1 + x ;

 f 2 = x.∧ 3 − 2 ∗ sin(x) ;

 plot(x, f 1, x, f 2) ; grid on ;

 title(’Graphes de f1 et f2 ’) ;

 xlabel(’Axe x’) ;

 ylabel(’Axe y’) ;

Cette expression est parfaitement équivalente à la précédente, elle permet d’afficher sur le même
graphe, les fonctions f1 et f2 .
13

7.6. Styles de lignes et couleurs


Par défaut, les lignes sont bleues en trait plein. Il est possible de modifier le style et la couleur de la
ligne en rajoutant un 3ème argument à la fonction plot( ). Voilà quelques couleurs et styles de lignes
ainsi que les codes associés.

Couleurs Styles de Ligne


y yellow · point
m magenta ◦ circle
c cyan + plus
r red − solid
g green ∗ star
b blue : dotted
w white −. dashdot
k black −− dashed

Exemple : Tapez sur le prompt MATLAB les instructions suivantes :

 x = −1 : 0.01 : 1 ;

 plot(x, sin(3 ∗ pi ∗ x), ’r-’) ; grid on ;

 hold on

 plot(x, cos(3 ∗ pi ∗ x),’k+’) ;

 title(’Plusieurs courbes’) ; xlabel(’Axe x’) ; ylabel(’Axe y’) ;

 legend(’Sinus’,’Cosinus’) ;

Une légende peut être affichée donnant la liste des styles de lignes suivie de la description spécifiée
par l’utilisateur.

7.7. Affichage de plusieurs graphes côte à côte (subplot)


Une fenêtre d’un graphique peut être divisée en sous-fenêtres suivant un tableau de dimension
(m × n). On peut alors afficher dans chaque sous-fenêtre une ou plusieurs courbes. On écrira par
exemple :

 x = 0 : 2 ∗ pi/100 : 2 ∗ pi ;

 subplot(2, 2, 1) ;

 plot(x, sin(x)) ;

 subplot(2, 2, 2) ;

 plot(x, cos(x), x, sin(x), ’−.’) ;


14

 subplot(2, 2, 3) ;

 plot(cos(x), sin(x)) ;

 subplot(2, 2, 4) ;

 plot(sin(2 ∗ x), sin(3 ∗ x)) ;

Prenons un autre exemple :

 x = −pi : 0.1 : pi ;

 y0 = sin(x) ;

 y1 = sin(x + pi/3) ;

 y2 = sin(x + 2 ∗ pi/3) ;

 subplot(3, 1, 1) ; plot(x, y0) ;

 subplot(3, 1, 2) ; plot(x, y1) ;

 subplot(3, 1, 3) ; plot(x, y2) ;

Exercice 4.
Soient f et g les fonctions définies sur l’intervalle [0, 10] par :
x x
f (x) = exp − , g(x) = cos .
25 10
Tracer ces deux fonctions (à l’aide de plot) d’abord dans une même fenêtre graphique mais sur des
graphes différents, puis dans une même fenêtre graphique et sur le même graphe. Ajouter un titre, une
légende et des labels des axes à notre figures.

8. Graphisme 3D
Les graphes en des fonctions de deux variables sont légèrement plus compliqués à manier que ceux
à une variable. En effet, de la même façon que l’on avait créer un vecteur qui discrétisait l’axe des
abscisses, on doit créer un maillage qui discrétise le plan : c’est le but de la fonction meshgrid.

 x = −1 : 0.1 : 1 ;

 y = −1 : 0.1 : 1 ;

 [X, Y ] = meshgrid(x, y) ;

Dans cet exemple on crée 2 vecteurs x et y allant de −1 à +1, puis un maillage [X, Y ] correspon-
dant. A l’aide de ce maillage, on peut alors créer une variable z, qui va prendre la valeur de la fonction
15

souhaitée (ici une Gaussienne) :

 z = exp(−X.∧ 2). ∗ exp(−Y.∧ 2) ;

On appelle ensuite une des fonctions d’affichage 3D, par exemple :

 surf(x, y, z)

ou

 mesh(x, y, z)

ou encore

 pcolor(x, y, z)

Exercice 5.
Soit la fonction f définie sur R2 par
2 +y 2 )
f (x, y) = x e−(x .

Représenter la surface représentative de la fonction f sur le pavé [−2, 2] × [−2, 2].

9. Boucles de contrôle
MATLAB offre, comme plusieurs autres langages, quelques boucles de contrôle. Cettes commandes
sont spécialement utiles pour écrire des programmes MATLAB.

9.1. Boucle for


Si l’on veut exécuter des instructions pour chaque valeur

i = m, m + 1, . . . , n

d’une certaine variable i entre deux bornes assignés m et n, on utilise for. Par exemple pour calculer
le produit scalaire ps entre deux vecteurs x et y de taille n on utilise :

 ps = 0 ;

 x = [1; 2; 4; 5] ; y = [−1; 2; −8; 4] ;

 n =size(x) ;

 for i = 1 : n

 ps = ps + x(i) ∗ y(i) ;

 end
16

Cette boucle est équivalente au le produit matriciel entre le vecteur transposé de x et le vecteur y,
en supposant que les facteurs soient des vecteurs colonnes.

 ps = x’∗y ;

9.2. Boucle while


Si l’on veut exécuter plusieurs fois des instructions tandis qu’une expression logique est vraie, on
utilise while. Par exemple, le même calcul qu’on a considéré avec la boucle for peut être exécuté avec

 ps = 0 ;

 i = 0;

 x = [1; 2; 4; 5] ; y = [−1; 2; −8; 4] ;

 n =size(x) ;

 while (i < n)

 i = i + 1;
 ps = ps + x(i) ∗ y(i) ;

 end

9.3. Instruction conditionelle if


Si l’on veut exécuter des instructions seulement si une expression logique est vraie, on utilise if. Par
exemple, si l’on veut calculer la racine carrée d’une variable scalaire r seulement si r n’est pas négative :

 if (r >= 0)

 racine = sqrt(r) ;

 end

On a plusieurs opérateurs logiques à disposition :

Opérateur Action logique


& and
| or
v not
== equal to

Taper par exemple help v pour une explication de la liste des opérateurs logiques. De même, on
a plusieurs opérateurs arithmétiques à disposition :
17

Opérateur Action arithmétique


< strictement inférieur à
<= inférieur ou égal à
> strictement supérieur à
>= supérieur ou égal à
v= différent de
== égale

Taper par exemple help < pour une explication de la liste des opérateurs arithmétiques.

10. Scripts et fonctions


MATLAB permet d’écrire des programmes. Les outils principaux sont les script files et les fonctions.

10.1. Script files


Un script file est une suite de commandes MATLAB. Les noms des script files doivent avoir l’exten-
sion ".m". Pour exécuter un script file tapez son nom, sans extension, dans le prompt MATLAB. Par
exemple, créer un fichier PremierScript.m dans le répertoire courant qui contient les lignes suivantes :

A = 2∗eye(4) ;

B = 4∗ones(4) ;

A∗B

Vous pouvez ensuite exécuter ce script en entrant son nom sur le prompt MATLAB :

 PremierScript

ans =

8 8 8 8
8 8 8 8
8 8 8 8
8 8 8 8
Attention à ne pas donner à vos scripts des noms de commandes pré-définies.

Par ailleurs, il est très important d’ajouter des commentaires dans les scripts afin de les rendre
plus lisibles par d’autres, ou par vous-même. Une ligne de commentaire commençant par % est ignorée
dans les scripts. Un autre exemple de script qui permet de dessiner la représentation graphique de la
fonction f (x) = x3 − 2 sin(x) + 1 dans l’intervalle [−1, 1] avec un pas 0.1. D’où les instructions :

clear all % efface toutes les variables du workspace

x = −1 : 0.1 : +1 ;

y = x.∧ 3 − 2 ∗ sin(x) + 1 ;
18

plot(x, y,’r’) ; grid on ;

Conseil : Commencer toute nouvelle page d’instructions MATLAB par clear all. Cette instruction
détruit toutes les variables personnelles créées auparavant.

10.2. Fonctions
Une fonction MATLAB est une suite de commandes qui nécessite un input pour être exécutée et
qui renvoie un output. La déclaration des fonctions en MATLAB suit les régles suivantes.
• Une fonction est contenue dans un fichier ".m" avec le même nom que la fonction.
• Le fichier qui définit une fonction doit commencer par :
function [output arguments]= nomfonction(input arguments)
La syntaxe d’une fonction MATLAB est la suivante :

function [args1,args2,...] = nomfonction(arge1,arge2,...)

instructions

end

avec args1,args2,... sont les arguments de sortie de la fonction et peuvent être de n’importe quel
type, arge1,arge2,... sont les arguments d’entrée de la fonction et peuvent être de n’importe
quel type, et instructions est un bloc d’instructions quelconque devant affecter les arguments
de sortie args1,args2,. . ..
Lorsqu’il n’y a qu’un seul argument de sortie, on peut utiliser la syntaxe plus simple :
function args = nomfonction(arge1,arge2,...)
• En MATLAB les lignes de commentaires sont introduites par %.
• Toutes les variables internes à la fonction sont locales.
Par exemple, supposons qu’on aie écrit sur le fichier Fonction.m les lignes suivantes :

function f = Fonction(x)

f = x.∧ 3 − 2 ∗ sin(x) + 1 ;

end

Il est possible d’utiliser la fonction Fonction.m de la même façon que les autres commandes MAT-
LAB. Donc les commandes

 x = 0;

 y = x.∧ 3 − 2 ∗ sin(x) + 1

et

 x = 0;
19

 y = Fonction(x)

sont équivalentes et renvoient le même résultats :

y=

Attention à bien nommer les fichiers .m du même nom que la fonction qu’ils contiennent.
Conseil : Donner des noms significatifs aux variables et aux fonctions.

Exercice 6.
Ecrire une fonction réalisant le produit sin(x) cos(3x). Créer un script qui permet de dessiner le
graphe de la fonction précédente sur l’intervalle [0, 2π].
On rappel que la syntaxe pour une fonction à une variable et une sortie est :
function y = NomFonction(x)
return y

Exercice 7.
Écrire une fonction MATLAB prenant 2 vecteurs lignes U et V en entrée et produisant en sortie
le produit scalaire.

Exercice 8.
Partie 1 :
1. Construire une fonction MATLAB qui prend pour entrée un réel x et a pour sortie f (x) =
x2 + x − 1.
2. Calculer f (3.13).
3. Écrire un script qui permet de tracer le graphe de la fonction f dans l’intervalle [−3, 3].
Partie 2 :
1. Construire une fonction MATLAB qui prend pour entrée deux réels x, y et a pour sortie f (x, y) =
x2 + xy − 1.
On rappel que la syntaxe pour une fonction à deux variables et une sortie est :
function y = NomFonction(x,y)
return y

2. Calculer f (3.13, 56.7).

Exercice 9.
Soient      
5 1 5/8 −1/4 1/8
u1 =  2  , b = −1 , A = 1/4 0 1/4 .
−4 1 1/8 −1/4 5/8
On définit, pour n ≥ 1, la suite de vecteurs un+1 = Aun + b. Construire une fonction suite.m calculant
les premiers termes de la suite un . Cette fonction aura comme arguments d’entrée les données suivantes :
la matrice A, le second membre b, le terme initial u1 , et le nombre de termes voulus nbit .
20

10.3. Fonctions de plusieurs variables


Pour définir des fonctions dépendantes d’un ou plusieurs paramètres nous pouvons utiliser les fonc-
tions inline. Pour définir une fonction inline f qui dépend de la variable x on écrit :

 f = inline (’log(x) − 1’, ’x’) ;

Si f dépend de plusieurs variables, nous écrirons par exemple

 f = inline (’log(x) − p’, ’x’,’p’) ;

Pour évaluer une fonction f définie grâce à inline, il faut utiliser la commande feval en donnant
les valeurs des paramètre comme montré dans l’exemple suivant :

 f = inline (’x.∧ 3 + a. ∗ x’, ’x’,’a’) ;

 xval = 1 ; aval = 2 ;

 fval = feval (f, xval, aval)

val =

11. Polynômes en MATLAB


Considérons un Polynôme de degré n :

f (x) = an xn + an−1 xn−1 + · · · + a1 x + a0 .

MATLAB répresente les Polynômes de degré n sous la forme d’un vecteur p = [an , an−1 , · · · , a0 ] de
taille n + 1 qui contient les coefficients en ordre décroissante par rapport au degré associé. Par exemple,
le vecteur associé au Polynôme f (x) = 3x3 − 4x2 + x est

 p = [3, −4, 1, 0]

Pour évaluer ce polynôme on utilise la commande polyval :

 x = [0 : 0.1 : 1]

 y = polyval(p, x)

Dans ce cas, les éléments du vecteur y sont les valeurs du polynôme calculées pour chaque élément
du vecteur x.

12. Avant d’aller plus loin, quelques conseils . . .


1. Il faut se souvenir que MATLAB distingue les majuscules et minuscules et qu’ainsi la matrice A
et la matrice a ne sont pas identiques ! Les lettres accentuées sont interdites également.
21

2. Il ne faut pas donner des noms aux variables qui correspondent à des noms de fonctions (soit
celles de MATLAB, soit celles de l’utilisateur) : dans ce cas MATLAB ne peut plus accéder à ces
fonctions. C’est particulièrement vrai aussi pour les variables complexes i et j que l’on désactive
complément quand l’on nomme une variable i ou j dans un boucle !
3. On tachera d’utiliser au maximum les fichiers .m (c-à-d les scripts et les fonctions) ; l’idée est
d’utiliser la page principale de MATLAB comme une feuille de papier brouillon et de réserver les
calculs difficiles aux fichiers .m.
4. Il est primordial d’insérer des commentaires dans les fichiers .m, et ce au fur et à mesure de la
programmation (et pas seulement lorsque la programmation est terminée).
5. De même, toujours garder à l’esprit, lorsque l’on écrit des fonctions, la notion de variable locale.
En général, une variable n’existe que dans un certain contexte.

Vous aimerez peut-être aussi