Vous êtes sur la page 1sur 45

Ecole Nationale d’Ingénieurs de Bizerte – ENIB Année universitaire 2017-2018

Introduction à Matlab

Majed Chemkhi
Table des matières

1 Environnement Matlab 5

2 Commandes d’environnement 10

3 Éléments d’aide de Matlab 10

4 Opérations arithmétiques simples, scalaires et chaînes de caractères 11

5 Construction et opérations sur les vecteurs 12

6 Polynômes 13

7 Construction et opérations sur les matrices 14

8 Structures conditionnelles et itératives 17

8.1 Opérateurs booléens . . . . . . . . . . . . . . . . . . . . . . . . . 17

8.2 Structure conditionnelle ‘if’ . . . . . . . . . . . . . . . . . . . . 17

8.3 Branchement ‘switch’ . . . . . . . . . . . . . . . . . . . . . . . . 18

8.4 Boucle ‘for’ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

8.5 Boucle ‘while’ . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

9 Programmation et utilisation de fonctions 20

2
9.1 Scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

9.2 Fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

10 Utilisation de fonctions aléatoires 23

11 Opérations d’entrée/sortie 24

11.1 Entrée/Sortie de données texte . . . . . . . . . . . . . . . . . . . 24

11.1.1 Affichage dans la sortie standard de Matlab . . . . . . . . 24

11.1.2 Lecture/écriture dans un fichier . . . . . . . . . . . . . . 25

11.2 Entée/Sortie des données formatées . . . . . . . . . . . . . . . . 26

11.3 Formats d’affichage . . . . . . . . . . . . . . . . . . . . . . . . . 27

12 Utilisation des graphiques 27

12.1 Graphes en 2D . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

12.1.1 Courbes en coordonnées polaires . . . . . . . . . . . . . . 29

12.1.2 Histogrammes et Diagrammes . . . . . . . . . . . . . . . 29

12.1.3 Plusieurs graphes sur une même figure . . . . . . . . . . . 30

12.2 Graphes en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

12.2.1 Courbes paramétrées . . . . . . . . . . . . . . . . . . . . 30

12.2.2 Surfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

13 Applications 32

3
13.1 Méthode de Gauss . . . . . . . . . . . . . . . . . . . . . . . . . . 32

13.2 Résolution de Ax=b . . . . . . . . . . . . . . . . . . . . . . . . . 32

13.3 Autour du Laplacien . . . . . . . . . . . . . . . . . . . . . . . . 33

13.4 Résolution d’une équation différentielle . . . . . . . . . . . . . . 34

14 Liste des commandes utiles 35

4
1 Environnement Matlab

Matlab (MATrix LABoratory) est un environnement de calcul numérique matri-


ciel, utilisée dans de nombreux domaines d’application. Matlab est à la fois un
langage de programmation et une plateforme de développement destinée au calcul
scientifique. MATLAB a été développé et commercialisé par la société américaine
MathWorks 1 qui le définit 2 comme étant un langage de haut niveau et un environ-
nement intéractif permettant de réaliser des tâches coûteuses avec une vitesse plus
rapide que les langages de programmation "traditionnels" tels que les langages C,
C++ ou encore Fortran.

Le but de ce document est d’aider les débutants en Matlab, en introduisant les


commandes les plus courantes.

L’avantage de Matlab, c’est que c’est un langage interprété, c’est à dire qu’il exé-
cute directement les commandes introduites par l’utilisateur sans passer par une
étape de compilation. De plus, Matlab possède un très grand nombre de fonctions
allant des fonctions élémentaires telles que les fonctions trigonométriques, les
opérations sur les matrices, la génération de nombres aléatoires jusqu’aux fonc-
tions les plus compliquées telles que des méthodes numériques pour le calcul ma-
triciel ou la résolution d’équations différentielles ou encore des méthodes d’opti-
misation. Il contient aussi des outils de représentation graphique en 2D ou 3D.

Lors de son lancement (via la commande Matlab par exemple), l’interface gra-
phique de Matlab 3 se présente (voir figure 1) comme plusieurs fenêtres avec une
barre de menu.

1. http ://www.mathworks.com/
2. http ://www.mathworks.com/products/matlab/index.html
3. Cette interface est relative à la version de Matlab de 2007.

5
F IGURE 1 – Interface de Matlab (version R2009 b).

Command Window

Après le lancement de Matlab, une fenêtre de commande apparaît qui permet à


l’utilisateur de taper une commande quelconque obéissant à la syntaxe de Matlab. :
(voir figure 2)

F IGURE 2 – Interface de Matlab : Command Window.

6
Workspace

Les variables définies par l’utilisateur sont rangées dans l’espace mémoire de Mat-
lab, ces variables sont dites globales.

Le "Workspace" permet d’observer les variables existantes. Les commandes who


ou whos permettent d’obtenir les mêmes informations. (voir figure 3)

F IGURE 3 – Interface de Matlab : Workspace.

Current Folder

Matlab permet d’ouvrir, de créer, de modifier etc ..., des fichiers. Matlab sauve-
garde tous les fichiers créés dans le répertoire par défaut qu’il est possible de
modifier à l’aide de la commande cd ou en lançant le Current Folder. (voir fi-
gure 4)

7
F IGURE 4 – Interface de Matlab : Current Folder.

La fenêtre suivante apparaît, il est alors possible de changer le répertoire courant.


Quand une commande est tapée, Matlab recherche celle-ci dans l’ensemble des
répertoires dont la liste apparaît dans la fenêtre path, on peut ajouter ou supprimer
un répertoire de son choix.

Command History

Contient l’historique des commandes. Elle permet donc de ne pas réecrire d’an-
ciennes (longues) commandes et ceci en cliquant sur la commande qu’on veut
lancer. Il est aussi possible de relancer une ancienne commande en tapant sur la
flêche du haut du clavier dans la fenêtre de commandes. (voir figure 5)

8
F IGURE 5 – Interface de Matlab : Command History.

