# Découvrir Matlab/Calculs élémentaires

Table des matières — Index
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

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 (log$_{10}$), log2 pour le logarithme en base 2 (log$_2$),
* 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·10$^3$ 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 » est une fonction prédéfinie. Par opposition, les fonctions définies par l'utilisateur sont appelées « fonctions extérieures ».

## Constantes particulières

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 »). Dans Matlab, cette valeur est obtenue par nan et s'affiche sous la forme NaN.

## Variables

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).

## Exemples
### Exemple 1

    (puisque sin(45°) = √2/2)

### Exemple 3

    calcul de la pression, en Pa, de 2,5 moles de gaz parfait dans un volume de un litre (10$^{-3}$ m$^3$) à une température de 300 K (26,85 °C)
    soit environ 6,2·10$^6$ Pa.

## Booléens

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

On peut aussi utiliser les fonctions or(A,B), and(A,B) et not(A), par exemple
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
## Polynômes et fractions rationnelles

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

pour le polynôme p(x ) = 1·x$^2$ + 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

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

#### Exemple

car 1·5$^2$ + 2·5 + 1 = 36.
La fonction poly([a b c]) crée un polynôme dont les racines sont a, b et c.

#### Exemple

c'est-à-dire le polynôme (x - 0) = 1·x + 0.
c'est-à-dire le polynôme (x - 1)·(x - 2) = 1·x$^2$ - 3·x + 2.
La fonction roots(p) donne les racines du polynôme p.

#### Exemple

car 1·x$^3$ + 5·x$^2$ + 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

car (x + 1)·(x - 1) = 1·x$^2$ + 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

car (1·x$^2$ + 2·x + 1)' = 2·x + 2.

### Fonctions spécifiques aux fractions rationnelles

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

car (x + 1) = (1)×(x - 1) + (2).
car 1·x$^2$ + 1·x + 1 = (x + 2)×(x - 1) + (0·x$^2$ + 0·x + 3).
La fonction residue fait la décomposition en éléments simples d'une fraction rationnelle, sous la forme
    ${\frac {p}{q}}={\frac {r_{1}}{x-p_{1}}}+{\frac {r_{2}}{x-p_{2}}}+\dots +{\frac {r_{n}}{x-p_{n}}}+k$,
avec
* r$_i$ : résidu ;
* p$_i$ : pôle ;
* k : terme direct (polynôme).
Par exemple :
car ${\frac {1}{x^{2}-1}}=-{\frac {1/2}{x+1}}+{\frac {1/2}{x-1}}={\frac {-0,5}{x-(-1)}}+{\frac {0,5}{x-1}}$.
La fonction polyder fait également la dérivation formelle de fractions rationnelles, à condition qu'on lui assigne un « vecteur de vecteur ».

#### Exemple

car $\left({\frac {x^{2}+x+1}{x-1}}\right)'={\frac {x^{2}-2x-2}{x^{2}-2x+1}}$.

## Chaînes de caractère

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 :
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

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

La concaténation de deux chaînes de caractère se fait simplement en metant les deux chaînes dans un vecteur ligne :
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

    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

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

## Matrices

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

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

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
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

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).

### Vecteur

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

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.

## Voir aussi
### Dans Wikipédia

* Algèbre booléenne
** Opérateur logique
* American Standard Code for Information Interchange (ASCII)
* Concaténation
* Fraction rationnelle
* IEEE 754
* Matrice
** Calcul matriciel
** Déterminant
** Matrice inversible
** Matrice unité
** Produit tensoriel
** Trace
* NaN
* Polynôme
** Fonction polynôme
* Relation d'ordre
* Vecteur
** Produit scalaire
** Vecteur colonne
** Vecteur ligne

## Notes

* ↑ 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 »)
* ↑ 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