Vous êtes sur la page 1sur 14

I.N.S.S.E.T. – Université de Picardie Licence Maths et SPI – 2 ème année

Programmation avec Matlab M. Marcoux

TP 1 : Prise en main de Matlab

1. Introduction

Matlab est un logiciel permettant l’optimisation des calculs scientifiques. Développé au départ pour le calcul matriciel, d’où l’abréviation MATrix LABoratory, Matlab permet la résolution de problèmes grâce à des algorithmes, des graphiques, des simulations,… Matlab peut être considéré comme un langage de programmation au même titre que C, Pascal ou Basic. C’est un langage interprété, c'est-à-dire que les instructions sont exécutées immédiatement après avoir été tapées.

L’ensemble des séances de TP a pour objectif l’apprentissage de l’outil Matlab et son application à l’étude des méthodes numériques (Statistique, intégration et dérivation, résolution d’équation et de systèmes d’équation …)

Ce premier TP a pour but d'apprendre à utiliser le logiciel Matlab, et de manipuler les variables dans l'environnement de travail. Les différents types de visualisation des données en 2D et 3D sont aussi abordés.

2. Mise en route

Il existe deux modes de fonctionnement :

Mode interactif : Matlab exécute les instructions au fur et à mesure qu’elles sont données par l’usager

Mode exécutif : Matlab exécute ligne par ligne un "fichier M" (programme en langage Matlab)

Ce second mode, utilisant des scripts, sera présenté en détail dans le TP suivant.

ÿ Lancer Matlab par un double-clic sur l’icône

On travaillera dans ce TP à partir du prompt de l'espace de travail. Le prompt, dénoté par >> , signifie que vous avez la main et qu'une commande est attendue.

Commandes de base

Quelques commandes sont utiles, lorsque vous avez oublié quelles sont vos variables ou une commande

La commande help utilisée seule donne une liste et un bref descriptif des sujets contenant une aide. C’est LA commande essentielle dans l’apprentissage de Matlab

La commande help nom_fonction donne un descriptif de la fonction sur les arguments nécessaires en entrée ainsi que les résultats donnés.

Les commandes who et whos vous indiquent les tailles et types de vos variables.

Navigation

Au début de chaque séance vous devrez vous placer dans votre répertoire de travail :

c:\TPMatlab\votrenom\TPX

Pour cela deux solution sont possibles : utiliser le gestionnaire de chemins, ou utiliser les commandes de gestion des répertoires.

Ouvrez le gestionnaire de chemins et placez vous dans le répertoire c:\TPMatlab (s’il n’existe pas, créez-le à l’aide de l’explorateur Windows)

Revenez dans la fenêtre de commandes. A l’aide de commandes systèmes (cd, pwd, dir), identifiez le répertoire courant et visualisez les fichiers présents dans ce répertoire. Notez en particulier comment s’affichent les sous répertoires et les fichiers.

Changez de répertoire courant (cd) pour vous rendre dans le répertoire c:\ puis revenez au répertoire c:\TPMatlab

Dans ce répertoire, créez un sous-repertoire de travail (mkdir) correspondant à votre nom ou votre groupe de travail

Dans ce répertoire, créez un sous répertoire TP1 et allez dans ce répertoire

3. Génération - Manipulation

Cette partie fait un tour d'horizon des utilisations courantes des vecteurs et matrices, de la génération à l'indexation.

a) Manipulations des vecteurs et scalaires

Scalaires

Dans un premier temps on génère trois variables scalaires a, b et c auxquelles on affecte une valeur et sur lesquelles on va par la suite effectuer quelques opérations.

>> a = 2

a =

2

>> b = 3

b =

3

>> c = 4;

>>

Le caractère ; sert à supprimer l'écho d'une ligne de commande, c'est-à-dire l'affichage des valeurs prises par les variables dans la ligne de commande. Pour connaître la valeur d'une variable, il suffit donc de taper son nom :

>> c

c =

4

Il est aussi possible de séparer 2 commandes sur la même ligne à l'aide d'une virgule , sans supprimer l'écho ou d'un point virgule ;. Essayez :

>>

a

=

3;

b

=

2, c = 4;

Enfin, si une ligne de commande est trop longue, vous pouvez passez à la ligne suivante en

tapant

puis Entrée:

>> a =

4

a =

4

Vous pouvez alors effectuer des opérations sur vos variables en respectant les règles classiques de priorités : * et / prioritaires devant + et -