Pour quitter Matlab, on a le choix entre sélectionner ‘Exit MATLAB’ dans le


menu ‘File’ ou bien taper la commande ‘exit’ dans la fenêtre des commandes.

Un exemple de commande Matlab est

>> a=2+3

Lorsque l’utilisateur entre cette commande et la valide, la réponse affichée par


Matlab sera :

>> a=
5

Matlab contient aussi des commandes générales qu’on appellera commandes d’en-
vironnement et qui permettent de simplifier le travail de l’utilisateur. Les com-
mandes les plus courantes sont décrites dans la section qui suit.

9
2 Commandes d’environnement

Les commandes d’environnement de Matlab les plus courantes sont :

– cd : permet de se déplacer sous Matlab d’un répertoire à un autre.


– ls ou dir : affiche les fichiers contenus dans le répertoire courant (ou un autre
répertoire)
– pwd : affiche le répertoire courant
– who ou whos : liste les variables déjà déclarées par l’utilisateur (afin par
exemple d’éviter la redéclaration d’une variable)
– clear all : supprime la liste des variables déjà déclarées
– clc : efface l’ensemble des commandes Matlab introduites sur l’écran
– exit ou quit : permet de quitter l’interface Matlab
– tic et toc : Ces commandes sont utilisées de la manière suivante :
>> tic ; ensemble de commandes ; toc
Ils permettent de calculer le temps mis pas Matlab pour exécuter une commande
ou un script. Ceci est particulièrement utile lors de la programmation parallèle
ou aussi pour avoir une idée sur le temps global d’un calcul d’un grand échan-
tillon de données en commencant au préalable par un petit échantillion.
– cputime : retourne te temps total (en secondes) mis par l’application Matlab.

3 Éléments d’aide de Matlab

Matlab est une énorme librairie de fonctions prédéfinies. Pour pouvoir découvrir
l’ensemble des commandes prédéfinies dans Matlab, on peut tout simplement ta-
per help. La commande affiche donc la totalité des topics (fonctionnaliées regrou-
pées). On cite par exemple :
– Matlab/general,
– Matlab/2d,
– Matlab/elmat,
– Matlab/elfun,
– ...
Si on cherche à connaître la syntaxe correcte et/ou les options pour utiliser une
commande donnée (par exemple la commande plot pour tracer des figures), on

10
fait help plot.

La commande help NomRepertoire permet d’accéder à la liste des aides


de fonctions contenues dans le répertoire NomRepertoire. Et la commande
helpdesk ouvre une fenêtre d’aide interactive.

Lorsqu’on cherche à déterminer la commande permettant de faire une tâche don-


née sans avoir une idée sur le nom de cette commande, on peut utiliser la com-
mande lookfor. Par exemple, pour déterminer la commande permettant de calculer
le cosinus d’un réel, on peut entrer la commande :

>> lookfor cosinus

Remarque : les commandes Matlab doivent toujours être tapées en minuscules


même si dans l’aide en ligne elles apparaissent en majuscules.

Exercice :
Trouver dans l’aide le nom de la fonction renvoyant les valeurs propres d’une
matrice.

4 Opérations arithmétiques simples, scalaires et chaînes


de caractères

L’opération la plus élémentaire sous Matlab est l’affectation. On peut par exemple
déclarer un scalaire en tapant a=10. Si on exécute une opération, par exemple
2 + 3, et qu’on ne stocke pas la résultat dans une variable, le résultat de cette
opération sera automatiquement stocké dans une variable ans qu’on pourra utiliser
par la suite. Dans le cas où l’on ne veut pas afficher sur l’écran le résultat d’une
commande, il suffit d’ajouter après la commande un point-virgule.

Une expression arithmétique effectue un calcul à l’aide des opérateurs suivants :


+ (addition), - (soustraction), * (multiplication), / (division) et ^ (puissance).

Les nombres réels sont écrits sous les formes décimales ou scientifiques usuelles :

11
2, 3.214, -.546, 1.21e33, 5.78e-16, ...

Il existe aussi certains scalaires prédéfinis tels que pi (π), NaN (Not a Number),
Inf (∞), eps (= 2.2204e-16, precision machine), realmin (=2.2251e-308), real-
max (1.7977e+308), ...

La constante i est le nombre imaginaire −1 prédéclaré. Les nombres complexes
sont écrits sous la forme a + bi où a et b sont des nombres réels. Il est impératif
de ne mettre aucun blanc entre le nombre b et i. Ainsi 3+ 4i et 3 + 4i sont
valables mais 3+4 i n’est pas reconnu.

Pour comparer deux réels, on peut utiliser les commandes pour la comparaison.
On en cite >=, <, . . .

Les chaînes de caractères sont déclarées avec des apostrophes. Un exemple de


déclaration est :

>> c=’Bonjour’

Exercice :
Chercher les commandes dans l’aide de Matlab qui permettent de donner le loga-
rithme et la racine carrée, le carré et la partie entière d’un réel.

5 Construction et opérations sur les vecteurs

Il existe plusieurs moyens pour consruire un vecteur :

– vecteur ligne : v=[1 2 -5] ou v=[1, 2, -5]


– vecteur colonne : v=[1 ; 2 ; -5] ou v=[1 2 -5] ’

Remarque :
T
L’opérateur transposé "’" transforme un vecteur V en V . Par exemple : la com-
mande [1, 2- 3i]’ donne comme résultat :

12
1
2+3i

Pour accéder au ième élément d’un vecteur v, on tape v(i).

Si le vecteur est trop long, on peut le crée, dans certains cas, de manière automa-
tique :
v=[1:4] ou v=[2:3:15].

On peut aussi utiliser des structures itératives tels que la boucle for qu’on définira
par la suite. Dans ce cas, on crée un vecteur vide : v=[] puis on le concatène en
faisant par exemple v=[v,2]

On peut créer un vecteur contenant que des ‘0’ ou des ‘1’ en tapant :
v=zeros(2,1) 4 , w=ones(5,1) ou aussi des nombres aléatoires en utilisant
la commande v=rand(5,1).

