Lezione 7

advertisement
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.
Download