>> a+b * c ans = ?? >> (a+b) * c ans = ?? >> d = a/b*c, e = (a/b)*c

d =

e =

??

??

Vérifiez les résultats. Comparez alors l'effet des commandes who et whos.

Variables complexes

Matlab travaille indifféremment avec des nombres réels et complexes. Par défaut, les variables i et j désignent le nombre imaginaire pur de partie imaginaire égale à 1.

Si les variables i ou j ont été utilisée ont été utilisées entre temps à un autre usage (indice de boucle par exemple) vous pouvez la réinitialiser par i = sqrt(-1) .

>> z = 3 + 2*i z = 3.0000 + 2.0000 i

Les fonctions usuelles de manipulation des nombres complexes sont prédéfinies dans Matlab :

real, imag, abs, angle (en radians), conj. Essayez et commentez :

>> r = abs(z) ; >>theta = angle(z) ; >> y=r*exp(i*theta) ;

Vecteurs

Les vecteurs peuvent être générés de manière manuelle ou automatique. Pour la génération manuelle, les délimiteurs sont :

[ et ] délimitent le début et la fin du vecteur,

un espace sépare 2 colonnes,

un point virgule ; à l'intérieur de [ ] sépare 2 lignes.

Générez ainsi un vecteur ligne et un vecteur colonne

>> vect1 = [ a b c+b/2 ] ??? >> vect2 = [ c; b; a+b+c] ???

La transposition s'effectue à l'aide de l'apostrophe '. Attention, car elle effectue aussi l'opération de conjugaison si le nombre est complexe (c'est la transconjugaison), et la transposition réelle est en fait l'opérateur .'. Essayez et commentez :

>> vect1 + vect2 ??? >> vect1 + vect2' ??? >> (vect2 + i)' ??? >> (vect2 + i).' ???

La génération automatique d'un vecteur se fait de manière linéaire ou logarithmique. De manière linéaire, en définissant une valeur de début, un pas et une valeur de fin, chacun séparés par 2 points :. Par défaut, c'est à dire s'il n'est pas spécifié, le pas vaut 1. Essayez :

>> vect3 = 1:10 ??? >> vect4 = 1:-0.5:-1 ???

>> debut = 0; fin = 2*pi; pas = .1; vect5 = debut:pas:fin

Utilisez maintenant la fonction linspace pour générer le même vecteur vect5 et essayez la fonction logspace pour générer un vecteur logarithmiques (regardez l'aide sur ces fonctions pour savoir comment les utiliser).

Les opérations

plus possible de faire des opérations terme à terme en ajoutant un point devant l'opérateur ( .* ,

./ ,

Les principales règles sont :

- , * , ^ sur les vecteurs se font alors comme pour les matrices et il est en

+

,

.^ ,

).

L'addition/soustraction de matrices est possible si et seulement si les matrices sont de même taille.

La multiplication de deux matrices est possible si et seulement si ces matrices ont une taille en

M = N . Le produit est alors effectué dans l'ordre

A

classique ligne - colonne

commun.

* B

existe si

2

N ,M

1

1

N ,M

2

1

2

La puissance n'a de sens que pour les matrices carrées.

Les opérations terme à terme ne sont possibles qu'entre des matrices de même taille.

La puissance et l'inverse terme à terme sont possibles sur toutes les matrices (pour l'inverse, il ne doit pas y avoir d'éléments nuls).

L'utilisation des fonctions mathématiques courantes se fait comme dans une calculatrice scientifique. Une liste des fonctions les plus courantes est disponible dans l'aide en ligne par

>>help elfun

Essayez et commentez les opérations suivantes

>> vect1 * vect2 >> vect2 * vect1 >> vect1 .* vect2'

>> x = 0:pi/4:pi; >> sin(x),cos(x) ???

b) Manipulations des matrices

Les matrices sont des tableaux à deux dimensions qui se génèrent comme les vecteurs. À l'intérieur des délimiteurs [ ], deux colonnes sont séparées par un espace et deux lignes par un point virgule ;.

Surveillez bien que toutes vos lignes aient toujours le même nombre de colonnes !

), et des

