2+3*4 (2+3)*4 2^3*4 2^(3*4) 2^3^4 (2^3)^4Toutes 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.^3La 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 |