Funzioni elementari sui numeri reali in MATLAB

Nella lezione precedente ho introdotto il concetto di tipo e, in particolar modo ho introdotto il tipo double e single che MATLAB adopera per memorizzare i numeri reali.

In questa lezione entro maggiormente nel dettaglio introducendo alcune delle principali funzioni elementari che MATLAB mette a disposizione per lavorare sui numeri reali.

Funzioni esponenziali

Nelle lezioni precedenti ho già introdotto la funzione sqrt che può essere utilizzata per calcolare la radice quadrata di un numero. In questa sezione mostrerò alcune delle funzioni esponenziali che MATLAB mette a disposizione.

Potenze e logaritmi

Abbiamo visto che per calcolare la potenza di un numero basta utilizzare l'operatore di elevamento a potenza: ^

>> 12.3 ^ 5.6

ans =

   1.2690e+06

Oltre a questo operatore, MATLAB mette a disposizione due funzioni ottimizzate per lavorare con potenze che hanno come base la costante di eulero \mathrm{e} e il numero 2:

In particolare:

Funzione Descrizione
exp(x) Calcola \mathrm{e} ^ {x}
expm(x) Calcola \mathrm{e} ^ {x} - 1 in maniera accurata.
pow2(x) Calcola 2 ^ {x} in maniera accurata
Tabella 1: Funzioni esponenziali in MATLAB

Il bisogno di queste due funzioni nasce dal fatto che sono state ottimizzate per ridurre al minimo l'errore numerico in cui si può incappare. Per maggiori dettagli rimando alle mie lezioni di calcolo numerico. In ogni caso, exp è utile per calcolare potenze che hanno come base \mathrm{e} ed anche per ottenere il valore di \mathrm{e} stesso:

>> format long
>> e = exp(1)

e =

   2.718281828459046

Oltre alle potenze, MATLAB permette di calcolare i logaritmi in maniera semplice attraverso le funzioni:

Funzione Descrizione
log(x) calcola il logaritmo naturale di un numero: \log_{\mathrm{e}}\left(x\right)
log10(x) calcola il logaritmo in base 10 di un numero: \log_{\mathrm{10}}\left(x\right)
log2(x) calcola il logaritmo in base 2 di un numero: \log_{\mathrm{2}}\left(x\right)
log1p(x) calcola la funzione \log_{\mathrm{e}}\left(1 + x\right) in maniera precisa
Tabella 2: Funzioni logaritmiche in MATLAB

Anche in questo caso, MATLAB fornisce una serie di funzioni per il logaritmo specializzate a seconda della base. La motivazione sta nel fatto che per ottenere migliore precisione numerica è sempre conveniente scegliere la funzione logaritmo adatta.

Di seguito alcuni esempi di utilizzo:

>> x = 5

x =

     5

>> log(5)

ans =

   1.609437912434100

>> log10(5)

ans =

   0.698970004336019

>> log2(5)

ans =

   2.321928094887362

>> log1p(x)

ans =

   1.791759469228055

Nel caso in cui volessimo calcolare il logaritmo di un numero con base arbitraria basta applicare la formula per il cambio di base del logaritmo:

\log_{b}\left(x\right) = \frac{\log_{a}\left(x\right)}{\log_{a}\left(b\right)}

Per cui, volendo, ad esempio, calcolare il logaritmo in base 7 di 49 basterebbe inserire:

>> log(49) / log(7)

ans =

     2

Radici

Abbiamo già visto la funzione sqrt che permette di calcolare la radice quadrata. MATLAB, però, mette a disposizione anche un'altra funzione per le radici che permette di calcolare la radice n-esima di un numero:

\sqrt[n]{x}

con n numero reale qualsiasi. Si tratta della funzione:

Funzione Descrizione
nthroot(x, n) Calcola \sqrt[n]{x}
Tabella 3: Funzione Radice n-esima

nthroot(x, n) prende in input due parametri: x rappresenta il radicando e n l'indice della radice. Ad esempio, volendo calcolare:

\sqrt[5.6]{3.4}

basta inserire il seguente input:

>> nthroot(3.4, 5.6)

ans =

   1.244247994667347

Funzioni trigonometriche