fonctions réalisent les opérations courantes sur les matrices (déterminant, trace, somme des lignes

ou des colonnes, valeurs propres,

La liste est disponible dans l'aide :

Un certain nombre de matrices prédéfinies existent (diagonales, nulles, remplies de 1,

).

>> help elmat

Générez la matrice

A

3,3

suivante :

A =

Ê 1

Á

Á

Á

Ë

2

0

-

-

1

1

1

-

3

2

1

ˆ

˜

˜

˜

¯

Recherchez son déterminant, son inverse, son carré, son inverse terme à terme.

Vérifiez que

A* A

-

1

= I

3,3

.

Exemple de résolution de système linéaire

Il est facile de résoudre un système linéaire sous Matlab, grâce aux fonctions divisions \ et /,

respectivement dites à gauche et à droite. Il faut pour comprendre cela, rappeler un résultat

essentiel de la multiplication de 2 matrices : Le produit de 2 matrices n’est pas commutatif !

Pour vous en convaincre, générez la matrice B suivante :

B =

Ê 1

Á

Á

3

Á

Ë

4

2

5

2

3 ˆ

˜

˜

1

˜

6

¯

et comparez les résultats des multiplications A * B et B * A .

L'écriture sous forme de produit matriciel d'un système d'équations linéaire respecte un certain

ordre dans la multiplication. Ainsi le système :

Ï

Ô

Ì

Ô

Ó

x

-

y

2

+

x y

-

y

-

+

+

z

3

z

=

1

2

z

=

= - 1

0

s’écrit

A * X = Y ,

X

=

Ê x ˆ

y

z

˜

˜

˜

Á

Ë

Á

Á

¯

et

Y =

Ê

Á

Á

Á

Ë

1

0

-

1

ˆ

˜

˜

˜

¯

Dans ce cas là on a recours à la division à gauche car la matrice A est située à gauche de

l'inconnu. La solution du système sera donnée par X=A\Y, comme pour signifier que A divise Y

par la gauche. La division à droite est utilisée dans un système du type X * A = Y .

Résolvez le système proposé sous Matlab.

Indexation des matrices

Les manipulations fréquentes sur les matrices nécessitent souvent de ne récupérer qu'une partie

d'une matrice (ligne ou colonne, sous matrice).

L'indexation, ou appel des éléments se fait par rapport à leurs indices, numérotés de 1 au nombre

total de ligne puis de 1 au nombre total de colonnes. L'ordre d'indexation est toujours ligne -

colonne.

Pour récupérer l'élément situé à la 2 ème ligne, 3 ème colonne de la matrice A, on appelle A(2,3).

>> a(2,3)

ans =

2

Récupérer ainsi l'élément 0 dans la matrice A.

Afin de récupérer un sous bloc d'une matrice, il faut donner en indice non plus une valeur mais

un vecteur de valeur. La récupération d'une ligne ou d'une colonne se fait en indiquant : comme

indice. Le dernier élément 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 récupérer que quelques éléments de la matrice, il faut avoir recours à

un autre type d'indexation. Matlab indexe en effet les éléments de 2 façons : soit en ligne -

colonne, soit comme un unique vecteur, en comptant les éléments dans l'ordre ligne colonne.

Pour la matrice A, les éléments sont donc soit indexés de A(1,1) à A(3,3) , soit de A(1) à A(9)

dans l'ordre :

(

lignes, colonnes

)

=

Ê (1,1)

Á

Á

(3,1)

(2,1)

Á

Ë

(1,2)

(2,2)

(3,2)

(1,3) ˆ

˜

˜

˜

(2,3)

(3,3)

¯

,

soit

(indices) =

Ê 1

Á

Á

Á

Ë

3

2

4

5

6

7 ˆ

8

9

˜

˜

˜

¯

La conversion (ligne,colonne) vers (indice) se fait alors, pour une matrice ayant N lignes et M

colonnes, par :

Indice = N * (colonne -1) + ligne

Essayez avec les 2 types d'indexations de récupérer en une seule fois les éléments A(2,1) , A(1,3)

et A(3,2) .

Suppression d'éléments, taille des matrices

Il est parfois utile de devoir supprimer, ou ajouter, des éléments d'un vecteur ou d'une matrice. L'ajout d'éléments se fait simplement en assignant une valeur à l'indice désiré. Matlab met à jour la taille des matrices pour y inclure le nouvel élément.

La taille des matrices est donnée par la fonction size pour les matrices ou les tableaux de dimensions > 2 et par length pour les vecteurs. Une option intéressante de la fonction size est la possibilité de ne récupérer 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. Vérifiez aussi la taille de votre matrice A avant et après chacune des opérations.

>> a(5,2) = 5 >> a(4,:) = 5 >> a(1:4,7) = a(1,3)

L'opération de concaténation consiste à mettre bout à bout des matrices, ou vecteur. Il n'est possible de concaténer les matrices en ligne ou en colonne que si elles ont une dimension en commun.

Expliquez les concaténations suivantes :

>>

aa1

=

[

a

a

]

>>

aa2

=

[

a

;

a

]

>> aa3 = [ a(1,:) ; a(:,2)' ] >> aa4 = [ a(1,1:2) , a(1:2,4) ]

Il est aussi nécessaire, pour certaines opérations terme à terme entre 2 matrices de répliquer un vecteur ou une matrice pour le mettre au format d'une autre. La commande repmat permet de répliquer une matrice en la concaténant.

Expliquez chaque terme des commandes suivantes

>> c = repmat(1:size(a,2),size(a,1),1) >> d = a.^c

Enfin, pour supprimer des éléments d'une matrice, il faut en fait leur assigner une matrice vide

(>> [ ]).

Est-il possible de ne supprimer qu'un élément d'une matrice ?

Commentez les opérations suivantes, en vérifiant la taille de votre matrice A:

>> a(4,:) = [ ] >> a(5,:) = [ ] >> a(:,4:6) = [ ]

Effectuez les suppressions nécessaires pour revenir à la matrice

c) Application

A

3,3

initiale.

On peut aussi créer des matrices avec les fonctions zeros, ones et eye.

Ces fonctions créent des matrices de la taille précisée, respectivement remplies de 0, de 1, et de 1

sur la diagonale et de 0 ailleurs.

A partir de ces informations et à l’aide de l’aide en ligne, effectuez les opérations suivantes :

Entrer le vecteur ligne VL composé des éléments suivants : 10 20 30 40 50

Entrer le vecteur colonne VC composé des éléments suivants : 6 7 8 9

Entrer la matrice suivante

M1 =

Ê 2

Á

Á

3

Á

Ë

1

1

2

1

3 ˆ

1

2

˜

˜

˜

¯

Créer une matrice magique M2 de dimension 5 à l’aide de la commande magic

Visualiser les variables VL, VC et M1

Extraire le 4 ème élément de VL

Extraire de la matrice M1 la 3 ième ligne et le 2 nd élément de la 1 ère ligne

Calculer la somme (commande sum) des éléments de chaque ligne de la matrice M2, de

chaque colonne et des deux diagonales (commande diag). Conclusion ?

Afficher l’ensemble des variables en mémoire. Sauvegarder celle qui occupe le plus de place

puis l’effacer. Vérifier qu’elle n’est plus en mémoire, puis la recharger (commandes save, load

et clear).

4. Affichage

Matlab possède de nombreuses fonctions permettant de visualiser les données que ce soit en 2D, 3D ou même 4D puisqu'il est possible de réaliser des animations (pour voir les vibrations d'une plaque par exemple). Avant tout, il est souvent nécessaire d'afficher du texte, pour demander des valeurs à l'utilisateur ou simplement pour afficher des résultats.

