3.1415926535897 | : | 3.1415926535897 |
i | : | i 2 = - 1 |
j | : | j 2 = - 1 |
eps | : | précision numérique relative |
realmin | : | plus petit nombre à virgule flottante manipulable |
realmax | : | plus grand nombre à virgule flottante manipulable |
inf | : | infini. Est obtenu quand on essaie d'évaluer une expression dont le résultat excède realmax |
NaN | : | not-a-number. Est obtenu quand on essaie d'effectuer une opération non-définie comme 0/0 |
Les valeurs des constantes eps, realmin et realmax dépendent
de la machine sur laquelle MATLAB est
installé.
Par exemple sur une station SUN Ultra 1 on a eps = 2.2204e-16,
realmin
= 2.2251e-308 et realmax =
1.7977e+308.
Les noms des constantes n'est pas réservé,
c'est-à-dire
qu'il est possible de définir des variables de même nom.
Dans
ce cas, l'identificateur fera référence à la
variable
définie par l'utilisateur et non plus à la constante
MATLAB.
On fera attention par exemple, si l'on utilise le type complex,
à ne pas écrire de boucles ayant i ou j comme indices.
Pour
que l'identificateur fasse à nouveau référence
à
la constante MATLAB, il suffit de supprimer la variable de même
nom
de la mémoire par la commande clear.
>> pi = 0; cos(pi)
ans =
1
>> clear pi
>> cos(pi)
ans =
-1
>>
La commande rem donne le reste (remainder) de la division entière de deux entiers (la syntaxe est rem(m,n)). Les commandes lcm(m,n) et gcd(m,n) retournent respectivement le plus petit multiple commun et le plus grand commun diviseur à deux entiers m et n. La commande factor(n) permet d'obtenir les termes de la décomposition en facteurs premiers de l'entier n.
Les fonctions mathématiques incorporées sont:
log(x) | : | logarithme néperien de x, |
log10(x) | : | logarithme en base 10 de x, |
exp(x) | : | exponentielle de x, |
sqrt(x) | : | racine carrée de x (s'obtient aussi par x.^0.5), |
abs(x) | : | valeur absolue de x, |
sign(x) | : | fonction valant 1 si x est positif ou nul et 0 sinon. |
Lorsque la fonction est définie sur le corps des nombres
complexes
l'argument peut être de type complexe. On dispose
également
de fonctions spécifiques aux complexes:
conj(z) | : | le conjugué de z, |
abs(z) | : | le module de z, |
angle(z) | : | argument de z, |
real(z) | : | partie réelle de z, |
imag(z) | : | partie imaginaire de z. |
Les fonctions d'arrondis sont:
round(x) | : | entier le plus proche de x, |
floor(x) | : | arrondi par défaut, |
ceil(x) | : | arrondi par excès, |
fix(x) | : | arrondi par défaut un réel positif et par excès un réel négatif. |
Les fonctions trigonométriques et hyperboliques sont:
cos | : | cosinus, |
acos | : | cosinus inverse (arccos), |
sin | : | sinus, |
asin | : | sinus inverse (arcsin), |
tan | : | tangente, |
atan | : | tangente inverse (arctan), |
cosh | : | cosinus hyperbolique (ch), |
acosh | : | cosinus hyperbolique inverse (argch), |
sinh | : | sinus hyperbolique (sh), |
asinh | : | sinus hyperbolique inverse (argsh), |
tanh | : | tangente hyperbolique (th), |
atanh | : | tangente hyperbolique inverse (argth). |
La commande cross(x,y) permet de calculer le produit vectoriel des deux vecteurs x et y. Il n'y a pas dans la version 5.1 de commande dédiée pour calculer le produit scalaire de deux vecteurs. Il s'obtient grâce à l'instruction sum(x.*y). Dans les versions suivantes, la commande dot(x,y) permet de calculer le produit scalaire des deux vecteurs x et y.
Les fonctions mathématiques incorporées
décrites
au paragraphe 3.2 peuvent
être
utilisées avec un argument qui est un vecteur. La fonction est
alors
appliquée à tous les éléments du vecteur en
même temps.
>> x = [1:10:100]; y=sqrt(x);
y =
Columns 1 through 7
1.0000 3.3166 4.5826 5.5678 6.4031 7.1414 7.8102
Columns 8 through 10
8.4261 9.0000 9.5394
>>
Il existe également quelques fonctions spécifiques
aux vecteurs:
sum(x) | : | somme des éléments du vecteur x, |
prod(x) | : | produit des éléments du vecteur x, |
max(x) | : | plus grand élément du vecteur x, |
min(x) | : | plus petit élément du vecteur x, |
mean(x) | : | moyenne des éléments du vecteur x, |
sort(x) | : | ordonne les éléments du vecteur x par ordre croissant, |
fliplr(x) | : | échange la position des éléments du vecteur x. |
>> x=[3 1 2];Citons enfin quelques fonctions logiques. Les commandes all et any servent à tester si les éléments d'un vecteur sont nuls ou non. Si v est un vecteur de valeurs numériques, all(v) retourne vrai (1) si tous les éléments du vecteur sont différents de 0 et faux (0) si au moins un élément vaut 0. any(v) retourne vrai (1) si au moins un élément du vecteur est différent de 0 et faux (0) si le vecteur est composé exclusivement de 0.
>> sum(x)
ans =
6
>> prod(x)
ans =
6
>> max(x)
ans =
3
>> min(x)
ans =
1
>> sort(x)
ans =
1 2 3
>> fliplr(x)
ans =
2 1 3
>>
>> A=[1 2 3; 4 5 6]Si les dimensions des matrices A et B sont incompatibles avec l'opération matricielle, MATLAB renvoi un message d'erreur:
A =
1 2 3
4 5 6
>> B = [1 1; 2 2; 3 3]
B =
1 1
2 2
3 3
>> C = A*B
C =
14 14
32 32
>> C^2
ans =
644 644
1472 1472
>>
>> A+BEn plus des opérations matricielles usuelles, il est possible d'effectuer des opérations entre matrices <<élément par élément>>. Pour cela, il faut faire précéder l'opérateur d'un point (.). Ainsi si A et B sont 2 matrices de même dimension, on obtient la matrice dont le terme d'indices (i,j) est le produit des deux termes d'indices (i,j) des matrices A et B par la commande A.*B. De même la commande A.^2 fournit la matrice dont les termes sont les carrés des termes de la matrice A. Bien entendu les commandes A.+B et A+B donnent le même résultat.
??? Error using ==> + Matrix dimensions must agree.
>>
>> A=[1 2 3; 4 5 6]Les fonctions matricielles les plus courantes sont:
A =
1 2 3
4 5 6
>> B=[1 2 3; 1 2 3]
B =
1 2 3
1 2 3
>> A.*B
ans =
1 4 9
4 10 18
>> A.^2
ans =
1 4 9
16 25 36
>>
On peut obtenir les différentes normes
d'une matrice A grâce à la commande norm.
norm(A) | : | renvoie la norme 2 de la matrice A. |
norm(A,2) | : | même chose que norm(A). |
norm(A,1) | : | norme 1 de la matrice A, . |
norm(A,inf) | : | norme infini de la matrice A, . |
norm(A,'fro') | : | norme de Frobenius de la matrice A, . |
Ces fonctions matricielles incorporée de MATLAB peuvent être utilisées avec un argument qui est une matrice << sparse >>. Les exceptions sont les fonctions rank, expm et norm qui nécessitent de passer en stockage full (on exécutera donc rank(full(B)) par exemple).
>> A=[1 2 ;3 4]; b=[1 1]';
>> x= A\b
x =
-1
1
>> A*x
ans =
1
1
>>
Voici par exemple comment définir le polynôme p(x) = x2 -1. Le graphe de la fonction polynômiale est présenté à la figure 3.
>> p = [ 1, 0, -1];
>> polyval(p,0)
ans =
-1
>> polyval(p,[-2,-1,0,1,2])
ans =
3 0 -1 0 3
>> fplot('polyval([ 1, 0, -1] , x)' , [-3,3]), grid
>>
On obtient les racines du polynôme p grâce à l'instruction roots(p).
L'instruction polypermet d'obtenir la représentation canonique p(x) = an xn + an-1 xn-1 + . . . + a1 x + a0 d'un polynôme de degré n dont on connait les n+1 racines {xi}{i=0,...,n}. Les coefficients {ai}{i=0,...,n} sont obtenus sous forme d'un vecteur p et sont rangés dans l'ordre décroissant des indices. C'est-à-dire que p(1) = an , . . . , p(n+1) = a0.
>> r = roots(p)
r =
-1.0000
1.0000
>> poly(r)
ans =
1.0000 0.0000 -1.0000
>>