MATLAB fornisce una grande quantità di funzioni trigonometriche e di conversione che prendono in ingresso sia valori espressi in radianti sia espressi in gradi.

Funzioni di conversione

Prima di mostrare le funzioni trigonometriche, è utile mostrare due utili funzioni per la conversione di valori da gradi a radianti e viceversa:

Funzione Descrizione
deg2rad(x) Converte x da gradi a radianti
rad2deg(x) Converte x da radianti a gradi
Tabella 4: Funzioni goniometriche di conversione

Queste due funzioni sono molto utili e semplici da usare:

>> deg2rad(180.0)

ans =

   3.141592653589793

>> rad2deg(pi)

ans =

   180

Funzioni trigonometriche dirette

Di seguito sono riportate alcune delle funzioni trigonometriche dirette che MATLAB fornisce:

Funzione Descrizione
cos(x) Calcola il coseno di x espresso in radianti: \cos\left(x\right)
sin(x) Calcola il seno di x espresso in radianti: \sin\left(x\right)
tan(x) Calcola la tangente di x espresso in radianti: \tan\left(x\right)
cot(x) Calcola la cotangente di x espresso in radianti: \cot\left(x\right)
sec(x) Calcola la secante di x espresso in radianti: \sec\left(x\right)
csc(x) Calcola la cosecante di x espresso in radianti: \csc\left(x\right)
Tabella 5: Funzioni trigonometriche dirette con argomento in radianti

Di queste funzioni esiste anche la versione che prende come argomento un valore espresso in gradi:

Funzione Descrizione
cosd(x) Calcola il coseno di x espresso in gradi: \cos_{d}\left(x\right)
sind(x) Calcola il seno di x espresso in gradi: \sin_{d}\left(x\right)
tand(x) Calcola la tangente di x espresso in gradi: \tan_{d}\left(x\right)
cotd(x) Calcola la cotangente di x espresso in gradi: \cot_{d}\left(x\right)
secd(x) Calcola la secante di x espresso in gradi: \sec_{d}\left(x\right)
cscd(x) Calcola la cosecante di x espresso in gradi: \csc_{d}\left(x\right)
Tabella 6: Funzioni trigonometriche dirette con argomento in gradi

Funzioni trigonometriche inverse

Così come esistono le funzioni trigonometriche dirette, esistono anche le funzioni trigonometriche inverse in MATLAB. Ed anche per queste funzioni, esiste sia la versione che restituisce il risultato in radianti (la versione di default), sia la versione che restituisce il risultato in gradi:

Funzione Descrizione
acos(x) Calcola l'arcocoseno di x e restituisce il risultato in radianti: \arccos\left(x\right)
asin(x) Calcola l'arcoseno di x e restituisce il risultato in radianti: \arcsin\left(x\right)
atan(x) Calcola l'arcotangente di x e restituisce il risultato in radianti: \arctan\left(x\right)
acot(x) Calcola l'arcocotangente di x e restituisce il risultato in radianti: \mbox{arccot}\left(x\right)
asec(x) Calcola l'arcosecante di x e restituisce il risultato in radianti: \mbox{arcsec}\left(x\right)
acsc(x) Calcola l'arcocosecante di x e restituisce il risultato in radianti: \mbox{arccsc}\left(x\right)
Tabella 7: Funzioni trigonometriche inverse con risultato in radianti

Di seguito le versioni che restituiscono il risultato in gradi:

Funzione Descrizione
acosd(x) Calcola l'arcocoseno di x e restituisce il risultato in gradi: \arccos_{d}\left(x\right)
asind(x) Calcola l'arcoseno di x e restituisce il risultato in gradi: \arcsin_{d}\left(x\right)
atand(x) Calcola l'arcotangente di x e restituisce il risultato in gradi: \arctan_{d}\left(x\right)
acotd(x) Calcola l'arcocotangente di x e restituisce il risultato in gradi: \mbox{arccot}_{d}\left(x\right)
asecd(x) Calcola l'arcosecante di x e restituisce il risultato in gradi: \mbox{arcsec}_{d}\left(x\right)
acscd(x) Calcola l'arcocosecante di x e restituisce il risultato in gradi: \mbox{arccsc}_{d}\left(x\right)
Tabella 8: Funzioni trigonometriche inverse con risultato in gradi

Riassumendo