d) Texte

Il existe 2 grands types de variables : les nombres, souvent réels (double), et les caractères. Dans les 2 cas, Matlab traite les données sous forme matricielle, c'est à dire soit comme un tableau de nombres, soit comme un tableau de caractères. Par exemple, une phrase sans saut de ligne sera un vecteur de caractères.

Les chaînes de caractères sont délimitées par des apostrophes '.

>> txt1 = 'Bonjour tout le monde' txt1 = Bonjour tout le monde

>> txt1(1:8)

ans =

Bonjour

Pour récupérer une chaîne entrée par l'utilisateur, on utilise la fonction input avec l'argument 's' signifiant string. La concaténation 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 chaîne de caractère, ou toute combinaison licite des 2. Le mélange de variables numériques et de caractères se fait grâce à la fonction num2str qui convertit un nombre en chaîne (littéralement : number to string). Il arrive cependant qu'une variable numérique 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 même nombre de lignes ou de colonnes.

Testez les différents exemples proposés ci-dessous:

>> disp(a); >> disp(pi); >> disp('du texte, blabla');

>> disp('du texte'),disp('blabla') >> disp( [ 'l''élément 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 résultats numériques au milieu de texte, et de choisir la précision d'affichage.

Regardez l'aide de cette fonction et commentez les différents 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 à représenter dans une grande majorité des cas une grandeur physique. Il est donc primordial de gérer les unités des axes que l'on utilise.

De nombreuses fonctions servent à personnaliser les axes en ajoutant vos propres labels, légendes et titres. Différents types de représentations sont aussi possibles, suivant le type de données que l'on désire représenter. Nous ne présentons ici que les graphiques de type courbes, mais il existe aussi des fonctions réalisant des histogrammes, des barres ou des camemberts pour les données de types statistiques ou proportionnelles (help specgraph pour plus de détails).

Les représentations se font en coordonnées cartésiennes 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 différents points ne sont pas reliés 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é très grande).

comet trace la courbe de manière continue, comme une comète qui passe.

semilogx, semilogy, loglog idem que plot sur une courbe, semi logarithmique en x ou y ou sur une courbe logarithmique.

Tracer la fonction log(x) , pour x Œ[1,100], avec ces différentes commandes.

La première utilisation d'une de ces fonctions entraîne la création d'une fenêtre appelée figure. Les suivantes se tracent par défaut dans la même figure, en effaçant la courbe précédente. Il est donc nécessaire de créer une nouvelle figure pour afficher 2 graphiques différents. La commande figure crée une nouvelle fenêtre et la commande close ferme la fenêtre en cours d'utilisation. Toute les figures sont repérées par un numéro qui peut être utilisé comme argument de figure ou close pour rappeler une ancienne figure.

La syntaxe est la même pour toutes ces fonctions. Elle permet notamment de tracer plusieurs

courbes en même temps : plot(x1,y1,'couleur1',x2,y2,'couleur2',

L'argument couleur est 1 caractère, correspondant à une couleur dont la liste est donnée dans l'aide de la fonction plot. Quand on ne désire tracer qu'une seule courbe, les arguments x1 et 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 fréquence) de la grandeur représentée.

).

Il est aussi possible de superposer les courbes à l'aide de la commande hold on, qui maintient l'affichage. De la même manière 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 représenter des fonctions en coordonnées polaires. Ceci présente un grand intérêt pour les diagrammes de directivité. Par exemple, ici un diagramme de directivité de type cardioïde.

>> theta = 0:.1:2*pi; >> r = 1 + cos(theta); >> polar(theta,r)

Remarque : il peut être nécessaire de faire un hold off avant !

Gestion des axes

Les différentes fonctions suivantes permettent de gérer 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 départ, bouton gauche appuyé Æ dessin de la zone à zoomer).

