Lezione 7 – Lezione 8 In questa lezione, abbiamo introdotto il concetto di approssimazione di funzioni, ossia la sostituzione di una funzione complicata f con una più semplice πΜ. Esempio: π π ∫ π(π₯)ππ₯ ≈ ∫ πΜ (π₯)ππ₯ π π dove πΜè una funzione facile da integrare come ad esempio un polinomio. Per comprendere al meglio l’approssimazione, riprendiamo il concetto di polinomio in Matlab. Un polinomio di grado n, con intero non negativo, è una funzione del tipo: π π(π₯) = ∑ ππ π₯ π−π π=0 con ai β R, (i=0,…,n) coefficienti del polinomio. Il polinomio è individuato dai suoi coefficienti che devono obbligatoriamente essere memorizzati in un vettore ed ordinati da quello corrispondente al termine di grado maggiore fino a quello di grado zero, esplicitando inoltre i coefficienti nulli. Esempio: Al polinomio p(x) = 3 + 4x2 -5x3 +9x, Matlab associa il vettore p=[-5 4 9 3]. La funzione polyval valuta il valore di un polinomio in una griglia di punti. y = polyval(p,x) dove y è il vettore contenente i valori di un polinomio di grado n nei punti x. Il vettore p di n+1 componenti deve contenere i coefficienti del polinomio da valutare corrispondenti alle potenze di ordine decrescente. Esempio: x=linspace(-2,2,50); %creo vettore x di 50 elementi con estremi -2 e 2 p=[2 0 4 5]; % p(x)= 2x3 + 4x + 5 y=polyval(p,x); %calcola il valore di p(x) nei punti x La funzione polyfit fornisce i coefficienti del polinomio di miglior approssimazione nel senso dei minimi quadrati. p = polyfit (x , y , n) dove x contiene i nodi xi , y i valori della funzione yi e n è il grado del polinomio. Se il numero dei nodi corrisponde a n+1 , polyfit restituisce i coefficienti del polinomio interpolatore. Esempio: x=0:5; % nodi y=[3 0 2 1 4 5]; % valori della funzione p=polyfit(x,y,6); % coefficienti del polinomio di miglior approssimazione xx=linspace(0,5,101) yy=polyval(p,xx); plot(xx,yy,x,y) % come costruire il grafico del polinomio interpolatore Su Matlab inoltre, esistono funzioni predefinite per l’interpolazione quali: ο· interp1 ο interpolazione in una tabella di punti (1D) yi = interp1(x, y, xx, metodo) dove x e y specificano le coordinate dei punti di interpolazione, xx sono i punti in cui si vuole valutare l’interpolato e metodo è una stringa di caratteri che specifica il metodo da utilizzare: οΆ metodo = ’nearest’ ο si sceglie il valore nel nodo di interpolazione più vicino οΆ metodo = ‘linear’ ο interpolazione lineare a tratti οΆ metodo = ‘spline’ ο interpolazione con spline cubica οΆ metodo = ‘pchip’ o metodo = ‘cubic’ ο interpolazione di Hermite cubica a tratti shape preserving ο· ο· ο· ο· interp1q ο interpolazione lineare (1D) interp2 ο interpolazione in una tabella di punti (2D) interp3 ο interpolazione in una tabella di punti (3D) spline ο spline cubica interpolante s = spline (x, y, xx) valuta nei punti xx la splina cubica che interpola i punti (x,y) Esercizio Data la funzione f (x) = sin(2πx), x β [-1,1]. Sia βnf il polinomio interpolatore di f relativo ad un insieme di nodi equispaziati x0 , x1 , … , xn nell’intervallo [-1,1]. ο· ο· ο· ο· ο· ο· Dati bi = f (xi ) risolvere il sistema lineare Vn a = b, dove Vn β R(n+1) × (n+1) è la matrice di Vandermonde ( comando Matlab vander) π₯0π π₯0π−1 … π₯0 1 π π−1 … π₯1 1 Vn = π₯β―1 π₯1 π (π₯π π₯ππ−1 … π₯π 1 ) per calcolare i coefficienti ai , i = 0,…, n del polinomio interpolatore di grado n=21. Si verifichi che lo ‘’stesso’’ risultato si ottiene con il comando Matlab polyfit (x, b, n) che restituisce i coefficienti del polinomio di grado n che interpola i dati (xi , bi ), i = 0,…n Stimare numericamente l’errore di interpolazione in norma del massimo En,∞ = ||f -βn f \\∞ Sia πΜπ = πΜ(xi ) + δi con δi perturbazioni casuali di ampiezza 10-2 (comando Matlab rand). Calcolare, utilizzando la matrice di Vandermonde, il polinomio interpolatore βn πΜ di grado 21 interpolante i valori πΜ(xi ) nei nodi xi . Visualizzare il polinomio β πΜ e stimare numericamente l’errore di interpolazione E n,∞ = ||πΜ -βn πΜ ||∞. Commentare i risultati ottenuti Confrontare En,∞ e πΈΜ n,∞ ed interpretare il risultato alla luce del valore di K2(V21) e delle proprietà di stabilità dell’interpolazione polinomiale Stimare numericamente il valore della costante di Lebesgue (π) βn = max x β [-1,1] ∑ππ=0 | ππ (π₯)| associata ai nodi scelti, confrontandolo con il rapporto fra ||βn π -βn πΜ ||∞ e max i=0,…,n |π(xi )− πΜ(xi )|. Interpretare il risultato ottenuto in base ai risultati teorici.