Vous êtes sur la page 1sur 7

cole Centrale de Lyon Anne scolaire 2008/09

Initiation M ATLAB Sance 1



Manipulation de matrices, structures de contrle et affichage 2D

Guillaume Revy / Chu-Duc Nguyen

03/12/2008

1 Introduction M ATLAB
M ATLAB est un systme interactif pour le calcul numrique (langage de programmation, envi-
ronnement de travail et de rsolution de problmes), qui propose des outils performants pour la
manipulation de matrices, ldition de graphiques, le debuggage, le profiling, ...

1.1 Interface graphique gnrale


Linterface graphique gnrale de M ATLAB se compose de quatre blocs.
Command line (console dexcution) : permet lutilisateur dexcuter des fonctions M ATLAB,
dattribuer des valeurs des variables, deffectuer des oprations sur ces variables...
Current directory (rpertoire courant) : permet de naviguer et de visualiser le contenu du rper-
toire courant de lutilisateur.
Workspace (espace de travail) : permet de visualiser, notamment, les variables, leur type et leur
tat...
Command history : historique des commandes que lutilisateur a excutes.

1.2 Caractristiques de M ATLAB


M ATLAB est case sensitive : diffrence entre les majuscules et les minuscules.
Les variables nont pas tre dclares, et la mmoire ncessaire est automatiquement alloue
la dfinition dune variable.
Par dfaut, les valeurs numriques sont des flottants double prcision. Elles peuvent cepen-
dant tre converties en simple prcision.
En M ATLAB, le symbole daffectation est le signe =
>> a = 8
a =
8
>> s q r t ( 4 )
ans =
2
>> A = 9 ;

Si lutilisateur naffecte pas explicitement le rsultat dune opration (par exemple) une va-
riable, M ATLAB laffecte automatiquement la variable ans.
Le symbole ; (point virgule) en fin de ligne annule laffichage du rsultat (mais pas des mes-
sages derreur).
Pour obtenir de laide sur une commande, il suffit de taper help command dans la console
dexcution, ou de lancer laide de M ATLAB (Help > MATLAB Help ou F1).

Initiation M ATLAB - Sance 1 1


>> help s q r t
SQRT Square r o o t .
SQRT ( X ) i s t h e square r o o t o f t h e elements o f X . Complex
r e s u l t s a r e produced i f X i s not p o s i t i v e .

Pour rechercher une fonction relative un mot cl, il suffit de taper lookfor keyword.
>> l o o k f o r i d e n t i t y
EYE I d e n t i t y m a t r i x .
SPEYE Sparse i d e n t i t y m a t r i x .
SETDATID S e t s t h a e s t i m a t i o n data i d e n t i t y f o r a model

En M ATLAB, le symbole % est le symbole de commentaire.

2 Prise en main de M ATLAB


2.1 Initialisation et oprations sur les matrices
Linitialisation dune matrice peut se faire de plusieurs manires : affectation dune liste dl-
ments, rsultats doprations ou de fonctions, partir dautres matrices, partir de donnes ex-
ternes, ...
>> A = [ 1 2 3 ; 2 3 4 ; 4 5 6 ]
A =
1 2 3
2 3 4
4 5 6
>> B = eye ( 3 ) % m a t r i c e i d e n t i t d e t a i l l e 33
B =
1 0 0
0 1 0
0 0 1
>> C = 1 : 0 . 5 : 3
C =
1.0000 1.5000 2.0000 2.5000 3.0000

La matrice A est dfinie ligne par ligne (en commenant par la premire). Chaque ligne est spa-
re par un point virgule, et chaque lment dune ligne par un espace ou une virgule.

Les oprations arithmtiques +, , , /, et ^ peuvent tre effectues sur les matrices (si leurs
dimensions le permettent).
>> B A
ans =
1 2 3
2 3 4
4 5 6
>> A . B
ans =
1 0 0
0 3 0
0 0 6

Si un symbole dopration arithmtique est prcd dun point (.), lopration est effectue l-
ment par lment sur les matrices.
Lopration B/A est quivalente B inv(A) (avec inv(A) : inverse de la matrice carre A).
Autrement, lopration \ peut galement tre utilise : A\B est quivalent inv(A) B.

2.2 Accs aux lments dune matrice


Laccs aux lments dune matrice A se fait de la manire suivante :
A(i) : accs au premier lment de la ie ligne de la matrice A
A(i,j) : accs au j e lment de la ie ligne de la matrice A (i 1 et j 1)

Initiation M ATLAB - Sance 1 2


>> A( 3 )
ans =
4
>> A( 2 , 2 )
ans =
3
>> A( 4 , 4 ) =5
A =
1 2 3 0
2 3 4 0
4 5 6 0
0 0 0 5

Lors de laffectation dune nouvelle valeur un lment dune matrice, M ATLAB pourra (si nces-
saire) tendre la matrice pour que laffectation ait du sens (les lments ajouts seront initialiss
0).

Laccs un ensemble dlments de la matrice A se fait de la manire suivante :


