Anteprima
Vedrai una selezione di 3 pagine su 6
Calcolo numerico - Funzione esp Pag. 1 Calcolo numerico - Funzione esp Pag. 2
Anteprima di 3 pagg. su 6.
Scarica il documento per vederlo tutto.
Calcolo numerico - Funzione esp Pag. 6
1 su 6
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

ESEMPIO D'USO:

>> [y N]=esp(320,24)
y =9.423976816163541e+138
N = 474

esp.m%ESP% [y N]= esp(x, TOL)% La funzione esp calcola e^x con possibilità di% scegliere il numero di cifre significative esatte% che si cerca nel calcolo.%>> [y N]=esp(320,24)%y =% 9.423976816163541e+138%N =% 474function [y Nadd]= esp(x, TOL)%Controllo sul numero di dati in inputif (nargin ==0)error('Numero di parametri di input insufficiente')end%Controllo sull' esattezza dei dati di input%Il punto in cui calcolare la funzione non può essere un carattereif (ischar(x)==1)error('x deve essere un numero reale')end%Il punto in cui calcolare la funzione non può essere un vettoreif (length(x)~=1)error('x deve essere uno scalare')end%Controllo sull'esattezza della tolleranza se vengono passati due dati%di inputif (nargin==2)%La tolleranza non può essere un carattere o un numero negativoif (ischar(TOL)==1 | TOL<0)error('TOL deve

essere un numero reale maggiore di zero')end

La tolleranza non può essere un vettore

if (length(TOL)~=1)error('TOL deve essere uno scalare')end

end

Scelta della precisione

if (nargin==1)TOL=eps;disp('è stata scelta la massima precisione')else TOL=max(eps,power(10,-TOL));end

Controllo condizioni di Overflow e Underflow e in caso positivo salto i calcoli

if (x<-7.083964185322641e+002)Pongo y=0 in caso di underflowdisp('Questo esponente provocherà underflow')y=0;N=0;return;elseif (x>7.097827128933840e+002)Pongo y=inf in caso di overflowdisp('Questo esponente provocherà overflow')y=inf;N=0;return;end

Calcolo la funzione e^x usando l'algoritmo stabile, con criterio d'arresto e con precisione scelta dall'utente

y=1;N=1;add=abs(x);while (add>(y*TOL))y=y+add;N=N+1;add=(add*(abs(x)/N));end

if(x<0)y=1./y;end

if nargout==2Nadd=N;end

Test dell'Algoritmo

Caso funzionante1: >> [y N]=esp(320,24)y =

9.423976816163541e+138N = 474 Caso funzionante2: >> esp(50)è stata scelta la massima precisione ans = 5.184705528587080e+021 Casi di errore: >>esp??? Error using ==> espNumero di parametri di input insufficiente >> esp('a')??? Error using ==> espx deve essere un numero reale >> a=[1 2 3];>> esp(a)??? Error using ==> esp at 67x deve essere uno scalare >> esp(12,'a')??? Error using ==> esp at 76TOL deve essere un numero reale maggiore di zero >> esp(12,-20)??? Error using ==> esp at 76TOL deve essere un numero reale maggiore di zero >>a=[1 2 3];>> esp(12,a)??? Error using ==> esp at 80TOL deve essere uno scalare >> [a b c]=esp(10, 44)??? Error using ==> espToo many output arguments. >> esp(12, 23, 34)??? Error using ==> espToo many input arguments.Overflow: >> esp(999, 12)Questo esponente provocherà overflow ans = InfUnderflow: >> esp(-999, 12)Questo esponente
provocherà underflow
ans = 0
x esp(x) con Tol massima exp(x)
10 2.202646579480671e+004
53 2.202646579480672e+004
1.041375943302909e+023
1.041375943302909e+023-237
1.180885497174638e-103
1.180885497174638e-103720
Inf (overflow)
Inf-733
0 (underflow)
4.593525935644406e-319

graficoesp.m
clear all;
X=(-4:0.01:3);
for indice=1:length(X)
    A(indice)=[esp(X(indice))];
end

subplot(3,1,1)
plot(X,A)
axis('tight')
xlabel('x')
ylabel('y=e^x')
title('Grafico funzione esp')

Y=(3:12);
for indice=1:length(Y)
    [r n(indice)]=esp(5,Y(indice));
    [r n1(indice)]=esp(-15,Y(indice));
end 

subplot(3,1,2)
plot(Y,n, 'o:')
axis('tight')
xlabel('TOLLERANZA')
ylabel('Numero di addizioni')
title('Andamento N addendi con x=5')
grid

subplot(3,1,3);
plot(Y,n1, 'o:')
axis('tight')
xlabel('TOLLERANZA')
ylabel('Numero di addizioni')
title('Andamento N addendi con x=-15')
grid
Dettagli
Publisher
A.A. 2012-2013
6 pagine
SSD Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Menzo di informazioni apprese con la frequenza delle lezioni di Calcolo numerico e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Napoli Federico II o del prof D'Alessio Alessandra.