Exercice : Tapez les commandes suivantes et en commenter les résultats :

n=5, u=rand(n,1), u/2, u./2, 2./u, u(3), u(2:n-1), u(end),


length(u), size(u), v=ones(5,1),v=2u, v= 2*u - 3*v,
u*v, u.*v, u’, u*v’,v’*u, u^2, u.^2, 2.^u, 2^u.

Exercice : On note u, v et w les vecteurs suivants :


u = (1, −1, −3, −5)T , v = (10, −1, 3, 1)T , w = (5, −1, 4, 5)T .
Calculer 3u, ||u||2 , 2u − v + 4w, ||2u − v + 4w||1 , ||v − 3w||∞ .

6 Polynômes

Dans Matlab, un polynôme est représenté par le vecteur de ses coefficients, com-
mençant par le degré le plus élevé. Par exemple, pour déclarer le polynôme :
4. Cette commande donne un vecteur colonne à deux linges. La commande v=zeros(1,2)
donnerait un vecteur ligne à deux colonnes.

13
P (x) = 3x2 − 5x + 2, il suffit de le représenter par le vecteur P :

>> P = [3 -5 2]
P = 3 -5 2

Exercice :
Soit Q le polynôme défini par : Q(x) = 3x3 − 4x + 1.
1) Utiliser la fonction polyval, pour calculer les Q(1), Q(3), Q(−5).
2) Soit x le vecteur déclaré par la commande x=[-1:0.1:2]. Entrer la com-
mande polyval(Q,x) et observer le résulat.
3) Résoudre l’équation Q(x) = 0.
4) Donner la dérivée de Q.

7 Construction et opérations sur les matrices

Les matrices se déclarent comme des vecteurs. En effet, Matlab considère les
vecteurs comme des matrices spécifiques (à une seule ligne ou une seule colonne)
et considère les scalaires commes de matrices de dimension 1 × 1.

En déclarant une matrice de la manière suivante :

>> A=[1,2;3,5]

on obtient le résultat suivant :

A= 1 2
3 5

Pour accéder à l’élément dans la ime ligne de la j me colonne d’une matrice A, il


suffit de taper A(i,j).

14
Exercice :
Entrer les commandes suivantes et en commenter les résultats :
1) A=rand(4,3), A(2,:), A(:,3), A(1:2,2:3), length(A), size(A).
2) eye(2), eye(2,4), ones(2,6), ones(3), zeros(5), zeros(4,3).
3) Soient C=rand(3,3) et D=rand(3,3). Que font les instructions suivantes :

3*C, C.*D, C./D, C.^ D, cos(C), exp(D)

Exercice :
On note par 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

1) Calculer avec Matlab, quand c’est possible, les produits AB, BA, BC, CB
et AB T . Pour certains produits Matlab renvoie un message d’erreur, expliquer
pourquoi ?
2) Calculer la matrice D = I2 − BB T .
3) Calculer les déterminants des matrices A, B, C, D et E = AAT .
4) Calculer les inverses des matrices A, B, C, D et E.
5) Calculer les valeurs propres de la matrice E. Quel est le rayon spectral de E ?
6) Déterminer les vecteurs propres de la matrice E ?

Il est aussi possible de créer une matrice par concaténation. Lorsque les dimen-
sions de deux matrices A et B sont adéquates, on peut lancer la commande [A
B] ou [A,B] qui donnera une nouvelle matrice.

Exercice :
1) Concaténer les matrices A=rand(4,3) et B=ones(1,3) en utilisant la
bonne opération.
2) Construire la matrice

15
 
1 2.4 0 0 0 0 5
1 0 2.4 0 0 0 6
 
1 0 0 2.4 0 0 7
 
1 0 0 0 2.4 0 8
1 0 0 0 0 2.4 9

en utilisant la concaténation.

Exercice : (Matrices diagonales)


Construire la matrice tridiagonale suivante

 
1 −2 0 0 0
4 1 −1 0 0
 
0 9
A= 1 0 0
0 0 16 1 1
0 0 0 25 1

en utilisant la manière la plus simple possible.

Les matrices modélisant cetrains phénomènes physiques sont souvent creuses


c’est à dire contenant beaucoup d’éléments nuls. Il a donc été prévu sous Mat-
lab de ne pas stocker les ‘zéros’ des matrices creuses et ce afin de gagner en place
mémoire. Les commandes prévues pour cette tâche sont les commandes sparse
et full. Ainsi, la commande sA = sparse(A) génère une matrice sA qui ne
comporte (en mémoire) que les éléments non nuls de A. On peut revenir à A par
A = full(sA).

Exercice :
1) Consulter l’aide de Matlab pour découvrir les fonctions sparse, full, spdiags,
speye, spones et sprandn.
2) Exécuter la commande sparse(A) où A est la matrice déclarée dans l’exer-
cice précédent.

16
8 Structures conditionnelles et itératives

8.1 Opérateurs booléens

Les structures if, switch et while sont souvent associées à des expressions
booléennes. Ces expressions booléennes utilisent des opératuers booléens tels
que :

Les opérateurs booléens sont "NON" ( e =), "EGAL" (==), "OU" (|), "ET" (&) et
"OU EXCLUSIF" (xor).

Exercice :
Entrer successivement les commandes suivantes puis les commenter :
a=5, a==5 et a==3.

8.2 Structure conditionnelle ‘if’

Les diffèrentes syntaxes du test (if) sont :

1)
if expression booléenne
instructions
end

2)
if expression booléenne
instructions
else
instructions
end
3)
if expression booléenne
instructions

17
elseif expression booléenne
instructions
else
instructions
end

8.3 Branchement ‘switch’

Le branchement switch effectue, en fonction de la valeur d’une expression donnée


(scalaire ou chaîne de caractères), un traitement donné. La syntaxe de ce branche-
ment est la suivante :