A(i1 :i2) : accs aux lments i1 i2 de la premire colonne de A (rsultat sous la forme
dun vecteur ligne)
A(i1 :i2,j) : accs aux lments i1 i2 de la j e colonne de A
A( :,j) : accs lensemble des lments de la j e colonne de A
A(i,j1 :j2) : accs aux lments j1 j2 de la ie ligne de A
A(i, :) : accs lensemble des lments de la ie ligne de A
A(i1 :i2,j1 :j2) : accs aux lments i1 i2 des colonnes j1 j2 de A
>> A( 1 : 4 )
ans =
1 2 4 0
>> A( 2 : 4 , 1 )
ans =
2
4
0
>> A( : , 1 )
ans =
1
2
4
0
>> A( 4 , 1 : 4 )
ans =
0 0 0 5
>> A( 2 : 4 , 1 : 4 )
ans =
2 3 4 0
4 5 6 0
0 0 0 5

2.3 Variables dfinies dans lespace de travail


La commande who permet dafficher le nom de lensemble des variables dfinies dans lespace
de travail, et la commande whos permet, en plus, dafficher la place mmoire quelles occupent.
>> whos
Name Size Bytes Class

A 3 x3 72 double a r r a y
B 3 x3 72 double a r r a y

Grand t o t a l i s 18 elements using 144 b y t e s

Initiation M ATLAB - Sance 1 3


Il est noter que, par dfaut, les lments crs par M ATLAB sont de type double prcision,
double (pour plus de dtails sur la norme IEEE-754, lire [2]). La matrice A peut cependant tre
convertie en simple prcision par la commande single.
>> AA = s i n g l e (A) ;
>> C = AA B ;
>> whos
Name Size Bytes Class

A 3 x3 72 double array
AA 3 x3 36 single array
B 3 x3 72 double array
C 3 x3 36 single array

Grand t o t a l i s 36 elements using 216 b y t e s

Le rsultat dun calcul faisant intervenir un lment simple prcision est automatiquement converti
en simple prcision.

La commande clear efface lensemble des variables de lespace de travail.

2.4 Vecteurs et polynmes


Un vecteur est dfini de la mme manire quune matrice. Lexemple suivant illustre la dfinition
dun vecteur ligne v et dun vecteur colonne u.
>> v = [ 0 , 1 , 2 , 3 ]
v =
0 1 2 3

>> u = [ 1 ; 2 ; 3 ; 4 ]
u =
1
2
3
4

Les polynmes,
P quant eux, sont dfinis comme des vecteurs ligne. Soit a un polynme de degr
n : a(x) = ni=0 ai xi . Ce polynme est reprsent par le vecteur ligne [an an1 an2 a1 a0 ].
Lexemple suivant illustre la dfinition, en M ATLAB, du polynme a(x) = 4x3 3x2 + 2x 1.
>> a = [ 4 3 2 1]
a =
4 3 2 1

3 Structures de contrle
3.1 Construction if-{elseif-else}-end
i f condition1
command1
e l se i f condition2
command2
else
command3
end

3.2 Boucles for et while


for i =1:20 for i =1:0.5:20 for i =20: 0.5:1 while c o n d i t i o n
command command command command
end end end end

Les boucles for et while peuvent tre interrompues par linstruction break.

Initiation M ATLAB - Sance 1 4


3.3 Construction swicth-case
s wi t ch x
ca s e value1
command1
ca s e { value2 , value3 }
command23
o t h e r wi s e
default_command
end

4 Affichage graphique 2D de base


Laffichage graphique 2D de base se fait par la commande plot(x,y,options). Cette commande
permet alors de tracer la courbe passant par les points (x(1),y(1)), (x(2),y(2))... Le premier
exemple montre laffichage de la fonction sin(x) sur lintervalle [, ].
>> x = [ pi : 0 . 1 : pi ] ;
>> y = si n ( x ) ;
>> p l o t ( x , y ) ;

Le rsultat obtenu est illustr par la figure (a). La figure (b) est le rsultat du deuxime exemple,

(a) (b)

qui calcule x2 pour 1001 valeurs de x [0, 10] par pas de 0.01.
>> idx = 1 ;
>> f o r i = 0 : 0 . 0 1 : 1 0
x ( idx ) = i ;
y ( idx ) = i i ;
idx = idx + 1 ;
end ;
>> p l o t ( x , y , r ) ;

Pour plus de dtails sur la commande plot : help plot.

5 Scripts et fonctions
Les scripts ou les fonctions sont stocks dans des fichiers lextension .m (test.m, par exemple),
et contiennent un ensemble de commandes M ATLAB.
Script Un fichier script na ni paramtre dentre ni paramtre de sortie, et travaille sur les va-
riables de lespace de travail.

Initiation M ATLAB - Sance 1 5


Fonction Un fichier fonction contient la dfinition de la fonction, et peut accepter des paramtres
dentre et de sortie. Les variables internes la fonction sont locales ( moins quelles ne
soient dclares global).
Lditeur de scripts/fonctions de M ATLAB peut tre lanc avec la commande edit. Lexemple
suivant prsente une fonction qui prend en paramtre dentre deux nombres a et b et retourne
la somme s = a + b et le produit p = a b.
f u n ct i o n [ s , p]= somme_produit ( a , b )
s = a + b;
p = a b;
end

Cette fonction doit tre stocke dans le fichier somme_produit.m. Lexcution de cette fonction
donne le rsultat suivant :
>> [ s , p]= somme_produit ( 4 , 5 )
s =
9
p =
20

Pour exctuer un script ou une fonction, le fichier doit se trouver dans le rpertoire courant ou
dans un rpertoire de la variable path (voir path, addpath et rmpath). Pour excuter un script,
il suffit alors de taper dans la console dexcution le nom du fichier script (sans lextension .m),
et pour une fonction, le nom de la fonction suivi des paramtres dentre entre parenthses (si
lutilisateur veut rcuprer la sortie, il doit indiquer les noms des variables de stockage, sinon, le
dernier paramtre de sortie sera stock dans la variable ans).

6 Exercices dapplication
6.1 Polynme caractristique et matrice compagnon
Soit A une matrice carre
Qde taille nn. On note i les valeurs propres de A et a(x) son polynme
n
caractristique : a(x) = i=1 (x i ).
1. Crer manuellement ou gnrer alatoirement une matrice de taille m n (m, n donns).
2. crire la fonction qui dtermine le polynme caractristique dune matrice A donne en
paramtre (afficher un message derreur dans le cas o la matrice A nest pas carre). La
fonction devra galement retourner le dterminant et la trace de la matrice A.
3. Comparer les rsultats de la question 2. avec ceux des fonctions poly, det et trace.
Pn1
Le polynme caractristique de la matrice est de la forme : a(x) = an xn + i=0 ai xi . La matrice
compagnon de a peut alors tre dfinie de la manire suivante :

0 0 0 a0
1 0 0 a1

0 1 0 a2
.. .. .. .. ..

. . . . .
0 0 1 an1

4. Construire bloc par bloc la matrice compagnon C de a prcdemment obtenu.


5. Calculer les valeurs propres de C, et vrifier quelles correspondent aux racines de a(x) (et
donc aux valeurs propres de A).
6. Vrifier le thorme dHamilton-Caley : a(A) = An + an1 An1 + + a1 A + a0 In = 0n .

Initiation M ATLAB - Sance 1 6


6.2 Matrices de translation et de rotation
Soit a un point du plan : a = (x, y). On note (xt , yt ) les coordonnes de a aprs translation dun
vecteur ~u = (u1 , u2 ), et (xr , yr ) les coordonnes de a aprs rotation de centre O (de coordonnes
(0, 0)) et dangle . Les coordonnes (xt , yt ) et (xr , yr ) peuvent tre calcules de la manire sui-
vante :

1 0 u1 x xt cos sin 0 x xr
0 1 u 2 y = yt et sin cos 0 y = yr
0 0 1 1 1 0 0 1 1 1
1. crire une fonction Translate qui prend en paramtre les coordonnes dun point du
plan et un vecteur de translation, et qui retourne les coordonnes du point rsultat.
2. crire la mme fonction pour la rotation (Rotate).
3. Construire et afficher graphiquement un carr (ou autre forme gomtrique 2D).
4. Illustrer graphiquement lutilisation des fonctions Translate et Rotate.

6.3 Mthode de Newton


La mthode de Newton est une mthode itrative, qui permet de rsoudre numriquement lqua-
tion f (x) = 0, par la rcurrence suivante :
f (xn )
xn+1 = xn , avec x0 une valeur initiale.
f (xn )
1. crire la fonction NewtonSqrt(x, initial_range), qui permet de calculer, par la m-
thode de Newton, la racine carre dun nombre x donn avec une valeur initiale dans lin-
tervalle initial_range.
2. Illustrer graphiquement la convergence de cette mthode.
3. Comparer avec le rsultat de la fonction sqrt(x).

6.4 valuation dun polynme de degr n


Pn
Soit a un polynme de degr n donn par ses coefficients ai : a(x) = i=0 ai xi . La mthode de
Horner permet dvaluer ce polynme de la manire suivante :

a(x) = . . . (an x + an1 )x + x + a0 .
1. Crer manuellement ou gnrer un polynme de degr n donn.
2. crire la fonction Horner qui value un polynme de degr n donn en un point x donn.
La simple prcision (associe la double) peut tre utilise pour estimer la prcision dun algo-
rithme numrique. Cette technique standard consiste alors excuter cet algorithme la fois en
simple et double prcision. En considrant le rsultat double comme exact, une estimation de
lerreur dvaluation en simple prcision peut tre dtermine en calculant la diffrence entre le
rsultat en simple prcision et celui en double prcision.
3. Afficher lestimation de lerreur dvaluation par la mthode de Horner du polynme a
(diffrence des valeurs calcules en simple et double prcision), sur lintervalle [0.5, 0.5].

Rfrences
[1] DJ. Higham, NJ. Higham, M ATLAB GUIDE - Second edition, Society for Industrial and Applied
Mathematics (SIAM), 2005
[2] ML. Overton, Numerical computing with IEEE floating point arithmetic, Society for Indus-
trial and Applied Mathematics (SIAM), 2001

Initiation M ATLAB - Sance 1 7

Vous aimerez peut-être aussi