Section : Vecteurs et matrices
Précédent : Construire des matrices
Suivant : Types de données
Opérations
Les opérations numériques s'effectuent en suivant les ordres
de priorité classiques (puissance avant multiplication, et
multiplication avant addition). Pour éviter les doutes il est toujours
prudent de mettre des parenthèses.
2+3*4
(2+3)*4
2^3*4
2^(3*4)
2^3^4
(2^3)^4
Toutes les opérations sont matricielles. Tenter une opération entre
matrices de tailles non compatibles retournera en général un
message d'erreur, sauf si une des matrices est un scalaire. Dans
ce cas, l'opération (addition, multiplication, puissance)
s'appliquera terme à terme.
A=[1,2,3;4,5,6]
A+ones(1,3) // erreur
A+ones(A)
A+10
A*10
A*ones(A) // erreur
A*ones(A')
A'*ones(A)
Il n'y a pas d'ambiguïté sur l'addition, mais
il est important de pouvoir appliquer des multiplications terme à
terme sans qu'elles soient interprétées comme des produits
matriciels. Pour cela, le signe (* ou ^) doit être
précédé d'un point (.* ou .^). Bien entendu les
dimensions doivent être les mêmes pour qu'une opération terme
à terme soit possible.
A=[1,2,3;4,5,6]
A*A // erreur
A*A'
A.*A' // erreur
A.*A
A=[1,2;3,4]
A^3
A.^3
La division est un cas particulier dangereux. Par défaut,
A/B calcule une solution d'un système linéaire.
Si v est un vecteur ligne, 1/v retourne un
vecteur colonne w tel que v*w=1. Contrairement
à ce qui est écrit dans l'aide en ligne, 1./v,
compris comme (1.0)/v, retourne la même chose.
Il y a plusieurs solutions à ce problème, dont la plus
simple consiste à parenthéser : (1)./v.
v=[1,2,3]
w=1/v
v*w
1./v
(1)./v
ones(v)./v
v.^(-1)
v=v'
1/v
1./v
| Opérations matricielles |
+ - |
addition, soustraction |
* ^ |
multiplication, puissance (matricielles) |
.* .^ |
multiplication, puissance terme à terme |
A\b |
solution de A*x=b |
b/A |
solution de x*A=b |
./ |
division terme à terme |
Section : Vecteurs et matrices
Précédent : Construire des matrices
Suivant : Types de données
© B. Ycart (2001)