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