Débuter en Matlab

Formation Matlab, tutoriel & guide de travaux pratiques en pdf.

Tracé de courbes

Bien comprendre la syntaxe

Pour tracer la courbe représentative de la fonction sin sur l’intervalle [0,2π], il suffit de taper
x=0:0.01:2*pi; plot(x,sin(x))

On a l’impression que la première commande definit un intervalle sur lequel est d´efinie la fonction sin, et que la seconde produit une courbe continue. Ce n’est pas du tout comme cela que Matlab interprète ces commandes. Pour le voir, lancer les instructions ci-dessus, en remplaçant 0.01 par 1, et en retirant le point-virgule a la fin de la première instruction (qui empêche l’affichage du r´esultat). Matlab ignore les intervalles et les fonctions d’une variable réelle, il ne connait que des listes de valeurs numériques.

La commande x=0:1:2*pi crée une liste (aussi appel´ee vecteur-ligne) de nombres, 0 1 2 3 4 5 6. sin(x) designe la liste sin(0) sin(1) sin(2) sin(3) sin(4) sin(5) sin(6). Autrement dit, la fonction sin est appliquée a chaque terme de la liste x. plot(x,sin(x)) trace une ligne bris´ee reliant successivement les points (0,sin(0)), (1,sin(1)),…, (6,sin(6)). Noter que Matlab ne fera aucune diff´erence entre une courbe representative de fonction et une courbe param´etr´ee.

Piège

Pourquoi l’instruction
x=0:1:2*pi; y=x*sin(x)
provoque-t-elle une erreur ? Parce que, pour Matlab, les vecteurs-lignes sont des cas particuliers de matrices, que les matrices ont une fa¸con bien particuli`ere de se multiplier entre elles, qui diff`ere de la multiplication terme `a terme (voir au paragraphe 4.3). Au lieu de y=x*sin(x), il faut ´ecrire y=x.*sin(x). . De mˆeme, au lieu de y=sin(x)/x, il faut ´ecrire y=sin(x)./x, et au lieu de y=2^x, il faut ´ecrire y=2.^x, lorsque x est un vecteur-ligne. Cette erreur est tr`es fr´equente.

Principe de la commande plot

