Interpol Azi One
Interpol Azi One
Lucia Gastaldi
1 Interpolazione
2 Interpolazione polinomiale
Polinomi
Valutazione di un polinomio
Algoritmo di Horner–Ruffini
Errore di approssimazione
Nodi di Chebyshev
3 Interpolazione a tratti
Interpolazione a tratti
Spline
Le funzioni MATLAB per l’interpolazione
Interpolazione
Problema Dati n + 1 punti (xi , yi = f (xi )) per i = 0, 1, . . . , n si
cerca una funzione approssimante f˜ : R → R tale che
Contiamo le operazioni
Nel primo caso: 6 (1+2+3) moltiplicazioni + 3 somme per
ciascuna componente di x
Nel secondo caso: 3 moltiplicazioni + 3 somme per ciascuna
componente di x
Algoritmo di Horner–Ruffini
In generale il polinomio
p(x) = a0 x n + a1 x n−1 + a2 x n−2 + · · · + an−1 x + an
può essere scritto nella forma di Horner:
p(x) = ((((a0 x + a1 )x + a2 ) . . . )x + an−1 )x + an .
Numero di operazioni
Nel primo caso: n(n + 1)/2 (1 + 2 + · · · + n) moltiplicazioni +
n somme per ciascuna componente di x
n
Totale (n + 3)N se N è il numero delle componenti di x
2
y=polyval(p,z)
restituisce il vettore y contenente i valori di un polinomio di grado
n calcolati nei punti z. Il vettore p di n + 1 componenti deve
contenere i coefficienti del polinomio corrispondenti alle potenze in
ordine decrescente.
Quindi per calcolare il valore del polinomio p(x) = 1 + 2x − 4x 3
nei punti z distribuiti in maniera equispaziata nell’intervallo [a, b] si
può usare la seguente sequenza di comandi:
>> z=linspace(-1,1,101);
>> p=[-4 0 2 1];
>> y=polyval(p,z);
Esercizi
Esercizio 1
Riportare in una stessa figura il grafico dei seguenti due polinomi:
Esercizio 2
Sia x il vettore che contiene i punti dell’intervallo [0.995, 1.005]
equispaziati a distanza 10−4 (usare x=.995:1.e-4:1.005). Fare il
grafico del polinomio:
Teorema
Per ogni insieme di punti (xi , yi ) per i = 0, 1, · · · , n, con gli xi
distinti tra loro, esiste un unico polinomio di grado n, che
indicheremo con Πn , tale che
Πn (xi ) = yi per i = 0, 1, · · · , n.
Suggerimento
Per ottenere il grafico valutare il polinomio (usare il comando
polyval) e la funzione in un numero appropriato di punti
equispaziati nell’intervallo dato (usare il comando linspace).
Errore di approssimazione
a+b b−a πi
xi = + x̂i con x̂i = − cos( ), i = 0, . . . , n.
2 2 n
I punti x̂i ∈ [−1, 1] si dicono nodi di Chebyshev.
Teorema di Bernstein
Sia f : [a, b] → R una funzione di classe C1 . Sia Πn il polinomio
interpolatore di grado n costruito usando i nodi di Chebyshev.
Allora
lim kf − Πn f k∞ = 0.
n→∞
Calcolo del polinomio con nodi di Chebyshev
Esercizio 6
Calcolare il polinomio di grado 7 che interpola la seguente funzione
usando 8 nodi di Chebyshev
10
f (x) = x 2 + x ∈ [−2, 8].
sin(x) + 1.2
0.5
0.6
0.4
−0.5
0.2
−1
0 −1.5
−5 0 5 −5 0 5
grado= 8 grado= 8
1.4 1.5
cheby equi
1.2 funz cheby
1 funz
1
0.5
0.8
0
0.6
−0.5
0.4
0.2 −1
0 −1.5
−5 0 5 −5 0 5
Interpolazione a tratti
Definizione
Si definisce polinomio a tratti una funzione g : [a, b] → R tale che
g (x) = pn (x) ∀x ∈ Ik ,
Problema
costruire un polinomio lineare a tratti che interpoli la funzione f
nei nodi xi , i = 0, . . . , n.
Consideriamo la partizione dell’intervallo [x0 , xn ] data dai nodi xi .
Quindi su ciascun intervallino [xi−1 , xi ] i = 1, . . . , n il polinomio
interpolatore a tratti è
x − xi x − xi−1
g (x) = f (xi−1 ) + f (xi )
xi−1 − xi xi − xi−1
Stima dell’errore di approssimazione
f 00 (ηi )
f (x) − g (x) = (x − xi−1 )(x − xi ) per x ∈ [xi−1 , xi ],
2
da cui segue la seguente maggiorazione:
(xi − xi−1 )2 H2
≤ max max |f 00 (x)| ≤ max |f 00 (x)|.
1≤i≤n 2 xi−1 ≤x≤xi 8 a≤x≤b
Spline
Siano xi , per i = 0, · · · , n, n + 1 nodi distinti e ordinati
sull’intervallo [a, b], tali che a = x0 < x1 < · · · < xn = b.
Definizione
La funzione sm : [a, b] → R è una funzione spline di grado m
relativa ai nodi xi se
sm (x) per x ∈ [xi−1 , xi ], i = 1, · · · , n, è un polinomio di grado
m.
La funzione sm è continua sull’intervallo [a, b] insieme alle sue
derivate fino all’ordine m − 1.
La spline più usata è la spline cubica s3 .
Stime dell’errore
(r )
max |f (r ) (x) − s3 (x)| ≤ Cr H 4−r max |f (4) (x)| r = 0, 1, 2
x0 ≤x≤xn x0 ≤x≤xn
(3) (3)
max |f (x) − s3 (x)| ≤ C3 H max |f (4) (x)|
x0 ≤x≤xn x6={x0 ,...,xn } x0 ≤x≤xn
Le funzioni MATLAB per l’interpolazione
Funzione Significato
interp1 Interpolazione 1D.
interp2 Interpolazione 2D.
interp3 Interpolazione 3D.
spline Spline cubica interpolante.
pchip Interpolazione cubica ”shape preserving”
interpft Interpolazione mediante il metodo FFT.
interp1 e spline
yi=interp1(x,y,z,metodo)
s=spline(x,y,z)
valuta nei punti z, la spline cubica che passa per i punti di ascissa
x e ordinata y.
Confronto fra i diversi metodi di interpolazione
Esercizio 9
Ripetere l’esercizio 8 approssimando la funzione di Runge
nell’intervallo [−5, 5].
Sempre sull’intervallo [−5, 5] usare n punti invece che n + 1.
Shape preserving piecewise cubic
Le spline cubiche non conservano le proprietà di monotonia delle
funzioni.
Esempio
Per approssimare la semicirconferenza di centro l’origine e raggio 1
costruire i punti di coordinate:
xk = − cos(kπ/6), yk = sin(kπ/6) k = 0, 6.