Funzione polyfit
Octave permette di effettura interpolazione con polinomi usando:
p = polyfit(x0, y0, n)
Dove:
x0
è un vettore con i valori xi
dei punti da interpolare
y0
è un vettore con i valori yi
dei punti da interpolare
n
è il grado del polinomio
- Se
n=m−1
l'interpolazione è esatta
- Se
n<m−1
viene risolto il problema ai minimi quadrati
La funzione restituisce p
, che contiene i coefficienti del polinomio
Interpolazione Risolvendo un Sistema Lineare
Si può anche ottenere un polinomio interpolante/approssimante con:
p = V \ y
Dove:
V
la matrice di Vandermonde, calcolata per i valori xi
y
un vettore colonna con i valori yi
Il risultato dipende dalle dimensioni di V
:
- Se
V
è quadrata si ottengono i coefficienti del polinomio interpolante
- Se
V
ha più righe che colonne, viene risolto il problema ai min. quad.
Matrice di Vandermonde in Octave
La matrice di Vandermonde può essere ottenuta facilmente con:
V = vander(x0, n)
Dove:
x0
è il vettore di valori xi
per cui calcolare la matrice
n
è il numero di colonne da utilizzare
- Se
n
viene omesso, allora la matrice è quadrata
Esercizio 1
Si vuole determinare il profilo di velocità di un fluido in condotta:
- La condotta ha un diamtro di
15
cm
- Sono state effettuate
4
misurazioni della velocità
Si determini il polinomio interpolante utilizzando:
- Prima la funzione
polyfit
di Octave...
- ... Poi risolvendo il sistema lineare
Vβ=y
Si visualizzi il polinomio interpolante utilizzando la funzione:
function plot_approx(p, x_l, x_u, x0, y0)
- La funzione è disponibile nello start-kit sul sito del corso
Esercizio 2
Il file ch11_es2.csv
(nello start-kit) contiene una serie di misurazioni:
- La prima colonna nel file contiene i valori
xi
- La seconda colonna contiene i valori
yi
Si leggano i dati dal file (utilizzando dlmread
)
Si ottenga poi un polinomio approssimante
Si utilizzi dapprima la funzione polyfit
...
- Si modifichi l'utilizzo di
polyfit
rispetto all'esercizio 1...
- ...in modo che la funzione risolva il problema ai minimi quadrati
Esercizio 2
Poi si ripeta l'operazione risolvendo il sistema VTVx=VTy
- Si ricordi in Octave è facile utilizzare la matrice pseudo-inversa!
- Basta usare una divisione sinistra
- Si ottenga la matrice di Vandermonde...
- ...nel formato opportuno a risolvere il problema ai minimi quadrati
Si utilizzi la funzione plot_approx
per visualizzare i risultati
Opzionalmente:
- Si calcoli il valore dell'errore
e=∑ni=1r2
Esercizio 3
Il file ch11_es3.csv
(nello start-kit) contiene una serie di misurazioni:
- La prima colonna nel file contiene i valori
xi
- La seconda colonna contiene i valori
yi
Si ottenga una funzione (non polinomiale) approssimante
Si utilizzi il metodo dei minimi quadrati
- Occorrerà costruire la matrice
Φ
...
- ...con il valore dei termini della funzione approssimante
Φi,j=ϕj(xi)
Esercizio 3
A tal file, di definisca la funzione:
function phi = build_phi_matrix(x)
- Che deve costruire la matrice
Φ
La si utilizzi poi per risolvere il sistema:
ΦTΦβ=ΦTy
- Ed ottenere il valore dei parametri
β
- Si ricordi per utilizzare la matrice pseudo-inversa...
- ...È sufficiente usare la divisione sinistra
Esercizio 3
Si noti che è possibile valutare la funzione approssimante:
- Calcolando
Φ
per i valori di x
a cui si è interessati
- Calcolando
Φβ
, una volta che β
è noto
Questa tecnica è utilizzate nella funzione:
function plot_approx(p, x_l, x_u, x0, y0)
- Che può essere utilizzata per valutare la qualità dell'approssimazione
Esercizio 4
Il file ch11_es4.csv
(nello start-kit) contiene una serie di misurazioni:
- La prima colonna nel file contiene i valori
xi
- La seconda colonna contiene i valori
yi
Si ottenga una funzione (non polinomiale) approssimante
Si utilizzi il metodo dei minimi quadrati
- Si proceda utilizzando la matrice
Φ
...
- ...come nel caso dell'esercizio precendente
Si visualizzino i risultati utilizzando plot_approx
Esercizio 5
Si calcoli il polinomio interpolante per i dati dell'esercizio 1
Si utilizzi il polinomio in forma di Lagrange
- In particolare, si implementi la funzione:
function y = f(x, x0, y0)
- La funzione deve calcolare il polinomio in forma di Lagrange...
- Per i punti nel vettore
x
- I parametri
x0
e y0
sono necessari al calcolo