Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
Introduction à Matlab
GL3
TABLE DES MATIÈRES ii
Table des matières
1 Environnement Matlab iv
6 Polynômes xii
1 Environnement Matlab
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 trigono-
métriques, les opérations sur les matrices, la génération de nombres aléatoires
jusqu’aux fonctions les plus compliquées telles que des méthodes numériques
pour le calcul matriciel ou la résolution d’équations différentielles ou encore
des méthodes d’optimisation. Il contient aussi des outils de représentation gra-
phique en 2D ou 3D.
Command Window
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.
Les variables définies par l’utilisateur sont rangées dans l’espace mémoire de
Matlab, ces variables sont dites globales.
Current Folder
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
>> a=2+3
>> a=
5
2 Commandes d’environnement
Matlab est une énorme librairie de fonctions prédéfinies. Pour pouvoir décou-
vrir l’ensemble des commandes prédéfinies dans Matlab, on peut tout simple-
ment taper help. La commande affiche donc la totalité des topics (fonctionna-
liées regroupé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
fait help plot.
Exercice :
Trouver dans l’aide le nom de la fonction renvoyant les valeurs propres d’une
matrice.
point-virgule.
Les nombres réels sont écrits sous les formes décimales ou scientifiques usuelles :
2, 3.214, -.546, 1.21e33, 5.78e-16, ...
Il existe aussi certains scalaires prédéfinis tels que pi (π), NaN (Not a Num-
ber), Inf (∞), eps (= 2.2204e-16, precision machine), realmin (=2.2251e-308),
realmax (1.7977e+308), ...
√
La constante i est le nombre imaginaire −1 prédéclaré. Les nombres com-
plexes 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 >=, <, . . .
>> c=’Bonjour’
Exercice :
Chercher les commandes dans l’aide de Matlab qui permettent de donner le
logarithme et la racine carrée, le carré et la partie entière d’un réel.
Remarque :
T
L’opérateur transposé ”’” transforme un vecteur V en V . Par exemple : la
commande [1, 2- 3i]’ donne comme résultat :
1
2+3i
Si le vecteur est trop long, on peut le crée, dans certains cas, de manière
automatique :
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).
u = (1, −1, −3, −5)T , v = (10, −1, 3, 1)T , w = (5, −1, 4, 5)T .
6 Polynômes
>> 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.
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 co-
lonne) et considère les scalaires commes de matrices de dimension 1 × 1.
>> A=[1,2;3,5]
A= 1 2
3 5
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 :
Exercice :
On note par A, B et C les matrices suivantes
1 3 2
−5 3 1 1 −2 5 10 −5
A= , B= , C= .
−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.
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
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.
1 −2 0 0 0
4 1 −1 0 0
A=
0 9 1 0 0
0 0 16 1 1
0 0 0 25 1
Matlab 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.
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.
1)
if expression booléenne
instructions
end
2)
if expression booléenne
instructions
else
instructions
end
3)
if expression booléenne
instructions
elseif expression booléenne
instructions
else
instructions
end
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
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
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.
9.1 Scripts
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
explicatifs 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 utilisateur. Un commentaire est toujours précédé par le signe % comme
l’indique l’exemple suivant :
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
9.2 Fonctions
NormeInf(rand(12,1))
[vars1,vars2,...]=nomfonction(vare1,vare2,..)
Remarques :
1) Le nom d’une fonction nomfonction doit être déclaré dans un script appelé
nomfonction.m.
2) Une fonction peut être déclarée enrichie de commentaires de la manière
suivante :
help nomfonction
On peut aussi utiliser la commande inline pour définir des fonctions sous
forme analytique. Par exemple, la commande
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 = i=1 xi .
Exercice :
Reprendre la fonction NormInf déclarée ci-dessus et la réécrire en utilisant la
commande sort.
10 Opérations d’entrée/sortie
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 :
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.
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.
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
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 12.
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 :
Exercice :
On considère une expérience simple qui consiste à créer aléatoirement uni-
formé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 automa-
tique ces résultats dans les fichiers correspondants.
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, . . .
11.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’);
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.
11.2 Graphes en 3D
Exercice Utiliser l’aide de Matlab pour découvrir ce que font ces fonctions.
11.2.2 Surfaces
p
Exercice 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.
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
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
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
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
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
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
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