switch expression
case valeur 1
suite d’instructions 1
case valeur 2
suite d’instructions 2
..
.
case valeur N
suite d’instructions N
otherwise
autres instructions
end

8.4 Boucle ‘for’

La syntaxe de la boucle for est la suivante :

for indice=debut :pas :fin


instructions
end

18
Remarque :
Dans la structutre précédente, si le pas est égal à 1, on peut remplacer l’écriture
"debut :1 :fin :" par "debut :fin".

Exercice
1) Déclarer le vecteur u=rand(4,1).
2) Exécuter la commande v1=sin(u).
3) Exécuter la commande

for i=1..size(u),
v2(i)=sin(u(i))
end

Cette commande est-elle correcte ? La rectifier si nécessaire.


4) Comparer v1 et v2.

8.5 Boucle ‘while’

La syntaxe de la boucle while est la suivante :

while expression
instructions
end

Exercice
En utilisant la boucle while, écrire une commande qui permet de déterminer si
l’entier 137 est premier ou non.

19
9 Programmation et utilisation de fonctions

9.1 Scripts

Si les commandes entrées par l’utilisateur sont de plus en plus compliquées et né-
cessitent d’introduire de nouvelles fonctions, il est possible d’utiliser l’éditeur de
textes incorporé dans Matlab pour créer des scripts ayant en général l’extension
“.m”. On peut lancer par la suite les commandes contenues dans un script Exem-
pleScript.m en tapant juste ExempleScript dans l’invite de commandes Matlab.

Remarques :
1) Pour lister l’ensemble des fichiers *.m ou *.mat disponibles, il suffit d’utiliser
la commande what.
2) Lors de l’édition d’un script, il est possible de rajouter des commentaires expli-
catifs sur l’utilité et l’intérêt des commandes écrites. Ces commentaires peuvent
simplifier l’utilisation et la compréhension du contenu du script par un autre uti-
lisateur. Un commentaire est toujours précédé par le signe % comme l’indique
l’exemple suivant :

% Ceci est un commentaire.

Exercice :
1) Créer à partir de l’éditeur de Matlab un fichier ExempleScript.m contenant les
lignes suivantes :

V=rand(10,1);
M=abs(V(1));
for i=2:length(V)
if (abs(V(i)) > M)
M=abs(V(i));
end
end

2) Taper dans l’invite de commande Matlab la commande ExempleScript et


observez le résultat.

20
9.2 Fonctions

Pour expliquer l’utilité de la notion de fonctions, on va reprendre l’exemple pré-


cédent. Le script ExempleScript.m permet de calculer la norme infinie du vecteur
V déclaré dans le même script. Si on a souvent recours au calcul de la norme infi-
nie d’un vecteur, il est plus commode de déclarer une fonction, qui prend comme
entrée un vecteur V et renvoi un retour sa norme infinie 5 . Ainsi, on crée un fichier
NormeInf.m dans lequel on déclare la fonction NormeInf de la facon suivante

function [M] = NormeInf(V)


M=abs(V(1));
for i=2: size(V)
if (abs(V(i)) > M)
M=abs(V(i));
end
end

Par la suite, on lance dans l’invite des commandes Matlab la commande :

NormeInf(rand(12,1))

Pour généraliser, une fonction se déclare come suit :

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


instructions
end

Pour exécuter cette fonction, on utilise la commande :

[vars1,vars2,...]=nomfonction(vare1,vare2,..)

Remarques :
1) Le nom d’une fonction nomfonction doit être déclaré dans un script appelé
nomfonction.m.
5. Cette fonction existe déjà sous Matlab mais on donne cet exemple pour expliquer la notion
de fonction.

21
2) Une fonction peut être déclarée enrichie de commentaires de la manière sui-
vante :

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


% Commentaires explicatifs sur le rôle de la fonction
instructions

Cette façon de déclarer la fonction, permet à un utilisateur qui entre la commande

help nomfonction

d’avoir comme réponse les commentaires explicatifs entrées lors de la déclaration


de la fonction nomfonction.

On peut aussi utiliser la commande inline pour définir des fonctions sous forme
analytique. Par exemple, la commande

>> f = inline(’sin(x)+x’, ’x’)

définit l’application f (x) = sin(x) + x.

Exercice :
Ecrire les fonctions permettant de calculer pour un vecteur X = (x1 , x2 , . . . , xn )
de Rn sa norme
Pi=n
1) kXk1 = i=1 |xi |.
P 1/2
i=n 2
2) kXk2 = x
i=1 i .

Exercice :
Reprendre la fonction NormInf déclarée ci-dessus et la réécrire en utilisant la
commande sort.

22
10 Utilisation de fonctions aléatoires

Matlab incorpore des fonctions permettant de générer des nombres (pseudo) aléa-
toires. Le terme (pseudo) aléatoire est utilisé car la génération de ces nombres ne
dépend pas vraiment du hasard mais d’une graine ("seed" en anglais) qui est en
général le nombre de secondes à partir d’un date donnée.

Plusieurs lois de probabilité sont incorporées dans Matlab. Selon que l’espace
détats des réels tirés aléatoirement soit discret ou continu, la loi de probablilité
est appelée discrète ou continue. Pour avoir une idée sur l’ensemble des loi de
probabilités progammés dans Matlab, entrer la commande :

help random

Exercice :
Exécuter les commandes permettant de tirer aléatoirement des réels suivant les
lois binomiale et de Poisson.

Parmi les lois continues, on peut citer :


– La loi uniforme réalisée par la commande rand() qui permet de tirer aléatoi-
rement des réels dans [0,1] de façon uniforme.
– La loi normale ayant deux parmètres : une moyenne et une déviation standard.
Cette loi est réalisée par la commande randn et permet de tirer aléatoirement
des réels dans R en privilégiant ceux autour de la moyenne.

Exercice :
Ecrire la commande qui permet de tirer aléatoirement et uniformément des réels
dans l’intervalle [−2, 1].

Exercice : On considère l’expérience : "lancer une pièce de monnaie". On se pro-


