Aller au contenu

Découvrir Matlab/Version imprimable

Un livre de Wikilivres.

Ceci est la version imprimable de Découvrir Matlab.
  • Si vous imprimez cette page, choisissez « Aperçu avant impression » dans votre navigateur, ou cliquez sur le lien Version imprimable dans la boîte à outils, vous verrez cette page sans ce message, ni éléments de navigation sur la gauche ou en haut.
  • Cliquez sur Rafraîchir cette page pour obtenir la dernière version du wikilivre.
  • Pour plus d'informations sur les version imprimables, y compris la manière d'obtenir une version PDF, vous pouvez lire l'article Versions imprimables.


Découvrir Matlab

Une version à jour et éditable de ce livre est disponible sur Wikilivres,
une bibliothèque de livres pédagogiques, à l'URL :
https://fr.wikibooks.org/wiki/D%C3%A9couvrir_Matlab

Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la Licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans Texte de dernière page de couverture. Une copie de cette licence est incluse dans l'annexe nommée « Licence de documentation libre GNU ».

Interface

Table des matièresIndex



1. Interface utilisateur


Saisie des commandes et affichage numérique

[modifier | modifier le wikicode]

Matlab est un logiciel qui s'utilise en ligne de commande. L'écran comprend d'une zone de saisie dans laquelle on va taper des commandes.

L’invite de la ligne de commande (prompt) est constitué d’un double chevron « flèche » : deux tirets et un signe supérieur >>. L’instruction est tapée puis validée avec la touche de retour chariot ([↵], [Enter] ou [Return]). Le résultat est affiché à la suite, sauf si la ligne se termine par un point-virgule auquel cas le résultat est caché.

Par exemple 
  • sans point-virgule
>> a=1[↵]
 a  =

    1.

>> A=2[↵]
 A  =

    2.

>> a+A[↵]
ans  =

   3.
  • avec points-virgules
>> a=1;[↵]

>> A=2;[↵]

>> a+A[↵]
ans  =

   3.

Lorsque l'on écrit une ligne, on peut utiliser les touches classiques d'édition (variable selon le système et le type du clavier) :

  • [→] : avancer d'une lettre ;
  • [←] : reculer d'une lettre ;
  • touches de suppression ([Del], [Suppr], []) ;
  • touche de retour chariot [↵], [Enter] ou [Return] : validation et exécution de la commande ;
  • [↑] et [↓] : permettent de faire défiler les commandes tapées précédemment (historique des commandes).

L'endroit où se place le caractère (lettre, chiffre, signe…) tapé est signalé par le curseur, un trait de soulignement clignotant (Windows XP). L'édition se fait en insertion, c'est-à-dire que si le curseur est au milieu d'une ligne, les caractères suivants sont décalés d'une position à droite lorsque l'on entre un caractère.

On peut, si on le désire, fractionner l'édition sur plusieurs ligne. Pour cela, il faut terminer la ligne par trois points « ... ».

Exemple
>> a=...[↵]
>> 5[↵]
 a  =

    5.

Ceci est bien sûr plutôt intéressant lorsque la ligne à taper est longue.

À l'inverse, on peut mettre plusieurs instructions sur un même ligne en les séparant d'une virgule, ou bien d'un point-virgule si l'on ne veut pas que le résultat soit affiché.


Note
Par la suite, le retour chariot [↵] sera omis, un retour à la ligne après une ligne commençant par l'invite --> l'indiquera implicitement.

Chaînes de caractère

[modifier | modifier le wikicode]

Par défaut, une suite de caractères est interprété comme une commande ou comme une variable. Pour indiquer que c'est une chaîne de caractères, il faut la mettre entre apostrophes « ' » (quote).

Lorsque la chaîne doit contenir une apostrophe, on redouble l'apostrophe. De même, lorsque la chaîne doit contenir des guillemets, on redouble ces guillemets.

Exemple
>> l'amertume de la "bière"
??? l'amertume de la "bière"
      |
Error: Unexpected MATLAB expression. 

>> 'l''amertume de la "bière"'
ans  =

l'amertume de la "bière"

Les chaînes de caractères sont utilisées pour définir certains paramètres de fonctions, ou bien pour afficher des étiquettes et légendes sur les graphiques.

Affichage graphique

[modifier | modifier le wikicode]

