Operazioni
In MATLAB sono definite le seguenti operazioni aritmetiche:
1) addizione +
2) sottrazione -
3) moltiplicazione *
4) divisione /
5) elevamento a potenza ~.
Quando l'espressione da valutare è troppo lunga per stare su di un'unica riga di comando,
è possibile utilizzare un carattere di continuazione dato da . . . (tre punti).
Ad esempio,
>> 1 + 1/4 + ...
1/8
ans = 1.375
E' possibile verificare che poichè in MATLAB non vi è alcuna distinzione tra variabili intere, reali o
complesse, il risultato dell'operazione di elevamento a potenza nel caso di esponenti frazionari può non
corrispondere a quello naturalmente atteso.
Ad esempio, volendo calcolare la radice cubica di -9, si ottiene:
>> (-9}^(1/3}
ans =
1.2555 + 0.9122i
e non un numero reale.
Il problema è dovuto al fatto che MATLAB, lavorando in notazione complessa, calcola come prima
radice cubica di -9 una delle due con parte immaginaria non nulla.
Anche in MATLAB è possibile alterare le precedenze classiche delle operazioni aritmetiche mediante l'uso
opportuno delle parentesi tonde.
Ad esempio, se nel caso precedente si fosse scritto ( - 9)^ 1 /3 si sarebbe
ottenuto il valore -l.8000 ossia, giustamente, - 9/5.
Per quanto riguarda i vettori, le operazioni elementari si estendono (quando ben definite) in modo del tutto
naturale, con l'eccezione delle operazioni di divisione e di elevamento a potenza.
Ad esempio,
>> a = [1:4];
>> b = [1:3];
>> c = [3 2 6 -1] ;
>> a+c (somma di vettori riga)
ans =
4 4 9 3
>> a-c (differenza di vettori riga)
ans =
-2 O -3 5
>> a+b
??? Errar using ==> +
Matrix dimension must agree.
>>a*c
??? Errar using ==> *
Inner matrix dimension must agree.
Le ultime istruzioni ci indicano che, le operazioni fra vettori sono valide solo se le dimensioni
sono consistenti. Infatti, dato un vettore riga s di dimensione n (ossia una matrice 1 * n) ed un
vettore colonna d di dimensione m, si potrà eseguire il prodotto scalare s*d solo se m=n (ottenendo
in tal caso uno scalare.
>> s=[1:4];
>> d=[1;2;3;4];
>> s*d
ans=
30
Quindi d*s fornirà una matrice m*n.
>> s=[1:4];
>> d=[1;2;3;4];
>> M=d*s
M=
1 2 3 4
2 4 6 8
3 6 9 12
4 8 12 16