interpolazione - Dipartimento di Matematica Tor Vergata

Transcript

interpolazione - Dipartimento di Matematica Tor Vergata
INTERPOLAZIONE
Francesca Pelosi
Dipartimento di Matematica, Università di Roma “Tor Vergata”
CALCOLO NUMERICO e PROGRAMMAZIONE
http://www.mat.uniroma2.it/∼pelosi/
INTERPOLAZIONE – p.1/38
INTERPOLAZIONE
Nella pratica si presentano spesso i seguenti problemi:
(i)
da misure sperimentali sono state ricavate le coppie di valori
(xi , fi ), i = 0, 1, . . . , n che esprimono un campionamento di un fenomeno
fisico. Supponendo tali valori esatti si vuole conoscere il valore ȳ = f (x̄) per
x̄ 6= xi e quindi ottenere una funzione che rappresenti il fenomeno.
Es: si può misurare la temperatura corporea di un malato in vari periodi della
giornata e desiderare una stima della temperatura in funzione del tempo T (t).
(ii)
x
q
R
1+ 0t sinh(1+|x|)...
Si ha una funzione estremamente complicata (f (x) = e
), il
cui calcolo richiede un elevato tempo macchina ⇒ si tabula la funzione in un
prefissato numero di punti ed si approssima mediante interpolazione
⇒ In entrambi i casi, si suppone che i dati appartengano ad una funzione che
non presenta difficoltà di calcolo (polinomiale o razionale) e la si utilizza per
determinare i valori cercati
INTERPOLAZIONE – p.2/38
INTERPOLAZIONE
In generale, date le coppie di valori (x0 , f0 ), . . . , (xn , fn ) con xi ∈ [a, b]
(xi punti fondamentali) e S uno spazio di funzioni definite su [a, b];
si cerca una funzione g ∈ S che soddisfi le condizioni di interpolazione:
15
10
g(xi ) = fi ,
i = 0, 1, . . . , n
5
fi
0
−5
Vogliamo valutare g in x̄ 6= xi , i = 1, . . . , n, sia
ξ1 = min{x0 , x1 , . . . , xn },
−10
−1.5
−1
−0.5
xi
0
0.5
1
1.5
ξ2 = max{x0 , x1 , . . . , xn }
parleremo di
interpolazione se x̄ ∈ [ξ1 , ξ2 ]
estrapolazione se x̄ ∈
/ [ξ1 , ξ2 ]
INTERPOLAZIONE – p.3/38
INTERPOLAZIONE
La scelta dello spazio di funzioni S cade su spazi lineari a dimensione finita (n + 1)
⇒ si può fissare una base {φj (x), j = 0, 1, . . . , n} ed esprimere g(x) ∈ S come
n
X
g(x) =
aj φj (x)
j=0
trovare la funzione interpolante g ∈ S equivale a trovare a0 , a1 , . . . , an tali che
Pn
g(xi ) = j=0 aj φj (xi ) = fi , i = 0, 1, . . . , n ⇒


a0 φ0 (x0 ) + a1 φ1 (x0 ) + · · · + an φn (x0 ) = f0





 a0 φ0 (x1 ) + a1 φ1 (x1 ) + · · · + an φn (x1 ) = f1







..
.
a0 φ0 (xn ) + a1 φ1 (xn ) + · · · + an φn (xn ) = fn

φ0 (x0 )

 φ0 (x1 )

G=
..


.

φ0 (xn )
φ1 (x0 )
φ1 (x1 )
..
.
φ1 (xn )
···
···
···
φn (x0 )


φn (x1 ) 


..


.

φn (xn )
Matrice di Gram
La scelta dello spazio di funzioni S dipende dalle applicazioni ed è molto importante:
P
k
interpolazione polinomiale: g(x) = n
k=0 ak x
interpolazione trigonometrica: g(x) = a0 + a1 cos x + b1 sin x + ...
interpolazione spline
INTERPOLAZIONE – p.4/38
INTERPOLAZIONE POLINOMIALE
S = IPn ⇒
φj (x) = xj ,
j = 0, 1, . . . , n
g(x) = p(x) = a0 + a1 x + · · · + an xn ,
si vuol determinare un polinomio di grado minore o uguale a n, p(x) ∈ IP n tale che
p(xi ) =
n
X
aj xji = fi ,
i = 0, 1, . . . , n
j=0
ovvero


a0 + a1 x0 + a2 x20 + · · · + an xn

0 = f0




 a0 + a1 x1 + a2 x21 + · · · + an xn
1 = f1







..
.
a0 + a1 xn + a2 x2n + · · · + an xn
n = fn
Il problema consiste nel risolvere un sistema lineare nelle incognite a0 , a1 , . . . , an
INTERPOLAZIONE – p.5/38
Esistenza e unicità del polinomio interpolante
La matrice dei coefficienti




G=



det(G) 6= 0
essendo det(G) =
Q
i>j (xi
1
x0
1
x1
..
.
..
.
1
xn
⇔
x20
x21
···
x2n
···
..
.
···
xn
0
xn
1
..
.
xn
n








Matrice di
Cauchy-Vandermonde
x0 , x1 , . . . , xn sono distinti
− xj ). Possiamo affermare:
TEOREMA
Esiste un unico polinomio di grado massimo n che assume valori f i ; i = 0, . . . , n
in corrispondenza di (n + 1) punti distinti x i ; i = 0, . . . , n.
La matrice di Gram G ottenuta con la base dei monomi è fortemente
malcodizionata ⇒ si può cambiare la base per IPn
INTERPOLAZIONE – p.6/38
INTERPOLAZIONE POLINOMIALE
La situazione ottimale si ha per G = I :

 

1
0
0
f0
a0

 

.

 .


.
. . 0   .. 
 0
 =  ..

 

