Documente Academic
Documente Profesional
Documente Cultură
http://www.montefiore.ulg.ac.be/services/ail/cours/algo1/putty.html.
Lors de votre premire connexion, ouvrir un terminal et lancer la commande
/home/algo/LAM/idstudent. Si vous vous connectez de chez vous, il est conseill de
lancer MATLAB avec la commande MATLAB
-nojvm.
2 Command Window
La fentre de commande permet l'utilisateur d'entrer des commandes, aprs l'invite de
commande >> . On peut notamment utiliser les oprateurs d'addition +, de soustraction
-, de multiplication *, de division / et de puissance ^.
>> 2+2
ans =
4
L'oprateur d'assignation = permet de dnir des variables. Une variable est un conteneur d'information, sous la forme d'un scalaire ou d'un tableau, contenant des nombres, des
caractres, etc.
>> a = 2+2
a =
4
Pour une dnition silencieuse, l'instruction doit se terminer par ;
3 Aide
L'utilisateur peut d'abord trouver de l'aide localement grce aux commandes help (dans
>> demo
Enn, parmi les ressources disponibles sur Internet, de nombreuses informations sont rassembles sur le site web :
http://www.mathworks.com/products/matlab/
Exercice
1)
4 Command History
L'historique des commandes (Fig. 2) ore l'utilisateur une vue sur les commandes entres
lors de la session courante et des sessions prcdentes. Il permet ainsi de rvaluer facilement
une commande ou un groupe de commandes. Dans la fentre de commande, il est parcouru
grce aux touches et .
5 Workspace
L'espace de travail fournit l'utilisateur des informations sur les variables dnies un
l'instant prsent. Il ore des fonctionnalits pour la gestion des variables (cration, dition,
suppression, etc.).
Ces informations sont galement accessibles par le biais des commandes who et whos.
>> who
Your variables are:
a
ans b
>> whos
3
Name
a
ans
b
Size
1x1
1x1
1x1
Bytes Class
8 double
8 double
8 double
Attributes
La commande clear sert supprimer une variable, voire nettoyer l'ensemble de l'espace
>> clear a
>> who
Your variables are:
ans b
>> clear all
>> who
>> dir
. ..
On cre un chier hello.m l'aide de la commande edit.
>> dir
.
..
hello.m
>> what
M-files in the current directory /home/sburton/matlab
hello
Les chiers MATLAB du rpertoire courant peuvent tre appels directement depuis la
ligne de commande. L'excution du chier hello.m se fait en entrant son nom, sans l'ex-
tension .m dans la fentre de commande. Les commandes enregistres dans le chier sont
alors excutes, c'est dire l'assignation du texte Hello
achage.
World!
>> hello
Hello World!
On constate donc
>> who
Your variables are:
text
>> text
text =
Hello World!
Enn, l'appel
help hello
7 Fonctions
Le chier hello.m est un script, c'est--dire un ensemble de commandes excut dans
l'environnement de travail. Par contre, une fonction est un ensemble de commandes excut
dans un sous-environnement qui n'existe que pendant l'excution de la fonction.
On cre un chier byebye.m
edit byebye
On y entre les commandes
>> byebye
Bye bye World!
Dans ce cas, on constate
>> who
Your variables are:
text
>> text
text =
Hello World!
5
polarToCartesian
[x y] = polarToCartesian(rho,theta)
De nombreuses fonctions sont intgres nativement dans MATLAB. Par exemple, on retrouve les fonctions mathmatiques :
pi : renvoie la valeur de ;
sin : renvoie le sinus d'un angle en radians ;
sqrt : revoie la racine d'un nombre ;
ceil : renvoie l'arrondi suprieur d'un nombre.
L'aide et ses options de recherche permettent de trouver facilement les fonctions utiles et
d'obtenir des informations pour leur utilisation.
Exercices
1)
ax2 + bx + c = 0
Crer une fonction qui reoit en argument les coecients
(1)
a, b
et
deux racines.
8 Structures de contrle
MATLAB intgre des structures de contrle parmi lesquelles on retrouve :
Exercices
1)
exp(x)
X
xi
i=0
(2)
i!
Ecrire une fonction MATLAB qui calcule cette srie limite aux
n+1
premiers termes. On
2)
Mme exercice que prcdemment mais sans utiliser la fonction factorial ni l'oprateur
9 Vecteurs et matrices
MATLAB est un langage de programmation qui permet la manipulation de scalaires,
de vecteurs, de matrices et de tableaux d'ordre plus lev encore. Ainsi, on peut faire des
oprations avec des matrices et, en toute gnralit, les fonctions peuvent prendre en argument
des matrices.
Direntes mthodes permettent de dnir des vecteurs
>> a = [1 5 2 4 3]
a =
1
5
2
>> b = 1:2:10
b =
1
3
>> c = linspace(-pi,pi,5)
c =
-3.1416 -1.5708
>> d = rand([1 5])
d =
0.2785
0.5469
1.5708
3.1416
0.9575
0.9649
0.1576
On peut accder aux lments d'un vecteur en utilisant les indices linaires (ceux-ci vont
de 1 pour le premier lment end pour le dernier lment)
>> a(1)
ans =
1
>> b([2 end])
ans =
3
9
>> c(3:end-1)
ans =
0
1.5708
>> d(a(2))
ans =
0.1576
On peut modier les lments d'un vecteur
>> a(1) = 10
a =
10
5
11
1.5708
12
3.1416
>> d(:) = 2
d =
2
2
>> length(a)
ans =
5
>> [a index] = sort(a)
a =
2
3
4
5
index =
3
5
4
2
10
1
>> A = [1 2;3 4]
A =
1
2
3
4
>> B = eye(3)
8
B =
1
0
0
0
1
0
0
0
1
>> C = zeros(2,3)
C =
0
0
0
0
0
0
>> D = diag([7 1 3])
D =
7
0
0
0
1
0
0
0
3
L'aide contient une explication dtaille de ces fonctions. On peut accder aux lments
d'une matrice en utilisant les indices de ligne et de colonne, ou les indices linaires
>> A(2,1)
ans =
3
>> B(1,:)
ans =
1
0
>> C(:,end)
ans =
0
0
>> D(9)
ans =
3
On peut videmment modier les lments d'une matrice.
La fonction size renvoie les dimensions d'une matrice et la fonction find permet de
trouver les indices linaires correspondant aux valeurs non-nulles d'un tableau.
>> size(A)
ans =
2
2
>> find(A > 2)
ans =
2
4
9
Exercices
1)
2)
A=
o
4 5
3 /4
, B=
2
3+i
72/3 0.2
A + B, AB, A2 , AT , B 1 , B T AT , A2 + B 2 AB
3)
(3)
(4)
Ax = b,
utilis :
x = A\b
A carre ou rectangulaire. D'autres fonctions utiles
pour la rsolution de systmes linaires sont lu pour la dcomposition LU, det pour le
calcul du dterminant, inv pour l'inverse d'une matrice carre, rank pour le rang, cond
pour le nombre de conditionnement en norme 2, ou encore rcond pour l'estimation de
Cet oprateur s'applique pour une matrice
10
Exercice
1)
5x + 6y + 10z = 4
(5)
3x + 14z = 10
(6)
7y + 21z = 0
(7)
11 Polynmes
MATLAB reprsente un polynme comme un vecteur ligne qui contient les coecients des
termes rangs selon les puissances dcroissantes. Par exemple,
p = [ 1 -12 0 5 0]
reprsente
x4 12x3 + 5x.
roots calcule les racines d'un polynme, poly dtermine un polynme partir de ses
racines, polyval value un polynme en un point, enn, +, conv et deconv permettent
respectivement l'addition, le produit et la division de deux polynmes.
12 Graphiques
MATLAB ore des fonctionnalits puissantes pour la cration de graphiques. L'achage
le plus simple se fait l'aide de la fonction plot. La gestion des direntes gures se fait
l'aide de la fonction figure. Pour acher plusieurs courbes sur une mme gure, on active
le maintien du graphique l'aide de la commande hold
off.
on.
all
gures.
D'autres fonctions permettent de dnir la zone d'achage ( axis), une grille ( grid),
un titre ( title) ou des labels pour les dirents axes ( xlabel, ylabel) :
t = 0:pi/20:2*pi;
y = sin(t);
plot(t,y)
axis ([0 2*pi -1.5 1.5])
grid
title('sinus')
xlabel('temps t')
ylabel('sinus(t)')
Exercices
1)
= 10
rad/s et
x [0 10]
(8)
incrment de 0.1 s.
11
2)
Soit la fonction
(9)
=3
dy1
dt
dy2
dt
dy3
dt
avec les conditions initiales
= y2 y3
(10)
= y1 y3
(11)
= 0.51 y1 y2
(12)
y1 (0) = 0, y2 (0) = 1
et
y3 (0) = 1.
function dy = rigid(t,y)
dy = zeros(3,1);
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
et enregistre sous le nom
Exercices
1)
dx1
dt
dx2
dt
= x2
(13)
(14)
x1 (t)
pour
=1
et
= 0.1
t [0 100]
la rponse converge vers des oscillations stables lorsque les conditions initiales sont direntes
de
x1 (0) = x2 (0) = 0.
12
14 Entres/sorties
Pour le dveloppement d'un programme interactif, la sortie cran et l'entre clavier se font
respectivement l'aide des fonctions disp et input.
La sauvegarde et le chargement des variables se font respectivement l'aide des fonctions
save et load. Pour une gestion plus souple de la lecture et de l'criture d'un chier, on
peut tre amen utiliser les fonctions fopen, fclose, fprintf, fscanf, fgetl et
fgets.
utile de transformer des nombres en chanes de caractres et vice versa l'aide des fonctions
num2str et str2num. Pour une gestion plus souple des chanes de caractres, on peut
15 Fonctions vectorielles
An d'amliorer l'ecacit d'un programme, il est souhaitable d'viter les instructions
de boucle for et while et de leur prfrer les fonctions vectorielles de MATLAB. Ces
fonctions dnissent des oprations sur l'ensemble des lments d'une matrice ou d'un vecteur
en une seule commande.
Par exemple, les fonctions prod, sum et diff dnissent des oprations de produit,
de somme et de dirence pour tous les lments d'une matrice ou d'un vecteur. On citera
galement max, min et mean. Parmi les fonctions dj rencontres, rappelons enn sort,
find, zeros, ones ainsi que l'oprateur :. L'utilisation de ces fonctions est donc vive-
ment recommande.
Exercice
1)
Sans utiliser d'instruction de boucle, crire une fonction qui reoit un argument un vecteur
y = (x(1) t) . . . (x(n) t)
(15)
16 a coince. . .
Il n'y a pas que l'aide qui puisse aider l'utilisateur en cas de problme. D'abord en cas
de mauvaise utilisation de MATLAB, un message d'erreur apparait. Par exemple, le sinus du
caractre a n'a pas de sens, un message d'erreur explicite est renvoy.
>> sin('a')
??? Undefined function or method 'sin' for input arguments of
type 'char'.
Ensuite, l'diteur comprend un analyseur syntaxique mettant en vidence en soulignant
en rouge et dans la marge de droite les avertissements et les erreurs d'un chier qui y est
dit. Une aide contextuelle la rsolution de ces problmes est fournie.
Il est utile de mentionner l'existence des nombres i (le nombre imaginaire), Inf
(l'innit positive) et NaN (le nombre indni ou Not-a-Number ). Il est galement utile
de mentionner l'existence des fonctions is* permettant de dtecter l'tat d'une entit (par
13
ou isnan). Pour terminer il est important de prendre conscience que la prcision de calcul
n'est pas innie (c'est facilement observable avec la fonction eps).
17 Outils de dbogage
MATLAB comprend un debugger intgr l'diteur. Cet outil permet d'arrter un programme en cours d'excution pour examiner la valeur des direntes variables et dtecter
d'ventuelles erreurs. A cet eet, des points d'arrt doivent tre crs au pralable dans le(s)
chier(s) .m. Pour crer un point d'arrt (breakpoint), il sut d'appuyer sur F12 et un point
rouge apparat gauche de la ligne de courante. De manire quivalente, on peut cliquer sur
le tiret dans la marge de gauche de l'diteur, ou utiliser la barre d'outil de dbogage.
L'excution du programme est alors ralise en pressant F5 ou via le bouton Debug->Run
du menu (voir Fig. 3). Le programme s'arrte au point d'arrt indiqu par une che verte.
Vous pouvez examiner le contenu des variables du Workspace, avancer d'une ligne, continuer
ou arrter le programme. Lorsqu'une ligne fait appel une fonction, il est possible de rentrer
l'intrieur de cette fonction ou de sauter directement la ligne suivante.
Des fonctionnalits de dbogage sont galement accessibles lorsqu'un programme produit
une erreur. Dans la Fig. 4, le message d'erreur en rouge indique alors la ligne laquelle l'erreur
s'est produite. On peut y accder directement en cliquant sur le texte wrongProgram
at 3.
viewer).
Le proler donne des statistiques sur le nombre d'appels et le temps pass lors de l'excution
d'un code. Ces informations permettent de mettre en vidence les parties les plus gourmandes
du codes. Pour l'analyse d'un code trs rapide, il peut se rvrer utile de rpter celui-ci un
certain nombre de fois, de manire observer des temps d'excution non-ngligeables.
14
Exercices
1)
tic;
for i=1:1000,
for j=1:1000,
x(i,j)=i+j;
end
end
toc
et
tic;
x=zeros(1000);
for i=1:1000,
for j=1:1000,
x(i,j)=i+j;
end
end
toc
Comment pouvez-vous expliquer ce rsultat ?
15