Approssimazione dell'esponenziale
Approssimazione dell'esponenziale
Approssimazione dell'esponenziale
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Approssimazione</strong> dell’esponenziale<br />
Si calcola l’approssimazione di exp(x) mediante sviluppo in serie di Taylor opportunamente<br />
troncato.<br />
Più precisamente, per ogni fissato valore di x (si considereranno poi valori di<br />
x equispaziati in un intervallo di estremi assegnati in input) si implementa il<br />
seguente algoritmo di calcolo:<br />
EXP n = EXP n−1 + xn<br />
n! , n ≥ 1<br />
EXP 0 = 1<br />
fintanto che il valore di EXP n differisce dal valore di EXP n−1 .<br />
È consigliabile calcolare il nuovo termine x n /n! facendo uso del termine precedentemente<br />
calcolato x n−1 /(n − 1)!.<br />
Si può inoltre verificare che per valori negativi di x è preferibile considerare<br />
l’espressione equivalente<br />
exp(x) = 1/ exp(−x)<br />
ove exp(−x) viene approssimata con il metodo sopra indicato.<br />
Di seguito trovate il diary dello svolgimento dell’esercizio, unitamente ai grafici<br />
dei risultati ottenuti.<br />
esponenziale_1<br />
Estremo sinistro intervallo di campionamento=-10<br />
Estremo destro intervallo di campionamento=10<br />
whos<br />
Numero di campionamenti=1000<br />
Name Size Bytes Class<br />
ERRORE_RELATIVO 1x1000 8000 double array<br />
EXP_APP 1x1000 8000 double array<br />
Nserie 1x1000 8000 double array<br />
XCAMPIO 1x1000 8000 double array<br />
Y_ESATTA 1x1000 8000 double array<br />
Grand total is 5000 elements using 40000 bytes<br />
f1=figure;<br />
figure(f1)<br />
plot(XCAMPIO,Y_ESATTA)<br />
xlabel(’Valore di x’)<br />
ylabel(’Valore esatto di exp(x)’)<br />
title(’Calcolo exp(x) con funzione di libreria matlab’)<br />
print -depsc2 exp_1<br />
1
Calcolo exp(x) con funzione di libreria matlab<br />
2.5 x 104 Valore di x<br />
2<br />
Valore esatto di exp(x)<br />
1.5<br />
1<br />
0.5<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 1: exp 1<br />
f2=figure;<br />
figure(f2)<br />
plot(XCAMPIO,EXP_APP)<br />
xlabel(’Valore di x’)<br />
ylabel(’Valore approssimato di exp(x)’)<br />
title(’Calcolo exp(x) con funzione esponenziale taylor 1’)<br />
print -depsc2 exp_2<br />
Calcolo exp(x) con funzione esponenziale taylor 1<br />
2.5 x 104 Valore di x<br />
2<br />
Valore approssimato di exp(x)<br />
1.5<br />
1<br />
0.5<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 2: exp 2<br />
f3=figure;<br />
figure(f3)<br />
plot(XCAMPIO,EXP_APP,XCAMPIO,Y_ESATTA)<br />
xlabel(’Valore di x’)<br />
ylabel(’Valore esatto e approssimato di exp(x)’)<br />
2
title(’Calcolo exp(x) con funzione di libreria matlab e con funzione esponenziale<br />
taylor 1’) legend(’valore approssimato’,’valore esatto’)<br />
print -depsc2 exp_3<br />
Calcolo exp(x) con funzione di libreria matlab e con funzione esponenziale taylor 1<br />
2.5 x 104 Valore di x<br />
valore approssimato<br />
valore esatto<br />
2<br />
Valore esatto e approssimato di exp(x)<br />
1.5<br />
1<br />
0.5<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 3: exp 3<br />
f4=figure; figure(f4)<br />
plot(XCAMPIO,ERRORE_RELATIVO)<br />
xlabel(’Valore di x’)<br />
ylabel(’Errore relativo di approssimazione’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1’)<br />
print -depsc2 exp_4<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1<br />
2 x 10−8 Valore di x<br />
1.8<br />
1.6<br />
Errore relativo di approssimazione<br />
1.4<br />
1.2<br />
1<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 4: exp 4<br />
f5=figure; figure(f5)<br />
3
semilogy(XCAMPIO,ERRORE_RELATIVO)<br />
xlabel(’Valore di x’)<br />
ylabel(’Logaritmo Errore relativo di approssimazione’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1’)<br />
print -depsc2 exp_5<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1<br />
10 −7 Valore di x<br />
10 −8<br />
Logaritmo Errore relativo di approssimazione<br />
10 −9<br />
10 −10<br />
10 −11<br />
10 −12<br />
10 −13<br />
10 −14<br />
10 −15<br />
10 −16<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 5: exp 5<br />
f6=figure; figure(f6)<br />
plot(XCAMPIO,Nserie)<br />
xlabel(’Valore di x’)<br />
ylabel(’Valore di ultimo n usato’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1’)<br />
print -depsc2 exp_6<br />
60<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1<br />
50<br />
Valore di ultimo n usato<br />
40<br />
30<br />
20<br />
10<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Valore di x<br />
Figura 6: exp 6<br />
4
ERRORE_RELATIVO_1=ERRORE_RELATIVO; EXP_APP_1=EXP_APP; Nserie_1=Nserie;<br />
clear ERRORE_RELATIVO EXP_APP Nserie<br />
whos<br />
Name Size Bytes Class<br />
ERRORE_RELATIVO_1 1x1000 8000 double array<br />
EXP_APP_1 1x1000 8000 double array<br />
Nserie_1 1x1000 8000 double array<br />
XCAMPIO 1x1000 8000 double array<br />
Y_ESATTA 1x1000 8000 double array<br />
Grand total is 5000 elements using 40000 bytes<br />
esponenziale_2<br />
Estremo sinistro intervallo di campionamento=-10<br />
Estremo destro intervallo di campionamento=10<br />
Numero di campionamenti=1000<br />
whos<br />
ERRORE_RELATIVO 1x1000 8000 double array<br />
ERRORE_RELATIVO_1 1x1000 8000 double array<br />
EXP_APP 1x1000 8000 double array<br />
EXP_APP_1 1x1000 8000 double array<br />
Nserie 1x1000 8000 double array<br />
Nserie_1 1x1000 8000 double array<br />
XCAMPIO 1x1000 8000 double array<br />
Y_ESATTA 1x1000 8000 double array<br />
f7=figure; figure(f7)<br />
plot(XCAMPIO,EXP_APP,XCAMPIO,Y_ESATTA)<br />
xlabel(’Valore di x’), ylabel(’Valore esatto e approssimato di exp(x)’)<br />
title(’Calcolo exp(x) con funzione di libreria matlab e con funzione esponenziale<br />
taylor 2’) legend(’valore approssimato’,’valore esatto’)<br />
print -depsc2 exp_7<br />
Calcolo exp(x) con funzione di libreria matlab e con funzione esponenziale taylor 2<br />
2.5 x 104 Valore di x<br />
valore approssimato<br />
valore esatto<br />
2<br />
Valore esatto e approssimato di exp(x)<br />
1.5<br />
1<br />
0.5<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 7: exp 7<br />
5
f8=figure; figure(f8)<br />
semilogy(XCAMPIO,ERRORE_RELATIVO)<br />
xlabel(’Valore di x’), ylabel(’Logaritmo Errore relativo di approssimazione’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2’)<br />
print -depsc2 exp_8<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2<br />
10 −7 Valore di x<br />
10 −8<br />
Logaritmo Errore relativo di approssimazione<br />
10 −9<br />
10 −10<br />
10 −11<br />
10 −12<br />
10 −13<br />
10 −14<br />
10 −15<br />
10 −16<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 8: exp 8<br />
f9=figure; figure(f9)<br />
semilogy(XCAMPIO,ERRORE_RELATIVO,XCAMPIO,ERRORE_RELATIVO_1)<br />
xlabel(’Valore di x’), ylabel(’Logaritmo Errore relativo di approssimazione’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1 e 2’)<br />
legend(’valore approssimato taylor 1’,’valore approssimato taylor 2’)<br />
print -depsc2 exp_9<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1 e 2<br />
10 −7 Valore di x<br />
10 −8<br />
valore approssimato taylor 1<br />
valore approssimato taylor 2<br />
Logaritmo Errore relativo di approssimazione<br />
10 −9<br />
10 −10<br />
10 −11<br />
10 −12<br />
10 −13<br />
10 −14<br />
10 −15<br />
10 −16<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 9: exp 9<br />
6
f10=figure; figure(f10)<br />
plot(XCAMPIO,Nserie)<br />
xlabel(’Valore di x’), ylabel(’Valore di ultimo n usato’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2’)<br />
print -depsc2 exp_10<br />
60<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2<br />
50<br />
Valore di ultimo n usato<br />
40<br />
30<br />
20<br />
10<br />
0<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Valore di x<br />
Figura 10: exp 10<br />
f11=figure; figure(f11)<br />
[haxes,hlinea1,hlinea2]=plotyy(XCAMPIO,ERRORE_RELATIVO_1,XCAMPIO,ERRORE_RELATIVO_1,<br />
’semilogy’,’plot’); axes(haxes(1)); ylabel(’Scala logaritmica’); axes(haxes(2));<br />
ylabel(’Scala lineare’); xlabel(’Valore di x’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2’)<br />
legend(’logaritmo valore approssimato taylor 2’,’valore approssimato taylor 2’)<br />
print -depsc2 exp_11<br />
10 −6<br />
10 −7<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 2<br />
logaritmo valore approssimato taylor 2<br />
valore approssimato taylor 2<br />
x 10 −8<br />
2<br />
1.8<br />
10 −8<br />
1.6<br />
10 −9<br />
1.4<br />
Scala logaritmica<br />
10 −10<br />
10 −11<br />
10 −12<br />
1.2<br />
1<br />
0.8<br />
Scala lineare<br />
10 −13<br />
0.6<br />
10 −14<br />
0.4<br />
10 −15<br />
−10 −8 −6 −4 −2 0 2 4 6 8<br />
0.2<br />
10 0<br />
Valore di x<br />
Figura 11: exp 11<br />
7
esponenziale_finale<br />
f12=figure; figure(f12)<br />
semilogy(XCAMPIO,ERRORE_RELATIVO)<br />
xlabel(’Valore di x’); ylabel(’Logaritmo Errore relativo di approssimazione’)<br />
title(’<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1 o 2’)<br />
print -depsc2 exp_12<br />
%<br />
<strong>Approssimazione</strong> exp(x) con funzione esponenziale taylor 1 o 2<br />
10 −15.1 Valore di x<br />
10 −15.2<br />
Logaritmo Errore relativo di approssimazione<br />
10 −15.3<br />
10 −15.4<br />
10 −15.5<br />
10 −15.6<br />
10 −15.7<br />
10 −15.8<br />
10 −15.9<br />
−10 −8 −6 −4 −2 0 2 4 6 8 10<br />
Figura 12: exp 12<br />
8