Les nombres

Informatique — MATLAB, chapitre 1

Sous chaque bloc, deux boutons. MATLAB Online ouvre le script dans MATLAB, depuis votre navigateur, avec un compte MathWorks gratuit. Octave Online fait de même dans GNU Octave, le clone libre de MATLAB, sans aucun compte. Copier place le code dans votre presse-papiers.

Le résultat attendu est écrit sous chaque commande. Recopiez, exécutez, comparez.

1.1 Ranger un nombre dans une variable

1.1.1 Le principe

Une variable est un nom qui retient une valeur.

x = 5
x = 5

MATLAB range 5 dans x et affiche aussitôt ce qu’il a retenu. Le nom x désigne désormais la valeur 5 : partout où vous écrirez x, MATLAB lira 5.

1.1.2 Les règles à respecter

Un nom de variable ne contient que des lettres sans accent, des chiffres et le tiret bas _.

Il ne peut pas commencer par un chiffre.

2x = 5
parse error:
  syntax error
>>> 2x = 5
      ^

Écrivez x2 plutôt que 2x.

Il ne peut pas contenir d’espace.

x y = 5
error: 'x' undefined

MATLAB a cru voir deux noms. Écrivez xy, ou x_y.

1.1.3 Majuscules et minuscules

MATLAB distingue les deux. x et X sont deux variables différentes.

x = 5
X
x = 5
error: 'X' undefined

X n’existe pas : seul x a été défini. C’est une source d’erreurs constante au début.

1.1.4 Empêcher l’affichage

Un point-virgule en fin de ligne effectue le calcul sans rien afficher.

a = -1
b = 3;
a
a = -1
a = -1

b = 3; a bien rangé 3 dans b, mais sans l’annoncer. Indispensable dès qu’on manipule de grands tableaux : sans point-virgule, des milliers de lignes défileraient à l’écran.

1.2 Les quatre opérations

On reprend a = -1 et b = 3.

a = -1;
b = 3;

s = a + b        % addition
d = a - b        % soustraction
m = a * b        % multiplication
r = a / b        % division
s = 2
d = -4
m = -3
r = -0.33333

Le symbole % ouvre un commentaire : MATLAB ignore tout ce qui le suit sur la ligne. Il sert à s’expliquer à soi-même ce que fait le code.

AvertissementLa division par zéro n’est pas une erreur
t = a / 0
warning: division by zero
t = -Inf

MATLAB ne s’arrête pas : il prévient, puis répond -Inf, l’infini négatif. Le calcul continue avec cette valeur, ce qui peut fausser tout ce qui suit sans que rien ne le signale. Méfiez-vous des avertissements.

1.3 Puissances, racines, valeur absolue

1.3.1 Les puissances

L’accent circonflexe ^ élève à la puissance.

a = -1;
b = 3;

a2 = a^2         % a au carre
a3 = a^3         % a au cube
ab = a^b         % a puissance b
a2 = 1
a3 = -1
ab = -1

1.3.2 Les racines

sqrt donne la racine carrée. Pour les autres racines, on utilise une puissance fractionnaire : la racine cubique est la puissance 1/3.

b = 3;

rcb = sqrt(b)        % racine carree de b
rqb = b^(1/3)        % racine cubique de b
rcb = 1.7321
rqb = 1.4422
NoteLa racine d’un nombre négatif
a = -1;
rca = sqrt(a)
rca = 0 + 1i

MATLAB ne proteste pas : il répond par un nombre complexe. Le i désigne la racine carrée de -1. Si vous voyez un i apparaître dans un résultat, c’est que votre calcul est passé par un nombre négatif sous une racine — souvent sans que vous l’ayez voulu.

1.3.3 La valeur absolue

abs supprime le signe.

abs(-1)
ans = 1
AstuceQue veut dire ans ?

Quand vous ne rangez pas le résultat dans une variable, MATLAB le met dans ans — abréviation d’answer. Cette variable est écrasée à chaque calcul : n’y comptez pas pour conserver quoi que ce soit.

1.4 Exponentielle et logarithmes

b = 3;

exp(b)           % exponentielle
log(b)           % logarithme naturel (base e)
log10(b)         % logarithme decimal (base 10)
log2(b)          % logarithme binaire (base 2)
ans = 20.086
ans = 1.0986
ans = 0.47712
ans = 1.5850
Avertissementlog n’est pas le logarithme décimal

En MATLAB comme dans presque tous les langages, log désigne le logarithme naturel, de base e. Le logarithme décimal, celui des tables et des calculatrices de lycée, s’écrit log10.

Confondre les deux est une erreur classique, et elle passe inaperçue : les deux fonctions renvoient un nombre parfaitement plausible.

1.5 Trigonométrie

Les angles s’expriment en radians, jamais en degrés.

x = 1;

sin(x)           % sinus
cos(x)           % cosinus
tan(x)           % tangente
cot(x)           % cotangente
ans = 0.84147
ans = 0.54030
ans = 1.5574
ans = 0.64209

Pour convertir des degrés en radians, multipliez par \pi/180. MATLAB propose aussi sind, cosd et tand, qui acceptent directement les degrés.

1.6 Les constantes

Deux constantes sont prédéfinies.

pi               % rapport de la circonference au diametre
e                % base du logarithme naturel
ans = 3.1416
ans = 2.7183
AvertissementNe les écrasez jamais

pi et e sont des noms comme les autres : rien n’empêche d’écrire pi = 4. MATLAB obéira, et tous vos calculs suivants seront faux, sans le moindre avertissement.

Évitez donc e comme nom de variable — c’est un réflexe tentant, et un piège.

1.7 Affichage et précision

MATLAB affiche cinq chiffres significatifs par défaut. Il en calcule bien davantage.

format short
pi

format long
pi

format short    % on revient a l'affichage normal
ans = 3.1416
ans = 3.14159265358979

format long ne change que l’affichage : la précision interne du calcul reste la même dans les deux cas.

À vous

Rangez 7 dans u et 2 dans v, puis calculez leur somme, leur quotient, u puissance v, et la racine carrée de u.

u = 7;
v = 2;

% a completer
somme    = u + v
quotient = u / v
puiss    = u^v
racine   = sqrt(u)
somme = 9
quotient = 3.5000
puiss = 49
racine = 2.6458

Ce qu’il faut retenir

Écriture Effet
x = 5 ranger 5 dans x
; en fin de ligne calculer sans afficher
% commentaire, ignoré par MATLAB
+ - * / les quatre opérations
^ puissance
sqrt(x), abs(x) racine carrée, valeur absolue
exp(x), log(x), log10(x) exponentielle, logarithme naturel, décimal
sin, cos, tan trigonométrie, en radians
pi, e constantes prédéfinies
ans dernier résultat non rangé

Le chapitre suivant passe du nombre isolé à la matrice. C’est le cœur du logiciel : son nom vient de MATrix LABoratory.