pose de vérifier numériquement que la probabilité d’avoir un réel dans [0, 12 ] via
la commande rand est égale à 12 . Écrire un script qui lance la commande rand()
N fois et qui calcule le rapport, X N du nombre de fois où le résultat de rand() est
un réel inférieur à 12 sur N . La loi des grands nombres prévoit que X N converge
vers 12 lorsque N → +∞. Programmer une boucle qui calcule en fonction deN la

23
1
moyenne X N jusqu’à atteindre la probabilité 2
à 0.001 près.

11 Opérations d’entrée/sortie

11.1 Entrée/Sortie de données texte

11.1.1 Affichage dans la sortie standard de Matlab

La commande la plus élémentaire pour afficher sur l’interface de matlab le contenu


d’une variable est la commande disp. Par exemple, pour afficher le contenu
d’une variable a, on fait disp (a).

Exercice :
Exécuter successivement les commandes a=12, disp (a), disp a et disp
(’a’) et commenter les résultats.

Dans le cas où l’on veut afficher des messages plus élégants du type :
"Les variables a et b sont 2 et 2.3".
on peut utiliser la commande sprintf comme suit :

sprintf(’Les variables a et b sont :%d et %f’,a,b)

Dans cette commande, on a utilisé le %d pour afficher la variable a en format


entier et %f (float) pour afficher b en un format réel avec une précision particulière.
Pour plus de détails sur les diffèrents formats d’affichage, on peut se réfèrer aux
sections 11.1.2 et 11.3 ou on peut entrer la commande help format.

24
11.1.2 Lecture/écriture dans un fichier

Pour ouvrir un fichier, on utilise

>> fid=fopen(’NomFichier’, Mode)

où Mode est le mode d’ouverture :


’r’ : lecture seule
’w’ : création ou lecture.

Le paramètre de sortie ‘fid’ =-1 si erreur ; > 1 autrement.

La commande

>> A = fscanf(fid,format)

permet de lire à partir d’un fichier (en ASCII) les données avec le format spécifié.
Un format est une chaîne de caractères spécifiant en lecture le type de données à
lire :
\%d : pour un entier
\%f : pour un réel
\%c : pour un caractère.

Optionellement, le nombre maximal de données à lire peut être spécifié avec le


paramètre d’entrée ‘size’ :

>> [A,count] = fscanf(fid,format,size)

Le paramètre de sortie ‘count’ renvoie le nombre de données effectivement lues.

Pour fermer un fichier, on utilise

>> statut = close(fid)

Le paramètre de sortie ‘statut’ =0 si succès ; =-1 si erreur.

25
11.2 Entée/Sortie des données formatées

Il est possible de sauvegarder une ou plusieurs variables dans un fichier spéci-


fique Matlab dont l’extension est ‘.mat’. La commande à utiliser est save. Voici
quelques exemples d’utilisation de cette commande avec des différentes options :

save fname : sauve (format binaire par défaut) tous les variables de la session ;
save fname X : sauve X seulement ;
save fname X Y Z : sauve X, Y, et Z ;
save fname X -ascii : utilise le format ASCII 8-digit ;
save fname X -ascii -double : utilise le format ASCII 16-digit ;
save fname X -ascii -tab : utilise le format ASCII 8-digit délimité par
des tabs.

On peut aussi effectuer la sauvegrde des variables en tapant :


save(fname, ’X’, ’Y’);

Pour recharger un tel fichier on utilisera la commande load fname ou de ma-


nière équivalent la commande load(fname) Chaque variable ayant été sau-
vegardée par son nom, les variables rechargées auront les noms, dimensions et
valeurs au moment de la sauvegarde. Toutefois, il faut en général prévoir le cas
de non existence de fichier qu’on veut recharger. Dans ce cas, il est préférable de
tester l’existence du fichier avant en faisant

if exist(fname, ’file’)
load(fname);
end;

Exercice :
Écrire une commande qui permet de vérifier si un répertoire ’REP’ existe ou pas
et de le créer en faisant mkdir sinon.

Remarque :
D’autres commandes comme fclose, fwrite, fseek, fprintf sont prévus

26
pour le traitements des opération d’entrée/sortie depuis et vers des fichiers. Des
détails sur ces commandes (et d’autres) sont disponibles dans la table Entrée-sortie
de la section 14.

11.3 Formats d’affichage

Tous les calculs effectués dans Matlab le sont en double précision. Cependant le
format d’affichage des résultats peut être contrôlé par la commande format. On
distingue les formats suivants :

format short 4 décimales (par défaut)


format long 14 décimales
format short e 4 décimales notation scientifique
format long e 14 décimales notation scientifique
format rat approximation par une fraction rationnelle

Exercice :
On considère une expérience simple qui consiste à créer aléatoirement uniformé-
ment un vecteur de taille i et de sauvegarder sa norme dans un fichier nommé
Expériencei.mat.
On suppose que l’on doit effectuer 10 fois cette expérience (pour i ∈ [1, 10]) et
sauvegarder les résultats de ces 10 expériences dans les fichiers Expériencei.mat
correspondant. En utilisant la boucle ’for’, sauvegarder de manière automatique
ces résultats dans les fichiers correspondants.

12 Utilisation des graphiques

Pour consulter l’aide sur tout ce qui est représentations graphiques, on peut taper
help plot.
Les principales fonctions pour les graphiques 2D sont :
plot, plotyy, loglog, semilogx, semilogy, figure, close, subplot,
...

27
12.1 Graphes en 2D

Exercice
1) Effectuer successivement les commandes suivantes et commenter les résultats
obtenus

>> x=-1:0.1:1
>> y=sin(x)
>> plot(x,y)
>> title(’Exemple de graphique 2D’)
>> xlabel(’Axe des abscisses’)
>> ylabel(’Axe des ordonnees’)
>> grid on
>> hold on
>> plot(x,cos(x),’+r’);
>> plot(x,sin(x),’+-b’);