0
0
1
an
fn
(n)
(n)



a0 = f0



..
.


 ⇒





an = fn
(n)
Ovvero, occorrono n + 1 funzioni `0 (x), `1 (x), . . . , `n (x) tali che:
1)
2)
(n)
`j (x) ∈ IPn , lineramente indipendenti

 0, i 6= j
(n)
`j (xi ) = δij =
 1, i = j
(2)
(2)
(2)
ESEMPIO: n = 2, si devono costruire 3 funzioni lin. indip. `0 (x), `1 (x), `2 (x) ∈ IP2 t.c.
(2)
`0 (x1 ) = 0
(2)
`1 (x1 ) = 1
(2)
`2 (x1 ) = 0
`0 (x0 ) = 1
`1 (x0 ) = 0
`2 (x0 ) = 0
(2)
`0 (x2 ) = 0
(2)
(2)
`1 (x2 ) = 0
(2)
`2 (x2 ) = 1
(2)
1
(2)
x
0
x1
x2
INTERPOLAZIONE – p.7/38
Polinomio interpolante di LAGRANGE
In generale funzioni di questo tipo assumono la forma:
(n)
`i (x)
Qn
j=0
j6=i
= Qn
j=0
j6=i
(x − xj )
(xi − xj )
,
i = 0, 1, . . . , n
funzioni fondamentali
di Lagrange
(n)
(n)
Si verifica facilmente che i polinomi `i di grado n soddisfano `j (xi ) = δij e il
polinomio di grado n interpolante (xi , fi ), i = 0, 1, . . . , n assume la forma:
(n)
(n)
(n)
Ln (x; f ) = f0 `0 (x) + f1 `1 (x) + . . . + fn `n (x),
polinomio interpolante
di Lagrange
Essendo xi 6= xj per i 6= j , tale polinomio esiste sempre ed è univocamente
determinato.
(n)
Le funzioni fondamentali `i dipendono esclusivamente dai punti xi (punti
fondamentali), pertanto risultano univocamente determinate una volta fissati i
punti xi .
INTERPOLAZIONE – p.8/38
Polinomio interpolante di LAGRANGE
ESEMPIO: Siano dati i seguenti punti fondamentali:
x0 = −1
(2)
`0 (x)
=
(2)
`1 (x)
=
(2)
`2 (x)
=
x1 = 0
x2 = 1
(x − 0)(x − 1)
x2 − x
=
(−1 − 0)(−1 − 1)
2
(x + 1)(x − 1)
x2 − 1
=
= 1 − x2
(0 + 1)(0 − 1)
−1
(x + 1)(x − 0)
x2 + x
=
(1 + 1)(1 − 0)
2
se in corrispondenza dei punti sopra vengono assegnati i valori
3
2.8
2.6
2.4
2.2
2
f0 = 1
f1 = 3
f2 = 1:
x2 − x
x2 + x
2
L2 (x; f ) = 1 ·
+ 3 · (1 − x ) + 1 ·
= 3 − 2x2 ;
2
2
1.8
1.6
1.4
1.2
1
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
1
0.8
0.6
0.4
0.2
0
se f0 = −1
f1 = 0
f2 = 1:
x2 − x
x2 + x
2
L2 (x; f ) = −1 ·
+ 0 · (1 − x ) + 1 ·
= x;
2
2
−0.2
−0.4
−0.6
−0.8
−1
−1
INTERPOLAZIONE – p.9/38
Polinomio interpolante di LAGRANGE
Il polinomio interpolante di Lagrange presenta difficoltà di applicazione se si
vogliono aumentare le informazioni su f (x) ovvero il numero di coppie (x i , fi ).
(n)
Poichè le funzioni fondamentali `i
dipendono da tutti i punti xi
⇒ l’inserimento di un nuovo punto obbliga a ricostruire ex-novo tutte le funzioni
fondamentali
ESEMPIO: Se nell’esempio di prima si volesse aggiungere un nuovo punto: (x3 , f3 ) = (2, 3) si ha
(3)
`0 (x)
(3)
`1 (x)
(3)
`2 (x)
(3)
`3 (x)
L3 (x; f )
=
=
=
=
(x − 0)(x − 1)(x − 2)
x3 − 3x2 + 2x
=
(−1 − 0)(−1 − 1)(−1 − 2)
−6
(x + 1)(x − 1)(x − 2)
=
(0 + 1)(0 − 1)(0 − 2)
x3
−
2x2
2
−x+3
(x + 1)(x − 0)(x − 2)
x3 + 3x2 + 2x
=
(1 + 1)(1 − 0)(0 − 2)
−4
(x + 1)(x − 0)(x − 1)
x3 − x
=
(2 + 1)(2 − 0)(2 − 1)
6
3
2.5
2
1.5
1
0.5
0
−0.5
−1
−1.5
−1
−0.5
0
0.5
1
1.5
2
x3 − 3x2 + 2x
x3 − 2x2 − x + 3
x3 + 3x2 + 2x
x3 − x
= −1 ·
+0·
+1·
+3·
−6
2
−4
6
INTERPOLAZIONE – p.10/38
Polinomio interpolante di LAGRANGE
Conviene esprimere in una forma diversa il polinomio interpolante, in modo da poter
aggiungere dei punti senza modificare i calcoli precedenti.
Sia Ln (x; f ) il polinomio di grado ≤ n interpolante (xi , fi ), i = 0, 1, . . . , n,
supponiamo di voler aggiungere la nuova coppia (xn+1 , fn+1 ), si vuol ottenere
Ln+1 (x; f ) ∈ IPn+1 :
qualcosa deve:
Ln+1 (xi ; f ) = fi ,
i = 0, 1, . . . , n, n + 1
Ln+1 (x; f ) = Ln (x; f ) + qualcosa
essere un polinomio di grado n + 1
assumere valore zero nei vecchi punti di interpolazione:
qualcosa(xi ) = 0, i = 0, 1, . . . , n
⇒ si esprime qualcosa = Cn+1 ωn+1 (x) = Cn+1 (x − x0 )(x − x1 ) · · · (x − xn ), da cui
Ln+1 (x; f ) = Ln (x; f ) + Cn+1 ωn+1 (x)
Da Ln+1 (xn+1 ; f ) = fn+1 si ottiene:
Cn+1 =
fn+1 − Ln (xn+1 ; f )
ωn+1 (xn+1 )
INTERPOLAZIONE – p.11/38
Polinomio interpolante di NEWTON
Cn+1 ωn+1 (x) = Ln+1 (x; f ) − Ln (x; f ): permette di inserire la nuova coppia di valori
(xn+1 , fn+1 ) utilizzando Ln (x; f ). Se si hanno più coppie da inserire:
Ln (x; f )
=
L0 (x; f ) − L0 (x; f ) + L1 (x; f ) − L1 (x; f ) + · · ·
+Ln−1 (x; f ) − Ln−1 (x; f ) + Ln (x; f )
=
L0 (x; f ) + [L1 (x; f ) − L0 (x; f )] + [L2 (x; f ) − L1 (x; f )] + · · ·
+[Ln (x; f ) − Ln−1 (x; f )]
INTERPOLAZIONE – p.12/38
Polinomio interpolante di NEWTON
Cn+1 ωn+1 (x) = Ln+1 (x; f ) − Ln (x; f ): permette di inserire la nuova coppia di valori
(xn+1 , fn+1 ) utilizzando Ln (x; f ). Se si hanno più coppie da inserire:
Ln (x; f )
=
L0 (x; f ) − L0 (x; f ) + L1 (x; f ) − L1 (x; f ) + · · ·
+Ln−1 (x; f ) − Ln−1 (x; f ) + Ln (x; f )
=
L0 (x; f ) + [L1 (x; f ) − L0 (x; f )] + [L2 (x; f ) − L1 (x; f )] + · · ·
+[Ln (x; f ) − Ln−1 (x; f )]
f0
C1 ω1
Cn ωn
C2 ω2
INTERPOLAZIONE – p.12/38
Polinomio interpolante di NEWTON
Cn+1 ωn+1 (x) = Ln+1 (x; f ) − Ln (x; f ): permette di inserire la nuova coppia di valori
(xn+1 , fn+1 ) utilizzando Ln (x; f ). Se si hanno più coppie da inserire:
Ln (x; f )
=
L0 (x; f ) − L0 (x; f ) + L1 (x; f ) − L1 (x; f ) + · · ·
+Ln−1 (x; f ) − Ln−1 (x; f ) + Ln (x; f )
=
L0 (x; f ) + [L1 (x; f ) − L0 (x; f )] + [L2 (x; f ) − L1 (x; f )] + · · ·
+[Ln (x; f ) − Ln−1 (x; f )]
f0
=
C1 ω1
f0 +
Pn
C2 ω2
Cn ωn
k=1 Ck ωk (x)
Polinomio interpolante
di Newton Nn (x; f )
Il polinomio nella forma di Newton permette di aggiungere più coppie di valori
sfruttando i calcoli fatti in precedenza.
Se ad esempio si vogliono aggiungere 5 coppie di valori
(xn+1 , fn+1 ), . . . , (xn+5 , fn+5 ) si ha
Ln+5 (x; f ) = f0 +
n+5
X
k=1
Ck ωk (x) = Ln (x; f ) +
n+5
X
Ck ωk (x)
k=n+1
INTERPOLAZIONE – p.12/38
Polinomio interpolante di NEWTON
Assegnata una funzione f (x) definita (almeno) sui punti x 0 , x1 , . . . , xn si definiscono
differenze divise del primo ordine relativamente agli xi le quantità:
f (xi+1 ) − f (xi )
xi+1 − xi
e ricorsivamente differenze divise di ordine k
f [xi , xi+1 ] :=
f [xi+1 , . . . , xi+k ] − f [xi , . . . , xi+k−1 ]
xi+k − xi
e per definizione differenza divisa di ordine 0:
f [xi , xi+1 , . . . , xi+k ] :=
f [xi ] := f (xi )
I calcoli possono essere organizzati in tabelle:
xi
f (xi )
f [xi , xi+1 ]
f [xi , xi+1 , xi+2 ]
x0
f (x0 )
x1
f (x1 )
f [x0 , x1 ]
x2
f (x2 )
f [x1 , x2 ]
f [x0 , x1 , x2 ]
x3
f (x3 )
f [x2 , x3 ]
f [x1 , x2 , x3 ]
f [xi , xi+1 , xi+2 , xi+3 ]
f [x0 , x1 , x2 , x3 ]
INTERPOLAZIONE – p.13/38
Polinomio interpolante di NEWTON
Assegnata una funzione f (x) definita (almeno) sui punti x 0 , x1 , . . . , xn si definiscono
differenze divise del primo ordine relativamente agli xi le quantità:
f (xi+1 ) − f (xi )
xi+1 − xi
e ricorsivamente differenze divise di ordine k
f [xi , xi+1 ] :=
f [xi+1 , . . . , xi+k ] − f [xi , . . . , xi+k−1 ]
xi+k − xi
e per definizione differenza divisa di ordine 0:
f [xi , xi+1 , . . . , xi+k ] :=
f [xi ] := f (xi )
I calcoli possono essere organizzati in tabelle:
xi
f (xi )
f [xi , xi+1 ]
x0
f (x0 )
x1
f (x1 )
f [x0 , x1 ] =
x2
f (x2 )
f [x1 , x2 ] =
x3
f (x3 )
f [x2 , x3 ] =
f (x1 )−f (x0 )
x1 −x0
f (x2 )−f (x1 )
x2 −x1
f (x3 )−f (x2 )
x3 −x2
f [xi , xi+1 , xi+2 ]
f [x0 , x1 , x2 ] =
f [x1 , x2 , x3 ] =
f [x1 ,x2 ]−f [x0 ,x1 ]
x2 −x0
f [x2 ,x3 ]−f [x1 ,x2 ]
x3 −x1
f [xi , xi+1 , xi+2 , xi+3 ]
f [x0 , x1 , x2 , x3 ] =
f [x1 ,x2 ,x3 ]−f [x0 ,x1 ,x2 ]
x3 −x0
INTERPOLAZIONE – p.13/38
Polinomio interpolante di NEWTON
ESEMPIO: Date le coppie (−2, 2), (−1, 3), (0, 1)
xi
f (xi )
−2
2
−1
3
0
1
f [xi , xi+1 ]
f [xi , xi+1 , xi+2 ]
3−2
=1
−1+2
1−3
= −2
0+1
−2−1
0+2
= − 32
Per costruzione le differenze divise sono funzioni simmetriche degli argomenti:
f [x1 , x2 , x3 ] = f [x2 , x1 , x3 ]
Si dimostra
f [x0 , x1 , . . . , xk ] = Ck
Nn (x; f ) = f0 +
Pn
k=1
⇒
f [x0 , x1 , . . . , xk ]ωk (x)
INTERPOLAZIONE – p.14/38
Polinomio interpolante di NEWTON
ESEMPIO: Date le coppie (0, 0), (1, 1), (2, 0), (3, 1):
Tavola differenze divise
xi
f (xi )
0
0
1
1
1−0
1−0
= 1
2
0
0−1
2−1
= −1
−1−1
2−0
3
1
1−0
3−2
=1
1+1
3−1
Polinomio interpolante:
N3 (x; f )
=
f0 +
f [x0 , x1 ]
3
X
f [x0 , x1 , x2 ]
f [x0 , . . . , x3 ]
= −1
=1
1+1
3−0
=
2
3
f [x0 , x1 , . . . , xk ]ωk (x)
k=1
=
f0 + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ) +
f [x0 , . . . , x3 ](x − x0 )(x − x1 )(x − x2 )
=
0 + 1(x − 0) −1(x − 0)(x − 1) +
=
1
(2x3 − 9x2 + 10x)
3
2
(x − 0)(x − 1)(x − 2)
3
INTERPOLAZIONE – p.15/38
Polinomio interpolante di NEWTON
ESEMPIO: Date le coppie (0, 0), (1, 1), (2, 0), (3, 1):
Tavola differenze divise
xi
f (xi )
0
0
1
1
1−0
1−0
= 1
2
0
0−1
2−1
= −1
−1−1
2−0
3
1
1−0
3−2
=1
1+1
3−1
Polinomio interpolante:
N3 (x; f )
=
f0 +
f [x0 , x1 ]
3
X
f [x0 , x1 , x2 ]
f [x0 , . . . , x3 ]
= −1
1+1
3−0
=1
=
2
3
1.2
f [x0 , x1 , . . . , xk ]ωk (x)
1
k=1
=
0.8
f0 + f [x0 , x1 ](x − x0 ) + f [x0 , x1 , x2 ](x − x0 )(x − x1 ) +
0.6
f [x0 , . . . , x3 ](x − x0 )(x − x1 )(x − x2 )
0.4
=
2
(x − 0)(x − 1)(x − 2)
3
0.2
0 + 1(x − 0) −1(x − 0)(x − 1) +
0
=
1
(2x3 − 9x2 + 10x)
3
−0.2
0
0.5
1
1.5
2
2.5
3
INTERPOLAZIONE – p.15/38
Sia la forma di Lagrange che di Newton permettono la costruzione di semplici
algoritmi
Per la forma di Newton: è facile costruire un algoritmo separando i due passi:
costruzione delle differenze divise
calcolo del valore del polinomio utilizzando (schema di Hörner)
p(x) = a0 + a1 x + · · · + an xn →
p(x) = a0 + x(a1 + x(a2 + · · · + x(an−1 + an x) · · · ))
INTERPOLAZIONE – p.16/38
Errore di interpolazione
Per costruzione e in assenza di errori di arrotondamento, dati (x i , fi ) : i = 0, 1, . . . , n
con xi ∈ [a, b] il polinomio intepolante soddisfa Ln (xi ; f ) = fi ⇒
se si conoscono solo i valori (xi , fi ) non ha senso porsi il problema dello
studio dell’errore
se fi = f (xi ) con f (x) funzione nota in forma esplicita, studiare l’errore
significa esaminare il comportamento del polinomio L n (x; f ) rispetto alla
funzione f (x) in punti x distinti dai punti xi , ovvero studiare la funzione errore:
e(x) = f (x) − Ln (x; f )
Poichè Ln (x; f ) interpola f (x) nei punti xi , si ha
e(xi ) = 0,
i = 0, 1, . . . , n,
⇒
e(x) = (x − x0 ) · · · (x − xn )R(x)
e(x) = ωn+1 (x)R(x)
Se f ∈ C n+1 [a, b] si può dare una valutazione di R(x).
INTERPOLAZIONE – p.17/38
Errore di interpolazione
Sia f ∈ C n+1 [a, b] e sia
F (t) = f (t) − Ln (t; f ) − ωn+1 (t)R(x)
e ξ1 = min{x0 , x1 , . . . , xn , x}, ξ2 = max{x0 , x1 , . . . , xn , x}.
F (t) si annulla per t = xi , i = 0, 1, . . . , n e per t = x. (n + 2 zeri)
Per il teorema di Rolle
esistono almeno n + 1 punti in (ξ1 , ξ2 ) in cui si annulla F 0 (t)
esistono almeno n punti in (ξ1 , ξ2 ) in cui si annulla F 00 (t)
..
.
esiste almeno 1 punto ξ ∈ (ξ1 , ξ2 ) in cui si annulla F (n+1) (t)
F (n+1) (ξ) = f (n+1) (ξ) − (n + 1)!R(x) = 0
⇒
R(x) =
f (n+1) (ξ)
(n+1)!
Se ∀x ∈ [a, b] si ha |f (n+1) (x)| ≤ M ⇒
|R(x)| ≤
M
(n + 1)!
INTERPOLAZIONE – p.18/38
Errore di interpolazione
Se f ∈
/ C n+1 [a, b] si può dare una valutazione di R(x) in altri termini.
Sia (xn+1 , fn+1 ) = (x, f (x)) con x 6= xi , i = 0, 1, . . . , n:
Ln+1 (t; f ) = Ln (t; f ) + f [x0 , x1 , . . . , xn , x]ωn+1 (t)
per
t=x:
Ln+1 (x; f ) = f (x) = Ln (x; f ) + f [x0 , x1 , . . . , xn , x]ωn+1 (x) ⇒
e(x) = f (x) − Ln (x; f ) = f [x0 , x1 , . . . , xn , x]ωn+1 (x)
Se f ∈ C
n+1
f (n+1) (ξ)
[a, b] ⇒ f [x0 , x1 , . . . , xn , x] =
,
(n + 1)!
ξ ∈ (ξ1 , ξ2 )
In conclusione
e(x) = ωn+1 (x) R(x), R(x) =


