next up previous

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