Ho creato il seguente programma che calcola e^x con una tolleranza tol scelta dall'utente, ma non riesco a tabellarne il grafico con lo scrip che ho scirtto in fondo. C'è qualcuno che mi sa aiutare?
function[y,N]=nepx(x,TOL)
%funzione che calcola e^x
%
%[y,N]=nepx(x,TOL)
%
%parametri di ingresso:
%x: valore di cui si vuole calcolare l'esponenziale
%TOL: facoltativo, accuratezza richiesta dall'utente
%
%parametri di uscita:
%y: valore dell'approssimazione
%N: numero di termini della serie
%Controlla che ci sia almeno unparametro di ingresso in quanto TOL è facoltativo
if (nargin==0)
errordlg('Devi inserire almeno l''esponente! Errore');
end
%Conta il numero di ingressi
if (nargin==1)
TOL=eps;
end
%Controlla che TOL sia uno scalare e non un vettore
if (length(TOL)~=1)
errordlg('Il valore della tolleranza deve essere uno scalare!','Errore');
end
%Controlla che i numeri inseriti siano reali; in caso contrario, termina l'esecuzione.
if isnumeric(x) && isreal(x) && isnumeric(TOL) && isreal(TOL)
end
%Controllo calcoli per overflow o underflow...
if (x>709.782712)
errordlg('Overflow!!! Il numero inserito è troppo grande.','Errore');
return;
elseif (x<-745.133219)
errordlg('Underflow!!! Il numero inserito è troppo piccolo.','Errore');
return;
end
%Controlla che la tolleranza sia positiva
if (TOL<0)
msgbox('La tolleranza deve essere un numero positivo!','Attenzione','help');
return;
%Controllo di stabilità dell'algoritmo (0<TOL<eps)
else
TOL=10^(-TOL);
TOL=max(TOL,eps);
end
%Inizializzazione delle variabili
y=1;
N=1;
add=abs(x);
%Criterio di arresto dinamico
while (add>abs(y)*TOL) ;
y=y+add;
N=N+1;
add = add.*(abs(x)/N);
end
if (x<0)
y=1./y;
end
Poi ho fatto uno script per farne un grafico ma quando esegue il comando linspace , non mi da i risultati corretti. qualcuno mi puo aiutare? script
----tabella.m:------
clc
x=linspace(0,999,1000);y=nepx(x,1000);
z=[x,y];
fprintf('%4.0f\\t\\t %11.15e\\n ',z)
plot(x,y)