Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
27 aprile 2021
Sappiamo che, data una funzione f (x) di cui sono noti i valori in n + 1 nodi
distinti xi ∈ [a, b], i = 0, . . . , n, esiste ed è unico il polinomio di interpolazione pn (x)
di grado al più n tale che pn (xi ) = f (xi ), i = 0, . . . , n. In generale, non è detto che
aumentando n l’approssimazione di f (x) mediante pn (x) migliori. Infatti, indicato
con Nn = {x0,n , x1,n , . . . , xn,n } l’insieme dei nodi dell’interpolazione per il grado n,
anche supponendo che i nodi vengano infittiti in modo abbastanza uniforme, cioè
che
lim max |xi+1,n − xi,n | = 0,
n→∞ i
è possibile dimostrare (teorema di Faber) che per ogni prefissata successione di
insiemi Nn , esiste una funzione f (x) continua in [a, b] tale che pn (x) non converge
uniformemente ad f (x) in [a, b].
Nella pratica non è quindi garantito che, aumentando il numero n di nodi, una
data funzione f (x) sia approssimata, con una tolleranza fissata, dal polinomio inter-
polante. D’altro canto sappiamo, dalla teoria dell’approssimazione, che una funzione
f ∈ C[a, b] può essere arbitrariamente ben approssimata da un polinomio. Purtroppo
tale polinomio approssimante in generale non interpola la funzione in nodi prefissati.
Se invece l’uguaglianza dei valori nei nodi è fondamentale, come ad esempio nella
grafica, bisogna ricorrere a funzioni che coincidono a tratti con polinomi di grado
basso.
Supponendo che i nodi siano ordinati in [a, b], cioè
si definisce polinomiale a tratti su [a, b] una funzione t(x) che sull’i-esimo sottoin-
tervallo [xi , xi+1 ] coincide con un polinomio ti (x) di grado prefissato k. La t(x) può
essere rappresentata per mezzo di una matrice A di ordine n la cui i-esima riga
i
ai,k , ai,k−1 , . . . ai,0
1
In questo capito studiamo alcune funzioni polinomiali a tratti usate nella pratica.
Per semplicità si denota fi = f (xi ), fi0 = f 0 (xi ) e hi = xi+1 − xi .
quindi
f (x) − t0i (x) ≤ 1 M2 hi ≤ 1 M2 H,
0
2 2
da cui segue la convergenza per H → 0 delle singole t0i (x), e quindi della t0 (x) su
ciascun intervallo, alla funzione continua f 0 (x).
2
2 Interpolazione polinomiale cubica a tratti di Hermite
In questo caso f ∈ C 1 ([a, b]), i polinomi ti (x) hanno grado al più 3, t(x) coincide
con f (x) sui nodi xi , t(x) è derivabile e t0 (x) coincide con f 0 (x) sui nodi xi . Quindi
t(x) = ti (x) per x ∈ [xi , xi+1 ], dove
y 3 y 2
ti (x) = 2 fi − fi+1 + hi fi0 + fi+1
0
− 3 fi − fi+1 + hi 2fi0 + fi+1
0
3 +
hi h2i
+ fi0 y + fi , y = x − xi .
3 Funzioni spline
Le polinomiali cubiche di Hermite non sono utilizzabili nel caso, frequente nella
pratica, in cui i valori fi0 non sono noti. Per ovviare a questa difficoltà, si posso-
no costruire polinomiali a tratti che siano sufficientemente regolari, anche se non
conosciamo il valore della derivata di f .
1. s(xi ) = f (xi ), i = 0, . . . , n;
3
3. s(x) ∈ C k−2 [a, b].
Nel caso k = 2 la funzione spline coincide con la funzione ottenuta con l’inter-
polazione lineare a tratti (sezione 1). Se k > 2 allora la funzione spline è almeno di
classe C 1 , anche se non conosciamo la derivata di f .
Poiché i coefficienti dei polinomi si (x) sono 4n, per determinare i polinomi si (x)
occorrerà imporre due condizioni aggiuntive, che vedremo successivamente.
Si definiscono i momenti
Teorema 2. Una spline cubica coincide in ciascun intervallo [xi , xi+1 ] con il poli-
nomio di grado al più 3
(x − xi )3 (x − xi+1 )3
si (x) = µi+1 − µi + αi (x − xi ) + βi , i = 0, . . . , n − 1, (2)
6hi 6hi
dove
h2i fi+1 − fi hi
βi = fi − µi , αi = − (µi+1 − µi ), i = 0, . . . , n − 1, (3)
6 hi 6
hi = xi+1 − xi e i momenti µi , i = 0, . . . , n, risolvono le n − 1 equazioni
dove
fi+1 − fi fi − fi−1
fi−1,i,i+1 = − .
hi hi−1
4
Dimostrazione. Poiché si (x) per x ∈ [xi , xi+1 ] è un polinomio di grado al più 3,
s00i (x) è il polinomio di grado al più 1
x − xi x − xi+1
s00i (x) = µi+1 − µi . (5)
hi hi
Integrando due volte si ottiene
(x − xi )2 (x − xi+1 )2
s0i (x) = µi+1 − µi + αi ,
2hi 2hi
(6)
(x − xi )3 (x − xi+1 )3
si (x) = µi+1 − µi + αi (x − xi ) + βi .
6hi 6hi
Le costanti αi e βi vengono determinate imponendo le condizioni a)
h2
µi i + βi = fi
6
h2
µi+1 i + αi hi + βi = fi+1 ,
6
da cui otteniamo (3). Restano quindi da calcolare i µi , i = 0, . . . , n. Dalle (6),
imponendo le condizioni b) e sostituendo αi−1 e αi , si ottengono le n − 1 equazioni
(4).
d1) s000 (x0 ) = s00n−1 (xn ) = 0 (spline naturale), che impone alla spline un andamento
lineare vicino agli estremi
d2) se sono noti f 0 (a) e f 0 (b), s00 (x0 ) = f 0 (a), s0n−1 (xn ) = f 0 (b) (spline completa),
che impone alla spline la tangenza alla f (x) negli estremi. Se i valori f 0 (a) e
f 0 (b) non fossero disponibili, si potrebbero sostituire con delle approssimazio-
ni. Ad esempio, f 0 (a) potrebbe essere approssimato con la derivata in a del
polinomio che interpola la f (x) su a e sui tre nodi successivi.
d3) Se le derivate agli estremi non sono note, può essere conveniente richiedere che
s000 (x) sia continua nel secondo e nel penultimo nodo, cioè s000 000
0 (x1 ) = s1 (x1 )
e s000 000
n−2 (xn−1 ) = sn−1 (xn−1 ), e la corrispondente spline è chiamata not–a–
knot spline. Poiché si (x) sono polinomi di grado al più 3, le condizioni sono
equivalenti a s000 000 000 000
0 (x) = s1 (x) e sn−2 (x) = sn−1 (x).
d4) Nel caso di una funzione f (x) periodica di periodo b − a, si definisce una spline
periodica tale che s00 (x0 ) = s0n−1 (xn ) e s000 (x0 ) = s00n−1 (xn ).
5
Sulla derivata seconda si potrebbero imporre anche altre condizioni, per esempio
s000 (x0 ) = σ0 e s00n−1 (xn ) = σn , dove σ0 e σn sono valori assegnati, oppure s000 (x0 ) =
s000 (x1 ) e s00n−1 (xn−1 ) = s00n−1 (xn ), assumendo che la derivata seconda sia costante
vicino agli estremi dell’intervallo [a, b].
Esempio 3. Consideriamo la funzione f (x) = x sin(2πx+1), x ∈ [a, b], con a = −1
e b = 0.5. Scegliamo nodi equidistanti con n = 5, x0 = a e x5 = b. La figura 1
mostra il grafico di f (x), i punti dell’interpolazione e il grafico delle spline not–a–
knot, naturale e completa. Si osserva che l’approssimazione è molto diversa, con le
diverse spline, agli estremi dell’intervallo. In particolare la spline completa è la più
accurata.
0.5
Interp. points
-0.5 Exact function
Not a knot
Natural
Complete
-1
-1 -0.5 0 0.5
µ0 = 0 e µn = 0.
Dunque, dalle (4), troviamo che i µi sono soluzione del sistema lineare,
µ1 f0,1,2
µ2 f1,2,3
M ... = 6
..
, (7)
.
µn−2 fn−3,n−2,n−1
µn−1 fn−2,n−1,n
dove
2(h0 + h1 ) h1
h 1 2(h1 + h2 ) h2
M=
. .. . .. .. . (8)
.
hn−3 2(hn−3 + hn−2 ) hn−2
hn−2 2(hn−2 + hn−1 )
6
Per la spline completa, dalle d2) si ha:
h0 h0 f1 − f0
s00 (x0 ) = −µ0 − µ1 + = f00 ,
3 6 h0
hn−1 hn−1 fn − fn−1
s0n−1 (xn ) = µn−1 + µn + = fn0 ,
6 3 hn−1
dove f00 = f 0 (a) e fn0 = f 0 (b) sono assegnati. Si ottiene
dove
f1 − f0 fn − fn−1
f0,0,1 = − f00 e fn−1,n,n = fn0 − .
h0 hn−1
Quindi, da (4), i µi sono soluzione del sistema lineare
µ0 f0,0,1
µ1 f0,1,2
.. ..
M . = 6 , (10)
.
µn−1 fn−2,n−1,n
µn fn−1,n,n
dove
2 h0 h0
h0 2(h0 + h1 ) h1
M=
.. .. .. .
(11)
. . .
hn−2 2(hn−2 + hn−1 ) hn−1
hn−1 2 hn−1
Per la spline not-a-knot le condizioni in d3), cioè s000 000 000
0 (x) = s1 (x) e sn−2 (x) =
s000
n−1 (x),
dalla (5), si scrivono come
µ1 µ0 µ 2 µ1 µn−1 µn−2 µn µn−1
− = − , − = − ,
h0 h0 h1 h1 hn−2 hn−2 hn−1 hn−1
da cui ricaviamo le equazioni
h1 µ0 − (h0 + h1 )µ1 + h0 µ2 = 0,
hn−1 µn−2 − (hn−1 + hn−2 )µn−1 + hn−2 µn = 0.
h2 h2
3h0 + 2h1 + 0 µ1 + h1 − 0 µ2 = 6f0,1,2 .
h1 h1
7
In modo analogo, ci ricaviamo
hn−2 hn−2
µn = µn−1 1 + − µn−2 ,
hn−1 hn−1
e dall’ultima equazione in (4) otteniamo
h2n−1 h2n−1
hn−2 − µn−2 + 3hn−1 + 2hn−2 + µn−1 = 6fn−2,n−1,n .
hn−2 hn−2
Qui i µi , i = 1, . . . , n, risolvono il sistema lineare
µ1 f0,1,2
µ2 f1,2,3
M ... = 6 ..
, (12)
.
µn−2 fn−3,n−2,n−1
µn−1 fn−2,n−1,n
dove
h20 h2
3h0 + 2h1 + h1 h1 − h01
h1 2(h1 + h2 ) h2
M= .. .. ..
.
. . .
hn−3 2(hn−3 + hn−2 ) hn−2
h2n−1 h2n−1
hn−2 − hn−2 3hn−1 + 2hn−2 + hn−2
(13)
Le matrici M in (8), (11) e (13) hanno predominanza diagonale in senso stretto
e quindi sono non singolari. Perciò i sistemi (7), (10) e (12) hanno una e una
sola soluzione, che può essere calcolata con il metodo di Gauss senza scambi di
righe. Inoltre le matrici sono tridiagonali e il metodo di Gauss ha un basso costo
computazionale, dell’ordine di n.
Se i punti xi sono equidistanti, cioè hi = h, per i = 0, . . . , n − 1, la (4) diventa
6 fi+1 − 2fi + fi−1
µi−1 + 4µi + µi+1 = fi−1,i,i+1 , dove fi−1,i,i+1 = , (14)
h h
e le (9) diventano
6 f1 − f0
2µ0 + µ1 = f0,0,1 , dove f0,0,1 = − f00 ,
h h (15)
6 fn − fn−1
µn−1 + 2µn = fn−1,n,n , dove fn−1,n,n = fn0 − .
h h
La matrice del sistema risulta molto semplice. Ad esempio, per le spline naturali
diventa
4 1 µ1 f0,1,2
1 4 1 µ2 f1,2,3
. . .
.
6 .
. . . . . .
. .
=
.
. ,
(16)
h
1 4 1 µn−2 fn−3,n−2,n−1
1 4 µn−1 fn−2,n−1,n
8
mentre per le spline complete e not-a-knot il sistema diventa rispettivamente
2 1 µ0 f0,0,1
1 4 1 µ1 f0,1,2
.. .. ..
..
6
..
= , (17)
. . . . .
h
1 4 1 µn−1 fn−2,n−1,n
1 2 µn fn−1,n,n
e
6 0 µ1 f0,1,2
1 4 1 µ2 f1,2,3
.. .. ..
..
6 ..
= . (18)
. . . . .
h
1 4 1 µn−2 fn−3,n−2,n−1
0 6 µn−1 fn−2,n−1,n
Indichiamo |A| la matrice i cui elementi sono i moduli degli elementi della ma-
trice A. Il seguente risultato è utile per mostrare proprietà di convergenza della
spline completa. Analoghi risultati possono essere dimostrati per le matrici che
intervengono nelle spline naturali e not-a-knot.
Proposizione 4. La matrice M del sistema (17), che interviene nelle spline com-
plete, è tale che kM−1 k∞ ≤ 1 e
1 1
2 1
−1 ..
|M | . = ... .
2 1
1 1
9
raggio spettrale minore di 1. Dunque la matrice W −1 = 14 ∞ i
P
i=0 C ha elementi non
negativi, da cui segue che W −1 −1 −1 −1 −1
= |W | = |DM D | = |M |. D’altra parte
osserviamo che
1 1
1 2
W ... = ... ,
1 2
1 1
da cui segue la tesi perché W −1 = |M−1 |.
h2 00 h3 000 h4 (4)
fi+1 − fi = hfi0 + f (xi ) + f (xi ) + f (ξi,1 ),
2 3! 4! (20)
h2 00 h3 000 h4 (4)
fi−1 − fi = −hfi0 + f (xi ) − f (xi ) + f (ξi,2 ),
2 3! 4!
con ξi,1 , ξi,2 ∈ (a, b), e quindi, per i = 1, . . . , n − 1,
h2 (4)
f 00 (xi+1 ) = f 00 (xi ) + hf 000 (xi ) + f (ξi,3 ),
2 (22)
h2 (4)
f 00 (xi−1 ) = f 00 (xi ) − hf 000 (xi ) + f (ξi,4 ),
2
con ξi,3 , ξi,4 ∈ (a, b), da cui ricaviamo
h2 (4)
f 00 (xi+1 ) + 4f 00 (xi ) + f 00 (xi−1 ) = 6f 00 (xi ) + f (ξi,3 ) + f (4) (ξi,4 ) . (23)
2
10
Inoltre dalla prima equazione in (20) e dalla prima equazione in (22), entrambe lette
con i = 0, deduciamo che
h2 (4)
00 00 6 f1 − f0 0
2f (x0 ) + f (x1 ) = − f0 + f (ξ0,1 ) − 2f (4) (ξ0,3 ) . (24)
h h 4
In modo analogo troviamo che
h2 (4)
00 00 6 0 fn − fn−1
f (xn−1 ) + 2f (xn ) = fn − + f (ξn,2 ) − 2f (4) (ξn,4 ) . (25)
h h 4
Le equazioni (23), (24), (25) possono essere scritte in forma matriciale come
f0,0,1
f 00 (x0 ) f (4) (ξ0,1 ) − 2f (4) (ξ0,3 )
h
f 00 (x1 ) f 00 (x1 ) 2(f (4) (ξ1,3 ) + f (4) (ξ1,4 ))
h2
M .
.. .
.. .
..
= 6 + , (26)
4
00 00
f (xn−1 ) f (xn−1 ) 2(f (4) (ξn−1,3 ) + f (4) (ξn−1,4 ))
f 00 (xn ) fn−1,n,n
f (4) (ξn,2 ) − 2f (4) (ξn,4 )
h
dove M è la matrice del sistema (17). D’altra parte, dalle (15), (17), (21), (24) e
(25), deduciamo che
f0,0,1
µ0 h
0
µ1 f 00 (x1 ) f (4) (ξ ) + f (4) (ξ )
1,1 1,1
h2
M ... = 6 .. + ..
. (27)
00 . 4 (4) .
µn−1 f (xn−1 ) f (ξn−1,1 ) + f (4) (ξn−1,2 )
µn fn−1,n,n
h
0
µ0 − f 00 (x0 )
g0,n
µ1 − f 00 (x1 ) h2 g1,n
M .. ..
= ,
. 4
.
00
µn−1 − f (xn−1 ) gn−1,n
µn − f 00 (xn ) gn,n
µ0 − f 00 (x0 )
g0,n 1 1
00 (x )
µ 1 − f 1
h2
g
1,n 3M h2
3M h2 1
2
.. −1 .
.. 4 −1 .
|M | .. =
4 .
= M ≤ .. ,
. 4 4 4
µn−1 − f 00 (xn−1 )
gn−1,n 2 1
µn − f 00 (xn ) gn,n 1 1
11
Teorema 6. Nell’ipotesi del teorema 5, per la spline completa valgono le limitazioni
000
f (x) − s000 (x) ≤ 2M4 h, per x ∈ [xi , xi+1 ], i = 0, . . . , n − 1,
i
da cui Z x
00 00 00 00
f 000 (t) − s000
f (x) − s (x) = f (xi ) − s (xi ) + j (t) dt.
xi
12
Quindi per ogni x ∈ [a, b], esiste uno ξi , con |ξi − x| ≤ h, per cui vale la (29), e quindi
Z x
00
f (t) − s00 (t) dt = f 0 (x) − s0 (x).
ξi
Passando ai moduli si ha
f (x) − s0 (x) ≤ 7 M4 h3 .
0
4
In modo analogo si ricava la quarta disuguaglianza, tenendo conto che per ogni
x ∈ [a, b] esiste un indice i per cui |x − xi | ≤ h/2.
µi − f 00 (xi ) ≤ 3 M4 H 2 , per i = 0, . . . , n,
4
2
f (x) − s000 (x) ≤ 2M4 H , per x ∈ [xi , xi+1 ],
000
i i = 0, . . . , n − 1,
hmin
3
f (x) − s00 (x) ≤ 7 M4 H ,
00
4 hmin
4
f (x) − s0 (x) ≤ 7 M4 H ,
0
4 hmin
7 H 5
f (x) − s(x) ≤ M4 , per x ∈ [a, b].
8 hmin
Dal teorema 7 segue che per una funzione f (x) derivabile con continuità fino al
quarto ordine, se si infittiscono i nodi in modo regolare, cioè in modo che il rapporto
H/hmin sia sempre limitato, allora si ha convergenza per H → 0 della spline e delle
sue derivate fino al terzo ordine rispettivamente alla f (x) e alle sue derivate.
Per quanto riguarda le spline not-a-knot possiamo dimostrare dei teoremi ana-
loghi ai teoremi 5, 6 e 7, dove cambiano le costanti nelle limitazioni superiori. In
particolare, nel caso di nodi equidistanti, la differenza tra f (x) e s(x) converge a
zero come O(h4 ). Per la spline naturale la convergenza a zero è invece O(h2 ).
13
0
10
-5
10
-10
10
Not-a-knot spline
Natural spline
Complete spline
-15
10
-1 -0.5 0 0.5
0
10
Not-a-knot spline
Natural spline
Complete spline
Error
-5
10
-10
10
8 16 32 64 128 256 512
N
14
3.1.2 Costo computazionale
Il costo computazionale viene determinato a meno di termini costanti rispetto ad n.
Indicando con A le operazioni additive e con M le operazioni moltiplicative, per la
costruzione dei coefficienti e dei termini noti del sistema lineare (7) sono richieste
4nA e 3nM. Per la risoluzione del sistema tridiagonale sono richieste 3nA e 5nM. Per
il calcolo degli αi e βi sono richieste 3nA e 3nM. Quindi in totale la costruzione della
spline richiede 10nA e 11nM. Una lieve riduzione si ha nel caso dei nodi equidistanti.
Per calcolare il valore della spline in un punto x è necessario prima individuare
l’indice i tale che x ∈ (xi , xi+1 ). Per ottenere i si può usare l’algoritmo banale
(cioè confrontare x successivamente con xj , j = 1, . . . , n − 1) e questo richiede
n − 1 confronti. Se però n è potenza di 2, si può usare l’algoritmo di bisezione (cioè
confrontare x con xn/2 , se x è minore di xn/2 si confronta x con xn/4 , se x è maggiore
di xn/2 si confronta x con x3n/4 , e cosı̀ via). Questo procedimento richiede log2 n
confronti. Una volta trovato i, per calcolare s(x) sono richieste 5A e 9M.
3.1.3 Condizionamento
Studiamo ora il condizionamento del calcolo di s(x) per un x diverso dai nodi.
Consideriamo il caso della spline naturale e supponiamo per semplicità che i nodi
siano equidistanti e non affetti da errore. Scriviamo il sistema (16) nella forma
M µ = b, (30)
dove µ è il vettore dei µi e b è il vettore di componenti bi = 6(fi+1 − 2fi + fi−1 )/h2 .
Supponendo di perturbare i dati del problema da fi a fei = fi + δi , con |δi | ≤ δ, la
corrispondente variazione e b − b del termine noto del sistema (30) risulta maggiorata
in norma infinito da
6 24 δ
ke
b − bk∞ = 2 max δi+1 − 2δi + δi−1 ≤ 2 .
h i=1,n−1 h
Quindi
keµ − µk∞ ke
b − bk∞
≤ K(M) ,
kµk∞ kbk∞
dove µ b e K(M) = kMk∞ kM−1 k∞
e è la soluzione del sistema il cui termine noto è e
è il numero di condizionamento di M in norma infinito. La matrice M è ben
condizionata perché K(M) ≤ 6 per ogni n, poiché kMk∞ = 6 e kM−1 k∞ ≤ 1.
Quindi il problema del calcolo dei µi è ben condizionato. Lo stesso si può dire per la
(3) del calcolo dei coefficienti αi e βi e per la (2) del calcolo di si (x) per x ∈ [xi , xi+1 ].
15
Teorema 9. Fra tutte le funzioni g ∈ C 2 [a, b], tali che g(xi ) = fi , i = 0, . . . , n, la
spline cubica naturale s(x) è quella che minimizza l’integrale
Z b
[g 00 (x)]2 dx. (31)
a
Dimostrazione. Si ha
Z b
0≤ [g 00 (x) − s00 (x)]2 dx
a
Z b Z b Z b (32)
= [g 00 (x)]2 dx − 2 [g 00 (x) − s00 (x)] s00 (x) dx − [s00 (x)]2 dx.
a a a
Per ogni sottointervallo [xi , xi+1 ] si ha, integrando due volte per parti,
Z xi+1 " #xi+1
00 00 00
0 0
00
[g (x) − s (x)] s (x) dx = g (x) − s (x) s (x)
xi
" #xi+1 Z xi
xi+1
g(x) − s(x) s(4) (x) dx.
(3)
− g(x) − s(x) s (x) +
xi
xi
Poiché la s(x) sull’intervallo [xi , xi+1 ] coincide con un polinomio di grado al più 3,
è s(4) (x) = 0. Inoltre s(xi ) = g(xi ), s(xi+1 ) = g(xi+1 ), per cui
Z b n−1
X Z xi+1
00 00 00
[g (x) − s (x)] s (x) dx = [g 00 (x) − s00 (x)] s00 (x) dx
a i=0 xi
n−1
" #xi+1 " #b
X 0 0
00 0 0
00
= g (x) − s (x) s (x) = g (x) − s (x) s (x)
i=0 xi a
e tale espressione è nulla in quanto s00 (a) = s00 (b) = 0. Dalla (32) segue che
Z b Z b
00
[s (x)] dx ≤ 2
[g 00 (x)]2 dx
a a
per ogni funzione g(x) a derivata seconda continua tale che g(xi ) = fi .
Teorema 10. Fra tutte le funzioni g ∈ C 2 [a, b], tali che g(xi ) = fi , i = 0, . . . , n, e
g 0 (a) = f 0 (a) e g 0 (b) = f 0 (b), la spline cubica completa s(x) è quella che minimizza
l’integrale
Z b
[g 00 (x)]2 dx.
a
16
La g 00 (x) è legata alla curvatura della g(x) nel punto x, definita come il reciproco
del raggio del cerchio osculatore in x, e data dall’espressione
L’integrale (31) può allora essere assunto come una misura della curvatura globale
della g(x) se |g 0 (x)| è piccolo rispetto ad 1. Dal teorema 9 risulta quindi che la
spline cubica naturale è quella che minimizza la curvatura globale. Segue anche che
se f ∈ C 2 [a, b], allora
Z b Z b
00 2
[s (x)] dx ≤ [f 00 (x)]2 dx.
a a
Esempio 11. Costruiamo la spline cubica completa che approssima f (x) = cos(πx)
nei nodi xi = i, i = 0, . . . , n. È hi = xi+1 −xi = 1, f (xi ) = (−1)i , f 0 (x0 ) = f 0 (xn ) =
0. Quindi i momenti risolvono il sistema
2µ0 + µ1 = −12
µi−1 + 4µi + µi+1 = (−1)i+1 24, i = 1, . . . , n − 1,
µn−1 + 2µn = (−1)n+1 12
e
Z b n−1
X Z xi+1 Z x1
[s00 (x)]2 dx = [s00i (x)]2 dx = n [s000 (x)]2 dx
a i=0 xi x0
Z 1
1
= 122 n (x + (x − 1))2 dx = 122 n = 48 n,
0 3
mentre
Z b Z n n
00 2 4 2 4 x sin(2πx n
[f (x)] dx = π cos (πx) dx = π − = π4 ∼ 48.7 n.
a 0 2 4π 0 2
Esempio 12. Una applicazione grafica delle spline consiste nel tracciare una curva
nel piano che passa attraverso dei punti assegnati di coordinate (xi , yi ), per i =
0, . . . , n. Introduciamo dei nodi ti , i = 0, . . . , n, con ti < ti+1 , e interpretiamo xi e
yi come i valori che opportune funzioni x(t) e y(t) assumono nei nodi ti . Calcoliamo
17
le spline cubiche sx (t) e sy (t) che interpolano le funzioni x(t) e y(t) nei nodi e
tracciamo il grafico della curva parametrica (sx (t), sy (t)), t ∈ [t0 , tn ]. Il seguente
codice genera dei punti random nel piano e traccia una curva che passa attraverso
questi. La figura 4 riporta il risultato ottenuto.
npts = 5;
xy = [randn(1,npts); randn(1,npts)];
hold on
plot(xy(1,:),xy(2,:),’ro’,’LineWidth’,2);
text(xy(1,:), xy(2,:),[repmat(’ ’,npts,1), num2str((1:npts)’)])
t = 0:npts-1; % parametric coordinate
tt = [0:0.01:npts-1]; % interpolant evaluation points
xx = spline(t, xy(1,:), tt);
yy = spline(t, xy(2,:), tt);
plot(xx,yy)
1.5 1
4
0.5
2
-0.5
3
-1
-1.5
5
-2
-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1
18
Integrando la (2) si ha
Z b n−1
XZ xi+1
Sn+1 [f ] = s(x) dx = si (x) dx
a i=0 xi
n−1 xi+1
X (x − xi )4 (x − xi+1 )4 (x − xi )2
= µi+1 − µi + αi + βi (x − xi )
24hi 24hi 2 xi
i=0
n−1 3 2
Xh h h i
= (µi + µi+1 ) i + αi i + βi hi ,
24 2
i=0
−hf00 + f1 − f0
2µ0 + µ1
µ0 + 4µ1 + µ2 f0 − 2f1 + f2
..
6
..
= .
.
h2
.
µn−2 + 4µn−1 + µn fn−2 − 2fn−1 + fn
µn−1 + 2µn fn−1 − fn + hfn0
19
4 B-splines
Consideriamo un insieme di nodi τ0 ≤ τ1 ≤ . . . ≤ τm , non necessariamente distinti.
Definiamo le funzioni, per i = 0, . . . , m − 1,
1, x ∈ [τi , τi+1 ),
Bi,1 (x) = (34)
0, altrimenti.
Queste funzioni sono una base dell’insieme delle funzioni costanti a tratti nell’inter-
vallo [τ0 , τm ). Si osserva inoltre che Bi,1 ≡ 0 se τi = τi+1 .
Introduciamo i nodi esterni τ−1 ≤ τ0 e τm+1 ≥ τm e definiamo le hat functions,
per i = −1, . . . , m − 1, come
(x − τi )/(τi+1 − τi ), x ∈ [τi , τi+1 ),
Bi,2 (x) = (τi+2 − x)/(τi+2 − τi+1 ), x ∈ [τi+1 , τi+2 ), (35)
0, altrimenti.
Se τi è un nodo distinto, allora una sola delle hat function è diversa da zero in τi
ed è Bi−1,2 (τi ) = 1. Dunque se i nodi τ0 , . . . , τm sono tra loro distinti, la funzione
spline di ordine 2 che interpola i punti (τi , fi ), per i = 0, . . . , m, può essere scritta
in modo unico come
Xm
s(x) = fi Bi−1,2 (x).
i=0
In altre parole, la restrizione delle funzioni Bi,2 (x) all’intervallo [τ0 , τm ] forma una
base per lo spazio lineare delle spline di ordine 2.
Si osserva inoltre che Bi,2 (x) è diversa da zero solo nell’intervallo (τi , τi+2 ). Quin-
di, se x ∈ (τi , τi+2 ), si ha Bj,2 (x) = 0 se j 6= i − 1, i. Dunque per ogni valore di x,
solo al più due funzioni saranno diverse da zero, e vale
I nodi esterni sono generalmente scelti coincidenti con gli estremi dell’intervallo,
τ−1 = τ0 e τm+1 = τm . In questo caso B−1,2 (x) e Bm−1,2 (x) diventano “half–hats”
con una discontinuità rispettivamente in τ0 e τm .
La figura 5 rappresenta le hat functions Bi,2 (x), i = −1, . . . , 2, relative ai nodi
τ−1 = τ0 = 0, τ1 = 5, τ2 = 6, τ3 = τ4 = 8. Si osservi che B−1,2 (x) e B2,2 (x) sono
“half hat”.
Si osserva che vale la relazione
x − τi τi+2 − x
Bi,2 (x) = Bi,1 (x) + Bi+1,1 (x).
τi+1 − τi τi+2 − τi+1
In generale si definisce induttivamente l’insieme di funzioni Bi,k (x) mediante la
relazione
x − τi τi+k − x
Bi,k (x) = Bi,k−1 (x) + Bi+1,k−1 (x), i = −k + 1, . . . , m − 1,
τi+k−1 − τi τi+k − τi+1
(36)
20
1
0.8
0.6
0.4
0.2
0
−2 0 2 4 6 8 10 12
e adottiamo la convenzione che 0/0 = 0. Le funzioni Bi,k (x), sono dette B-splines di
ordine k. Ciascuna di esse è un polinomio a tratti di grado minore di k. Inoltre la
funzione Bi,k (x) è definita univocamente mediante i k + 1 nodi τi , . . . , τi+k . Si può
dimostrare che se ` nodi tra τi , . . . , τi+k coincidono con z, allora le derivate di ordine
0, 1, . . . , k − ` − 1 di Bi,k (x) sono continue in z. In particolare, le funzioni B-spline
lineari (funzioni hat) sono discontinue nei nodi doppi, continue nei nodi semplici.
Vale il seguente risultato:
Ogni spline di ordine k, relativa ai nodi τ0 < . . . < τm , può essere rappresen-
tata mediante una combinazione lineare di m + k − 1 B-splines di ordine k. Più
precisamente, ogni spline s(x) di ordine k può essere scritta in modo unico come
m−1
X
s(x) = ci Bi,k (x)
i=−k+1
21
Queste equazioni formano un sistema lineare Ac = f di dimensione (m + 1) × (m +
k − 1), dove
e
cT = (c−k+1 , . . . , cm−1 ), f T = (f0 , . . . , fm ).
La matrice A è una matrice a banda per il teorema 13, infatti ai,j = 0 se τi−1 ∈ /
[τj−k , τj ], cioè se 1 < i − j < −k + 1, dunque al più k − 1 elementi sono diversi da
zero in ogni riga. Infatti, le matrici che intevengono nelle spline cubiche (cioè k = 4)
sono tridiagonali. Inoltre il sistema è sottodeterminato se k ≥ 3 e gli elementi ai,j
della matrice A possono essere valutati mediante la ricorrenza (36).
Nella pratica i nodi esterni sono scelti
5 Esercizi
Esercizio 1. Siano f (x) ∈ C 4 ([a, b]) e K = maxx∈[a,b] |f (4) (x)|. Indichiamo con
s(x) la spline not-a-knot relativa ai nodi xi = a + ih, i = 0, . . . , n, dove h = (b − a)/n
e n ≥ 4, e sia µi = s00 (xi ), per i = 0, . . . , n.
a) Dimostrare che il vettore g = (gi )i=1,...,n−1 di componenti gi = µi − f 00 (xi )
soddisfa l’equazione An g = 12 h2 τ , dove il vettore τ = (τi )i=1,...,n−1 è tale che |τ1 | ≤
K, |τi | ≤ 3K per i = 2, . . . , n − 2, |τn−1 | ≤ K, e
6 0
1 4 1
An =
. .
.. .. .. . ∈ R(n−1)×(n−1) .
1 4 1
0 6
22
f (xi+1 )−2f (xi )+f (xi−1 )
h .
Facendo opportuni sviluppi in serie di Taylor, come visto a
lezione per le splines complete, si ottiene che
6 h2 (4)
fi−1,i,i+1 = 6f 00 (xi ) + f (ξi,1 ) + f (4) (ξi,2 )
h 4
h2 (4)
f 00 (xi+1 ) + 4f 00 (xi ) + f 00 (xi−1 ) = 6f 00 (xi ) + f (ξi,3 ) + f (4) (ξi,4 )
2
per opportuni ξi,j ∈ (a, b). Dunque, posto w = (f 00 (xi ))i=1,n−1 , valgono le ugua-
glianze
h2 h2
An w = 6w + c, An µ = 6w + v
2 4
dove
0
(4) (ξ ) + f (4) (ξ ) (4) (ξ ) + f (4) (ξ )
f 2,3 2,4
f 1,1 1,2
c= .. ..
, v = .
. .
f (4) (ξn−2,3 ) + f (4) (ξn−2,4 ) (4) (4)
f (ξn−1,1 ) + f (ξn−1,2 )
0
h2
Dunque An (µ − w) = 4 (v − 2c) e τ = v − 2c è il vettore cercato, in quanto
2
6
|v − 2c| ≤ K ...
6
2
b) Sia S = diag((−1)i )i=0,n−2 e sia Bn = SAn S −1 . La matrice Bn ha elementi
positivi sulla diagonale e non positivi altrove, in particolare possiamo scrivere Bn =
6(I − 61 C), dove
0 0
1 2 1
C=
. .
.. .. ... .
1 2 1
0 0
Poiché kCk∞ = 4, la matrice I − 61 C è invertibile, dunquePanche An è invertibile.
Poiché C ha elementi non negativi, la matrice (I − 61 C)−1 = i ( 16 C)i è non negativa.
Dunque |A−1 −1
n | = Bn . Si osserva che
6
2
Bn 1 = ...
2
6
23
dunque
9 1
3 3
3
−1 ..
−1 ..
1 = Bn ≥ Bn ,
2 . .
3 3
9 1
da cui γ = 32 .
c) Dal punto a), otteniamo
h2 −1 K · h2 −1 γ · K · h2
|g| ≤ |An | · |τ | ≤ |An |u ≤ 1,
4 2 2
2
dove l’ultima disuguaglianza segue dal punto b). Dunque |µi − f 00 (xi )| ≤ γ·K·h
2 per
i = 1, . . . , n − 1.
Dalle formule dei momenti delle splines not-a-knot, sappiamo che µ0 = 2µ1 − µ2 .
D’altra parte,
h2 (4)
f 00 (x0 ) − 2f 00 (x1 ) + f 00 (x2 ) = f (ξ1,3 ) + f (4) (ξ1,4 ) .
2
Dunque, sottraendo e passando ai moduli,
3
|µ0 − f 00 (x0 )| ≤ 2|µ1 − f 00 (x1 )| + |µ2 − f 00 (x2 )| + h2 K ≤ h2 K( γ + 1)
2
d) Si procede come per le spline complete.
24