You are on page 1of 7

1

Laboratoire MATLAB pour le cours MTH2200


par Guy Desaulniers
Janvier 2001
Ce document prsente un bref aperu de MATLAB, le logiciel utilis dans le cours danalyse numrique MTH2200. Il
a t conu pour servir de guide lors de la sance dintroduction MATLAB en laboratoire informatique. Pour plus
dinformations, vous pouvez consulter MATLAB, Guide dapprentissage (par Cloutier, Gourdeau et Leblanc) en vente
COOPOLY, le Guide MATLAB pour le cours 215 (par Lioret, Fortin, Savard et Roy) disponible dans la page des
documents imprimer1 sur le site Web du cours MTH2200, ainsi que les documents sur les fichiers FUNCTION et
SCRIPT aussi disponibles sur ce site Web.

Environnement MATLAB
Le logiciel MATLAB se trouve sur tous les ordinateurs de la plupart des laboratoires informatiques de Polytechnique
(C-229.2, C-513, C-525, C-527, C-537, C-539.2, C-539.3, C-539.4, C-539.6 et C-539.7). Il est disponible dans deux
versions, soit 4.2 et 5.3. Toutefois, les fonctions spcifiques au cours MTH2200 ont t dveloppes pour la version
4.2. Il nest donc pas garanti quelles soient compatibles avec la version 5.3. Notons aussi que la version 4.2 peut tre
installe gratuitement sur votre ordinateur personnel la maison (voir la page installation de MATLAB2 sur le site Web
du cours MTH2200).
Pour accder MATLAB dans les laboratoires, cliquer sur licne Mathmatiques et Gnie industriel et sur
MATLAB 4.2. Dans certains laboratoires, vous devez cliquer sur Chargement pour Math215 avant de cliquer sur
MATLAB 4.2.
Lenvironnement de MATLAB est compos dune fentre MATLAB dans laquelle vous pouvez entrer des
commandes, dun diteur de texte pour crer des fichiers FUNCTION et SCRIPT (extension .m), de ces fichiers
FUNCTION et SCRIPT, et de fichiers texte que vous pouvez crer en cours de session en utilisant les noms et
extensions que vous dsirez.
Le rpertoire de travail est d:\usager dans certains laboratoires et d: dans dautres laboratoires. Vous pouvez aussi
travailler sur une disquette, i.e., dans le rpertoire a:. Tous les fichiers que vous crez devraient se retrouver dans le
rpertoire de travail. En principe, MATLAB devrait reconnatre les fichiers dextension .m dans ce rpertoire. Il se
peut toutefois que ce ne soit pas le cas lorsque ces fichiers sont crs pendant que MATLAB est en fonction. De mme,
les modifications apportes un fichier existant peuvent ne pas tre reconnues. Dans ces cas, fermer et rouvrir
MATLAB afin quil effectue une nouvelle lecture des fichiers .m.
Les commandes MATLAB suivantes sont utiles:
pwd
cd
ls ou dir
type nom_fichier
help nom_commande

pour connatre le nom du rpertoire courant


pour changer de rpertoire
pour lister le contenu dun rpertoire
pour afficher le contenu du fichier texte nom_fichier
pour afficher de linformation sur la commande nom_commande.

Le menu help vous permet aussi daccder une table des matires et un index sur linformation pouvant vous tre
fournie.

1
2

http://www.gref.mathappl.polymtl.ca/~fortin/cours/215/documents.html
http://www.gref.mathappl.polymtl.ca/~fortin/cours/215/instal.html

Les variables
Toute variable est vue comme une matrice de nombres complexes. Une matrice 1 x 1 correspond un scalaire tandis
quune matrice 1 x n ou n x 1 correspond un vecteur.
>> x = 2
x =
2

%% affectation de la valeur 2 dans la variable x


%% cho du rsultat

>> size(x)
ans =
1

%% taille de la matrice x
%% rponse (answer)
%% nombre de lignes = 1, nombre de colonnes = 1

>> x = [0 2 4 6];

%% affectation dun vecteur dans la variable x


%% sans cho (;)

>> n = length(x)
n=

%% longueur du vecteur x

4
>> x(n)
ans =
6

%% valeur du n ime lment du vecteur x

>> x = 0:.1:1
x =

%%
%%
%%
%%

Columns 1 through 7
0
0.1000
0.2000

affectation dun vecteur dans la variable x


les lments du vecteur sont obtenus partir
de la valeur 0 par incrment de 0.1 jusqu
dpasser ou galer 1

