Calcolo dell'esponenziale
Scopo
Calcolo dell’esponenziale tramite la determinazione della n-ma somma della serie esponenziale.
Specifiche e parametri
sum=espon(x)
| Parametro | Tipo | Input/output | Descrizione |
|---|---|---|---|
| x | Reale (fp) | Input | Numero reale del sistema floating point. Positivo o negativo. |
| k | Intero | Input | Valore della tolleranza. |
| sum | Reale (fp) | Output | Risultato ottenuto dalla somma. |
Routine Ausiliarie: y = epsmac(x) (per determinare il valore della massima precisione relativa del sistema)
Descrizione
L’algoritmo calcola la somma n-ma della serie esponenziale mediante sviluppo in serie di Taylor, determinando in run-time il numero delle somme da effettuare per avere il risultato più accurato possibile. La somma si arresta automaticamente al termine n-mo definito come il più piccolo elemento che dà contributo al valore della somma precedente. In caso di segno negativo dell’esponente, l’algoritmo procede calcolando normalmente la serie, come se l’esponente fosse positivo, ed alla fine ne calcola il reciproco.
Complessità ed accuratezza
L’accuratezza dipende dalla macchina su cui viene eseguito l’algoritmo. Per evitare una perdita di cifre significative dovute alla cancellazione catastrofica, poiché otterremmo una serie a segni alterni nel caso in cui x < 0, si è voluto porre e^(-x) = 1/e^x.
T(n) = O(n)
Indicatori di errore
- Errore dovuto all'inserimento dei dati:
- Mancato inserimento dell'esponente.
- Inserimento di un carattere come esponente.
- Inserimento di un esponente al di fuori dell'intervallo [-709, 709].
- Errore nell'inserimento della tolleranza:
- Inserimento di tolleranza negativa.
- Inserimento di un vettore per la tolleranza.
- Inserimento di un carattere come tolleranza.
Testo della funzione
function sum=espon(x,k)
%Controllo errore nell'inserimento dei dati: Parametri non inseritiif (nargin==0)error('Non hai Inserito il Valore di x')end%Controllo errore nell'inserimento dei dati: Inserimento di Caratteriif(ischar(x)==1)error('Non puoi Inserire un Carattere come Esponente')end%Controllo dei dati inseriti: Evitare Overflow ed Underflowif (x<-709)disp('Hai Inserito un Esponente Troppo Piccolo: Esponente Minimo -709')x=0;elseif (x>709.7)disp('Hai Inserito un Esponente Troppo Elevato: Esponente Massimo 709')end%Valitazione della Tolleranza: Massima Precisioneif nargin==1disp('Hai Scelto di Proseguire con la Precisione Massima')tol=epsmac;else%Controllo dei dati inseriti: Evitare Valori di k negativiif (k<=0)error('