Calcolo numerico - Elaborato 3
Scopo: Utilizzando le funzioni Matlab, fare esempi d'uso significativi per i problemi di interpolazione e smoothing polinomiale (polyfit, polyval), interpolazione con polinomiale a tratti (interp1) e con i diversi tipi di spline (spline, csape, ppval). Presentare una breve descrizione dei casi trattati con i vari esempi.
Introduzione all'interpolazione e smoothing polinomiale
Per valutare l'andamento di un fenomeno qualsiasi, ci troviamo a dover scegliere in che modo trasformare i dati acquisiti tramite rilevazioni o indagini statistiche in una funzione numerica da poter analizzare. Infatti, sono diversi i modelli da utilizzare a seconda del tipo di informazione e dal modo in cui è stata raccolta. Se abbiamo un numero elevato di dati che potrebbero essere affetti da errori di rilevazione oppure se siamo semplicemente interessati all'andamento globale di un fenomeno piuttosto che alla sua valutazione in un dato punto, il Matlab mette a disposizione le funzioni polyfit e polyval che permettono di valutare i coefficienti del polinomio interpolante o la curva di smoothing di una funzione in maniera appunto globale.
>> x=1:10; >> y=x+rand(1,1)*rand(1,length(x)); >> plot(x,y,'o');
Interpolazione tramite retta di minimi quadrati
Il modello che approssima l'andamento di questi dati è un polinomio di primo grado e viene detto retta di minimi quadrati. In Matlab si rappresenta in questo modo:
>> coef=polyfit(x,y,1); >> t=1:0.5:10; >> f=polyval(coef,t); >> plot(x,y,'o',t,f);
Con le funzioni polyfit e polyval possiamo interpolare i dati con polinomi di grado massimo n-1 con n numero delle rilevazioni effettuate ed in questo caso si ha il cosiddetto polinomio interpolante:
>> coef=polyfit(x,y,length(x)-1); >> f=polyval(coef,t); >> plot(x,y, 'o',t,f);
Utilizzo dell'interpolazione a tratti
Se invece i dati che abbiamo sono relativamente pochi e possono essere considerati esatti, possiamo utilizzare altre funzioni messe a disposizione dal Matlab. Ad esempio, per valutare la percentuale di crescita della popolazione italiana dal 1861 al 2001 (dati Istat) potremmo utilizzare un polinomio interpolante a tratti tramite la funzione interp1:
>> x=[1861 1871 1881 1901 1911 1921 1931 1936 1951 1961 1971 1981 1991 2001];
>> y=[22.2 27.3 29 33 36 39.4 41 42.4 47.5 50.6 54.1 56.6 56.8 57];
>> t=1861:2001;
>> yi=interp1(x,y,t);
>> plot(x,y,'o',t,yi); title('Popolazione residente (interp1)'); xlabel('Anno'); ylabel('Dati in milioni');
Interp1 non è un metodo ottimale in quanto restituisce una semplice interpolazione lineare tra i punti dati...
-
Calcolo numerico - Fitting di dati
-
Riassunto calcolo numerico
-
Informatica - calcolo numerico
-
Calcolo numerico