0.3000

Columns 8 through 11
0.7000
0.8000
0.9000

0.4000

0.5000

0.6000

1.0000

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

%% affectation dune matrice dans A

>> B = A(2:3, :)
B =
4
5
6
7
8
9

%% extraction de la sous-matrice de A forme des


%% lignes 2 et 3 et de toutes les colonnes

>> size(B)
ans =
2

%% taille de la matrice
3

>> C = [B; B]
C=
4
7
4
7

5
8
5
8

6
9
6
9

%% concatnation de deux matrices

>> A = zeros(1,3)
A=
0
0
0
>> B = ones(2,1)
B=

%% cre une matrice 1 x 3 de 0

%% cre un vecteur 2 x 1 de 1

1
1

Oprations sur les lments


Pour utiliser les oprateurs arithmtiques directement sur les lments, utiliser le point devant loprateur: .* ./ .^ etc.
Les oprateurs + et ne ncessite pas de point puisquils sappliquent dj directement sur les lments.
>> x = [1 2];
>> y = [-1 4];
>> x.*y
ans =
1
8
>> x.^2
ans =
1

%% i.e., x.*y = [1*-1

2*4]

%% i.e., x.^2 = [1*1

2*2]

Plusieurs fonctions sappliquent directement sur les lments: abs() sin() exp() sqrt() log() etc.
>> abs(y)
ans =
1
4
>> pi
ans =
3.1416

%% i.e., abs(y) = [abs(-1) abs(4)]

%% la valeur de pi est connue par MATLAB

Plusieurs oprateurs de comparaison logique sont disponibles: = = < <= > >=
>> 2 + 3 = = 7
ans =
0

%% gal

>> 2 + 3 < 7
ans =
1

%% strictement plus petit

>> 2 + 3 >= 7
ans =
0

%% plus grand ou gal

>> 2 + 3 ~= 7
ans =
1

%% nest pas gal

%% faux

%% vrai

%% faux

%% vrai

~ = etc.

Oprations matricielles
Plusieurs oprateurs matriciels sont disponibles: + - * ^ etc.
>> A = [1 2; 3 4];
>> A
ans =
1
3
2
4
>> B = [-1 1];
>> A*B
ans =
1
1

%% transpose

%% transpose du vecteur ligne [-1 1]


%% multiplication de matrices

Plusieurs fonctions matricielles sont disponibles: inv() det() size() length() ones() zeros() expm() etc.
>> inv(A)
ans =
2.0000
1.5000

%% inverse de la matrice(A)
1.0000
-0.5000

>> D = ones(1,3)
D =
1
1
1

%% cre une matrice 1 x 3 dlments = 1

Affichage
Plusieurs formats daffichage des valeurs numriques sont disponibles. Le passage dun format un autre seffectue
laide de la commande format.
>> r = 12.2
r =
12.2000

%% format par dfaut 4 dcimales

>> format long


>> r
r =
12.20000000000000

%% format 14 dcimales

>> format short e


>> r
r =
1.2200e+001

%% notation flottante avec 4 dcimales

Laffichage en format personnalis se fait laide de la fonction fprintf(fid,format,a1,a2,...) qui prend en arguments
dentre i) un numro de fichier qui sobtient laide de la fonction fopen(), les numros 1 et 2 tant rserves pour
stdout (lcran) et stderr; ii) une chane de caractres qui dcrit le format et peut inclure des spcificateurs de
conversion (dbutant par %) et des symboles de tabulation (\t) et de saut de ligne (\n); et 3) une liste de valeurs
(pouvant tre nulle) pour les spcificateurs de conversion de la chane de caractres.

>> fid = fopen(essai.txt, w);

%% ouverture en criture seulement du


%% fichier essai.txt portant le numro fid
>> fprintf(fid,\n racine = \t %8.4f \n, r);
%% affichage dans le fichier essai.txt dune chane de
%% caractres contenant un champ variable pour la valeur de r
>> fprintf(1,\n r = %8.4f
r*r = %f\n, r, r^2)
%% affichage lcran
r =

12.2000

r*r = 148.840000

Des exemples de spcificateurs de conversion sont:


%3d
3 espaces sont rservs pour un nombre entier
%8.3f 8 espaces au total sont rservs pour un nombre rel dont 3 aprs le point
%8.3e 8 espaces au total sont rservs pour un nombre exprims en notation scientifique
dont 3 aprs le point
%s
chane de caractres