– Tracé d’une ligne brisée Il s’agit plus exactement de tracés de lignes brisées. Si x,y sont deux vecteurs-lignes (ou deux vecteurs-colonnes) de mˆeme taille n, la commande plot(x,y) r´ealise le tracé de la ligne brisée qui relie les points de coordonnées (x(j),y(j)) pour j = 1,…,n dans une fenêtre graphique séparée. On peut choisir la couleur et le type du trait (trait plein, tirets, pointill´es ou points isolés) et placer des marqueurs (cercles, croix, triangles, etc.) aux sommets de la ligne brisée (pour lister les possibilit´es, faire help plot).
Exemple : Pour tracer en rouge le graphe d’une fonction f d´efinie dans un fichier f.m (voir au paragraphe 6), il suffit en g´en´eral (pour des fonctions “lisses”) de 50 `a 100 points d’abscisses ´equir´eparties pour un rendu satisfaisant. x=-1+2*[0:100]/100; plot(x,f(x),’r’) Les ’ ’ sont l`a pour que la lettre r soit interpr´et´ee comme une chaîne de caract`eres (en l’occurrence, la lettre r toute seule), et non comme une instruction. – Tracé de plusieurs lignes bris´ees Chaque nouvelle commande plot ouvre a priori un nouvel espace graphique dans la fenˆetre graphique et efface donc le pr´ec´edent trac´e. Pour tracer plusieurs lignes bris´ees dans un mˆeme espace, on dispose de 2 possibilit´es. – 1) les lignes bris´ees sont trac´ees simultan´ement : par exemple plot(x,f(x),’ro’, x,5*sin(x),’k–’, x,0*x,’b’) trace la ligne bris´ee d´efinie par x et 0 ∗ x en trait plein bleu, celle d´efinie par x et 5 ∗ sin(x) en pointill´es noirs et trace seulement un cercle rouge `a l’emplacement des points d´efinis par x et f(x). – 2) les lignes bris´ees sont tracées successivement en maintenant le tracé précédent, pour cela on dispose de la commande hold on qui permet de conserver le trac´e tant que hold off ou clf n’est pas appel´ee. Reprenons l’exemple pr´ec´edent plot(x,f(x),’ro’) hold on plot(x,5*sin(x),’k–’) plot(x,0*x,’b’) hold off
Les fenˆetres graphiques sont appel´ees Figure No 1 (fenˆetre par d´efaut), Figure No 2, etc. La commande figure(n) permet d’ouvrir (ou de pr´eciser si elle est d´ej`a ouverte)
la fenêtre graphique Figure No n dans laquelle on souhaite travailler.
La commande subplot permet d’ouvrir plusieurs espaces graphiques dans une même fenêtre.
– Options Les commandes title , gtext , legend , xlabel permettent de documenter les trac´es (pour afficher les r`egles d’emploi de ces options, faire help title, help gtext, etc).
La commande axis s’emploie apr`es la commande plot pour recadrer le trac´e. En particulier, la commande axis equal retrace la figure en axes orthonorm´es et la commande axis([xmin xmax ymin ymax]) reconstruit la partie du graphique limit´ee au rectangle [xmin, xmax]×[ymin, ymax].
Signalons que Matlab dispose d’autres commandes de trac´e, par exemple loglog, semilogx, semilogy, polar, plot3d,…

Affichage des nombres

Matlab offre au moins quatre types d’affichage (court ou long, scientifique ou non) que l’on s´electionne avec les commandes – format short (qui est le format par d´efaut) – format short e – format long – format long e Pour le nombre x = 1/700, ces formats donnent respectivement les affichages 0.0014 1.4286e-03 0.00142857142857 1.428571428571429e-03 mais (heureusement!) le changement de format n’affecte pas la valeur de x. Le format s´electionn´e reste actif jusqu’au lancement d’une nouvelle commande format.
Remarque : Pour présenter des tableaux de valeurs numériques, on préfère généralement definir des formats ad hoc et on utilise alors la commande fprintf avec une description du format d’affichage inspir´ee du langage C.

Nombres complexes

Les variables i et j d´esignent le nombre complexe√−1 sauf si d’autres valeurs num´eriques leur ont ´et´e affect´ees par l’utilisateur (on ´evitera donc dans ce cas d’utiliser i ou j comme indice de boucle).
Exemples :
z1=1+2i z2=(1+sqrt(3)*j)/2
Fonctions complexes : real, imag, conj, abs, angle.

Les matrices

Pour Matlab, tout est matrice. Une matrice A, c’est un tableau rectangulaire de valeurs numériques, appelés les éléments de la matrice, et rep´er´es par leur position : A(i,j) est l’´el´ement situ´e sur la i-`eme ligne et la j-`eme colonne. On parle de vecteurs-ligne pour d´esigner les matrices `a une seule ligne, et de vecteurs-colonne pour d´esigner les matrices `a une seule colonne.
Construction
– Vecteurs-lignes `a coefficients r´eguli`erement espac´es : On a d´ej`a rencontr´e la syntaxe commode u=debut :pas :fin ou u=[debut :pas :fin] et plus simplement v=debut :fin ou v=[debut :fin] lorsque pas vaut 1.
Exemples : u=-10 :4 :2 ´equivaut `a u=[10 -6 -2 2] v=2 :5 ´equivaut `a v=2 :1 :5 c’est-`a-dire `a v=[2 3 4 5] w=5 :2 ´equivaut `a w=5 :1 :2 c’est-`a-dire `a w=[]
– In extenso `a la main : On peut aussi rentrer les coefficients un par un. – Vecteur-ligne (matrice `a 1 seule ligne) : u=[10 -7 3 8] ou bien u=[10,-7,3,8] – Vecteur-colonne (matrice `a 1 seule colonne) : v=[2;0;-5] ou bien v=[2 0 5]0 – Tableau `a 2 indices : A=[10 7; 2 4; -5 0] ou encore, terme `a terme A(1,1)=10; A(1,2)=7; A(2,1)=2; A(2,2)=4; A(3,1)=-5; A(1,1)=10; A(1,2)=7; A(2,1)=2; A(2,2)=4; A(3,1)=-5;
Remarque : Si A est une matrice (`a coefficients complexes), alors A0 d´esigne sa transconjugu´ee et A.0 sa transpos´ee. Les deux co¨ıncident si A est `a coefficients r´eels.
Remarque : Si on omet de donner une valeur `a certains coefficients d’une matrice que l’on cr´ee (ou que l’on compl`ete), alors Matlab leur affecte la valeur 0.
– Formes pr´ed´efinies : Matlab dispose de fonctions d´efinissant des matrices comme eye, ones, zeros, rand, magic, hilb…
Par exemple eye(3) est la matrice identit´e d’ordre 3, zeros(2,4) est la matrice nulle `a deux lignes et 4 colonnes, ones (1,5) est le vecteur ligne [1 1 1 1 1]. Attendu que si A est un tableau `a deux indices, l’instruction [nl,nc]=size(A) affecte a la variable nl (resp. nc) le nombre de lignes (resp. de colonnes) de A, l’instruction B=rand(size(A)) crée une matrice B de même dimensions que A et `a coefficients aléatoires dans [0,1].

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *