%% Esercizio

% Disegnare la funzione 𝑦=exp(𝑥) nell’intervallo [0, 5] e la sua
% approssimazione z con uno sviluppo in serie di Taylor del terzo ordine
% centrato in 𝑥0=0.
% Discutere la qualità dell’approssimazione nell’intervallo [0 5] facendo
% il grafico delle due funzioni (in una stessa finestra). Disegnare y in
% blue linea continua e z in rosso con linea tratteggiata. Aggiungere legenda
% e titoli
% Analizzare l’errore |y-z| nella scala originaria e nella scala 
% semilogaritmica in due pannelli orizzontali.

%% MODO 1: Confronto tra y and la sua approssimazione con una funzione di terzo grado
% Nel modo 1 si utilizza una sola volta il comando plot

close all
x=0:0.01:5;
y=exp(x);
z=1+x+(x.^2 )/2+(x.^3)/6;
plot(x,y,'b',x,z,'--r');
title('Confronto tra $y=exp(x)$ e $z=1+x+x^2/2+x^3/6$','Interpreter','latex','FontSize',16)
xlabel('x')
ylabel('Confronto tra y e z')
legend({'exp(x)' 'Approssimazione con un polinomio di terzo grado'},'Location','best');

%
%% MODO 2: Confronto tra y and la sua approssimazione con una funzione di terzo grado

close all
% in questo secondo modo si chiama due volte l'istruzione plot e hold('on')
% tra la prima chiamata e la seconda chiamata a plot.
x=0:0.01:5;
y=exp(x);
z=1+x+(x.^2 )/2+(x.^3)/6;
plot(x,y,'b')
% L'istruzione hold('on') consente di sovrapporre più grafici nella stessa
% figura
hold('on')
plot(x,z,'--r');
title('Confronto tra $y=exp(x)$ e $z=1+x+x^2/2+x^3/6$','Interpreter','latex','FontSize',16)
xlabel('x')
legend({'exp(x)' 'Approssimazione con un polinomio di terzo grado'},'Location','best');

%
%% PARTE II
% creo uno nuova finestra grafica vuota

figure
% Analizzare l’errore |y-z| nella scala originaria e nella scala y
% semilogaritmica in un pannelli orizzontali


err=abs(y-z);
% subplot(2,1,1) suddivide la finestra grafica in due pannelli
% orizzontali e traccia il primo grafico nel pannello in alto
subplot(2,1,1)
plot(x,err,'b-','Linewidth',2);
ylabel('|y-z| nella scala originale')
title('Analisi dell''errore nella scala originaria')
% Inserisco xlabel solo nel pannello in basso 
% xlabel('x')
% Ovviamente si poteva inserire anche in entrambi i pannelli

% L'istruzione subplot(2,1,2)consente di tracciare il grafico nel 
% pannello in basso
subplot(2,1,2)
semilogy(x,err,'b-','Linewidth',2);
ylabel('log(|y-z|)')
title('Analisi dell''errore nella scala semilogaritmica')
xlabel('x')
% semilogy esegue il grafico, mediante interpolazione lineare a
% tratti, delle coppie (xk, log10(yk) ),
% semilogx esegue il grafico, mediante interpolazione lineare a
% tratti, delle coppie (log10(xk), yk ),
% loglog esegue il grafico, mediante interpolazione lineare a tratti,
% delle coppie (log10(xk), log10(yk )).