Fonctions graphiques
Plusieurs commandes graphiques sont disponibles: tracerf() plot() xlabel() ylabel() legend() title() gtext() axis etc.
>> tracerf(fct,-2,3);
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

%% pour tracer la fonction dune variable dfinie


%% dans le fichier fct.m entre -2 et 3

t = 0:0.1:pi;
plot(t, sin(t))
%% trace une courbe reliant les points (t,sin(t))
y = sin(t);
plot(t, y, t, 2*y)
%% trace deux courbes
plot(t, y, g+)
%% trace une courbe en vert (g) avec des +
xlabel(temps)
%% identifie laxe des x par temps
hold on
%% retient le graphique actuel
plot(t, 2*y, bo)
%% superpose une deuxime courbe en cercles leus
legend(g+,courbe 1,bo,courbe 2) %% affiche une lgende
title(mon premier chef-doeuvre)
%% affiche un titre

Bouclages et branchements
MATLAB offre des commandes pour faire des bouclages (for et while) et des branchements (if elseif else).
>> for i = 1:6
r(i) = 2*i;
end
>> r
r =
2
4
6

%% boucle FOR
%% sans cho

10

12

>> if r(2) < 3


t = 0
else
t = 1
end

%% branchement IF ELSE
%% avec cho

t =

%% rsultat
1

%% avec cho

Fichiers FUNCTION
Le nom dun fichier FUNCTION se termine par lextension .m. Il contient la dfinition dune fonction qui porte
habituellement le mme nom que le nom du fichier (sans lextension).
Un fichier FONCTION dbute par function [y1, y2, ..., yn] = nom_fct(x1,x2,...,xm).
x1, x2, ..., xm sont les arguments dentre tandis que y1, y2, ..., yn sont les arguments de sortie. La fonction est appele
par son nom nom_fct en passant le mme nombre darguments dentre. Les variables utilises lintrieur de la
fonction sont locales, i.e., elles ne sont pas accessibles lextrieur de la fonction. Les commentaires dbutent par %
(sauf dans les chanes de caractres) et couvrent le restant de la ligne.
Exemple:
%fichier FUNCTION fct(x)
function y = fct(x)
v = pi/4;
y = x.*exp(v*x);

%% v est une variable locale

Fichiers SCRIPT
Le nom dun fichier SCRIPT se termine par lextension .m. Il contient une suite de commandes MATLAB qui sont
excutes lorsque le nom du fichier (sans lextension) est entre comme commande dans la fentre MATLAB.
Des variables globales peuvent tre dfinies laide de la commande global.
Exemple:
%Fichier FUNCTION fct.m
function y = fct(x)
global v

%% v est une variable globale

y = x.*exp(v*x);

%Fichier SCRIPT toto.m


global v
x = [1 2];
v = pi/4;
y1 = fct(x)
v = -6;
y2 = fct(x)
>> toto
y1 =
2.1933
y2 =
0.0025

9.6210
0.0000

%% v est la mme variable globale


%% cette affectation change la valeur de v
%% mme pour la fonction fct(x)
%% idem

Voici deux autres exemples de fichiers SCRIPT (ces fichiers sont disponibles dans les documents imprimer sur le site
Web du cours):
% fichier SCRIPT prec.m
% algorithme pour calculer la prcision machine
eps1 = 1.0;
while (1.0 + eps1) > 1.0
eps1 = eps1 / 2.0;
end
eps1 = 2.0 * eps1;
fprintf(1,\n La precision machine est: %6.5e\n,eps1);

%
%
%
%
%
%
%

fichier SCRIPT sterling.m


Imprimer pour diffrents n, lapproximation et lerreur donnes par
la formule de Sterling (approximation de n!)
Sn =(2*pi*n)^(1/2)*(n/e)^n

fid = fopen(exemple.out, w);


fprintf(fid,
Approximation
Erreur
Erreur\n);
fprintf(fid,
n
n!
de Sterling
absolue
relative\n);
fprintf(fid,------------------------------------------------------------\n);
nmax = 12;
% On approxime jusqu 12
e = exp(1);
% Nombre dEuler
nfact = 1;
for n=1:nmax
nfact = n*nfact;
Sn = sqrt(2*pi*n)*(n/e)^n;
err_abs = abs(nfact-Sn);
err_rel = err_abs/nfact;
fprintf(fid,
fprintf(fid,
end

%2.0f
%11.3f

%10.0f
%13.3f , n, nfact, Sn);
%6.2f\n, err_abs, err_rel);

You might also like