2) Cherchez dans l’aide Matlab les commandes permettant :


– la sauvegarde des figures,
– l’ajout d’une légende sur une figure,
– la modification de la police,
– la modification des longueurs des axes.

Exercice
Faire la représentation graphique de la fonction f définie par
f (x) = cos2 (x) x ∈ [0, 5]
1) Pour tracer, on utilisera 6 points puis 26 et enfin 301 points équirépartis dans le
segment [0, 5].
Préciser dans chaque cas la subdivision utilisée.
2) Représenter sur la même figure les fonctions :
f (x) = cos2 (x), g(x) = cos(2x), h(x) = cos(x2 ), pour x ∈ [0, 5]. Penser à
utiliser des symboles différents pour les différentes représentations graphiques et
à mettre une légende. On pourra faire help plot pour consulter la liste des
options, styles et symboles.

28
12.1.1 Courbes en coordonnées polaires

Les courbes en coordonnées polaires peuvent être obtenues via la commande po-
lar.

Exercice :
1) En utilisant la commande polar, tracer la courbe polaire

r = 2 + 2 cos(θ), θ ∈ [−π, π] .

2) Le diagramme de directivité du rayonnement par une ouverture circulaire est


donné par :
J1 (ka sin(θ))
D(θ) =
ka sin(θ)
où k est le vecteur d’onde, a le rayon de l’ouverture et J1 la fonction de Bessel de
première espèce d’ordre 1. Pour ka = 5, tracer le diagramme de directivité D(θ).

12.1.2 Histogrammes et Diagrammes

Exercice
On se propose de caractériser et comparer les lois : uniforme sur [-4,4], normale de
moyenne 0 et deviation standard 1 et la loi normale de moyenne 0 et de déviation
standard 2.
1) Ecrire une fonction matlab MyFunction permettant, pour une loi donnée de :
– Générer un vecteur v1 de taille 106 dont les éléments sont tirés aléatoirement
selon cette loi.
– Ordonner les éléments de ce vecteur
– Déclarer le vecteur v2=[-4:0.1:4]
– Pour chaque v2(i), calculer ni comme étant les nombre d’éléments de v1 dans
l’intervalle [v2(i), v2(i + 1)[.
– Construire N = (ni ). Normaliser les éléments de N par 106 .
L’argument de sortie de la fonction MyFunction est le vecteur N .
2) Lancer la fonction MyFunction pour les trois lois citées au début de l’exercice.
3) Tracer N en fonction de v2 pour chacune de ces lois et commenter les résultats.
4) Pour chacune des lois étudiées, quelle est la probabilité de tirer un réel dans

29
[−1, 1], [−2, 2] et [−3, 3].
5) Reprendre la question 3 en utilisant seulement la commande hist et sans
passer par la fonction MyFunction.

Exercice
Tester les commandes : bar, stairs, stem.

12.1.3 Plusieurs graphes sur une même figure

Cette fonctionnalité est assurée par la commande subplot.

Exercice
Déclarer les vecteurs X = [0, π/10, 2π/10, ...., 2π], Y 1 = sin(X) et Y 2 =
cos(X), puis utiliser subplot(2,1,1) et subplot(2,1,2) pour tracer sur
une même figure les deux graphes des fonctions sinus et cosinus, l’un en dessous
de l’autre.

12.2 Graphes en 3D

Les principales fonctions disponibles pour tracer des graphes en 3D sont : plot3,
mesh, meshgrid, surf, surfc, ezmesh, ezmeshc, ezsurf, ezsurfc,
sphere, cylinder,. . .

Exercice
Utiliser l’aide de Matlab pour découvrir ce que font ces fonctions.

12.2.1 Courbes paramétrées

Exercice
Tracer la courbe paramétrique x = cos(t), y = sin(t) et z = t2 en utilisant la

30
commande adéquate, où t = [0, π/10, . . . , 10π].

12.2.2 Surfaces

Exercice p
1) Tracer la surface z = sin(r)/r où r = x2 + y 2 + z 2 en utilisant la commande
ezmesh puis la commande ezsurfc.
2) Pour un tracé de meilleure qualité (dégradé de couleur sans grid), taper ensuite
shading interp.

31
13 Applications

13.1 Méthode de Gauss

1) Soit A une matrice triangulaire supérieure de taille n et b un vecteur dans Rn .


Ecrire l’alghorithme de résolution de Ax = b.
2) Ecrire une fonction Matlab function x = Elim(A,b) qui prend en ar-
guments une matrice triangulaire A et un vecteur b et résoud le système linéaire
Ax = b.
3) Ecrire l’algorithme du pivot de Gauss pour la résolution du système linéaire
Ax = b.
4) Ecrire une fonction function x = gauss(A,b) qui prend en arguments
une matrice carée A et un vecteur b et résoud le système linéaire Ax = b.
5) Tester la méthode avec

   
1 2 3 6 1
 4 3 2 3   2 
A=  et b=
 1 .

 9 9 1 −2 
4 2 2 1 4

Remarque Inconvenients de la méthode de Gauss : nombre d’opérations, de l’ordre


de n3 /2. De plus, cette méthode a tendance à remplir les matrices creuses. Enfin,
les erreurs d’arrondis inhérentes aux calculs (précision machine) peuvent, dans le
cas où des pivots sont mal choisis, conduire à des erreurs très importantes sur la
solution.

13.2 Résolution de Ax=b

On se propose de résoudre le système :

2x + 3y + 4z = 3
x−y−z =0 (1)
−x + 4y + z = 5

32
1) Écrire ce système sous la forme AX = b (Donner A et b).
2) Donner la solution du sytème en utilisant :
– la commande inv
– la commande linsolve
– la commande A \ b
– la méthode de Gauss (Utiliser la fonction de l’exercice précédent) :
1. A(2, :) = A(2, :) − 21 A(1, :)
2. b(2) = b(2) − 12 b(1)
3. A(3, :) = A(3, :) + 21 A(1, :)
4. b(3) = b(3) + 12 b(1)
5. . . .
5) Comparer les résultats.

