Aller au contenu

Découvrir Matlab/Calculs élémentaires

Un livre de Wikilivres.

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