24.10.2014 Views

Approssimazione dell'esponenziale

Approssimazione dell'esponenziale

Approssimazione dell'esponenziale

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!