13.3 Autour du Laplacien

On va éditer un fichier Laplacien1D.m.


1. Assemblage des matrices
On considère le problème suivant :

d2 u
− 2 = 4π 2 sin(2x), ∀x ∈]0, 1[ .
dx
On utilisera pour cela l’approximation :
d2 u ui+1 − 2ui + ui−1
2
(xi ) ' avec u(xi ) = ui et xi = i ∗ h .
dx h2
Assembler la matrice du Laplacien. On notera que sa structure étant diagonale, on
aura tout intérêt à utiliser judicieusement les commandes speye et colon pour évi-
ter d’écrire la moindre boucle. Pour s’en convaincre, utiliser la commande whos
-name nomVar pour afficher la taille de la variable nomVar.
2. Résolution d’un système linéaire – Affichage 2D
a) Résoudre le problème à l’aide de la méthode de Gauss.
b) Afficher la solution à l’aide de la commande plot.
c) Mêmes questions avec le problème suivant (on éditera le fichier laplacien2D.m) :

d2 u d2 u
− − = 13π 2 sin(2x) cos(3y), ∀(x, y) ∈]0, 1[×]0, 1[ .
dx2 dy 2

33
On utilisera également une discrétisation en x et y. Afin de tester une autre mé-
thode d’assemblage de matrice, on pourra utiliser les commande speye, spdiags
et ones de manière judicieuse. Pour l’affichage, on utilisera cette fois-ci la com-
mande surf et la commande reshape.

13.4 Résolution d’une équation différentielle

On se propose de résoudre l’équation différentielle du second ordre


d2 x dx
2
+ 2δ + w02 x = 0 .
dt dt
1) Résoudre, en utilisant Matlab, l’équation caractéristique :
s2 + 2δs + w02 = 0 .
Les solutions de cette équation dépendent du couple (δ, w0 ). Afficher selon les cas
(δ, w0 ) la nature du régime et la solution correspondante :
– Cas δ > w0 : Régime apériodique et la solution est de la forme :
x(t) = A1 es1 t + A2 es2 t .
– Cas δ = w0 : Régime critique et la solution est de la forme :
x(t) = (A1 + A2 t)e−δt
– Cas δ < w0 : Régime pseudo-périodique et la solution est de la forme :
x(t) = Ae−δt cos(wD t + ϕ) ,
p
où wD = w02 − δ 2 .
2) On rajoute à l’éqaution différentielle les conditions initiales :
x0 = x(t = 0)
(2)
y0 = x0 (t = 0)

a) Écrire les conditions initiales sous forme matricielle : SA = X0 (Donner S et


A).
b) Déduire pour chaque cas de régime, l’écriture complète de la solution en fonc-
tion des conditions initiales.

34
14 Liste des commandes utiles

Aides et commandes générales


demo Programme de démonstration
exit Quitte Matlab
help Aide en ligne
info Informations sur Matlab et The MatWorks
lookfor Recherche par mot clé dans les textes d’aide en ligne
matlabrc Script de démarrage
path Contrôle du chemin de recherche des commandes
quit Exécute le script finish.m et quitte Matlab
type Affiche le contenu d’un fichier M
what Liste des fichiers M, MAT et MEX du répertoire courant
which Localise fonctions et fichiers

Variables et espace de travail


clear Efface variables et fonctions de l’espace de travail
disp Affiche texte et matrice
length Longueur d’un vecteur
load Charge le contenu de variables sauvegardées sur disque
pack Défragmente la mémoire
save Sauve le contenu de variables sur disque
size Dimensions d’une matrice
who Affiche la liste des variables de l’espace de travail
whos Identique à who avec plus de détails

Commandes système
cd Change de répertoire
delete Détruit un fichier
diary Sauvegarde la session en cours dans un fichier texte
dir Affiche le contenu du répertoire courant
getenv Retourne la valeur d’une variable d’environement
unix Exécute une commande système et retourne le résultat
! Exécute une commande système

35
Contrôle de la fenêtre des commandes
clc Efface la fenêtre des commandes
echo Renvoie les commandes d’un fichier M
format Contrôle le format d’affichage
home Place le curseur en haut de la fenêtre des commandes
more Affichage page par page dans la fenêtre

Horloges
clock Date et heure sous forme de vecteur
cputime Temps CPU
date La date d’aujourd’hui
etime Mesure un intervalle de temps
tic, toc Chronomètre

36
Opérateurs et caractères spéciaux
+ Plus
- Moins
* Produit
.* Produit élément par élément
^ Puissance de matrice
.^ Puissance élément par élément
kron Produit tensoriel de Kronecker
\ Backslash ou division à gauche
.\ Division à gauche élément par élément
/ Slash ou division à droite
./ Division à droite élément par élément
: Indices ou génération de vecteur
() Parenthèses, arguments d’entrée de fonction
[] Crochets, arguments de sortie de fonction
. Point décimal
.. Répertoire parent
... Continue l’instruction sur la ligne suivante
,; Séparateurs
% Commentaires
! Commande système
’ Transposition (complexe conjugué), chaine de caractère
.’ Transposition non complexe
= Affectation
== Egalité
<> Opérateurs relationnels
& ET logique
| OU logique
~X NON logique
xor OU EXCLUSIF logique

37
Variables et constantes prédéfinies
ans Variable d’affectation par défaut
computer Type d’ordinateur et de système
eps Epsilon machine
i, j Unités imaginaires
inf Infini
NaN Not-a-number
nargin Nombre d’arguments d’entrée d’une fonction
nargout Nombre d’arguments de sortie
pi 3.14159265358979
realmax Plus grand nombre flottant
realmin Plus petit nombre flottant