clf : efface la figure en cours d'utilisation.

ginput : ginput(n) récupère les coordonnées de n points cliqués à la souris dans la figure en cours.

Application Représenter sur une même figure comportant toutes les informations (légendes, labels …) les

fonctions

couleurs et des symboles différents. Sauvegardez la figure obtenue dans un fichier intitulé courbes.jpg, au format jpeg, dans votre répertoire de travail (commande export du menu fichier de la fenêtre image)

, g(x) = exp(-x) et h(x) = f (x) * g(x) , pour x Œ[0,5] , avec des

f x

(

)

=

sin(

x

2

)

f) Images et graphiques 3D

Les fonctions de représentation en 3D s'utilisent de la même manière que les fonctions 2D. La seule différence vient de la taille des données à représenter. Typiquement, on va représenter en 3D des données contenues dans une matrice, en considérant

par exemple les lignes et les colonnes comme un quadrillage de l'espace, et les valeurs en chaque

point de la matrice représentent une amplitude (pression, tension,

Il est alors possible de représenter les amplitudes soit sous forme d'une image ou chaque couleur représente une valeur d'amplitude soit sous forme d'un graphique en 3 dimensions où en plus de la couleur, l'axe des z (hauteur) représente l'amplitude.

).

Les principales fonctions d'affichage 3D sont :

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 améliore le rendu d'une courbe 3D, en la lissant.

colormap : colormap(cool) différentes plages de couleur.

view : view(azimut,elevation) permet de régler 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 représenter le mode (1,1) de vibration d'une plaque, on génère la matrice Z, et on utilise une représentation 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 résultat obtenu.

g) Division d'une figure en sous-figures

La commande subplot permet de séparer une figure en une matrice de sous-figures. Elle s'utilise avant une commande de dessin pour signifier que la courbe devra être dessinée dans une sous- figure. La syntaxe est subplot(n_ligne,n_col,num_fig) et la figure est séparée en n_lignes * n_col sous figures, réparties sur n_lignes lignes et n_col colonnes. num_fig correspond au numéro de la sous figure dans laquelle on désire tracer la courbe, les sous-figures étant numérotées 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 :

Réalisez l’ensemble 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 définie ci-dessus dans une même figure. Sauvegardez le résultat obtenu dans votre répertoire de travail dans une figure intitulée vibration.jpg.