L'affichage graphique (tracé d'une courbe, dessin…) se fait dans une fenêtre dédiée que nous appelerons « fenêtre graphique ». Cette fenêtre s'affiche automatiquement dès la première instruction graphique. Par exemple, taper clf puis valider : cela affiche une fenêtre graphique vide.

Matlab dispose d'une aide en ligne. Pour cela, taper help.

Cela affiche une liste de thèmes suivi de la liste de scommandes. Il suffit de cliquer dessus pour que le contenu de l'aide s'affiche dans la fenêtre de commande.

Lorsque l'on clique sur le bouton Help (?), cela affiche un navigateur d'aide qui s'utilise comme un navigateur Internet.

À gauche de l'invite de commande >>, un bouton Browse for functions [fx] permet d'avoir la description des fonctions.

Fermer le programme

[modifier | modifier le wikicode]

Matlab peut être fermé de la manière habituelle selon les systèmes d'exploitation : en général bouton en forme de croix ou menu File | Exit MATLAB. On peut aussi

  • taper exit en ligne de commande ;
  • lorsque l'on est dans l'environnement initial, on peut également taper quit (voir aussi Environnement).



Introduction < > Calculs élémentaires


Calculs élémentaires

Table des matièresIndex



2. Calculs élémentaires


Matlab peut s'utiliser comme une calculatrice scientifique, de type calculatrice graphique. Il suffit de taper une formule dans une syntaxe relativement standard, et d'appuyer sur le retour chariot pour avoir le résultat.

Opérateurs et fonctions classiques

[modifier | modifier le wikicode]

Matlab utilise les fonctions et opérateurs classiques :

  • + (addition), - (soustraction), * (produit), / (division), ^ ou ** (élévation à une puissance),
  • sqrt() (racine carrée),
  • cos(), sin(), tan() pour les fonctions trigonométriques de base, acos(), asin(), atan() pour leurs réciproques, cotg() pour la cotangente ;
  • les fonctions trigonométriques hyperboliques cosh(), sinh(), tanh(), acosh(), asinh(), atanh()
  • log() pour le logarithme népérien (ln), log10() pour le logarithme en base 10 (log10), log2() pour le logarithme en base 2 (log2),
  • exp() pour la fonction exponentielle,
  • floor() pour la partie entière (arrondi vers -∞), ceil() pour l'arrondi au supérieur (arrondi vers +∞), fix() pour la troncature (arrondit à l'entier vers 0, différent de floor pour les nombres négatifs), round() pour l’arrondi au plus proche (0,5 → 1), abs() pour la valeur absolue,
  • erf() pour la fonction d'erreur de Gauss,
  • rand pour avoir un nombre aléatoire entre 0 et 1, suivant une loi uniforme ; randn pour avoir un nombre aléatoire suivant une loi normale centrée réduite (moyenne 0, variance 1) ;
  • la factorielle de n peut s'obtenir par prod(1:n) ou bien par gamma(n+1) ;

Le séparateur décimal est le point.

Les puissances de 10 se notent avec la lettre « e » en minuscule ou en capitale : 5,2·103 s'écrit 5.2e3 ou 5.2E3, 5,2·10-3 s'écrit 5.2e-3 ou 5.2E-3. On peut aussi utiliser le « d » minuscule ou capital.

Par défaut, Matlab affiche les résultats avec quatre décimales. On peut modifier le nombre de caractères avec la fonction format :

  • format short : valeur par défaut, notation fixe à 4 décimales ;
  • format long : notation fixe à 7 décimales pour un réel simple, 14 ou 15 décimales pour un réel double ;
  • format short e, format long e : notation scientifique exponentielle à virgule flottante ;
  • format short g, format long g : choisit « le mieux » entre notation fixe et notation exponantielle à virgule flottante ;
  • format short eng, format long eng : notation ingénieur exponentielle (puissances de 10 multiples de 3) ;


Mentionnons également la fonction clear qui permet d'effacer toutes les variables (dont les fonctions définies par l'utilisateur). Cela peut être utile lorsque l'on a procédé par essai-erreur et que l'on veut remettre les « compteurs à zéro ».


Vocabulaire
Dans Matlab, une « fonction interne[1] » est une fonction prédéfinie. Par opposition, les fonctions définies par l'utilisateur sont appelées « fonctions extérieures ».

Constantes particulières

[modifier | modifier le wikicode]

Pour entrer l’imaginaire i, il faut utiliser i ou j ; il figure simplement sous la forme « 0 + 1.0000i » dans les résultats.