38
Fonctions mathématiques élémentaires
abs Valeur absolue
acos Cosinus inverse
acosh Cosinus hyperbolique inverse
angle Argument
asin Sinus inverse
asinh Sinus hyperbolique inverse
atan Tangente inverse
atanh Tangente hyperbolique inverse
ceil Plafond
conj Conjugué
cos Cosinus
cosh Cosinus hyperbolique
exp Exponentielle
fix Arrondi vers 0
floor Plancher
imag Partie imaginaire
log Logarithme népérien
log10 Logarithme décimal
real Partie réelle
rem Reste de la division euclidienne
round Arrondi vers l’entier le plus proche
sign Signe
sinh Sinus hyperbolique
sqrt Racine carrée
tan Tangente
tanh Tangente hyperbolique

39
Fonctions logiques
all Vrai si tous les éléments d’un vecteur sont non nuls
any Vrai si au moins un élément d’un vecteur est non nul
exist Vérifie si une variable ou une fonction existe
find Retourne les indices des élélements non nuls
isempty Vrai pour matrice vide
isinf Vrai pour élément infini
isnan Vrai pour NaN (Not-a-Number)
issparse Vrai pour matrice creuse
isstr Vrai pour chaine de caractère

Instructions de contrôle
break Termine une boucle
else sinon, utilisé avec if
elseif sinon si, utilisé avec if
end Termine for, if et while
error Retourne un message d’erreur et termine une fonction
for Répétition
if Instruction conditionnelle
return Retour à la fonction appelante
while Boucle tant que

Instructions interactives
input Attente d’une entrée au clavier
keyboard Donne la main à l’utilisateur juqu’à un return
menu Crée un menu
pause Attente de réponse

40
Création de matrices
eye Matrice identité
linspace Génère des vecteurs espacés arithmétiquement
logspace Génère des vecteur espacés logarithmiquement
meshgrid Génère une grille pour les graphes en 3D
ones Matrice de 1
rand Générateur aléatoire selon une loi uniforme
randn Générateur aléatoire selon une loi normale
zeros Matrice de 0

Manipulation de matrice
diag Crée ou extrait une matrice diagonale
fliplr Permutte les colonnes d’une matrice
flipud Permutte les lignes d’une matrice
reshape Modifie la taille d’une matrice
rot90 Rotation de 90◦ dans le sens trigonométrique
tril Extrait une matrice triangualaire inférieure
triu Extrait une matrice triangualaire supérieure

41
Analyse numérique matricielle
chol Factorisation de Cholesky
cond Conditionnement
det Déterminant
eig Valeurs propres et vecteurs propres
inv Inverse
lscov Moindres carrés avec matrice de covariance donnée
lu Factorisation LU
nnls Moindres carrés avec contrainte de positivité
norm Norme
null Base orthonormale du noyau
orth Base orthonormale de l’image
pinv Pseudoinverse
poly Polynôme caractéristique
rank Rang (= dimension de l’image)
svd Décomposition en valeurs singulières
trace Somme des éléments diagonaux
/ Résolution d’équations linéaires

Analyse de données
corrcoef Coefficients de corrélation
cov Matrice de covariance
cumprod Produits cumulés des composantes
cumsum Sommes cumulées des composantes
max Plus grande composante
mean Moyenne des composantes
median Médiane des composantes
min Plus petite composante
prod Produit des composantes
sort Tri des composantes
std Ecart type des composantes
sum Somme des composantes

42
Polynômes
conv Produit de polynômes
deconv Division de polynômes
poly Définit un polynôme à partir des racines
polyder Polynôme dérivé
polyfit Interpolation polynomiale
polyval Valeur d’un polynôme
polyvalm Valeur d’un polynôme avec argument matriciel
residue Décomposition de fraction rationnelle
roots Racines d’un polynôme

Méthodes numériques
del2 Approximation du Laplacien
diff Différences finies
gradient Approximation du gradient
fmin Minimise une fonction d’une variable
fmins Minimise une fonction de plusieurs variables
fplot Graphe de fonction
fzero Zéro d’une fonction d’une variable
ode43 Intégration e.d.o.
ode45 Intégration e.d.o., méthodes d’ordre supérieur
quad Intégration numérique
quad8 Intégration numérique, méthodes d’ordre supérieur
trapz Intégration numérique, méthode des trapèzes

Chaines de caractères
lower Conversion en minuscules
strcmp Comparaison de chaines de caractères
upper Conversion en majuscules
int2str Entier → Chaine
num2str Valeur numérique → Chaine
sprintf Ecriture formatée
sscanf Lecture formatée
str2num Chaine → Valeur numérique

43
Entrée-sortie
fclose Ferme un fichier
ferror Nature d’une erreur d’entrée-sortie
fgetl Lecture de ligne, pointeur en fin de ligne
fgets Lecture de ligne, pointeur en début de ligne
fopen Ouvre un fichier
fprintf Ecriture de données formatées
fread Lecture de données binaires dans un fichier
frewind Pointeur en début de fichier
fscanf Lecture de données formatées
fseek Positionne le pointeur
ftell Renvoie la position du pointeur
fwrite Ecriture de données binaires dans un fichier
sprintf Ecriture de données formatées en chaine de caractères
sscanf Lecture de chaine de caractères selon un format

Graphiques 2D
bar Diagramme en barres
fplot Graphe de fonction
hist Histogramme
plot Graphe 2D
polar Graphe en coordonnées polaires
stairs Graphe en escalier

Graphiques 3D
contour Lignes de niveau
mesh Graphe 3D
surf Graphe 3D avec effet d’ombre

44
Commandes graphiques diverses
axes Création d’axes
axis Contrôle des axes de coordonnées
clf Efface la figure courante
close Ferme une fenêtre graphique
figure Ouvre une nouvelle fenêtre graphique
ginput Renvoie la position de la souris sur un graphique
grid Quadrillage
hold Permet d’ajouter des tracés à un graphique déjà existant
legende Ajoute une légende
subplot Plusieurs figures dans un même fenêtre
text Placement de texte
title Titre de graphique
xlabel Titre de l’axe des x
ylabel Titre de l’axe des y
zlabel Titre de l’axe des z

45

Vous aimerez peut-être aussi