Académique Documents
Professionnel Documents
Culture Documents
,
_
1 1 0
2 1 2
3 1 1
A
Recherchez son dterminant, son inverse, son carr, son inverse terme terme.
Vrifiez que
3 , 3
1
I A A
.
Exemple de rsolution de systme linaire
Il est facile de rsoudre un systme linaire sous Matlab, grce aux fonctions divisions \ et / ,
respectivement dites gauche et droite. Il faut pour comprendre cela, rappeler un rsultat
essentiel de la multiplication de 2 matrices : Le produit de 2 matrices nest pas commutatif !
Pour vous en convaincre, gnrez la matrice B suivante :
,
_
1 2 3
6 5 4
3 2 1
B
et comparez les rsultats des multiplications B A et A B .
L'criture sous forme de produit matriciel d'un systme d'quations linaire respecte un certain
ordre dans la multiplication. Ainsi le systme :
'
+ +
+
1
0 2 2
1 3
z y
z y x
z y x
scrit Y X A , o
,
_
z
y
x
X et
,
_
1
0
1
Y
Dans ce cas l on a recours la division gauche car la matrice A est situe gauche de
l'inconnu. La solution du systme sera donne par X=A\ Y, comme pour signifier que A divise Y
par la gauche. La division droite est utilise dans un systme du type Y A X .
I - 7
Rsolvez le systme propos sous Matlab.
Indexation des matrices
Les manipulations frquentes sur les matrices ncessitent souvent de ne rcuprer qu'une partie
d'une matrice (ligne ou colonne, sous matrice).
L'indexation, ou appel des lments se fait par rapport leurs indices, numrots de 1 au nombre
total de ligne puis de 1 au nombre total de colonnes. L'ordre d'indexation est toujours ligne -
colonne.
Pour rcuprer l'lment situ la 2
me
ligne, 3
me
colonne de la matrice A, on appelle A(2,3).
>> a(2,3)
ans =
2
Rcuprer ainsi l'lment 0 dans la matrice A.
Afin de rcuprer un sous bloc d'une matrice, il faut donner en indice non plus une valeur mais
un vecteur de valeur. La rcupration d'une ligne ou d'une colonne se fait en indiquant : comme
indice. Le dernier lment d'une ligne ou d'une colonne peut tre index par la variable end.
Essayez et commentez
>> a(1:2,1)
>> a(1,:)
>> a(:,1:3)
>> a(1:2,2:3)
>> a(end,end-1)
Dans le cas o l'on ne veut rcuprer que quelques lments de la matrice, il faut avoir recours
un autre type d'indexation. Matlab indexe en effet les lments de 2 faons : soit en ligne -
colonne, soit comme un unique vecteur, en comptant les lments dans l'ordre ligne colonne.
Pour la matrice A, les lments sont donc soit indexs de ) 1 , 1 ( A ) 3 , 3 ( A , soit de ) 1 ( A ) 9 ( A
dans l'ordre :
( )
,
_
) 3 , 3 ( ) 2 , 3 ( ) 1 , 3 (
) 3 , 2 ( ) 2 , 2 ( ) 1 , 2 (
) 3 , 1 ( ) 2 , 1 ( ) 1 , 1 (
, colonnes lignes , soit
,
_
9 6 3
8 5 2
7 4 1
) (indices
La conversion (ligne,colonne) vers (indice) se fait alors, pour une matrice ayant N lignes et M
colonnes, par :
ligne colonne N Indice + ) 1 (
I - 8
Essayez avec les 2 types d'indexations de rcuprer en une seule fois les lments ) 1 , 2 ( A , ) 3 , 1 ( A
et ) 2 , 3 ( A .
Suppression d'lments, taille des matrices
Il est parfois utile de devoir supprimer, ou ajouter, des lments d'un vecteur ou d'une matrice.
L'ajout d'lments se fait simplement en assignant une valeur l'indice dsir.
Matlab met jour la taille des matrices pour y inclure le nouvel lment.
La taille des matrices est donne par la fonction size pour les matrices ou les tableaux de
dimensions > 2 et par length pour les vecteurs.
Une option intressante de la fonction size est la possibilit de ne rcuprer que le nombre de
lignes ou de colonnes d'une matrice. Regardez dans l'aide de la fonction size.
Essayez et commentez les ajouts suivants. Vrifiez aussi la taille de votre matrice A avant et aprs
chacune des oprations.
>> a(5,2) = 5
>> a(4,:) = 5
>> a(1:4,7) = a(1,3)
L'opration de concatnation consiste mettre bout bout des matrices, ou vecteur. Il n'est
possible de concatner les matrices en ligne ou en colonne que si elles ont une dimension en
commun.
Expliquez les concatnations suivantes :
>> aa1 = [ a a ]
>> aa2 = [ a ; a ]
>> aa3 = [ a(1,:) ; a(:,2)' ]
>> aa4 = [ a(1,1:2) , a(1:2,4) ]
Il est aussi ncessaire, pour certaines oprations terme terme entre 2 matrices de rpliquer un
vecteur ou une matrice pour le mettre au format d'une autre. La commande repmat permet de
rpliquer une matrice en la concatnant.
Expliquez chaque terme des commandes suivantes
>> c = repmat(1:size(a,2),size(a,1),1)
>> d = a.^c
I - 9
Enfin, pour supprimer des lments d'une matrice, il faut en fait leur assigner une matrice vide
(>> [ ]).
Est-il possible de ne supprimer qu'un lment d'une matrice ?
Commentez les oprations suivantes, en vrifiant la taille de votre matrice A:
>> a(4,:) = [ ]
>> a(5,:) = [ ]
>> a(:,4:6) = [ ]
Effectuez les suppressions ncessaires pour revenir la matrice
3 , 3
A initiale.
c) Application
On peut aussi crer des matrices avec les fonctions zeros, ones et eye.
Ces fonctions crent des matrices de la taille prcise, respectivement remplies de 0, de 1, et de 1
sur la diagonale et de 0 ailleurs.
A partir de ces informations et laide de laide en ligne, effectuez les oprations suivantes :
Entrer le vecteur ligne VL compos des lments suivants : 10 20 30 40 50
Entrer le vecteur colonne VC compos des lments suivants : 6 7 8 9
Entrer la matrice suivante
,
_
2 1 3
1 2 1
3 1 2
1 M
Crer une matrice magique M2 de dimension 5 laide de la commande magic
Visualiser les variables VL, VC et M1
Extraire le 4
me
lment de VL
Extraire de la matrice M1 la 3
ime
ligne et le 2
nd
lment de la 1
re
ligne
Calculer la somme (commande sum) des lments de chaque ligne de la matrice M2, de
chaque colonne et des deux diagonales (commande diag). Conclusion ?
Afficher lensemble des variables en mmoire. Sauvegarder celle qui occupe le plus de place
puis leffacer. Vrifier quelle nest plus en mmoire, puis la recharger (commandes save, load
et clear).
I - 10
4. Affichage
Matlab possde de nombreuses fonctions permettant de visualiser les donnes que ce soit en 2D,
3D ou mme 4D puisqu'il est possible de raliser des animations (pour voir les vibrations d'une
plaque par exemple). Avant tout, il est souvent ncessaire d'afficher du texte, pour demander des
valeurs l'utilisateur ou simplement pour afficher des rsultats.
d) Texte
Il existe 2 grands types de variables : les nombres, souvent rels (double), et les caractres. Dans
les 2 cas, Matlab traite les donnes sous forme matricielle, c'est dire soit comme un tableau de
nombres, soit comme un tableau de caractres.
Par exemple, une phrase sans saut de ligne sera un vecteur de caractres.
Les chanes de caractres sont dlimites par des apostrophes '.
>> txt1 = 'Bonjour tout le monde'
txt1 =
Bonjour tout le monde
>> txt1(1:8)
ans =
Bonjour
Pour rcuprer une chane entre par l'utilisateur, on utilise la fonction input avec l'argument 's'
signifiant string. La concatnation de texte s'effectue comme pour les matrices et vecteurs.
Essayez :
>> txt2 = input('Tapez votre nome :','s')
>> txt3 = [ txt1(1:8) txt2 ]
L'affichage du texte est possible par les commandes disp et sprintf.
disp permet d'afficher une variable ou une chane de caractre, ou toute combinaison licite des 2.
Le mlange de variables numriques et de caractres se fait grce la fonction num2str qui
convertit un nombre en chane (littralement : number to string).
Il arrive cependant qu'une variable numrique soit sur plusieurs lignes, comme c'est le cas pour
les matrices. Aussi, la fonction strvcat permet de mettre en forme des variables de texte n'ayant
pas le mme nombre de lignes ou de colonnes.
Testez les diffrents exemples proposs ci-dessous:
>> disp(a);
>> disp(pi);
>> disp('du texte, blabla');
I - 11
>> disp('du texte'),disp('blabla')
>> disp( [ 'l''lment a(3,3) vaut : ' num2str(a(3,3)) ] )
>> disp( [ 'La matrice A vaut :' num2str(a) ] )
>> disp( strvcat('La matrice A vaut :', num2str(a)) )
>> disp('La matrice A vaut : '), disp(a)
sprintf est la fonction similaire la fonction printf du langage C.
Par rapport la fonction disp, elle permet d'inclure plus facilement des rsultats numriques au
milieu de texte, et de choisir la prcision d'affichage.
Regardez l'aide de cette fonction et commentez les diffrents exemples suivants :
>> sprintf('%.25f',pi)
>> sprintf('%.3f',pi);
>> disp(sprintf('%.3f',pi));
>> sprintf('%d ',a)
>> sprintf('A est une \nmatrice %dx%d',size(a,1),size(a,2))
e) Graphiques 2D
Un graphique sert reprsenter dans une grande majorit des cas une grandeur physique. Il est
donc primordial de grer les units des axes que l'on utilise.
De nombreuses fonctions servent personnaliser les axes en ajoutant vos propres labels,
lgendes et titres. Diffrents types de reprsentations sont aussi possibles, suivant le type de
donnes que l'on dsire reprsenter.
Nous ne prsentons ici que les graphiques de type courbes, mais il existe aussi des fonctions
ralisant des histogrammes, des barres ou des camemberts pour les donnes de types statistiques
ou proportionnelles (help specgraph pour plus de dtails).
Les reprsentations se font en coordonnes cartsiennes mais aussi polaires ou cylindriques.
Les principales fonctions d'affichage sont :
plot relie deux points successifs par une ligne, ce qui donne une courbe.
stem les diffrents points ne sont pas relis entre eux, mais apparaissent comme des
chantillons.
stairs les valeurs des points restent identiques jusqu'au point suivant. Similaire un bloqueur
d'ordre 0 pour un chantillonneur (capacit trs grande).
comet trace la courbe de manire continue, comme une comte qui passe.
semilogx, semilogy, loglog idem que plot sur une courbe, semi logarithmique en x ou y ou
sur une courbe logarithmique.
I - 12
Tracer la fonction ) log(x , pour ] 100 , 1 [ x , avec ces diffrentes commandes.
La premire utilisation d'une de ces fonctions entrane la cration d'une fentre appele figure.
Les suivantes se tracent par dfaut dans la mme figure, en effaant la courbe prcdente. Il est
donc ncessaire de crer une nouvelle figure pour afficher 2 graphiques diffrents.
La commande figure cre une nouvelle fentre et la commande close ferme la fentre en cours
d'utilisation. Toute les figures sont repres par un numro qui peut tre utilis comme argument
de figure ou close pour rappeler une ancienne figure.
La syntaxe est la mme pour toutes ces fonctions. Elle permet notamment de tracer plusieurs
courbes en mme temps : plot(x1,y1,'couleur1',x2,y2,'couleur2',... ).
L'argument couleur est 1 caractre, correspondant une couleur dont la liste est donne dans
l'aide de la fonction plot.
Quand on ne dsire tracer qu'une seule courbe, les arguments x1et couleur sont optionnels.
Attention, car on perd dans ce cas l l'information sur l'axe des abscisses, et donc sur une unit
(souvent le temps ou la frquence) de la grandeur reprsente.
Il est aussi possible de superposer les courbes l'aide de la commande hold on, qui maintient
l'affichage. De la mme manire hold off supprime le maintient de l'affichage.
Ainsi :
>> x = 0:0.1:2*pi;
>> y1 = sin(x);
>> y2 = cos(x);
>> plot(x,y1,'r',x,y2,'b')
quivaut
>> plot(x,y1,'r')
>> hold on;
>> plot(x,y2)
La fonction polar permet de reprsenter des fonctions en coordonnes polaires. Ceci prsente un
grand intrt pour les diagrammes de directivit.
Par exemple, ici un diagramme de directivit de type cardiode.
>> theta = 0:.1:2*pi;
>> r = 1 + cos(theta);
>> polar(theta,r)
Remarque : il peut tre ncessaire de faire un hold off avant !
I - 13
Gestion des axes
Les diffrentes fonctions suivantes permettent de grer les labels des axes et commentaires sur les
figures, ainsi que diverses fonctions pour manipuler les graphiques.
title : title('Texte du titre') Ajoute un titre la figure.
xlabel : xlabel('Unit des x')
ylabel : ylabel('Unit des y')
legend : legend('Nom de la courbe 1','nom courbe 2', ...)
grid : grid on, grid off, quadrille ou non le graphique.
zoom : permet de zoomer dans la figure a l'aide de la souris (clic gauche = zoom +, clic
droite = zoom -, double clic droite = retour l'affichage de dpart, bouton gauche appuy
dessin de la zone zoomer).
clf : efface la figure en cours d'utilisation.
ginput : ginput(n) rcupre les coordonnes de n points cliqus la souris dans la figure en
cours.
Application
Reprsenter sur une mme figure comportant toutes les informations (lgendes, labels ) les
fonctions ) sin( ) (
2
x x f , ) exp( ) ( x x g et ) ( * ) ( ) ( x g x f x h , pour ] 5 , 0 [ x , avec des
couleurs et des symboles diffrents.
Sauvegardez la figure obtenue dans un fichier intitul courbes.jpg, au format jpeg, dans
votre rpertoire de travail (commande export du menu fichier de la fentre image)
f) Images et graphiques 3D
Les fonctions de reprsentation en 3D s'utilisent de la mme manire que les fonctions 2D. La
seule diffrence vient de la taille des donnes reprsenter.
Typiquement, on va reprsenter en 3D des donnes contenues dans une matrice, en considrant
par exemple les lignes et les colonnes comme un quadrillage de l'espace, et les valeurs en chaque
point de la matrice reprsentent une amplitude (pression, tension, ...).
Il est alors possible de reprsenter les amplitudes soit sous forme d'une image ou chaque couleur
reprsente une valeur d'amplitude soit sous forme d'un graphique en 3 dimensions o en plus de
la couleur, l'axe des z (hauteur) reprsente l'amplitude.
Les principales fonctions d'affichage 3D sont :
I - 14
surf : surf(x,y,z), courbe 3D o x et y sont les axes et z la matrice des amplitudes
mesh : mesh(x,y,z). Idem que surf
image, imagesc : imagesc(x,y,z). Visualisation d'une image, les couleurs sont
proportionnelles aux amplitudes.
shading : shading interp amliore le rendu d'une courbe 3D, en la lissant.
colormap : colormap(cool) diffrentes plages de couleur.
view : view(azimut,elevation) permet de rgler l'angle de vue de la courbe (azimut, rotation
par rapport un axe vertical, elevation par rapport un axe horizontal )
rotate : Permet de faire tourner la figure l'aide de la souris
Par exemple, pour reprsenter le mode (1,1) de vibration d'une plaque, on gnre la matrice Z, et
on utilise une reprsentation 3D, comme ci-dessous :
>> y = 0:0.1:pi;
>> x = 0:0.1:pi;
>> n = 1; m = 1;
>> z = sin(n*x)'*sin(m*y);
>> figure(1); clf;
>> surf(x,y,z);
>> shading interp
>> figure(2), clf, imagesc(x,y,z)
Observez le rsultat obtenu.
g) Division d'une figure en sous-figures
La commande subplot permet de sparer une figure en une matrice de sous-figures. Elle s'utilise
avant une commande de dessin pour signifier que la courbe devra tre dessine dans une sous-
figure.
La syntaxe est subplot(n_ligne,n_col,num_fig) et la figure est spare en n_lignes * n_col sous
figures, rparties sur n_lignes lignes et n_col colonnes. num_fig correspond au numro de la sous
figure dans laquelle on dsire tracer la courbe, les sous-figures tant numrotes de gauche
droite puis de haut en bas.
>> subplot(2,2,2), plot(x,sin(x))
>> subplot(2,2,3), plot(x,sin(x))
Application :
Ralisez lensemble des commandes permettant de voir en 3D les modes (1,1), (1,2), (1,3), (2,2),
(3,2) et (3,3) de la plaque dfinie ci-dessus dans une mme figure.
Sauvegardez le rsultat obtenu dans votre rpertoire de travail dans une figure intitule
vibration.jpg.