Pour entrer l’infini ∞, il faut utiliser Inf ; il figure simplement sous la forme « Inf » dans les résultats.

La valeur de π s’obtient par pi.

Lorsqu'une opération invalide se produit, certains programmes retournent un nombre particulier appelé « NaN » pour not a number (littéralement « ceci n'est pas un nombre »)[2]. Dans Matlab, cette valeur est obtenue par nan et s'affiche sous la forme NaN.

On peut définir des variables simplement sous la forme NomVariable=valeur. NomVariable est une chaîne de caractères commençant par une lettre ; Matlab est sensible à la casse, c'est-à-dire que les variables « a » et « A » sont deux variables différentes. Le type de la variable (entier, réel, imaginaire) est géré automatiquement.

La variable ans contient le dernier résultat (pour answer, « réponse » en anglais).

La fonction who affiche les variables déclarées (who? signifie « qui ? » en anglais).

Exemple 1
>> asin(sqrt(2)/2)
 ans  =

    0.7854

>> ans/pi*180
 ans  =

    45.0000
(puisque sin(45°) = √2/2)
Exemple 2
>> exp(i*pi/2)
 ans  =

    0.0000 + 1.0000i
Exemple 3
calcul de la pression, en Pa, de 2,5 moles de gaz parfait dans un volume de un litre (10-3 m3) à une température de 300 K (26,85 °C)
>>n=2.5;R=8.314472;T=300;V=1e-3;

>> n*R*T/V
 ans  =

    6235854
soit environ 6,2·106 Pa.

Lorsque l’on assigne une valeur booléenne, on utilise true pour « vrai » et false pour « faux ». Le résultat de l’opération affiché est respectivement 1 ou 0.

L’opérateur ou est noté « | » (tube), et est noté « & » (esperluette), non est noté « ~ » (tilde).

Exemple
>> (true & false) | false
ans =
     0

On peut aussi utiliser les fonctions or(A,B), and(A,B) et not(A), par exemple

>> or(and(true,false),false)
ans =
     0

Un booléen peut également s’obtenir en comparant deux valeurs, avec les relations d’égalité == et de différence ~= ou ~=, et les relations d'ordre <, <=, > et >=.

Exemple
>> a=3
 a  =

    3.

>> a==3
 ans  =

  1

>> a<2
 ans  =

  0

Polynômes et fractions rationnelles

[modifier | modifier le wikicode]

Matlab manipule les polynômes et fractions rationnelles formels, c'est-à-dire non pas en tant que fonction, mais en tant qu'objets mathématiques, éléments du corps des polynômes ou des fractions rationnelles.

Pour Matlab, un polynôme est simplement un vecteur contenant les coefficients par ordre de puissance décroissant ; ce sont les fonctions utilisées qui sont spécifiques.

Exemple de définition de polynôme
>> p = [1 2 1]
 p  =

     1   2  3

pour le polynôme p(x ) = 1·x2 + 2·x + 3.

Il n'y a pas de manière spécifique de représenter une fraction rationnelle. Lorsqu'une fonction manipule la fraction rationnelle p/q, elle s'applique sur la paire de vecteurs (p,q).

Fonctions spécifiques aux polynômes

[modifier | modifier le wikicode]

La fonction polyval(p,a) donne la valeur de p(a )

Exemple
>> p=[1 2 1];
>> polyval(p,5)

ans =

    36

car 1·52 + 2·5 + 1 = 36.

La fonction poly([a b c]) crée un polynôme dont les racines sont a, b et c.

Exemple
>> poly(0)

ans =

     1     0

c'est-à-dire le polynôme (x - 0) = 1·x + 0.

>> poly([1 2])

ans =

     1    -3     2

c'est-à-dire le polynôme (x - 1)·(x - 2) = 1·x2 - 3·x + 2.

La fonction roots(p) donne les racines du polynôme p.

Exemple
>> p=[1 5 6 4];
>> roots(p)

ans =

  -3.6590          
  -0.6705 + 0.8023i
  -0.6705 - 0.8023i

car 1·x3 + 5·x2 + 6·x + 4 ≈ (x - 3,6590)·(x - 0,6705 + 0,8023i )·(x - 0,6705 - 0,8023i ).

La multiplication formelle de deux polynômes se fait en utilisant la fonctiond econvolution, conv.