f (n+1) (ξ)
(n+1)!
,
 f [x , x , . . . , x , x] ,
n
0
1
se f ∈ C n+1 [a, b]
sef ∈
/ C n+1 [a, b]
−R(x) dipende dai punti e dalla f (x),
−ωn+1 (x) dipende solo dai punti xi ⇒ si possono determinare i punti xi in modo
che risulti minimo |ωn+1 (x)| qualunque sia x e ridurre così l’errore di interpolazione
INTERPOLAZIONE – p.19/38
ESEMPIO: f (x) =
1
1+25x2
costruiamo il polinomio interpolante su 6, 10 e 15 punti equidistanti in [−1, 1]:
1.2
1.2
1.2
1
1
1
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
0
0
−0.2
−0.2
−0.2
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Il comportamento del polinomio interpolante peggiora al crescere del grado infatti le derivate di
f crescono rapidamente all’aumentare di n
INTERPOLAZIONE – p.20/38
ESEMPIO: f (x) =
1
1+25x2
costruiamo il polinomio interpolante su 6, 10 e 15 punti equidistanti in [−1, 1]:
1.2
1.2
1.2
1
1
1
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
0
0
−0.2
−0.2
−0.2
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Il comportamento del polinomio interpolante peggiora al crescere del grado infatti le derivate di
f crescono rapidamente all’aumentare di n
se i nodi vengono scelti opportunamente il risultato migliora
1.2
1.2
1.2
1
1
1
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
0
0
−0.2
−0.2
−0.2
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.4
−1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
INTERPOLAZIONE – p.20/38
Punti fondamentali equidistanti
Nella pratica è abbastanza naturale considerare punti fondamentali equidistanti:
xi = x0 + ih,
i = 0, 1, . . . , n
in tal caso il polinomio può essere riscritto in modo opportuno.
Dati x ∈ [a, b], e h ≤ (b − a), si definisce operatore differenza finita in avanti del
primo ordine l’operatore ∆:
∆f (x) := f (x + h) − f (x)
e ricorsivamente operatore differenza finita in avanti di ordine k l’operatore ∆k :
∆k f (x) := ∆(∆k−1 f (x))
e per definizione differenza finita di ordine 0:
∆0 f (x) := f (x)
I calcoli possono essere organizzati in tabelle:
x
f (x)
∆f (x)
x0
f0
x1
f1
∆f0 = f1 − f0
x2
f2
∆f1 = f2 − f1
x3
f3
∆f2 = f3 − f2
∆2 f (x)
∆2 f0 = ∆f1 − ∆f0
∆2 f1 = ∆f2 − ∆f1
∆3 f (x)
∆3 f0 = ∆(∆2 f0 )
INTERPOLAZIONE – p.21/38
Punti fondamentali equidistanti
Si dimostra per induzione che per nodi equidistanti: f [x 0 , . . . , xk ] =
Posto t =
x−x0
h
⇒
x − x0 = ht
ht + x0 = x
⇒
∆k f (x0 )
hk k!
x − xi = h(t − i)
hi + x0 = xi
Sostituendo nella forma di Newton:
n
X
Nn (x; f ) = f0 +
f [x0 , x1 , . . . , xk ](x − x0 ) · · · (x − xk−1 )
k=1
Nn (t; f )
=
=
=
n
X
∆ k f0
f0 +
· ht · h(t − 1) · h(t − 2) · · · h(t − k + 1)
k k!
h
k=1
n
X
∆ k f0 k
f0 +
h t(t − 1)(t − 2) · · · (t − k + 1)
k k!
h
k=1
f0 +
∆ k f0 k
k=1 k! h rk−1 (t)
Pn
Polinomio interpolante di
Gregory-Newton in (avanti)
dove rn (t) = t(t − 1)(t − 2) · · · (t − n) polinomio fattoriale (con r0 (t) = t).
Esiste anche il polinomio interpolante di Gregory-Newton all’indietro
INTERPOLAZIONE – p.22/38
Punti fondamentali equidistanti
Sostituendo nella forma di Lagrange:
Ln (x; f )
=
con
(n)
(n)
(n)
f0 `0 (x) + f1 `1 (x) + . . . + fn `n (x)
Qn
j=0 (x − xj )
(n)
j6=i
`i (x) = Qn
j=0 (xi − xj )
j6=i
Ln (t; f )
=
n
X
fj
r
(t)
n
n
(−1)n
(−1)j
f0 +
j t−j
n!
j=0
INTERPOLAZIONE – p.23/38
Esercizio 1:
Assegnate le coppie di valori {xi , fi }3
i=0 , con x0 = −2, x1 = −1, x2 = 2, x3 = 3 e f0 = −2,
f1 = −1, f2 = 2, f3 = 4, si chiede di costruire:
i) il polinomio p(x) che interpola le coppie di valori assegnati;
ii) il polinomio q(x) che interpola, oltre alle coppie di valori assegnati, anche il punto (0,0).
i) Poichè in ii) si richiede di aggiungere un ulteriore punto ai dati, conviene utilizzare il polinomio
interpolante nella forma di Newton:
p(x) = f0 +
f [x0 , . . . , xi ]ωi (x).
i=1
Tabella delle differenze divise:
f [xi , xi+1 ]
3
X
xi
fi
f [xi , . . . , xi+2 ]
−2
−2
−1
−1
1
2
2
1
0
3
4
2
1
4
f [xi , . . . , xi+3 ]
1
20
Polinomio interpolante
p(x)
=
−2 + 1(x + 2) + 0(x + 2)(x + 1) +
p(x)
=
1 3
(x + x2 + 16x − 4)
20
1
(x + 2)(x + 1)(x − 2)
20
INTERPOLAZIONE – p.24/38
... continua
ii) Tabella delle differenze divise:
xi
fi
f [xi , xi+1 ]
f [xi , . . . , xi+2 ]
−2
−2
−1
−1
1
2
2
1
0
3
4
2
0
0
4
3
1
4
1
3
f [xi , . . . , xi+3 ]
f [xi , . . . , xi+4 ]
1
20
1
12
1
60
Polinomio interpolante
q(x) = p(x) +
q(x) =
1
(x + 2)(x + 1)(x − 2)(x − 3)
60
1 4
(x + x3 − 4x2 + 56x)
60
INTERPOLAZIONE – p.25/38
... continua
ii) Tabella delle differenze divise:
xi
fi
f [xi , xi+1 ]
f [xi , . . . , xi+2 ]
−2
−2
−1
−1
1
2
2
1
0
3
4
2
0
0
4
3
1
4
1
3
f [xi , . . . , xi+3 ]
f [xi , . . . , xi+4 ]
1
20
1
12
1
60
Polinomio interpolante
q(x) = p(x) +
5
q(x) =
4
1
(x + 2)(x + 1)(x − 2)(x − 3)
60
1 4
(x + x3 − 4x2 + 56x)
60
3
2
1
0
−1
−2
−3
−2
INTERPOLAZIONE – p.25/38
−1
0
1
2
3
Esercizio 2:
Assegnati i punti {(xi , fi )}3
i=0 , con x0 = 0, x1 = −1, x2 = 1, x3 = 3, ed
f0 = 0, f1 = −3, f2 = 0, f3 = 3; si determini:
i) il polinomio interpolante nella forma di Newton;
ii) il polinomio interpolante nella forma di Lagrange;
iii) il valore del polinomio interpolante nel punto x = 2.
i) Polinomio interpolante di grado 3 nella forma di Newton:
N3 (x) = f0 +
Tabella delle differenze divise:
xi
fi
f [xi , xi+1 ]
f [xi , . . . , xi+2 ]
0
0
−1
−3
1
0
3/2
−3/2
3
3
3/2
0
3
X
f [x0 , . . . , xi ]ωi (x).
i=1
f [xi , . . . , xi+3 ]
3
1/2
Polinomio interpolante
3
1
(x − 0)(x + 1) + (x − 0)(x + 1)(x − 1)
2
2
N3 (x)
=
0 + 3(x − 0) −
N3 (x)
=
1 3
3
x − x2 + x
2
2
INTERPOLAZIONE – p.26/38
... continua
ii) Polinomio interpolante di grado 3 nella forma di Lagrange:
L3 (x) =
3
X
(3)
fi `i (x),
(3)
`i (x)
:=
i=0
(3)
(3)
Q3
j=0,j6=i (x − xj )
Q3
j=0,j6=i (xi − xj )
Dato che f0 = f2 = 0, si costruisce solo `1 (x) e `3 (x):
(3)
=
(3)
=
`1 (x)
`3 (x)
x(x − 1)(x − 3)
1
= − (x3 − 4x2 + 3x)
(−1 − 0)(−1 − 1)(−1 − 3)
8
x(x + 1)(x − 1)
1 3
=
(x − x)
(3 − 0)(3 + 1)(3 − 1)
24
Polinomio interpolante
(3)
(3)
3 3
3 3
(x − 4x2 + 3x) +
(x − x)
8
24
L3 (x)
=
f1 `1 (x) + f3 `3 (x) =
L3 (x)
=
1 3
3
x − x2 + x = N3 (x)
2
2
iii) N3 (2) = L3 (2) = 0.
INTERPOLAZIONE – p.27/38
... continua
ii) Polinomio interpolante di grado 3 nella forma di Lagrange:
L3 (x) =
3
X
(3)
fi `i (x),
(3)
`i (x)
:=
i=0
(3)
(3)
Q3
j=0,j6=i (x − xj )
Q3
j=0,j6=i (xi − xj )
Dato che f0 = f2 = 0, si costruisce solo `1 (x) e `3 (x):
(3)
=
(3)
=
`1 (x)
`3 (x)
x(x − 1)(x − 3)
1
= − (x3 − 4x2 + 3x)
(−1 − 0)(−1 − 1)(−1 − 3)
8
x(x + 1)(x − 1)
1 3
=
(x − x)
(3 − 0)(3 + 1)(3 − 1)
24
Polinomio interpolante
3
2
1
0
(3)
(3)
3 3
3 3
(x − 4x2 + 3x) +
(x − x)
8
24
L3 (x)
=
f1 `1 (x) + f3 `3 (x) =
L3 (x)
=
1 3
3
x − x2 + x = N3 (x)
2
2
−1
iii) N3 (2) = L3 (2) = 0.
−2
−3
−1
0
1
2
3
INTERPOLAZIONE – p.27/38
Esercizio 3:
Assegnati i punti {(xi , fi )}3
i=0 , con x0 = 0, x1 = 1, x2 = 3, x3 = 5, ed f0 = 0, f1 = 3,
f2 = 3, f3 = 7;
i) si determini il polinomio interpolante nella forma di Newton;
ii) si determini il polinomio interpolante nella forma di Lagrange;
iii) se la coppia (5, 7) diventasse (6, 8) in quale espressione risulterebbe pi ù conveniente scrivere il
nuovo polinomio interpolante? Motivare la risposta.
iv) se nel punto x0 = 0 il valore f0 diventasse −1, e quindi la coppia (0, 0) diventasse (0, −1), in
quale espressione risulterebbe più conveniente scrivere il nuovo polinomio interpolante?
i) Polinomio interpolante nella forma di Newton
N3 (x) = f0 +
Tabella delle differenze divise:
xi
fi
f [xi , xi+1 ]
0
0
1
3
3
3
3
0
−1
5
7
2
1/2
3
X
i=1
f [xi , . . . , xi+2 ]
f [x0 , . . . , xi ]ωi (x), ωi (x) = (x−x0 ) · · · (x−xi−1 )
f [xi , . . . , xi+3 ]
3/10
INTERPOLAZIONE – p.28/38
... continua
N3 (x) = 0 + 3(x − 0) − 1(x − 0)(x − 1) +
N3 (x) =
3
(x − 0)(x − 1)(x − 3)
10
1
(3x3 − 22x2 + 49x)
10
ii) Polinomio interpolante di grado 3 nella forma di Lagrange:
L3 (x) =
3
X
(3)
fi `i (x),
i=0
(3)
(3)
Q3
j=0,j6=i (x
`i (x) := Q3
j=0,j6=i (xi
− xj )
− xj )
Dato che f0 = 0, non si costruisce `0 (x).
(3)
`1 (x) =
(3)
`2 (x) =
(3)
`3 (x) =
x(x − 3)(x − 5)
1
= (x3 − 8x2 + 15x)
(1 − 0)(1 − 3)(1 − 5)
8
x(x − 1)(x − 5)
1
= − (x3 − 6x2 + 5x)
(3 − 0)(3 − 1)(3 − 5)
12
x(x − 1)(x − 3)
1 3
=
(x − 4x2 + 3x)
(5 − 0)(5 − 1)(5 − 3)
40
INTERPOLAZIONE – p.29/38
... continua
L3 (x)
=
=
=
=
(3)
(3)
(3)
f1 `1 (x) + f2 `2 (x) + f3 `3 (x)
3 3
1
7 3
(x − 8x2 + 15x) − (x3 − 6x2 + 5x) +
(x − 4x2 + 3x)
8
4
40
1
(12x3 − 88x2 + 196x)
40
1
(3x3 − 22x2 + 49x) = N3 (x)
10
9
8
7
6
5
4
3
2
1
0
−1
−2
−1
0
1
2
3
4
5
6
INTERPOLAZIONE – p.30/38
... continua
iii) se la coppia (5, 7) diventasse (6, 8) risulta più conveniente scrivere il nuovo polinomio interpolante
nella forma di Newton, in quanto occorre modificare solo l’ultima riga della tabella delle differenze
divise:
xi
fi
f [xi , xi+1 ]
f [xi , . . . , xi+2 ]
0
0
1
3
3
3
3
0
−1
6
8
5/3
1/3
f [xi , . . . , xi+3 ]
2/9
2
N 3 (x) = 0 + 3(x − 0) − 1(x − 0)(x − 1) + (x − 0)(x − 1)(x − 3)
9
mentre nella forma di Lagrange si devono ricalcolare tutte le funzioni fondamentali.
9
8
7
6
5
4
3
2
1
0
−1
−2
−1
0
1
2
3
4
5
6
INTERPOLAZIONE – p.31/38
... continua
iv) se nel punto x0 = 0 il valore f0 diventasse −1, risulterebbe più conveniente scrivere il nuovo
polinomio interpolante nella forma Lagrange, in quanto si possono riutilizzare le funzioni fondamentali
(3)
e aggiungere solo il termine f0 `0 :
(3)
L3 (x) = L3 (x) + f0 `0 (x)
mentre nella forma di Newton occorre ricalcolare l’intera tabella delle differenze divise e tutti i polinomi
ωi (x).
9
8
7
6
5
4
3
2
1
0
−1
−2
−1
0
1
2
3
4
5
6
INTERPOLAZIONE – p.32/38
Esercizio 4:
√
x con x quadrato non perfetto, si considerando le radici quadrate di 3
numeri x0 , x1 , x2 che siano i quadrati più vicini a x. Si costruisce il polinomio interpolante i valori
√
(xi , xi ), i = 0, 1, 2 e si valuta in x = 0.6.
Per approssimare il valore
Si considerano:
x0 = 0.49
x1 = 0.64
x2 = 0.81
f0 = 0.7
f1 = 0.8
f2 = 0.9.
Si costruisce il polinomio di Lagrange L2 (x) interpolante i punti (xi , fi ), i = 0, 1, 2:
L2 (x) =
(2)
=
(2)
=
(2)
=
`0 (x)
`1 (x)
`2 (x)
2
X
i=0
(2)
fi `i (x),
(2)
Q2
j=0,j6=i (x
`i (x) := Q2
j=0,j6=i (xi
− xj )
− xj )
;
(x − 0.64)(x − 0.81)
1
=
(x2 − 1.45x + 0.5184)
(0.49 − 0.64)(0.49 − 0.81)
0.048
(x − 0.49)(x − 0.81)
1
=−
(x2 − 1.3x + 0.3969)
(0.64 − 0.49)(0.64 − 0.81)
0.0255
(x − 0.49)(x − 0.64)
1
=
(x2 − 1.13x + 0.3136)
(0.81 − 0.49)(0.81 − 0.64)
0.0544
INTERPOLAZIONE – p.33/38
... continua
Polinomio interpolante
L2 (x)
(2)
(2)
(2)
=
f0 `0 (x) + f1 `1 (x) + f2 `2 (x)
=
(0.7)
+
1
1
(x2 − 1.45x + 0.5184) − (0.8)
(x2 − 1.3x + 0.3969)
0.048
0.0255
1
(0.9)
(x2 − 1.13x + 0.3136)
0.0544
Valutiamo il polinomio in x = 0.6:
L2 (0.6) = 0.7744118.
Consideriamo la stima dell’errore di interpolazione per x ∈ [0.49, 0.81]:
e3 (x)
=
=
f (3) (ξ)
(x − x0 )(x − x1 )(x − x2 )
3!
1
(x − 0.49)(x − 0.64)(x − 0.81)f (3) (ξ)
6
con ξ ∈ [0.49, 0.81]. Le derivate di f (x) =
1
f 0 (x) = √ ,
2 x
√
x sono
1
f 00 (x) = − √ ,
4 x3
3
f (3) (x) = √ ,
8 x5
INTERPOLAZIONE – p.34/38
... continua
da cui
M3
:=
|e3 (x)|
≤
|e3 (0.6)|
≤
max
[0.49,0.81]
|f (3) (x)| =
max
[0.49,0.81]
3
3
√
= √
,
8 x5
8 0.495
1
√
|(x − 0.49)(x − 0.64)(x − 0.81)|
16 0.495
1
√
|(0.6 − 0.49)(0.6 − 0.64)(0.6 − 0.81)| ' 0.344 10−3
16 0.495
Se calcoliamo l’errore realmente commesso : |
√
0.6 − L2 (0.6)| ' 0.185 10−3 , per cui le prime 3
cifre signifcative sono esatte. Un risultato più preciso si ottiene aumentando di 1 il grado del polinomio
interpolante e condiderando i punti:
x0 = 0.36, x1 = 0.49, x2 = 0.64, x3 = 0.81.
Per esercizio, ripetere la costruzione per tali punti.
INTERPOLAZIONE – p.35/38
Esercizio 5:
Data la funzione
f (x) =
1
3
3
1
ln(1 + x)(1 + x)2 − x2 − x − ,
2
4
2
4
dare una limitazione dell’errore di interpolazione:
|e(x)| = |f (x) − p2 (x)|, x ∈ [0, 2]
dove p2 ∈ IP2 è il polinomio interpolante f nei valori x0 = 0, x1 = 1, x2 = 2.
La formula dell’errore di interpolazione per n = 2 in [0, 2] per f ∈ C 3 [0, 2] si può scrivere:
ω3 (x)
(3)
f (ξ) |e(x)| = |f (x) − p2 (x)| = ω3 (x)
, ξ ∈ [0, 2]
3! =
ω30 (x)
=
max |ω3 (x)|
=
x∈[0,2]
=
(x)(x − 1)(x − 2) = x3 − 3x2 + 2x
√
3
3x2 − 6x + 2 ⇒ ω30 (x) = 0, per x = 1 ±
3
n
o
√
√
max |ω3 (0)| , ω3 1 − 3/3 , ω3 1 + 3/3 , |ω3 (2)|
n √
max ω3 1 − 3/3 ,
√
o
√
2
3
ω
=
3/3
1
+
3
9
INTERPOLAZIONE – p.36/38
... continua
quindi
√
|f (3) (ξ)|
√
|e(x)|
≤
2 3
9
f 0 (x)
=
ln(x + 1)(1 + x) − x − 1,
|e(x)|
≤
3!
=
3 (3)
|f (ξ)|
27
f 00 (x) = ln(x + 1),
f (3) (x) =
√
√
√
3
3
3
max |f (3) (x)| =
|f (3) (0)| =
1 ' 0.0642
27 [0,2]
27
27
1
1+x
INTERPOLAZIONE – p.37/38
Esercizio 6:
Maggiorare l’errore che si commette interpolando la funzione
f (x) = ex , per x ∈ [0, 1]
nei valori x0 = 0, x1 = 1
, x2 = 1.
2
La formula dell’errore di interpolazione per n = 2 in [0, 1] per f ∈ C 3 [0, 1] si può scrivere:
ω3 (x)
ω30 (x)
max |ω3 (x)|
x∈[0,1]
(3)
f (ξ) |e(x)| = |f (x) − p2 (x)| = ω3 (x)
, ξ ∈ [0, 2]
3! 1
3
1
= (x)(x − )(x − 1) = x3 − x2 + x
2
2
2
√
3
1
1
= 3x2 − 3x +
⇒ ω30 (x) = 0, per x = ±
2
2
6
(
)
(
!
√
√ !
√ !)
√ !
1
3 3
3
3 1
1
= max ω3
±
±
±
− ±
= max 2
2
6 6
6
2
6 √ √
3
3
3
1
= − +
=
6
4
36 36
√
√
√ 1
1
3 1
3
3e
⇒ |e(x)| ≤
max |f (3) (x)| =
max ex =
' 0.0218
36 3! [0,1]
36 6 [0,1]
36 6
INTERPOLAZIONE – p.38/38