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,risulta possibile utilizzare un carattere di continuazione dato da . . . (tre punti). Ad esempio:
>> 1 + 1/4 + …
1/8
ans =
1.3750
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 -5, si ottiene:
>> (-9)^(1/5)
ans =
1.2555 + 0.9122i
quindi un numero immagginario al posto di 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/5 si sarebbe ottenuto il valore -1.8000 ossia, giustamente, – 9/5.
>> (- 9)*1/5
ans =
-1.8000
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 0 -3 5
>> a+b
??? Error using ==> plus
Matrix dimensions must agree.
>> a*c
??? Error using ==> mtimes
Inner matrix dimensions 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
LINK DI APPROFONDIMENTO PER L’ARGOMENTO:
- Elementi di programmazione in Matlab
- Operatore due punti in Matlab
- Accesso agli elementi di una matrice in Matlab
- La matrice di Durer in Matlab
- Immettere matrici in Matlab
- Il comando implicit none nel Fortran