Exemple
>> p=[1 1];
>> q=[1 -1];
>> conv(p,q)

ans =

     1     0    -1

car (x + 1)·(x - 1) = 1·x2 + 0·x - 1.

La fonction polyder(p) fait la dérivation formelle du polynôme ; polyder(p,q) fait la dérivée de p×q.

Exemple
>> p=[1 2 1];
>> polyder(p)

ans =

     2     2

car (1·x2 + 2·x + 1)' = 2·x + 2.

Fonctions spécifiques aux fractions rationnelles

[modifier | modifier le wikicode]

La fonction de déconvolution, deconv, fait la division euclidienne formelle de deux polynômes sous la forme d'un polynôme quotient et d'un polynôme reste.

Exemples
>> p1=[1 1 ];
>> p2=[1 -1];
>> [q,r]=deconv(p1,p2)

q =

     1


r =

     0     2

car (x + 1) = (1)×(x - 1) + (2).

>> p1=[1 1 1];
>> [q,r]=deconv(p1,p2)

q =

     1     2


r =

     0     0     3

car 1·x2 + 1·x + 1 = (x + 2)×(x - 1) + (0·x2 + 0·x + 3).

La fonction residue fait la décomposition en éléments simples d'une fraction rationnelle, sous la forme

,

avec

  • ri : résidu ;
  • pi : pôle ;
  • k : terme direct (polynôme).

Par exemple :

>> p=1;
>> q=[1 0 -1];
>> [r,p,k] = residue(p,q)

r =

   -0.5000
    0.5000


p =

    -1
     1


k =

     []

car .

La fonction polyder fait également la dérivation formelle de fractions rationnelles, à condition qu'on lui assigne un « vecteur de vecteur ».

Exemple
>> p1=[1 1 1];
>> p2=[1 -1];
>> [p,q]=polyder(p1,p2)

p =

     1    -2    -2


q =

     1    -2     1

car .

Chaînes de caractère

[modifier | modifier le wikicode]

Pour Matlab, un caractère est un nombre, le code Unicode du caractère. Une chaîne de caractères est un vecteur ligne contenant les code Unicode. Par exemple :

>> 'a'+'b'

ans =

   195

Ici, Matlab fait la somme des codes du a et du b, respectivement 97 et 98.

La fonction unit8 donne le code Unicode du caractère, ou des caractères de la chaîne.

Exemple
>> uint8('a')

ans =

   97
>> a='hello';
>> uint8(a)

ans =

  104  101  108  108  111

La fonction char permet à l'inverse de transformer un entier en un caractère, ou un vecteur ligne en une chaîne de caractères.

Exemple
>> a=[97 98];
>> char(a)

ans =

ab

La concaténation de deux chaînes de caractère se fait simplement en metant les deux chaînes dans un vecteur ligne :

>> a='hello';
>> [a, ' world']

ans =

hello world

On peut aussi utiliser la fonction strcat(a,' world').

La fonction eval() permet de transformer une chaîne en une expression Matlab (on parle « d'évaluation de la chaîne ») et de l'exécuter.

Exemple
>> a='1';
>> eval(a)*2
 ans  =

    2.

>> b='x';c='=5';eval([b c])

x =

     5
>> x^2
 ans  =

    25.
la chaîne [b c] est 'x=5', cette chaîne est exécutée, ce qui signifie que la valeur 5 est attribuée à la variable x, ce que confirme le calcul fait par la suite.

La fonction char permet à l'inverse de transformer un entier en un caractère, ou un vecteur ligne en une chaîne de caractères.

Exemple
>> a = [49 50];
>> char(a)
 ans  =

 12

Ceci est utile pour « fabriquer » des chaînes de caractère.

Matlab a été conçu pour le calcul matriciel. Les éléments des matrices peuvent être de tout type (nombre réel, nombre complexe, booléen, polynôme, fraction rationnelle, chaîne de caractères…).

Définir une matrice

[modifier | modifier le wikicode]

Pour définir une matrice à partir de ses coefficients, on les place entre deux crochets […]. Les éléments d’une ligne sont séparés d’un espace ou d’une virgule, les lignes sont séparées d’un point-virgule. À l’affichage, la matrice est représentée comme un tableau encadré par des points d’exclamation.

Exemple
>> [1,0,0;0,1,0;0,0,1]

ans =

     1     0     0
     0     1     0
     0     0     1

La matrice vide est notée par [].

L’expression M(i,j) désigne l’élément (i, j) de la matrice M.

Le caractère : (deux-points) signifie « tous les indices », par exemple M(1, :) est la première ligne de la matrice (c’est un vecteur ligne).

L’expression N1:N2 permet de générer une matrice-ligne dont le premier coefficient est N1, le dernier est inférieur ou égal à N2, et le pas entre les coefficients est 1. L’expression N1:pas:N2 permet de générer une matrice-ligne en choisissant le pas. Par exemple

>> 1.1:5.2
ans =

    1.1000    2.1000    3.1000    4.1000    5.1000  
>> 1:2:5

ans =

     1     3     5
>>'a':'d'
ans =

abcd

On peut aussi utiliser la fonction

linspace(x1, x2, n)

pour générer une matrice ligne de n valeurs espacées régulièrement entre x1 et x2.

La fonction zeros(m,n) crée une matrice m×n remplie de 0 ; la fonction ones(m,n) crée une matrice m×n remplie de 1. La fonction eye(n,n) crée une matrice unité n×n.

Fonctions et opérateurs sur les matrices

[modifier | modifier le wikicode]

Toutes les fonctions numériques s’appliquent à des matrices ; par exemple si M est une matrice, alors cos(M) sera la matrice dont les coefficients sont les cosinus des coefficients de M.

La fonction size(M) renvoie la taille de la matrice sous la forme d’une matrice 1×2 contenant le nombre de lignes puis le nombre de colonnes.

Les opérations spécifiques aux matrices classiques sont :

  • la transposition : il suffit de mettre une apostrophe après la matrice ;
  • le produit de matrices : * ;
  • produit et rapport élément par élément : .* et ./ ;
  • le produit tensoriel de Kronecker kron() ;
  • le déterminant d’une matrice carrée M : det(M) ;
  • la trace d’une matrice carrée M : trace(M) ;
  • l’inverse d’une matrice inversible M : inv(M) ;
  • la somme des éléments de la matrice colonne par colonne : sum(M) (donne un vecteur ligne) ; sum(sum(M)) donne la somme de tous les éléments de M ;
  • le produit des éléments de la matrice colonne par colonne  : prod(M) (donne un vecteur ligne) ; prod(prod(M)) donne la somme de tous les éléments de M.

La fonction max(M) renvoie la plus grand élément de chaque colonne de la matrice, et la fonction min(M) renvoie le plus petit. Les commandes max(max(M)) et min(min(M)) renvoient respectivement l eplus grand et le plus petit élément de la matrice.

Si l'on tape [m,k]=max(A), alors Matlab met les valeurs des maxima des colonnes dans le vecteur variable m, et l'indice de leur ligne dans la variable k — on peut utiliser d'autres noms de variable que m et k. De même pour [m,k]=min(A).

Un vecteur est une matrice ligne ou colonne (matrice 1 × n ou n × 1) ; l’expression V(i) désigne la composante i du vecteur V.

Si l'on veut avoir la taille d'un vecteur v (ligne ou colonne) sous la forme d'un entier, on peut utiliser

max(size(v)) ou bien size(v,'*')

Si V1 et V2 sont des vecteurs colonnes, alors le produit scalaire est

V1' * V2 ;

si ce sont des vecteurs lignes, le produit scalaire est

V1 * V2'.

Importance des matrices dans Matlab

[modifier | modifier le wikicode]

Les matrices sont très utilisées dans Matlab pour définir les paramètres. Ainsi, pour tracer une courbe, il utilise un nuage de point sous forme de matrice, ou encore, pour effectuer une boucle itérative, il prend les indices dans une matrice ligne ou colonne.

La syntaxe propre aux matrices va donc se retrouver dans de nombreux endroits.

Dans Wikipédia
  1. la documentation utilise le terme de « primitive » ; il y a une ambiguité en français que nous avons décidé de lever dans le présent ouvrage en changeant le terme (en anglais, le problème ne se pose pas puisque la primitive d'une fonction est appelée « antiderivative »)
  2. dans la représentation des nombres à virgule flottante IEEE 754, un NaN est un nombre dont l'exposant ne contient que des 1 et la mantisse n'est pas nulle

Interface < > Calcul numérique

GFDL GFDL Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la licence de documentation libre GNU, version 1.2 ou plus récente publiée par la Free Software Foundation ; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture.