Initiation à Matlab
Année Universitaire 2016/2017 logo
ENIT Initiation à Matlab 1
Chapitre I : Environnement Matlab
logo
ENIT Initiation à Matlab 2
Introduction
Matlab, abréviation de MATrix LABoratory, est un logiciel de
calcul, de programmation et de visualisation graphique. Son nom
signifie qu’il est un environnement interactif avec les matrices. Sa
dernière version est R2016a (mars 2016). Pour lancer Matlab sous
PC Windows, il suffit de cliquer sur l’icone Matlab pour obtenir,
logo
ENIT Initiation à Matlab 3
logo
ENIT Initiation à Matlab 4
logo
On quitte de logiciel en tapant exit ou quit ou on utilise la souris.
ENIT Initiation à Matlab 4
Aspects élémentaires
On se retrouve alors dans la fenêtre de commandes où on peut
écrire des commandes ou executer des fonctions et défnir des
données variables. Dans Matlab, comme exemples, essayer, dans
l’ordre, les instructions en bleu suivantes :
x
x=2
x
x=2 ;
2*x+5
y=x+ans
logo
ENIT Initiation à Matlab 5
Voici les résultats : Les notes en vert après le symbole % sont des
commentaires concernant les résultats :
>> x
? ? ? Undefined function or variable ’x’. % La variable x n’est pas
encore définie.
>> x=2
% On définit la variable x
x=
2
>> x
% La variable x est maintenant bien définie.
logo
ENIT Initiation à Matlab 6
x=
2
>> x=2 ;
% On peut définir la variable x sans l’afficher en utilisant un point
virgule.
logo
ENIT Initiation à Matlab 7
>> 3+ans
ans =
10
% Ici ’ans’ est la dernière instruction exécutée.
Pour modifier dans une instruction précédente on peut utiliser les
touches ↑ et ↓ pour la retrouver.
logo
ENIT Initiation à Matlab 8
Séparations d’instructions
Plusieurs instructions peuvent figurer sur une même ligne. Il faut
les séparer par une virgule ou par un point virgule.
Voici un exemple
>> a=x+1, b=2*x ; c=a+b,
a=
3
c=
5
logo
ENIT Initiation à Matlab 9
Pause dans l’execution
Si on entre la commande pause dans un ensemble de commandes,
le programme s’arrêtera à cette étape tant qu’on ne tape pas
entrée.
logo
ENIT Initiation à Matlab 10
Pause dans l’execution
Si on entre la commande pause dans un ensemble de commandes,
le programme s’arrêtera à cette étape tant qu’on ne tape pas
entrée.
Temps de calcul
On peut calculer le temps de calcul pris par Matlab pour executer
une commande. Il suffit d’insérer la commande tic au début de la
simulation (cela fera partir le chronomètre) et de placer toc
lorsqu’on veut que le temps s’arrête.
logo
ENIT Initiation à Matlab 10
Pause dans l’execution
Si on entre la commande pause dans un ensemble de commandes,
le programme s’arrêtera à cette étape tant qu’on ne tape pas
entrée.
Temps de calcul
On peut calculer le temps de calcul pris par Matlab pour executer
une commande. Il suffit d’insérer la commande tic au début de la
simulation (cela fera partir le chronomètre) et de placer toc
lorsqu’on veut que le temps s’arrête.
Exemple
Calculer en utilisant la commande pause et en précisant le temps
de calcul d’abord 10 ! puis 6 !.
logo
ENIT Initiation à Matlab 10
Pause dans l’execution
Si on entre la commande pause dans un ensemble de commandes,
le programme s’arrêtera à cette étape tant qu’on ne tape pas
entrée.
Temps de calcul
On peut calculer le temps de calcul pris par Matlab pour executer
une commande. Il suffit d’insérer la commande tic au début de la
simulation (cela fera partir le chronomètre) et de placer toc
lorsqu’on veut que le temps s’arrête.
Exemple
Calculer en utilisant la commande pause et en précisant le temps
de calcul d’abord 10 ! puis 6 !.
Pour stopper une commande ou un programme en execution, on
utilise ctrl-c. On a besoin de stopper un programme Matlab
lorsqu’il tourne mal.
logo
ENIT Initiation à Matlab 10
Informations générales
Pour afficher la liste des variables actives de l’espace de travail, on
utilise l’une des commandes ’who’ ou ’whos’.
logo
ENIT Initiation à Matlab 11
Informations générales
Pour afficher la liste des variables actives de l’espace de travail, on
utilise l’une des commandes ’who’ ou ’whos’. La commande ’who’
affiche le nom des commandes et ’whos’ donne plus
d’informations : le nom, la taille, l’espace mémoire utilisé (en
bytes)... Essayer ces deux instructions.
logo
ENIT Initiation à Matlab 11
La commande ’clc’ permet d’effacer toute la fenêtre de commandes
mais pas les variables crées dans la fenêtre ’workspace’.
Tester cette commande.
logo
ENIT Initiation à Matlab 12
La commande ’clc’ permet d’effacer toute la fenêtre de commandes
mais pas les variables crées dans la fenêtre ’workspace’.
Tester cette commande.
Pour détruire une partie de travail on tape ’clear’ suivi du noms de
la variables à nettoyer.
logo
ENIT Initiation à Matlab 12
La commande ’clc’ permet d’effacer toute la fenêtre de commandes
mais pas les variables crées dans la fenêtre ’workspace’.
Tester cette commande.
Pour détruire une partie de travail on tape ’clear’ suivi du noms de
la variables à nettoyer. Pour nettoyer l’espace de travail on utilise
la commande ’clear’. Effacer la variable c puis nettoyer l’espace de
travail.
logo
ENIT Initiation à Matlab 12
Instructions d’aides
Essayer sur Matlab l’instruction ’help’.
logo
ENIT Initiation à Matlab 13
Instructions d’aides
Essayer sur Matlab l’instruction ’help’.Cette instruction seule
donne une liste des répertoires des fonctions Matlab. L’instruction
’help’ suivi d’un nom d’une fonction permet d’obtenir une
description de cette fonction.
logo
ENIT Initiation à Matlab 13
Instructions d’aides
Essayer sur Matlab l’instruction ’help’.Cette instruction seule
donne une liste des répertoires des fonctions Matlab. L’instruction
’help’ suivi d’un nom d’une fonction permet d’obtenir une
description de cette fonction. Attention, dans l’aide, le nom d’une
fonction peut être en majuscule, mais son utilisation doit être en
minuscule.
logo
ENIT Initiation à Matlab 13
Instructions d’aides
Essayer sur Matlab l’instruction ’help’.Cette instruction seule
donne une liste des répertoires des fonctions Matlab. L’instruction
’help’ suivi d’un nom d’une fonction permet d’obtenir une
description de cette fonction. Attention, dans l’aide, le nom d’une
fonction peut être en majuscule, mais son utilisation doit être en
minuscule. Pour chercher une fonction dont on ne connaı̂t pas le
nom exact, on utilise l’instruction ’lookfor’ suivi du nom
approximatif ou par mot clé de la fonction.
Exemples : Pour trouver comment calculer le déterminant d’une
matrice, on peut executer
logo
ENIT Initiation à Matlab 13
>> lookfor determinant
det - Determinant.
>> help Det
DET Determinant.
DET(X) is the determinant of the square matrix X.
logo
ENIT Initiation à Matlab 14
Matlab joue le role d’une calculatrice
Les opérations arithmétiques de base sont + − ∗ / qui sont
utilisées en conjonction avec parenthèse (.).
Le symbole ∧ est utilisé pour élever à une puissance.
2
Exemple Calculer, pour a = 3, aa3 +2 +1
.
logo
ENIT Initiation à Matlab 15
Variables prédéfinies
ans % réponse à une expression sans assignation
eps % précision de la virgule flottante.
pi % le nombre réel π. √
i, j % le nombre complexe i = −1.
inf % ∞.
NaN % not a number.
Préciser la valeur de eps dans la version matlab utilisée.
Calculer 1/0, 1/inf puis inf*0.
logo
ENIT Initiation à Matlab 16
Fonctions portant sur les scalaires
Parmi les fonctions mathématiques incorporées on trouve
logo
ENIT Initiation à Matlab 17
Opérateurs de comparaison et opérateurs logiques
Les opérateurs logiques sont
& : et
| : ou logo
∼ : non
ENIT Initiation à Matlab 18
Chapitre II : Matrices et Polynômes sur Matlab
logo
ENIT Initiation à Matlab 19
Calcul matriciel
Déclaration d’une matrice Pour créer par exemple
la matrice à 2
1 2 3
lignes et 3 colonnes suivante A = on execute la
4 5 6
commande suivante
>> A=[1 2 3 ;4 5 6]
A=
1 2 3
4 5 6
logo
ENIT Initiation à Matlab 20
% le point virgule dans une matrice sert à passer à la ligne
suivante.
Ou encore
>> A=[1,2,3 ;4,5,6]
A=
1 2 3
4 5 6
% une virgule ou un espace dans une matrice sert à séparer deux
termes consécutifs de la même ligne
logo
ENIT Initiation à Matlab 21
Essayer les instructions suivantes et conclure :
A(1,1), A(4,1), A(1), A(4), A’, 2*A, 2./A, A./2, A2 , A.*A,
D=ones(2,3), A+D, B=rand(3), B∧3 , A+B, A*B, A.*B, B*A,
C=A*A’, inv(C),I=eye(2). size(A), length(A), length(A’).
logo
ENIT Initiation à Matlab 22
Essayer les instructions suivantes et conclure :
A(1,1), A(4,1), A(1), A(4), A’, 2*A, 2./A, A./2, A2 , A.*A,
D=ones(2,3), A+D, B=rand(3), B∧3 , A+B, A*B, A.*B, B*A,
C=A*A’, inv(C),I=eye(2). size(A), length(A), length(A’).
Si les tailles des matrices sont incompatibles avec l’opération en
question, Matlab renvoie un message d’erreur.
logo
ENIT Initiation à Matlab 22
En plus des opérations matricielles usuelles, il est possible
d’exectuer des opérations entre deux matrices de même taille
”élément par élément”. Pour cela, il suffit de faire précéder
l’opérateur d’un point (.).
logo
ENIT Initiation à Matlab 23
En plus des opérations matricielles usuelles, il est possible
d’exectuer des opérations entre deux matrices de même taille
”élément par élément”. Pour cela, il suffit de faire précéder
l’opérateur d’un point (.).
Les fonctions réelles ou complexes du premier tableau de ce
document s’appliquent aussi sur les matrices terme à terme.
logo
ENIT Initiation à Matlab 23
En plus des opérations matricielles usuelles, il est possible
d’exectuer des opérations entre deux matrices de même taille
”élément par élément”. Pour cela, il suffit de faire précéder
l’opérateur d’un point (.).
Les fonctions réelles ou complexes du premier tableau de ce
document s’appliquent aussi sur les matrices terme à terme.
Exemple : Calculer cos(A), conj(A), real(A), exp(A).
Calculer expm(A)
logo
ENIT Initiation à Matlab 23
Matrice ligne ou colonne : vecteur
Un vecteur est aussi une matrice ligne ou une matrice colonne.
Donc toutes les instructions matricielles sont applicables pour les
vecteurs.
logo
ENIT Initiation à Matlab 24
Matrice ligne ou colonne : vecteur
Un vecteur est aussi une matrice ligne ou une matrice colonne.
Donc toutes les instructions matricielles sont applicables pour les
vecteurs.
Cependant, la i-ème composante d’un vecteur ligne v(1,i) ou un
vecteur colonne v(i,1) est aussi v(i).
logo
ENIT Initiation à Matlab 24
Matrice ligne ou colonne : vecteur
Un vecteur est aussi une matrice ligne ou une matrice colonne.
Donc toutes les instructions matricielles sont applicables pour les
vecteurs.
Cependant, la i-ème composante d’un vecteur ligne v(1,i) ou un
vecteur colonne v(i,1) est aussi v(i).
La commande ’length’ pour un vecteur désigne la longueur de ce
vecteur.
logo
ENIT Initiation à Matlab 24
Exercice :
Construire deux vecteurs quelconques u et v de R3 puis calculer le
produit scalaire et le produit vectoriel de ces deux vecteurs. (Voir
dans le help dot et cross)
Calculer kuk1 , kvk2 et kuk∞ .
Executer les commandes max(u), min(v) et sum(u) et conclure.
logo
ENIT Initiation à Matlab 25
Sous matrice et Matrice par bloc
On peut extraire une partie d’une matrice par ligne ou par colonne
ou par les deux.
L’expression a :p :b crée une liste ou un vecteur ligne dont les
éléments vont de a à b par pas de p.
Lorsqu’on ne donne pas le pas, la valeur du pas est par défaut 1.
logo
ENIT Initiation à Matlab 26
On peut définir le vecteur ligne par l’instruction linspace(a,b,q), où
l’entier naturel q ici désigne le nombre des valeurs régulièrement
espacées entre a et b en partant de a et allant vers b. Si q n’est
pas entier naturel, Matlab le remplace par sa partie entière.
Taper les commandes suivantes
A(1, :), A( :,2), A( :,1 :2), A( :,1 :2 :3).
logo
ENIT Initiation à Matlab 27
Matrice par bloc
Une matrice peut être construite par bloc. Si par exemple A, B, C,
D sont quatre matrices aux dimensions
compatibles,
on construit la
A B
matrice par concaténation K= par l’instruction K =[A
C D
B ; C D] ou K=[A,B ;C,D].
logo
ENIT Initiation à Matlab 28
Matrice par bloc
Une matrice peut être construite par bloc. Si par exemple A, B, C,
D sont quatre matrices aux dimensions
compatibles,
on construit la
A B
matrice par concaténation K= par l’instruction K =[A
C D
B ; C D] ou K=[A,B ;C,D].
Exemple : Construire en utilisant la concaténation, la matrice par
bloc suivante :
logo
ENIT Initiation à Matlab 28
logo
ENIT Initiation à Matlab 29
Matrices carrées
Pour une matrice carrée, la diagonale principale est comptée
d’indice 0, les parallèles en dessous sont d’indice positif et les
parallèles en dessus sont d’indice négatif.
logo
ENIT Initiation à Matlab 30
On peut trouver en Matlab les opérations sur les matrices carrées
suivantes :
logo
ENIT Initiation à Matlab 31
Exemple
Soit la matrice tridiagonale.
Ecrire A sous matlab pour a=3 et n=10.
logo
ENIT Initiation à Matlab 32
Exemple
Soit la matrice tridiagonale.
Ecrire A sous matlab pour a=3 et n=10.
A=a*eye(10)-diag(ones(9,1),1)-diag(ones(9,1),-1)
logo
ENIT Initiation à Matlab 32
Matrices creuses
Pour les matrices creuses (dont une grande portion de termes est
nulle), et pour gagner de la place mémoire, on a intérêt à
considérer les termes non nuls de la matrice, les autres sont par
défaut comptés nuls. On peut utilser la commande sparse pour
construire ces matrices.
logo
ENIT Initiation à Matlab 33
Exemple
>> a=sparse([1,2],[1,3],[-2,6], 2,3)
a=
(1,1) -2
(2,3) 6
On donne ici seulement les éléments non nuls de la matrice a.
On peut avoir la matrice totale a.
>> B=full(a)
B=
−2 0 0
0 0 6
logo
ENIT Initiation à Matlab 34
Inversement, pour connaı̂tre le nombre de terme non nuls et les
coefficients non nuls de la matrice B, on utilise respectivement
’nnz’ et sparse(B).
>> nnz(B)
ans =
2
Ecrire sur Matlab spy(B) et sparse(B) et commenter.
logo
ENIT Initiation à Matlab 35
Exercice
Utiliser sparse pour écrire la matrice (1) pour a=2 et n=10.
logo
ENIT Initiation à Matlab 36
Exercice
Utiliser sparse pour écrire la matrice (1) pour a=2 et n=10.
a=sparse([2 :10,1 :10,1 :9],[1 :9,1 :10,2 :10],[-
ones(1,9),3*ones(1,10),-ones(1,9)],10,10)
Consulter l’aide de speye, spones, spdiags, sprandn .
logo
ENIT Initiation à Matlab 36
Résolution de systèmes linéaires
On peut calculer une solution x d’un système Ax = b, pour A une
matrice quelconque (pas forcément carrée) en utilisant la
commande Matlab linsolve où on écrit x = linsolve(A ; b). Ou
encore x = A\b.
logo
ENIT Initiation à Matlab 37
Résolution de systèmes linéaires
On peut calculer une solution x d’un système Ax = b, pour A une
matrice quelconque (pas forcément carrée) en utilisant la
commande Matlab linsolve où on écrit x = linsolve(A ; b). Ou
encore x = A\b.
Lorsque A est une matrice inversible l’unique solution x peut
s’obtenir en appliquant A−1 à x.
Exercice 13.1 du poly.
logo
ENIT Initiation à Matlab 37
Polynômes
Dans Matlab, un polynôme de degré n est représenté par un
vecteur ligne de taille (n+1), dont les composantes sont données
par ordre des puissances décroissantes.
Exemple P (x) = 8x4 − 3x3 + x − 1 s’écrit en Matlab
>> P=[8 -3 0 1 -1]
P=
8 −3 0 1 −1
logo
ENIT Initiation à Matlab 38
Pour évaluer le polynôme P en différents points d’un vecteur donné
x, on utilise la commande ’polyval’
>> polyval(P,1) % valeur de P en x=1
ans =
>> polyval(P,[0,-1,2]) % valeurs de P en 0, 1 puis 2.
ans =
−1 9 105
logo
ENIT Initiation à Matlab 39
Pour dériver et intégrer un polynôme P on utilise respectivement
’polyder’ et ’polyint’
>> polyder(P)
ans =
32 −9 0 1
>> polyint(P)
ans =
1.6000 − 0.7500 0 0.5000 − 1.0000 0
logo
ENIT Initiation à Matlab 40
La commande poly permet de donner un polynôme de degré n
dont on connaı̂t les racines.
Par exemple le polynôme de degré minimal ayant comme racines 1
et -1 est :
>> P=poly([1,-1])
P=
1 0 −1
logo
ENIT Initiation à Matlab 41
Chapitre III : Les entrées-sorties
logo
ENIT Initiation à Matlab 42
Les formats d’affichage
Matlab dispose de format d’affichage pour des réels. Par défaut le
format est le format court à 4 chiffres après la virgule.
Parmi les autres principaux formats on trouve :
format short 4 décimales (par défaut)
format long 14 décimales
format short e 4 chiffres après virgule + exposant
format long e 15 chiffres après virgule + exposant
format rat approximation par une fraction rationelle
Consulter help format pour afficher les autres types de format.
logo
ENIT Initiation à Matlab 43
logo
ENIT Initiation à Matlab 44
Commande display ou disp
Pour afficher un tableau de valeurs numérique, il suffit de taper son
nom. Parfois, pour améliorer la présentation, on utilise la
commande disp qui affiche le même tableau à l’écran sans avoir
<< ans >> et sans faire référence à son nom.
On utilise cette commande aussi pour afficher un message. Mais
pour afficher un résultat numérique dans ce message il faut avoir
recours à num2str.
logo
ENIT Initiation à Matlab 45
Exemple
>> A=rand(2)
A=
0.9649 0.9706
0.1576 0.9572
>> disp(A)
0.9649 0.9706
0.1576 0.9572
>> disp([’le détérminant de A vaut’, num2str(det(A))])
le détérminant de A vaut 0.77058 logo
ENIT Initiation à Matlab 46
Commande input
Il est possible d’interagir avec l’utilisateur pour attribuer une valeur
à une variable en utilisant la commande input.
>> tolerence= input(’qu’elle est la valeur de la tolerence
epsilon ?’) % on tape la valeur après avoir le message
correspondant
qu’elle est la valeur de tolerence epsilon ? 10−4 .
>>tolerence=0.0001
logo
ENIT Initiation à Matlab 47
Commande sprintf
La commande sprintf permet l’impression des variables selon un
modèle donné. La syntaxe est de type sprintf(format, variable) où :
• variables est le nom de variables à imprimer suivant le modèle
d’édition dans format.
• format est le format d’édition : il s’agit d’une chaine de caractère
contenant les modèles des variables à imprimer.
logo
ENIT Initiation à Matlab 48
>> sprintf(’%s’,’Ce n’est qu’un commentaire’)
ans =
Ce n’est qu’un commentaire
>> sprintf(’%40s’,’Ce n’est qu’un commentaire’)
ans =
Ce n’est qu’un commentaire
logo
ENIT Initiation à Matlab 49
Chapitre IV : Instructions de contrôle
logo
ENIT Initiation à Matlab 50
Les instructions de Matlab sont proches à celles utilisées dans
d’autres programme de programmation et elles sont
1. Instructions conditionnelles : if-else-elseif-end
Elles permettent d’exectuer différentes instructions suivant qu’une
ou plusieurs conditions sont vérifiées. Les différentes syntaxes pour
ces instructions sont :
logo
ENIT Initiation à Matlab 51
Exemple
Pour vérifier si par exemple x = 3 est strictement positif ou non,
on exécute
logo
ENIT Initiation à Matlab 52
Exemple
Pour vérifier si par exemple x = 3 est strictement positif ou non,
on exécute
>> x = 3 ;
if x > 0, disp(’x est strictement positif’),
else
disp(’x est négatif ou nul’),
end
Pour déterminer exactement le signe de x = −3, on fait
>> x = −3 ; if x > 0, disp(’x est strictement positif’),
elseif x < 0,
disp(’x est strictement négatif’),else disp(’x est nul’), end
x est strictement négatif
logo
ENIT Initiation à Matlab 52
2. Boucle for-end Elle permet de repéter un nombre fixé de fois
un ensemble d’instructions. Sa syntaxe est :
for indice=debut :pas :fin
instructions end
L’indice de début et de fin sont des réels et le pas doit être précisé
si l’indice de début est plus grand que celui de fin. Dans le cas
contraire, le pas est par défaut 1 en cas d’absence de pas.
Exemple : Calculer n! pour n = 10 par la boucle for.
logo
ENIT Initiation à Matlab 53
3. Boucle while-end
On peut aussi executer une instruction repétée tant qu’une
condition est vérifiée, par la boucle while, dont la syntaxe est :
while expression ou condition
instructions end
Exemple : Retrouver n! pour n = 10, en utilisant la boucle while
logo
ENIT Initiation à Matlab 54
>> s=1 ; for i=1 :10, s=i*s ; end, disp([’10 !=’ num2str(s)])
10 !=3628800
>> s=1 ; i=1 ; while i ¡= 10, s=i*s ; i=i+1 ; end,
disp([’10 !=’ num2str(s)])
10 !=3628800
logo
ENIT Initiation à Matlab 55
Chapitre V : Programmation et utilisation de fonctions
logo
ENIT Initiation à Matlab 56
Fichier.m
Il est possible d’enregistrer un ensemble d’instructions dans un
fichier appelé M-file et de faire l’executer par Matlab.
Un tel fichier doit avoir obligatoirement l’extension .m et on
distingue deux types de M-File, les fichiers de script et les fichiers
de fonctions
logo
ENIT Initiation à Matlab 57
1. Scripts
Un script est un ensemble d’instructions Matlab qui joue le role de
programme. On utilise l’éditeur de texte de Matalb M-File pour
créer ce type de fichier sous un nom nomdfichier.m. Pour executer
ce programme, il suffit de taper son nom nomdfichier dans la
fenêtre Matlab.
logo
ENIT Initiation à Matlab 58
1. Scripts
Un script est un ensemble d’instructions Matlab qui joue le role de
programme. On utilise l’éditeur de texte de Matalb M-File pour
créer ce type de fichier sous un nom nomdfichier.m. Pour executer
ce programme, il suffit de taper son nom nomdfichier dans la
fenêtre Matlab.
Exemple
Calculer dans un fichier script norm-inf.m la norme infinie d’un
vecteur x de Rn .
logo
ENIT Initiation à Matlab 58
2. Fonction
Pour définir une fonction à variable réelle ou à n variables (n=2 ou
3), on peut utiliser directement la commande inline ou @(variables)
lorsque il y a des paramètres dans la fonction.
logo
ENIT Initiation à Matlab 59
2. Fonction
Pour définir une fonction à variable réelle ou à n variables (n=2 ou
3), on peut utiliser directement la commande inline ou @(variables)
lorsque il y a des paramètres dans la fonction.
Exemple
2 2
Définir la fonction fonc(x, y) = e−x −y et calculer fonc(0,0).
logo
ENIT Initiation à Matlab 59
>> fonc=inline(’exp(-x∧2-y∧2)’)
fonc =
Inline function :
fonc(x,y) = exp(-x∧2-y∧2)
>> p=1 ;
>> fonc=@(x,y)exp(-x∧2-y∧2)
>> fonc(0,0)
ans =
1
logo
ENIT Initiation à Matlab 60
Pour x=rand(2) et y=rand(2), calculer fonc(x,y).
Que remarquez-vous ?
logo
ENIT Initiation à Matlab 61
Remarque Il ne faut pas oublier le point avant la puissance pour
pouvoir évaluer cette fonction en chaque point d’un vecteur donné
(voir la partie graphisme).
>> fonc=inline(’exp(-x.∧2-y.∧2)’)
fonc =
Inline function :
fonc(x,y) = exp(-x.∧2-y.∧2)
Calculer maintenant fonc(x,y).
Vérfier que cette fonction (par la commande ’help’) n’est pas
incorporée en Matlab.
logo
ENIT Initiation à Matlab 62
>> help fonc
fonc not found.
Afin d’enregistrer cette fonction, il suffit de la créer en un fichier
script fonction enregistrée sous fonc.m
logo
ENIT Initiation à Matlab 63
En général on déclare une fonction (pas forcément à variable dans
Rn ) de la façon suivante
function [vars1 , ..., varsm ]=nomfonction(vare1 , ..., varen )
instructions
où :
• vare1 , ..., varen sont les variables d’entrée
• vars1 , ..., varsm sont les variables de sortie
Pour exécuter cette fonction et afficher toutes les variables de
sortie, on utilise la commande :
[vars1 , ..., varsm ]=nomfonction(vare1 , ..., varen )
logo
ENIT Initiation à Matlab 64
Exemples
[Link] la fonction précédente fonc.m sous Matlab.
[Link] une fonction Matlab DetTrace qui donne en sortie dans
l’ordre la trace et le déterminant d’une matrice carrée A.
logo
ENIT Initiation à Matlab 65
Chapitre VI : Graphisme sur Matlab
logo
ENIT Initiation à Matlab 66
Dans le plan ou dans l’espace, et pour tracer une fonction
quelconque, le principe est le suivant :
1- Discrétiser le domaine de représentation.
2- Evaluer la fonction en chaque point de discrétisation.
3- Executer l’instruction graphique Matlab avec les données
précédentes.
Représentation graphique 2D : Pour représenter une courbe
d’une fonction la une seule variable, on peut utiliser la commande
fplot suivi de la fonction à tracer et l’intervalle d’étude. Par défaut
le type de tracé est en bleu et en ligne continue.
Exemple
>> fplot(’x∧ 2’,[-1,1])
logo
ENIT Initiation à Matlab 67
logo
ENIT Initiation à Matlab 68
Executer les commandes suivantes
>> fplot(’x∧ 2’,[-1 1],’r,*’)
>> fplot(’[x∧ 2,-x∧ 3]’,[-1 1 -1 1])
On peut choisir la couleur ou le type de tracé en ajoutant un des
paramètres optionnels du tableau suivant :
logo
ENIT Initiation à Matlab 69
Voir help plot pour voir toute la liste des styles et symboles.
On peut également utiliser la commande plot pour tracer une
courbe passant par des points (xi , yi )i=1:p en tapant plot(x,y)
Exemple Pour tracer la courbe de la fonction x 7→ x2 on écrit
>> x=-1 :1/10 :1 ;
>> plot(x,x.∧ 2) % Ici yi = x2i
Remarque Il faut précéder les signes puissance, multiplication et
division par un point, pour pouvoir appliquer ses opérations au
vecteurs.
logo
ENIT Initiation à Matlab 70
La commande hold on donne la possibilité de tracer plusieurs
courbes dans la même fenêtre graphique. L’effet de cette
commande est supprimé en tapant hold off
La commande title ajoute un titre au graphique de la fenêtre
courante.
On peut aussi écrire des titres sur les axes des abscisses et des
ordonnées par les commandes xlabel et ylabel.
Grace à la commande gtext on peut ajouter un texte sur le graphe
à un endroit graphique selectionné à l’aide de la souris.
La commande legend permet d’ajouter une legende.
logo
ENIT Initiation à Matlab 71
Afficher plusieurs sous graphiques sur la même figure :
subplot
L’instruction subplot permet de présenter sur une même fenêtre
graphiques plusieurs résultats. en découpant la fenêtre en plusieurs
pavés et d’afficher un graphe sur chaque pavé. La syntaxe est :
subplot(Nb de pavés sur hauteur, Nb de pavés sur largeur, Numéro
du pavé).
La virgule n’est pas indispensable et les pavés sont numérotés dans
le sens de la lecture d’un texte français : de gauche à droite et de
haut vers le bas.
logo
ENIT Initiation à Matlab 72
Exemple
>> x=0 :0.2 :1 ;
>> y=x.∧ 2 ;
>> t=cos(x) ;
>> subplot(221)
>> fplot(’x.∧ 2’,[-1 1])
>> subplot(222)
>> fplot(’[x∧ 2,-x∧ 3]’,[-1 1 -1 1])
>> subplot(223)
>> plot(x,y)
>> subplot(224)
>> plot(x,t)
Comme résultat on obtient logo
ENIT Initiation à Matlab 73
logo
ENIT Initiation à Matlab 74
Afficher et nommer plusieurs figures indépendantes :figure
La commande figure permet de créer de nouvelles figures sans
remplacer les anciennes. On peut aussi numéroter ces figures :
>> figure(1)
>> fplot(’[x∧ 2,-x∧ 3]’,[-1 1 -1 1])
>> figure(2)
>> x=0 :0.2 :1 ; plot(x,cos(x)),
logo
ENIT Initiation à Matlab 75
Courbes polaires et paramétrées
La procédure pour tracer une courbe paramétrée est identique à
celle d’une courbe cartésienne. Pour représenter par exemple la
2t 2t3
courbe paramétrée donnée par x(t) = 1+t 4 , y(t) = 1+t4 lorsque t
varie sur l’intervalle [-100,100], on peut faire
>> t=-100 :1/10 :100 ;
>> x=(2*t)./(1+t.∧ 4) ;
>> y=(2*t.∧ 3)./(1+t.∧ 4) ;
>> plot(x,y)
logo
ENIT Initiation à Matlab 76
Pour les courbes polaires on utilise polar. Voici un exemple pour
tracer la courbe polaire r = 2 + 2cos(θ) pour θ ∈ [−π; π]
>> theta=-pi :1/10 :pi ;
>> r=2+2*cos(theta) ;
>> polar(theta,r)
logo
ENIT Initiation à Matlab 77
logo
ENIT Initiation à Matlab 78
Représentation à l’échelle logarithmique
La commande loglog s’utilise de la même façon que plot. loglog
permet d’afficher le vecteur log(x) contre log(y).
semilogx respectivement semilogy affiche le vecteur logarithme de
x respectivement de y
logo
ENIT Initiation à Matlab 79
Représentation à l’échelle logarithmique
La commande loglog s’utilise de la même façon que plot. loglog
permet d’afficher le vecteur log(x) contre log(y).
semilogx respectivement semilogy affiche le vecteur logarithme de
x respectivement de y
Exercice
Tracer la courbe de la fonction x : [0, 1000] 7→ x4 à une échelle
logarithmique.
logo
ENIT Initiation à Matlab 79
Représentation graphique 3D
Une courbe en 3D est une liste de triplets (x, y, z).
On utilise la commande plot3 pour tracer la courbe reliant les
points (x(i),y(i),z(i)) en utilisant la syntaxe plot3(x,y,z) pour x, y
et z sont trois vecteurs de même longueur.
logo
ENIT Initiation à Matlab 80
Représentation graphique 3D
Une courbe en 3D est une liste de triplets (x, y, z).
On utilise la commande plot3 pour tracer la courbe reliant les
points (x(i),y(i),z(i)) en utilisant la syntaxe plot3(x,y,z) pour x, y
et z sont trois vecteurs de même longueur.
Exemple
Soit la courbe paramétrée t 7→ (cos(t), sin(t), t). Représenter la
courbe pour t variant sur l’intervalle [0, 5π].
logo
ENIT Initiation à Matlab 80
>> t=linspace(0,5*pi,500) ;
>> plot3(cos(t),sin(t),t)
La courbe obtenue est
logo
ENIT Initiation à Matlab 81
En général, pour tracer la courbe d’une fonction z = f (x, y) sur un
pavé [a, b] × [c, d], il faut d’abord générer une grille de points,
évaluer la fonction en chaque point, puis tracer le graphe.
La fonction meshgrid permet de générer une grille de points
(matrice de maillage) représentée par deux vecteurs X et Y et de
faire un maillage d’un pavé [a, b] × [c, d] d’un pas h en écrivant
meshgrid(a :h :b,c :h :d).
logo
ENIT Initiation à Matlab 82
On évalue ensuite la fonction à tracer en ces points de maillage en
écrivant z = f (X, Y ).
Pour tracer la courbe on peut faire plot3(X,Y,Z) ou encore
mesh(X,Y,Z) (représentation de la surface par un maillage dit ”fil
de fer”), ou surf(X,Y,Z) (représentation avec des mailles colorées).
Exemple Tracer la courbe f (x, y) = x2 + y 2 sur [−2; 2] × [−2, 2].
logo
ENIT Initiation à Matlab 83
>> [X,Y]=meshgrid(-2 :0.1 :2,-2 :0.2 :2) ;
>> Z=X.∧ 2+Y.∧ 2 ;
>> plot3(X,Y,Z)
>> mesh(X,Y,Z)
logo
ENIT Initiation à Matlab 84
Pour visualiser les lignes de niveau, on utilise la syntaxe
contour(X,Y,Z) ou surfc(X,Y,Z).
Les commandes ezmesh, ezmeshc, ezsurf et ezsurfc sont des
fonctions usuelles de graphisme en 3D où la matrice de maillage
est définie par defaut.
Consulter le help pour appliquer ces commandes pour tracer la
fonction précédente.
logo
ENIT Initiation à Matlab 85
Chapitre VI :Calcul symbolique avec Matlab
logo
ENIT Initiation à Matlab 86
Un objet symbolique est une structure de données qui enregistre
une représentation du symbole sous la forme d’une chaı̂ne.
La boı̂te à outils utilise des objets symboliques pour représenter
• des variables symboliques,
• des expressions symboliques
• et des matrices symboliques.
Les calculs symboliques sont effectués par Maple.
logo
ENIT Initiation à Matlab 87
La commande Matlab sqrt(2) donne ans=1.4142
Si on convertit 2 en un objet symbolique à l’aide de la commande
sym, et en calculant sa racine en écrivant a = sqrt(sym(2)) le
résultat est a = 2(1/2) . √
MATLAB donne le résultat 2(1/2) qui signifie 2, en utilisant la
notation de calcul symbolique pour la racine carrée, sans calculer
sa valeur numérique. On peut obtenir la valeur numérique d’un
objet à l’aide de la commande double :
>> double(a)
>> ans= 1.4142
logo
ENIT Initiation à Matlab 88
Calcul sur les objets symboliques
MATLAB ne fait pas les calculs de la même manière sur les
variables de type double et les objets symboliques.
Pour les variables doubles
>> 2/5 + 1/3
>> ans = 0.7333
Avec les objets symboliques
>> sym(2)/sym(5) + sym(1)/sym(3)
>> ans = 11/15
logo
ENIT Initiation à Matlab 89
Création de variables et d’expression symboliques
>> y = sym((1 + sqrt(5))/20) % crée une variable symbolique
qui s’écrit y
>> z = y 2 − y − 1 % faire des opérations avec y
>> simplify(z) % permet de simplifier l’expression de z
>> f = sym(0 x2 + 2 ∗ x0 ) % crée une fonction symbolique
logo
ENIT Initiation à Matlab 90
logo
ENIT Initiation à Matlab 91
Chapitre VII :Applications
logo
ENIT Initiation à Matlab 92