(parte Sestini) : B--splines e curve B-spline
(parte Sestini) : B--splines e curve B-spline
(parte Sestini) : B--splines e curve B-spline
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Introduzione alle <strong><strong>spline</strong>s</strong><br />
Alessandra <strong>Sestini</strong><br />
April 15, 2013<br />
1 Splines polinomiali<br />
Sia [a , b] un intervallo della retta reale e sia<br />
a = τ 0 < · · · < τ L = b<br />
una partizione assegnata su tale intervallo. Chiameremo il seguente insieme<br />
T := {τ 0 , . . . , τ L }<br />
vettore dei nodi. Posto I i := [τ i , τ i+1 ), i = 0, . . . , L − 2 e I L−1 := [τ L−1 , τ L ],<br />
indichiamo con P m,T lo spazio delle polinomiali a tratti di grado m e nodi in<br />
T ,<br />
P m,T = {f : [a , b] → R | f | Ii ∈ Π m , i = 0, . . . , L − 1} , (1)<br />
dove Π m denota lo spazio dei polinomi di grado ≤ m . Come prima osservazione,<br />
notiamo che una generica funzione di P m,T nei nodi interni τ i , i =<br />
1, . . . , L−1, può essere discontinua, presentando in particolare un salto finito.<br />
Osserviamo inoltre che P m,T forma uno spazio vettoriale di funzioni sul campo<br />
R la cui dimensione è,<br />
dim(P m,T ) = (m + 1) L ,<br />
essendo in generale i tratti polinomiali che compongono una generica funzione<br />
di P m,T indipendenti l’uno dall’altro e essendo (m + 1) la dimensione di Π m .<br />
Ovviamente una rappresentazione di funzioni in P mT si ottiene scegliendo una<br />
base di Π m (per esempio la base delle potenze ma anche la base di Bernstein<br />
che è spesso preferita in ambiente grafico) da utilizzare per rappresentare<br />
1
ciascuno dei suoi tratti polinomiali.<br />
definito l’insieme dei nodi T , risulta<br />
Osserviamo infine che, comunque sia<br />
Π m ⊂ P m,T .<br />
Poiché le polinomiali a tratti non sono neanche continue in [a , b], siamo<br />
interessati a definire degli spazi di funzioni che siano intermedi fra Π m e P m,T<br />
che chiameremo appunto funzioni <strong><strong>spline</strong>s</strong>, distinguendole in <strong><strong>spline</strong>s</strong> classiche<br />
e generalizzate. Le <strong><strong>spline</strong>s</strong> classiche formano un sottospazio vettoriale di P m,T<br />
che indicheremo con S m,T e che possiamo definire come segue,<br />
S m,T := P m,T ∩ C m−1 [a , b] . (2)<br />
Si tratta quindi di polinomiali a tratti di grado m (o, come anche si<br />
dice, di ordine k := m + 1) e nodi in T che nei nodi interni hanno regolarità<br />
C m−1 , ossia la massima regolarità con cui due polinomi di grado m si possono<br />
raccordare in un punto senza essere necessariamente coincidenti. Le più<br />
semplici sono naturalmente le <strong><strong>spline</strong>s</strong> (classiche) lineari il cui grafico è una<br />
spezzata (con angoli in corrispondenza dei nodi interni), le più note sono le<br />
<strong><strong>spline</strong>s</strong> cubiche che sono globalmente C 2 e vengono spesso introdotte come<br />
alternativa ai polinomi per risolvere problemi di interpolazione. Osserviamo<br />
che in effetti risulta<br />
Π m ⊂ S m,T ⊂ P m,T .<br />
Le <strong><strong>spline</strong>s</strong> generalizzate sono state introdotte in ambiente CAGD per avere<br />
a disposizione spazi di funzioni più duttili delle <strong><strong>spline</strong>s</strong> classiche delle quali<br />
costituiscono appunto una generalizzazione, permettendo di imporre regolarità<br />
variabile nei nodi interni. Per definirle, oltre a specificarne il grado m<br />
(o l’ordine k) e il vettore dei nodi T , occorre specificare un ulteriore vettore<br />
M = (m 1 , . . . , m L−1 ) detto vettore delle molteplicità e tale che m i ∈ N , 1 ≤<br />
m i ≤ k, i = 1, . . . , L − 1 . Con tale ausilio, lo spazio S m,T,M delle <strong><strong>spline</strong>s</strong><br />
generalizzate di grado m, nodi in T e molteplicità in M è definito come<br />
segue,<br />
S m,T ,M := {f ∈ P m,T | f (j) (τ − i ) = f (j) (τ + i ), 0 ≤ j ≤ m − m i, 1 ≤ i ≤ L − 1}<br />
(3)<br />
Osserviamo che, se m i = k, nel nodo τ i non è richiesta alcuna regolarità<br />
e, se tutti gli m i in M sono pari a 1, lo spazio S mT ,M viene a coincidere con<br />
S m,T . Valgono inoltre le seguenti inclusioni<br />
Π m ⊂ S m,T ⊂ S m,T ,M ⊂ P m,T .<br />
2
Dopo aver definito gli spazi delle <strong><strong>spline</strong>s</strong>, siamo interessati a individuarne<br />
la dimensione e a capire come sia possibile rappresentare le funzioni che<br />
ap<strong>parte</strong>ngono loro. A quest’ultimo riguardo, osserviamo che, trattandosi comunque<br />
di polinomiali a tratti di grado m con nodi in T , è sempre possibile<br />
utilizzare la forma generale di rappresentazione di funzioni di P mT , anche<br />
se in questo caso sarà necessario inserire dei vincoli sui parametri di rappresentazione<br />
in modo da garantire la regolarità richiesta nei nodi interni 1 .<br />
Riferendoci dapprima a S m,T , osserviamo infatti che il requisito di regolarità<br />
C m−1 nel nodo τ i corrisponde a m condizioni lineari linearmente indipendenti,<br />
il che implica che<br />
dim(S mT ) = (m + 1) L − m(L − 1) = L + m = (L − 1) + k ,<br />
ossia la dimensione di S mT è data dalla somma del numero di nodi interni<br />
con l’ordine. Con un ragionamento analogo si evince poi che<br />
dove<br />
∑L−1<br />
dim(S m,T ,M ) = (m + 1) L − (m − m i + 1) = µ + k ,<br />
µ :=<br />
i=1<br />
∑L−1<br />
m i ,<br />
i=1<br />
ossia la dimensione di S m,T ,M è data della somma delle molteplicità dei nodi<br />
interni con l’ordine 2 . Allo scopo di evitare inutili ridondanze, siamo quindi<br />
interessati ad individuare delle basi di S m,T e di S m,T ,M , in particolare basi<br />
che abbiano proprietà utili in ambiente grafico.<br />
La prima base che possiamo definire per S mT viene detta base delle<br />
potenze troncate ed è definita come segue,<br />
{ 1, x , . . . , x m , (x − τ 1 ) m + , . . . , (x − τ L−1 ) m + } , (4)<br />
dove per un qualsiasi punto fissato τ e per ogni intero positivo l, la funzione<br />
(x − τ) l + è definita come segue,<br />
(x − τ) l + :=<br />
{ (x − τ) l , se x ≥ τ ,<br />
0 , altrimenti.<br />
1 Questa è per esempio la forma utilizzata più comunemente per definire le <strong><strong>spline</strong>s</strong><br />
cubiche interpolanti nei nodi.<br />
2 Si osservi che quando tutte le molteplicità sono pari a 1 si riottiene la dimensione di<br />
S m,T , come deve essere.<br />
3
Osserviamo che le prime k funzioni che formano in (4) la base delle potnze<br />
troncate altro non sono che la base delle potenze per Π m che è un sottospazio<br />
di S mT . Per le altre L − 1 funzioni, le potenze troncate appunto, è immediato<br />
verificare che si tratta di funzioni ap<strong>parte</strong>nenti a P m,T con due tratti<br />
polinomiali (dei quali uno identicamente nullo). Verificando che le derivate<br />
sinistre e destre fino all’ordine m − 1 di tali funzioni nel nodo di raccordo fra<br />
i due tratti polinomiali sono coincidenti, si deduce quindi che esse sono globalmente<br />
di classe C m−1 e quindi che sono comunque funzioni ap<strong>parte</strong>nenti a<br />
S m,T . Poiché le funzioni in (4) sono in tutto proprio k +(L−1), per verificare<br />
che esse sono una base di S m,T occorre verificare che esse sono linearmente<br />
indipendenti, come viene fatto nella seguente proposizione,<br />
elencate in (4) sono linearmente in-<br />
Proposizione 1. Le funzioni di S m,T<br />
dipendenti.<br />
Dimostrazione : Per dimostrare l’asserto facciamo vedere che se una combinazione<br />
lineare delle funzioni in (4) è identicamente nulla, allora i suoi<br />
coefficienti sono tutti nulli. Sia quindi<br />
m∑<br />
a i x i +<br />
i=0<br />
∑L−1<br />
b j (x − τ j ) m + ≡ 0 .<br />
j=1<br />
In particolare quindi la combinazione lineare si annullerà per ogni x ∈ I 0 .<br />
Ma se x appartine a tale sottointervallo la combinazione lineare si riduce<br />
alla sola prima sommatoria per definizione di potenze troncate. Poiché un<br />
polinomio di grado m non nullo può avere al più m radici distinte, segue<br />
che a 0 = · · · = a m = 0. Quindi avendo dimostrato questo, la combinazione<br />
lineare identicamente nulla si riduce alla seconda sommatoria. Prendendo<br />
però x ∈ I 1 essa si riduce solo a b 1 (x − τ 1 ) m che si deve annullare ∀x ∈ I 1 . Ne<br />
segue che quindi b 1 = 0. Ragionando iterativamente allo stesso modo sui vari<br />
sottointervalli, se ne deduce che anche b 1 = · · · = b L−1 = 0, il che conclude<br />
la dimostrazione.<br />
La base delle potenze troncate può essere generalizzate come segue per<br />
definire una base di S m,T ,M ,<br />
{ 1, x , . . . , x m , (x − τ i ) m + , .., (x − τ i ) m−m i+1<br />
+ , i = 1, . . . , L − 1 } . (5)<br />
Esercizio 1. Verificare che le funzioni introdotte in (5) formano effettivamente<br />
una base di S mT ,M .<br />
4
Sebbene sia stata introdotta per prima e sia di facile definizione, la base<br />
delle potenze troncate presenta degli aspetti non attraenti per le applicazioni.<br />
Infatti innanzi tutto si può osservare che i suoi elementi non hanno supporto<br />
locale, cosa di estrema utilità in ambiente grafico. Inoltre le matrici di collocazione<br />
ad essa abbinate con le quali si ha a che fare quando si utilizzano<br />
le <strong><strong>spline</strong>s</strong> per risolvere problemi di interpolazione risultano spesso malcondizionate<br />
e quindi il loro utilizzo non è raccomandabile in tale contesto 3 .<br />
Tenute presenti le suddette osservazioni, siamo quindi interessati a introdurre<br />
una base diversa per le <strong><strong>spline</strong>s</strong> che nel prossimo paragrafo introdurremo<br />
in modo costruttivo mediante una formula di recursione. In particolare ci<br />
riferiremo dapprima a S m,T e dopo generalizzeremo la definizione per S m,T,M .<br />
2 B–<strong><strong>spline</strong>s</strong> (a nodi semplici)<br />
Per poter introdurre recursivamente le B–<strong><strong>spline</strong>s</strong> di ordine k e nodi in T<br />
definite in [a , b] = [τ 0 , τ L ], abbiamo bisogno di associare a T il cosiddetto<br />
vettore esteso dei nodi T<br />
T := {t i , i = 0, . . . , n + k} ,<br />
dove n + 1 = k + (L − 1) = dim(S m,T ) , t i ≤ t i+1 e<br />
{t k−1 , . . . , t n+1 } = {τ 0 , . . . , τ L } . (6)<br />
I primi k − 1 nodi t 0 , . . . , t k−2 si dicono nodi ausiliari sinistri così come gli<br />
ultimi k − 1 si dicono ausiliari destri e possono essere scelti arbitrariamente<br />
purché non decrescenti (anche tutti coincidenti). Essi costituiscono un ausilio<br />
necessario per la definizione delle B-<strong><strong>spline</strong>s</strong> che definiremo recursivamente. A<br />
tale scopo indicheremo con N i,r (t) la i–esima B–<strong>spline</strong> di ordine r , r ≥ 1 e<br />
siamo interessati al terminea definire le N i,k (t), i = 0, . . . , n. Definiamo quindi<br />
innanzitutto le B–<strong><strong>spline</strong>s</strong> N i,1 (t), i = 0, . . . , n + k − 1, t ∈ IR di ordine 1 che<br />
sono le seguenti funzioni non negative “a scalino” ,<br />
N i,1 (t) =<br />
{ 1 se t ∈ [ti , t i+1 ) ,<br />
0 altrimenti .<br />
(7)<br />
3 Questo è il motivo per esempio per cui non si usano per calcoalare le <strong>spline</strong> cubiche<br />
interpolanti nei nodi.<br />
5
Osserviamo che formalmente (7) implica che se t i = t i+1 , la N i,1 (t) è identicamente<br />
nulla.<br />
A partire dalle B-<strong><strong>spline</strong>s</strong> di ordine 1 e riferendoci sempre al vettore esteso dei<br />
nodi T, è possibile recursivamente definire come segue le B–<strong><strong>spline</strong>s</strong> N i,r (t), i =<br />
0, . . . , n + k − r di ordine r ≤ k,<br />
N i,r (t) , = ω i,r (t) N i,r−1 (t) + (1 − ω i+1,r (t)) N i+1,r−1 (t) , i = 0, ..., n + k − r (8)<br />
dove ω i,r (t) è il seguente polinomio lineare (o, eventualmente, identicamente<br />
nullo),<br />
{ t−ti<br />
t<br />
ω i,r (t) := i+r−1 −t i<br />
se t i < t i+r−1 ,<br />
(9)<br />
0 altrimenti.<br />
In questo caso possiamo osservare che dalla definizione discende che la N i,r (t)<br />
è identicamente nulla se t i = · · · = t i+r e anche che per r > 1 risulta N i,r (t i ) =<br />
N i,r (t i+r ) = 0.<br />
Esercizio 2. Scrivere l’espressione analitica e fare il grafico delle B–<strong><strong>spline</strong>s</strong><br />
lineari e quadratiche con vettore esteso dei nodi T = {0 , 1 , 2 , . . . , 4 , 5 , 6} .<br />
Esercizio 3. Verificare che se T = {0, . . . , 0, 1, . . . , 1} con 0 e 1 entrambi<br />
di molteplicità k in T, alllora le B–<strong><strong>spline</strong>s</strong> N i,k , i = 0, . . . , k coincidono con i<br />
polinomi di Bernstein B k−1<br />
i (t), i = 0, . . . , k in [0 , 1].<br />
Inoltre per induzione su r, si dimostrano le seguenti proprietà delle B–<br />
<strong><strong>spline</strong>s</strong>,<br />
• P1) N i,r (t) = 0 , se t /∈ [t i , t i+r ] , (supporto locale)<br />
• P2) N i,r (t) ≥ 0 , ∀t ∈ IR (non negatività)<br />
• P3)<br />
n+k−r<br />
∑<br />
i=0<br />
N i,r (t) = 1 , ∀t ∈ [t r−1 , t n+1+k−r ] , r = 1, . . . , k.<br />
La proprietà P1) giustifica perché il sottoinsieme<br />
N r<br />
i := {t i , · · · , t i+r } (10)<br />
di T viene detto insieme dei nodi attivi per la B–<strong>spline</strong> N i,r (t). Poiché le<br />
proprietà P1) e P2) sono immediate da verificare, dimostriamo qui solo la<br />
P3).<br />
6
Dimostrazione : Sia quindi r = 1 e t ∈ [t 0 , t n+k ]. Se t = t n+k , tutte le B–<br />
<strong><strong>spline</strong>s</strong> di ordine 1 si annullano in t ad eccezione dell’ultima che vale proprio<br />
1. Supponiamo quind t ≠ t n+k . Allora esisterà t i ∈ T con i ≤ n + k − 1 e<br />
t i < t i+1 tale che t ∈ [t i , t i+1 ). Quindi dalla definizione segue che N i,1 (t) = 1 e<br />
N j,1 (t) = 0 se j ≠ i. Quindi segue l’asserto per r = 1. Supponiamo quindi che<br />
esso valga per r − 1 e facciamo vedere che vale anche per r. Dalla definizione<br />
recursiva si ha<br />
n+k−r<br />
∑<br />
i=0<br />
N i,r (t) =<br />
∑<br />
n+k−r<br />
i=0<br />
[ω i,r (t) N i,r−1 (t) + (1 − ω i+1,r (t)) N i+1,r−1 (t)] .<br />
Ma, se t ∈ [t r−1 , t n+1+k−r ), allora sarà necessariamente N 0,r−1 (t) = 0 e<br />
N n+k−r+1,r−1 (t) = 0. Quindi, raccogliendo a secondo membro rispetto alle<br />
B-<strong><strong>spline</strong>s</strong>, si ottiene<br />
n+k−r<br />
∑<br />
i=0<br />
N i,r (t) =<br />
n+k−r<br />
∑<br />
i=1<br />
N i,r−1 (t) =<br />
n+k−r+1<br />
∑<br />
i=1<br />
N i,r−1 (t) = 1 . (11)<br />
Si osservi che se t = t n+1+k−r e r > 2 la catena di uguaglianze in (11) vale<br />
ancora. Inoltre, se r = 2 e t = t n+k−1 , si ha invece che N n+k−r+1,r−1 (t) =<br />
N n+k−1,1 (t) = 1 e ω n+k−1,1 (t) = 0. Quindi in questo caso si ottiene che in<br />
(11) vale l’uguaglianza fra il primo e il terzo termine che in effetti si riduce<br />
all’ultimo addendo pari a 1.<br />
Definiamo allora il seguente spazio lineare S k,T di funzioni definite in [a , b]<br />
e generato dalle B–<strong><strong>spline</strong>s</strong>,<br />
S k,T := 〈N 0,k , · · · , N n,k 〉 . (12)<br />
Siamo interessati a far vedere, dimostrando il Teorema di Curry–Shoenberg,<br />
che esso risulta coincidente con S m,T , m = k − 1 che ha dimensione proprio<br />
n + 1. Da ciò potremo quindi dedurre che le B–<strong><strong>spline</strong>s</strong> N i,k , i = 0, . . . , n ne<br />
costituiscono proprio una base. Organizziamo la dimostrazione in due parti.<br />
Parte 1: Π k−1 ⊆ S k,T<br />
Dimostrazione : Dimostriamo l’asserto provando la seguente identitità,<br />
detta identitità di Mardsen,<br />
n∑<br />
(x − θ) k−1 = ψ j,k (θ) N j,k (x) , ∀x ∈ [a , b] , ∀θ ∈ IR ,<br />
j=0<br />
7
dove ψ j,k (θ) è il seguente polinomio di grado k − 1,<br />
ψ j,k (θ) :=<br />
k−1<br />
∏<br />
(t j+r − θ) .<br />
r=1<br />
La dimostrazione è ancora per induzione su k. Se k = 1, si ha che ∀j, ψ j,1 (θ) =<br />
1, ∀θ ∈ IR. Quindi, avendo dimostrato che le B–<strong><strong>spline</strong>s</strong> di ordine k formano in<br />
[a , b] = [t k−1 , t n+1 ] una partizione dell’unità, segue la validità dell’asserto.<br />
Supponiamo ora che esso sia valido per k − 1 e facciamo vedere che allora<br />
vale anche per k. Usiamo quindi a tale scopo la definizione recursiva delle<br />
B–<strong><strong>spline</strong>s</strong>, ottenendo<br />
n∑<br />
ψ j,k (θ) N j,k (x) =<br />
j=0<br />
n∑<br />
ψ j,k (θ) [ω j,k (x) N j,k−1 (x)+(1−ω j+1,k (x)) N j+1,k−1 (x)] .<br />
j=0<br />
Tenendo conto che per x ∈ [a , b) risulta N 0,k−1 (x) = N n+1,k−1 (x) = 0 (ciò<br />
è vero anche in b se k > 2), raccogliendo a secondo membro rispetto alle<br />
B–<strong><strong>spline</strong>s</strong> di ordine k − 1 e indicando con Ms il membro sinistro, si ottiene,<br />
Ms =<br />
n∑<br />
[ψ j,k (θ) ω j,k (x) + ψ j−1,k (θ) (1 − ω j,k (x)) ] N j,k−1 (x) .<br />
j=1<br />
Raccogliendo quindi in ciascun addendo a secondo membro il massimo comun<br />
divisore fra ψ j,k e ψ j−1,k che è ψ j,k−1 e ricordando la definzione di ω j,k (x), si<br />
ha<br />
n∑<br />
Ms = ψ j,k−1 (θ) [(t j+k−1 − θ) ω j,k (x) + (t j − θ) (1 − ω j,k (x)) ] N j,k−1 (x) =<br />
j=1<br />
n∑<br />
ψ j,k−1 (θ) [(t j+k−1 − t j ) ω j,k (x) + (t j − θ) ] N j,k−1 (x) =<br />
j=1<br />
n∑<br />
ψ j,k−1 (θ) (x − θ) N j,k−1 (x) = (x − θ)<br />
j=1<br />
n∑<br />
ψ j,k−1 (θ) N j,k−1 (x) .<br />
Per induzione si completa quindi la dimostrazione (analizzare separatamente<br />
il caso k = 2, x = b).<br />
Si osservi che per, l’arbitrarietà di θ, l’identità di Mardsen implica che Π k−1 ⊆<br />
S k,T .<br />
8<br />
j=1
Parte 2: Le potenze troncate (x − t i ) k−1<br />
+ , i = k, . . . , n ap<strong>parte</strong>ngono a S k,T ,<br />
essendo<br />
(x − t i ) k−1<br />
+ =<br />
n∑<br />
ψ j,k (t i ) N j,k (x) , ∀x ∈ [a , b] , i = k, . . . , n . (13)<br />
j=i<br />
Dimostrazione : Consideriamo una potenza troncata (x−t i ) k−1<br />
+ , i = k, . . . , n.<br />
Da Mardsen sappiamo che<br />
(x − t i ) k−1 =<br />
n∑<br />
ψ j,k (t i ) N j,k (x) , ∀x ∈ [a , b] .<br />
j=0<br />
Osserviamo però che, se i − k < j < i, risulta per definizione ψ j,k (t i ) = 0.<br />
Quindi<br />
∑i−k<br />
(x − t i ) k−1 = ψ j,k (t i ) N j,k (x) +<br />
j=0<br />
n∑<br />
ψ j,k (t i ) N j,k (x) ∀x ∈ [a , b] .<br />
j=i<br />
Ricordando la definizione di potenza troncata e ricordando che la B–<strong>spline</strong><br />
j–esima di ordine k ha supporto compatto pari a [t j , t j+k ], da ciò segue<br />
facilmente la validità della relazione in (13).<br />
Osserviamo che da quanto dimostrato segue necessariamente che S k−1,T =<br />
S k,T , che le B–<strong><strong>spline</strong>s</strong> N i,k , i = 0, . . . , n sono polinomiali a tratti di grado k−1<br />
con nodi in T e regolarità C k−2 in [a , b] e che esse costituiscono una base di<br />
S k−1,T . Inoltre, sempre per induzione su k, si può dimostrare che, per k > 2,<br />
la derivata di N i,k si può scrivere come segue,<br />
dN i,k<br />
(t) = (k − 1) [ N i,k−1(t)<br />
− N i+1,k−1(t)<br />
] .<br />
dt<br />
t i+k−1 − t i t i+k − t i+1<br />
3 B–<strong><strong>spline</strong>s</strong> (a nodi multipli)<br />
Le B–<strong><strong>spline</strong>s</strong> possono essere generalizzate in modo da definire una base per lo<br />
spazio S m,T ,M . In particolare occorre generalizzare la definizione del vettore<br />
esteso dei nodi introdotto in (6) come segue,<br />
{ }} { { }} {<br />
T := {t k−1 , . . . , t n+1 } = {τ 0 , τ 1 , . . . , τ 1 , . . . , τ L−1 , . . . , τ L−1 , τ L } ,<br />
9<br />
m 1<br />
m L−1
dove si assume 1 ≤ m i ≤ k, i = 1, . . . , L − 1 e m i ∈ IN dicesi molteplicità del<br />
nodo τ i nel vettore esteso dei nodi. T è quindi un vettore in cui ogni nodo<br />
interno τ i di T è ripetuto m i volte e che al solito ingloba i nodi ausiliari.<br />
Osserviamo poi che risulta n − k + 3 = µ + 2, cioè n + 1 = µ + k che è<br />
la dimensione di S m,T ,M e quindi siamo interessati sempre a definire n +<br />
1 B–<strong><strong>spline</strong>s</strong> N i,k , i = 0, . . . , n, di ordine k. A tale scopo si usa sempre la<br />
definizione recursiva introdotta in (8) nella sezione precedente, dove le N i,1 (t)<br />
sono sempre definite come in (7). Si osservi che la presenza in T di nodi t i<br />
tali che sia almeno t i = t i+1 anche per k < i < n (corrispondenti a nodi<br />
multipli in T ), fa sì che per qualche r il polinomio ω i,r (t) usato in (8) possa<br />
essere identicamente nullo e ciò determina una riduzione della regolarità di<br />
tutte le B–<strong><strong>spline</strong>s</strong> N j,k il cui insieme di nodi attivi contiene il nodo t i con<br />
molteplicità maggiore di 1. Più precisamente si dimostra che, se in nodo t i<br />
ha molteplicità l in Nj r , allora la B–<strong>spline</strong> N j,r in t i è C r−l−1 .<br />
Esercizio 4. Ricavare l’espressione analitica delle B–<strong><strong>spline</strong>s</strong> N 2,2 , N 3,2 e di<br />
N 1,3 , N 2,3 , N 3,3 e farne il grafico in IR con T = {0 , 1 , 2 , 3 , 3 , 4 , 5 , 6} .<br />
Esercizio 5. Ricavare T e M a partire dal vettore esteso dei nodi definito<br />
nell’esercizio precedente per k = 2 e per k = 3 e dire quindi su quale intervallo<br />
[a , b] della retta reale le B–<strong><strong>spline</strong>s</strong> di ordine k definibili mediante T formano<br />
una base per S k−1,T,M .<br />
Per quanto riguarda le B–<strong><strong>spline</strong>s</strong> a nodi multipli, ossia definite relativamente<br />
al vettore esteso dei nodi T come detto sopra, è possibile dimostrare<br />
che valgono ancora le proprietà P1), P2) e P3). Inoltre si dimostra con<br />
tecniche simili a quelle utilizzate per le B–<strong><strong>spline</strong>s</strong> classiche la validità del teorema<br />
di Curry–Shoenberg che asserisce in questo caso che lo spazio S k−1,T ,M<br />
coincide con S k,T e che le B–<strong><strong>spline</strong>s</strong> ne costituiscono ancora una base.<br />
Osservazione 1. Data l’arbitrarietà con cui si possono definire i nodi ausiliari<br />
sinistri e destri in T, in genere si tende a fare la seguente scelta di nodi<br />
ausiliari multipli,<br />
t 0 = · · · = t k−2 = t k−1 = a , b = t n+1 = · · · = t n+2 = t n+k . (14)<br />
Esercizio 6. Verificare che la scelta (14) garantiscel’annullamento di tutte<br />
le B–<strong><strong>spline</strong>s</strong> di ordine k in a e in b, rispettivamente ad eccezione di N 0,k che<br />
in a vale 1 e di N n,k che in b vale 1.<br />
10
Fissato quindi l’ordine k delle <strong><strong>spline</strong>s</strong> con le quali si vuole lavorare (ossia il<br />
grado m = k −1) e il vettore dei nodi T e il relativo vettore delle molteplicità<br />
M (e di conseguenza fissato il vettore esteso dei nodi T ), una qualunque <strong>spline</strong><br />
s ap<strong>parte</strong>nente a S k−1,T ,M si può univocamente rappresentare mediante la<br />
base delle B–<strong>spline</strong>,<br />
n∑<br />
s(t) = c i N i,k (t), t ∈ [a , b] .<br />
i=0<br />
Tale rappresentazione delle funzioni di S k−1,T ,M viene usualmente detta B–<br />
form.<br />
Esercizio 7. Utilizzare il comando spmak del toolbox <strong><strong>spline</strong>s</strong> del Matlab per<br />
definire una <strong>spline</strong> in un fissato spazio S k−1,T ,M in B–form. Farne quindi il<br />
grafico dopo averla tabulata.<br />
Nelle sezioni seguenti per semplicità indicheremo sempre con S k,T uno<br />
spazio di <strong><strong>spline</strong>s</strong>, facendo quindi riferimento alla loro rappresentazione in<br />
B–form.<br />
4 Interpolazione e approssimazione ai minimi<br />
quadrati in S k,T<br />
Le <strong><strong>spline</strong>s</strong> costituiscono una generalizzazione estremamente duttile dei polinomi<br />
pur mantenendone la facilità di impego. Questo spiega perchè esse abbiano<br />
largo impiego sia nell’ambito dell’approssimazione che in quello delle<br />
applicazioni grafiche.<br />
Per quanto riguarda l’interpolazione, siamo innanzi tutto interessati a<br />
stabilire se esiste ed è unica la <strong>spline</strong> s ap<strong>parte</strong>nente a S k,T tale che<br />
s(x j ) = f j , j = 0, . . . , n , (15)<br />
dove a ≤ x 0 < · · · < x n ≤ b (con a = t k−1 e b = t n+1 ), e dove f j denota<br />
il valore noto assunto in x j dalla funzione f(x) da interpolare. Al solito<br />
le ascisse x i , i = 0, . . . , n, si dicono ascisse di interpolazione. Ovviamente,<br />
usando la B–form per rappresentare s, il problema si riconduce a stabilire se<br />
è nonsingolare la seguente matrice A di dimensione (n + 1) × (n + 1),<br />
⎛<br />
⎞<br />
A :=<br />
⎜<br />
⎝<br />
N 0,k (x 0 ) · · · N n,k (x 0 )<br />
. . .<br />
N 0,k (x n ) · · · N n,k (x n )<br />
11<br />
⎟<br />
⎠ , (16)
detta matrice di collocazione delle B–<strong><strong>spline</strong>s</strong> nelle ascisse x i , i = 0, . . . , n.<br />
Infatti le condizioni di interpolazione in (15) corrispondono ad imporre il<br />
seguente sistema lineare,<br />
Ac = f ,<br />
dove c := (c 0 , , · · · , c n ) T è il vettore delle incognite corrispondenti ai coefficienti<br />
di s in B–form e f := (f 0 , , · · · , f n ) T è il termine noto del sistema.<br />
Ora, a differenza di quanto accade per l’interpolazione polinomiale, è facile<br />
dimostrare che nel caso delle <strong><strong>spline</strong>s</strong> la sola ipotesi di ascisse di interpolazione<br />
distinte non è sufficiente a garantire la nonsingolarità della matrice<br />
A e quindi l’esistenza e l’unicità della <strong>spline</strong> interpolante. Se per esempio si<br />
scelgono tutte le ascisse x i < t n , i = 0, . . . , n, l’ultima colonna di A è tutta<br />
nulla e quindi necessariamente A risulterà singolare. E’ quindi evidente che,<br />
per garantire la nonsingolarità di A sarà necessario assumere delle restrizioni<br />
sulle ascisse di interpolazione legate alla distribuzione del vettore dei nodi.<br />
Nel seguito, per k > 1, faremo sempre riferimento al caso di molteplicità<br />
m i < k, i = 1, . . . .L − 1. Il teorema fondamentale a questo riguardo risulta<br />
essere il cosiddetto teorema di Witney–Schoenberg,<br />
Teorema 1. La matrice di collocazione A delle B–<strong><strong>spline</strong>s</strong> definita in (16)<br />
risulta nonsingolare sse le ascisse di interpolazione x i , i = 0, . . . , n, oltre ad<br />
essere distinte (e ordinate in senso crescente), verificano le seguenti disuguaglianze<br />
(dette di Witney–Schoenberg) ,<br />
N i,k (x i ) > 0 , i = 0, . . . , n . (17)<br />
Dimostrazione :<br />
Facciamo intanto vedere che le condizioni in (17) sono necessarie. Supponiamo<br />
allora per assurdo che esista x i tale che N i,k (x i ) = 0 , e supponiamo<br />
che sia x i ≤ t i (il caso x i ≥ t i+k si tratta analogamente). Allora avremmo che<br />
sarebbe anche N j,k (x i ) = 0 , ∀j ≥ i. Ma essendo le ascisse di interpolazione<br />
ordinate in senso crescente, ciò implicherebbe N j,k (x r ) = 0 , ∀j ≥ i, ∀r ≤ i .<br />
La matrice di collocazione A introdotta in (16) sarebbe quindi una matrice<br />
a blocchi del tipo<br />
( )<br />
A1,1 0<br />
A =<br />
, (18)<br />
A 2,1 A 2,2<br />
con il blocco nullo di dimensione (i + 1) × (n − i + 1) . Essendo il blocco<br />
A 2,2 costituito da (n − i) righe, le ultime (n − i + 1) colonne della matrice<br />
12
A sarebbero necessariamente linearmente dipendenti e quindi la matrice A<br />
sarebbe singolare.<br />
Facciamo allore ora vedere che le condizioni in (17) sono anche sufficienti.<br />
Osserviamo che nel caso particolare di k = 1 le condizioni (17) significano<br />
t i ≤ x i < t i+1 , i = 0, . . . , n. In questo caso la matrice A coincide con la<br />
matrice identità e quindi è nonsingolare.<br />
Se k > 1, osserviamo che le condizioni in (17) equivalgono a t i < x i <<br />
t i+k , i = 0, . . . , n (con la possibilità di x 0 = t 0 (x n = t n+k ) nel caso di nodi<br />
ausiliari multipli). Tuttavia facciamo vedere che, senza perdita di generalità,<br />
si può assumere t i+1 ≤ x i ≤ t i+k−1 , i = 0, . . . , n. Infatti nel caso esistesse<br />
una ascissa di interpolazione x i tale che per esempio x i < t i+1 , allora la<br />
matrice A definita in (16) sarebbe una matrice triangolare a blocchi con due<br />
blocchi diagonali quadrati rispettivamente di dimensione i+1 e n−i e quindi<br />
la sua nonsingolarità si otterrebbe dimostrando la nonsingolarità di queste<br />
due sottomatrici. Il raginamento potrebbe essere ripetuto iterativamente<br />
fino ad arrivare a considerare valida l’ipotesi suddetta. Osserviamo che nel<br />
caso k > 2 si può assumere addirittura, senza perdita di generalità, che<br />
t i+1 < x i < t i+k−1 , i = 0, . . . , n.<br />
Per k = 2 assumiamo quindi x i = t i+1 . Allora risulta N i,2 (x i ) = 1 e<br />
N i,2 (x j ) = 0 se j ≠ i. quindi la matrice A coincide con la matrice identità che<br />
è ovviamente nonsingolare. Consideriamo quindi il caso k ≥ 3, supponendo<br />
t i+1 < x i < t i+k−1 , i = 0, . . . , n. Osserviamo che ciò implica anche che<br />
m i ≤ k − 2, i = 1, . . . , L − 1 e quindi che S k,T,M ⊂ C 1 [a , b]. Ora, se per<br />
assurdo la matrice A fosse singolare, esisterebbe un vettore c ∈ IR n+1 non<br />
identicamente nullo tale che Ac = 0, cioé esisterebbe una <strong>spline</strong> s ∈ S k,T,M<br />
non identicamente nulla che si annullerebbe nelle (n + 1) ascisse distinte<br />
x i , i = 0, . . . n tali che t i+1 < x i < t i+k−1 . Dal teorema di Rolle seguirebbe<br />
allora che esisterebbero n ascisse distinte y i , i = 0, . . . , n − 1, tali che t i+1 <<br />
x i < y i < x i+1 < t i+k , ossia tali che t i+1 < y i < t i+k , i = 0, . . . , n − 1 nelle<br />
quali dovrebbe annullarsi s ′ ∈ S k−1,T ′ ,M con T ′ = {t 1 , . . . , t n+k−1 }. Quindi,<br />
se k = 3 si arriverebbe ad un assurdo in quanto le ascisse y i , i = 0, . . . , n − 1,<br />
verificano le condizioni di Witney–Schoenberg relativamente all’ordine k − 1<br />
per T ′ . Se k > 3 si può quindi fare la dimostrazione per induzione.<br />
Osservazione 2. Se k > 1 e m i < k, i = 1, . . . , L − 1 e le ascisse di interpolazione<br />
sono scelte come le cosiddette ascisse di Greville definite mediante<br />
i nodi come segue,<br />
x i := (t i+1 + · · · + t i+k−1 )/(k − 1) , i = 0 , . . . , n ,<br />
13
allora le condizioni di Witney–Schoenberg sono verificate. Infatti in tal caso,<br />
essedo i nodi in T non decrescenti e al più di molteplicità k − 1 necessariamente<br />
t i < x i < t i+k e quindi valgono le disuguaglianze in (17).<br />
Osserviamo inoltre che nel caso lineare (k = 2) a nodi semplici n = L<br />
e quindi i nodi τ 0 = t 1 , . . . , τ L = t n+1 sono esattamente tanti quante sono<br />
le condizioni di interpolazione. In tal caso, scegliendo x i = τ i , i = 0, . . . , n,<br />
le condizioni (17) sono sicuramente verificate e quindi la <strong>spline</strong> lineare a<br />
nodi semplici interpolante nei nodi risulta univocamente determinata (il<br />
suo grafico altro non è che la spezzata che congiunge i punti di coordinate<br />
(x i , f i ), i = 0, . . . , n). Se però k > 2, risulta L = n − k + 2 < n e quindi se ci<br />
si limita a considerare condizioni di interpolazione nei nodi non si hanno sufficienti<br />
condizioni per caratterizzare la <strong>spline</strong>. Le <strong><strong>spline</strong>s</strong> cubiche interpolanti<br />
nei nodi per esempio richiedono 2 condizioni ausiliari opportune che vengono<br />
assegnate agli estremi a = t k−1 e b = t n+1 .<br />
Per quanto riguarda l’approssimazione ai minimi quadrati, date m ≫ n<br />
ascisse x i , i = 0, . . . , m siamo interessati a determinare la <strong>spline</strong> s ∈ S k,T,M<br />
tale che sia minima la seguente quantità detta residuo,<br />
m∑<br />
(f i − s(x i )) 2 .<br />
i=0<br />
Rappresentando s in B–form attraverso il vettore dei coefficienti c = (c 0 ,<br />
· · · , c n ) T , tale problema può essere formalizzato come segue,<br />
min ‖f − Ac‖2<br />
c∈IR n+1<br />
dove ora A è una matrice rettangolare di dimensione (m + 1) × (n + 1) che<br />
sempre colloca le B–<strong><strong>spline</strong>s</strong> in tutte le ascisse x i , i = 0, . . . , m. Sappiamo<br />
quindi dall’algebra lineare che il problema ammette soluzione unica se la matrice<br />
A ha rango massimo (n + 1) (e tale soluzione si calcola utilizzando la<br />
fattorizzazione QR di A). Il rango massimo pari a (n + 1) risulta garantito<br />
se è possibile estrarre (n + 1) righe da A tali che la corrispondente matrice<br />
quadrata A n+1 risulti non singolare. Ciò significa che deve esistere una sottosequenza<br />
x ij , j = 0, . . . , n di x i , i = 0, . . . , m, che verifichi le condizioni di<br />
Witney–Schoenberg, ossia tale che t j < x ij < t j+k , per j = 0, . . . , n.<br />
14
References<br />
[1] C de Boor (2001), A Practical Guide to Splines, Revised edition,<br />
Applied Mathematical Sciences 27, Springer–Verlag, New York.<br />
15