Dispense CAN 13/14: seconda parte

Introduzione alle splines
Alessandra Sestini
April 23, 2014
1
Splines polinomiali
Sia [a , b] un intervallo della retta reale e sia
a = τ0 < · · · < τL = b
una partizione assegnata su tale intervallo. Chiameremo il seguente insieme
T := {τ0 , . . . , τL }
vettore dei nodi. Posto Ii := [τi , τi+1 ), i = 0, . . . , L − 2 e IL−1 := [τL−1 , τL ],
indichiamo con Pm,T lo spazio delle polinomiali a tratti di grado m e nodi in
T,
Pm,T = {f : [a , b] → R | f| Ii ∈ Πm , i = 0, . . . , L − 1} ,
(1)
dove Πm denota lo spazio dei polinomi di grado ≤ m . Come prima osservazione, notiamo che una generica funzione di Pm,T nei nodi interni τi , i =
1, . . . , L−1, pu`o essere discontinua, presentando in particolare un salto finito.
Osserviamo inoltre che Pm,T forma uno spazio vettoriale di funzioni sul campo
R la cui dimensione `e,
dim(Pm,T ) = (m + 1) L ,
essendo in generale i tratti polinomiali che compongono una generica funzione
di Pm,T indipendenti l’uno dall’altro e essendo (m + 1) la dimensione di Πm .
Ovviamente una rappresentazione di funzioni in PmT si ottiene scegliendo una
base di Πm (per esempio la base delle potenze ma anche la base di Bernstein
che `e spesso preferita in ambiente grafico) da utilizzare per rappresentare
1
ciascuno dei suoi tratti polinomiali. Osserviamo infine che, comunque sia
definito l’insieme dei nodi T , risulta
Πm ⊂ Pm,T .
Poich´e le polinomiali a tratti non sono neanche continue in [a , b], siamo
interessati a definire degli spazi di funzioni che siano intermedi fra Πm e Pm,T
che chiameremo appunto funzioni splines, distinguendole in splines classiche
e generalizzate. Le splines classiche formano un sottospazio vettoriale di Pm,T
che indicheremo con Sm,T e che possiamo definire come segue,
Sm,T := Pm,T ∩ C m−1 [a , b] .
(2)
Si tratta quindi di polinomiali a tratti di grado m (o, come anche si
dice, di ordine k := m + 1) e nodi in T che nei nodi interni hanno regolarit`a
C m−1 , ossia la massima regolarit`a con cui due polinomi di grado m si possono
raccordare in un punto senza essere necessariamente coincidenti. Le pi`
u
semplici sono naturalmente le splines (classiche) lineari il cui grafico `e una
spezzata (con angoli in corrispondenza dei nodi interni), le pi`
u note sono le
2
splines cubiche che sono globalmente C e vengono spesso introdotte come
alternativa ai polinomi per risolvere problemi di interpolazione. Osserviamo
che in effetti risulta
Πm ⊂ Sm,T ⊂ Pm,T .
Le splines generalizzate sono state introdotte in ambiente CAGD per avere
a disposizione spazi di funzioni pi`
u duttili delle splines classiche delle quali
costituiscono appunto una generalizzazione, permettendo di imporre regolarit`a variabile nei nodi interni. Per definirle, oltre a specificarne il grado m
(o l’ordine k) e il vettore dei nodi T , occorre specificare un ulteriore vettore
M = (m1 , . . . , mL−1 ) detto vettore delle molteplicit`a e tale che mi ∈ N , 1 ≤
mi ≤ k, i = 1, . . . , L − 1 . Con tale ausilio, lo spazio Sm,T,M delle splines
generalizzate di grado m, nodi in T e molteplicit`a in M `e definito come
segue,
Sm,T ,M := {f ∈ Pm,T | f (j) (τi− ) = f (j) (τi+ ), 0 ≤ j ≤ m − mi , 1 ≤ i ≤ L − 1}
(3)
Osserviamo che, se mi = k, nel nodo τi non `e richiesta alcuna regolarit`a
e, se tutti gli mi in M sono pari a 1, lo spazio SmT ,M viene a coincidere con
Sm,T . Valgono inoltre le seguenti inclusioni
Πm ⊂ Sm,T ⊂ Sm,T ,M ⊂ Pm,T .
2
Dopo aver definito gli spazi delle splines, siamo interessati a individuarne
la dimensione e a capire come sia possibile rappresentare le funzioni che
appartengono loro. A quest’ultimo riguardo, osserviamo che, trattandosi comunque di polinomiali a tratti di grado m con nodi in T , `e sempre possibile
utilizzare la forma generale di rappresentazione di funzioni di PmT , anche
se in questo caso sar`a necessario inserire dei vincoli sui parametri di rappresentazione in modo da garantire la regolarit`a richiesta nei nodi interni 1 .
Riferendoci dapprima a Sm,T , osserviamo infatti che il requisito di regolarit`a
C m−1 nel nodo τi corrisponde a m condizioni lineari linearmente indipendenti,
il che implica che
dim(SmT ) = (m + 1) L − m(L − 1) = L + m = (L − 1) + k ,
ossia la dimensione di SmT `e data dalla somma del numero di nodi interni
con l’ordine. Con un ragionamento analogo si evince poi che
L−1
X
dim(Sm,T ,M ) = (m + 1) L −
(m − mi + 1) = µ + k ,
i=1
dove
µ :=
L−1
X
mi ,
i=1
ossia la dimensione di Sm,T ,M `e data della somma delle molteplicit`a dei nodi
interni con l’ordine2 . Allo scopo di evitare inutili ridondanze, siamo quindi
interessati ad individuare delle basi di Sm,T e di Sm,T ,M , in particolare basi
che abbiano propriet`a utili in ambiente grafico.
La prima base che possiamo definire per SmT viene detta base delle
potenze troncate ed `e definita come segue,
m
{ 1, x , . . . , xm , (x − τ1 )m
+ , . . . , (x − τL−1 )+ } ,
(4)
dove per un qualsiasi punto fissato τ e per ogni intero positivo `, la funzione
(x − τ )`+ `e definita come segue,
(x − τ )` , se x ≥ τ ,
`
(x − τ )+ :=
0,
altrimenti.
1
Questa `e per esempio la forma utilizzata pi`
u comunemente per definire le splines
cubiche interpolanti nei nodi.
2
Si osservi che quando tutte le molteplicit`a sono pari a 1 si riottiene la dimensione di
Sm,T , come deve essere.
3
Osserviamo che le prime k funzioni che formano in (4) la base delle potnze
troncate altro non sono che la base delle potenze per Πm che `e un sottospazio
di SmT . Per le altre L − 1 funzioni, le potenze troncate appunto, `e immediato verificare che si tratta di funzioni appartenenti a Pm,T con due tratti
polinomiali (dei quali uno identicamente nullo). Verificando che le derivate
sinistre e destre fino all’ordine m − 1 di tali funzioni nel nodo di raccordo fra
i due tratti polinomiali sono coincidenti, si deduce quindi che esse sono globalmente di classe C m−1 e quindi che sono comunque funzioni appartenenti a
Sm,T . Poich´e le funzioni in (4) sono in tutto proprio k + (L − 1), per verificare
che esse sono una base di Sm,T occorre verificare che esse sono linearmente
indipendenti, come viene fatto nella seguente proposizione,
Proposizione 1. Le funzioni di Sm,T elencate in (4) sono linearmente indipendenti.
Dimostrazione : Per dimostrare l’asserto facciamo vedere che se una combinazione lineare delle funzioni in (4) `e identicamente nulla, allora i suoi
coefficienti sono tutti nulli. Sia quindi
m
X
i=0
ai x i +
L−1
X
bj (x − τj )m
+ ≡ 0.
j=1
In particolare quindi la combinazione lineare si annuller`a per ogni x ∈ I0 .
Ma se x appartine a tale sottointervallo la combinazione lineare si riduce
alla sola prima sommatoria per definizione di potenze troncate. Poich´e un
polinomio di grado m non nullo pu`o avere al pi`
u m radici distinte, segue
che a0 = · · · = am = 0. Quindi avendo dimostrato questo, la combinazione
lineare identicamente nulla si riduce alla seconda sommatoria. Prendendo
per`o x ∈ I1 essa si riduce solo a b1 (x − τ1 )m che si deve annullare ∀x ∈ I1 . Ne
segue che quindi b1 = 0. Ragionando iterativamente allo stesso modo sui vari
sottointervalli, se ne deduce che anche b1 = · · · = bL−1 = 0, il che conclude
la dimostrazione.
La base delle potenze troncate pu`o essere generalizzate come segue per
definire una base di Sm,T ,M ,
m−mi +1
{ 1, x , . . . , xm , (x − τi )m
, i = 1, . . . , L − 1 } .
+ , .., (x − τi )+
(5)
Esercizio 1. Verificare che le funzioni introdotte in (5) formano effettivamente una base di SmT ,M .
4
Sebbene sia stata introdotta per prima e sia di facile definizione, la base
delle potenze troncate presenta degli aspetti non attraenti per le applicazioni.
Infatti innanzi tutto si pu`o osservare che i suoi elementi non hanno supporto
locale, cosa di estrema utilit`a in ambiente grafico. Inoltre le matrici di collocazione ad essa abbinate con le quali si ha a che fare quando si utilizzano
le splines per risolvere problemi di interpolazione risultano spesso malcondizionate e quindi il loro utilizzo non `e raccomandabile in tale contesto 3 .
Tenute presenti le suddette osservazioni, siamo quindi interessati a introdurre una base diversa per le splines che nel prossimo paragrafo introdurremo
in modo costruttivo mediante una formula di recursione. In particolare ci
riferiremo dapprima a Sm,T e dopo generalizzeremo la definizione per Sm,T,M .
2
B–splines (a nodi semplici)
Per poter introdurre recursivamente le B–splines di ordine k e nodi in T
definite in [a , b] = [τ0 , τL ], abbiamo bisogno di associare a T il cosiddetto
vettore esteso dei nodi T
T := {ti , i = 0, . . . , n + k} ,
dove n + 1 = k + (L − 1) = dim(Sm,T ) , ti ≤ ti+1 e
{tk−1 , . . . , tn+1 } = {τ0 , . . . , τL } .
(6)
I primi k − 1 nodi t0 , . . . , tk−2 si dicono nodi ausiliari sinistri cos`ı come gli
ultimi k − 1 si dicono ausiliari destri e possono essere scelti arbitrariamente
purch´e non decrescenti (anche tutti coincidenti). Essi costituiscono un ausilio
necessario per la definizione delle B-splines che definiremo recursivamente. A
tale scopo indicheremo con Ni,r (t) la i–esima B–spline di ordine r , r ≥ 1 e
siamo interessati al terminea definire le Ni,k (t), i = 0, . . . , n. Definiamo quindi
innanzitutto le B–splines Ni,1 (t), i = 0, . . . , n + k − 1, t ∈ IR di ordine 1 che
sono le seguenti funzioni non negative “a scalino” ,
1 se t ∈ [ti , ti+1 ) ,
Ni,1 (t) =
(7)
0 altrimenti .
3
Questo `e il motivo per esempio per cui non si usano per calcoalare le spline cubiche
interpolanti nei nodi.
5
Osserviamo che formalmente (7) implica che se ti = ti+1 , la Ni,1 (t) `e identicamente nulla.
A partire dalle B-splines di ordine 1 e riferendoci sempre al vettore esteso dei
nodi T, `e possibile recursivamente definire come segue le B–splines Ni,r (t), i =
0, . . . , n + k − r di ordine r ≤ k,
Ni,r (t) , = ωi,r (t) Ni,r−1 (t) + (1 − ωi+1,r (t)) Ni+1,r−1 (t) , i = 0, ..., n + k − r (8)
dove ωi,r (t) `e il seguente polinomio lineare (o, eventualmente, identicamente
nullo),
t−ti
se ti < ti+r−1 ,
ti+r−1 −ti
(9)
ωi,r (t) :=
0
altrimenti.
In questo caso possiamo osservare che dalla definizione discende che la Ni,r (t)
`e identicamente nulla se ti = · · · = ti+r e anche che per r > 1 risulta Ni,r (ti ) =
Ni,r (ti+r ) = 0.
Esercizio 2. Scrivere l’espressione analitica e fare il grafico delle B–splines
lineari e quadratiche con vettore esteso dei nodi T = {0 , 1 , 2 , . . . , 4 , 5 , 6} .
Esercizio 3. Verificare che se T = {0, . . . , 0, 1, . . . , 1} con 0 e 1 entrambi
di molteplicit`a k in T, alllora le B–splines Ni,k , i = 0, . . . , k coincidono con i
polinomi di Bernstein Bik−1 (t), i = 0, . . . , k in [0 , 1].
Inoltre per induzione su r, si dimostrano le seguenti propriet`a delle B–
splines,
• P1) Ni,r (t) = 0 , se t ∈
/ [ti , ti+r ] , (supporto locale)
• P2) Ni,r (t) ≥ 0 , ∀t ∈ IR (non negativit`a)
• P3)
n+k−r
X
Ni,r (t) = 1 , ∀t ∈ [tr−1 , tn+1+k−r ] , r = 1, . . . , k.
i=0
La propriet`a P1) giustifica perch´e il sottoinsieme
Nir := {ti , · · · , ti+r }
(10)
di T viene detto insieme dei nodi attivi per la B–spline Ni,r (t). Poich´e le
propriet`a P1) e P2) sono immediate da verificare, dimostriamo qui solo la
P3).
6
Dimostrazione : Sia quindi r = 1 e t ∈ [t0 , tn+k ]. Se t = tn+k , tutte le B–
splines di ordine 1 si annullano in t ad eccezione dell’ultima che vale proprio
1. Supponiamo quind t 6= tn+k . Allora esister`a ti ∈ T con i ≤ n + k − 1 e
ti < ti+1 tale che t ∈ [ti , ti+1 ). Quindi dalla definizione segue che Ni,1 (t) = 1 e
Nj,1 (t) = 0 se j 6= i. Quindi segue l’asserto per r = 1. Supponiamo quindi che
esso valga per r − 1 e facciamo vedere che vale anche per r. Dalla definizione
recursiva si ha
n+k−r
X
Ni,r (t) =
n+k−r
X
i=0
[ωi,r (t) Ni,r−1 (t) + (1 − ωi+1,r (t)) Ni+1,r−1 (t)] .
i=0
Ma, se t ∈ [tr−1 , tn+1+k−r ), allora sar`a necessariamente N0,r−1 (t) = 0 e
Nn+k−r+1,r−1 (t) = 0. Quindi, raccogliendo a secondo membro rispetto alle
B-splines, si ottiene
n+k−r
X
Ni,r (t) =
n+k−r
X
i=0
Ni,r−1 (t) =
i=1
n+k−r+1
X
Ni,r−1 (t) = 1 .
(11)
i=1
Si osservi che se t = tn+1+k−r e r > 2 la catena di uguaglianze in (11) vale
ancora. Inoltre, se r = 2 e t = tn+k−1 , si ha invece che Nn+k−r+1,r−1 (t) =
Nn+k−1,1 (t) = 1 e ωn+k−1,1 (t) = 0. Quindi in questo caso si ottiene che in
(11) vale l’uguaglianza fra il primo e il terzo termine che in effetti si riduce
all’ultimo addendo pari a 1.
Definiamo allora il seguente spazio lineare Sk,T di funzioni definite in [a , b]
e generato dalle B–splines,
Sk,T := hN0,k , · · · , Nn,k i .
(12)
Siamo interessati a far vedere, dimostrando il Teorema di Curry–Shoenberg,
che esso risulta coincidente con Sm,T , m = k − 1 che ha dimensione proprio
n + 1. Da ci`o potremo quindi dedurre che le B–splines Ni,k , i = 0, . . . , n ne
costituiscono proprio una base. Organizziamo la dimostrazione in due parti.
Parte 1: Πk−1 ⊆ Sk,T
Dimostrazione : Dimostriamo l’asserto provando la seguente identitit`a,
detta identitit`a di Mardsen,
k−1
(x − θ)
=
n
X
ψj,k (θ) Nj,k (x) ,
j=0
7
∀x ∈ [a , b] ,
∀θ ∈ IR ,
dove ψj,k (θ) `e il seguente polinomio di grado k − 1,
ψj,k (θ) :=
k−1
Y
(tj+r − θ) .
r=1
La dimostrazione `e ancora per induzione su k. Se k = 1, si ha che ∀j, ψj,1 (θ) =
1, ∀θ ∈ IR. Quindi, avendo dimostrato che le B–splines di ordine k formano in
[a , b] = [tk−1 , tn+1 ] una partizione dell’unit`a, segue la validit`a dell’asserto.
Supponiamo ora che esso sia valido per k − 1 e facciamo vedere che allora
vale anche per k. Usiamo quindi a tale scopo la definizione recursiva delle
B–splines, ottenendo
n
X
ψj,k (θ) Nj,k (x) =
j=0
n
X
ψj,k (θ) [ωj,k (x) Nj,k−1 (x)+(1−ωj+1,k (x)) Nj+1,k−1 (x)] .
j=0
Tenendo conto che per x ∈ [a , b) risulta N0,k−1 (x) = Nn+1,k−1 (x) = 0 (ci`o
`e vero anche in b se k > 2), raccogliendo a secondo membro rispetto alle
B–splines di ordine k − 1 e indicando con M s il membro sinistro, si ottiene,
Ms =
n
X
[ψj,k (θ) ωj,k (x) + ψj−1,k (θ) (1 − ωj,k (x)) ] Nj,k−1 (x) .
j=1
Raccogliendo quindi in ciascun addendo a secondo membro il massimo comun
divisore fra ψj,k e ψj−1,k che `e ψj,k−1 e ricordando la definzione di ωj,k (x), si
ha
Ms =
n
X
j=1
n
X
j=1
n
X
ψj,k−1 (θ) [(tj+k−1 − θ) ωj,k (x) + (tj − θ) (1 − ωj,k (x)) ] Nj,k−1 (x) =
ψj,k−1 (θ) [(tj+k−1 − tj ) ωj,k (x) + (tj − θ) ] Nj,k−1 (x) =
n
X
ψj,k−1 (θ) (x − θ) Nj,k−1 (x) = (x − θ)
ψj,k−1 (θ) Nj,k−1 (x) .
j=1
j=1
Per induzione si completa quindi la dimostrazione (analizzare separatamente
il caso k = 2, x = b).
Si osservi che per, l’arbitrariet`a di θ, l’identit`a di Mardsen implica che Πk−1 ⊆
Sk,T .
8
Parte 2: Le potenze troncate (x − ti )k−1
+ , i = k, . . . , n appartengono a Sk,T ,
essendo
(x −
ti )k−1
+
=
n
X
ψj,k (ti ) Nj,k (x) ,
∀x ∈ [a , b] ,
i = k, . . . , n .
(13)
j=i
Dimostrazione : Consideriamo una potenza troncata (x−ti )k−1
+ , i = k, . . . , n.
Da Mardsen sappiamo che
k−1
(x − ti )
=
n
X
ψj,k (ti ) Nj,k (x) ,
∀x ∈ [a , b] .
j=0
Osserviamo per`o che, se i − k < j < i, risulta per definizione ψj,k (ti ) = 0.
Quindi
(x − ti )
k−1
=
i−k
X
ψj,k (ti ) Nj,k (x) +
j=0
n
X
ψj,k (ti ) Nj,k (x) ∀x ∈ [a , b] .
j=i
Ricordando la definizione di potenza troncata e ricordando che la B–spline
j–esima di ordine k ha supporto compatto pari a [tj , tj+k ], da ci`o segue
facilmente la validit`a della relazione in (13).
Osserviamo che da quanto dimostrato segue necessariamente che Sk−1,T =
Sk,T , che le B–splines Ni,k , i = 0, . . . , n sono polinomiali a tratti di grado k −1
con nodi in T e regolarit`a C k−2 in [a , b] e che esse costituiscono una base di
Sk−1,T . Inoltre, sempre per induzione su k, si pu`o dimostrare che, per k > 2,
la derivata di Ni,k si pu`o scrivere come segue,
Ni,k−1 (t)
Ni+1,k−1 (t)
dNi,k
(t) = (k − 1) [
−
].
dt
ti+k−1 − ti
ti+k − ti+1
3
B–splines (a nodi multipli)
Le B–splines possono essere generalizzate in modo da definire una base per lo
spazio Sm,T ,M . In particolare occorre generalizzare la definizione del vettore
esteso dei nodi introdotto in (6) come segue,
mL−1
m1
,
z }| {
z
}|
{
T := {tk−1 , . . . , tn+1 } = {τ0 , τ1 , . . . , τ1 , . . . , τL−1 , . . . , τL−1 , τL }
9
dove si assume 1 ≤ mi ≤ k, i = 1, . . . , L − 1 e mi ∈ IN dicesi molteplicit`a del
nodo τi nel vettore esteso dei nodi. T `e quindi un vettore in cui ogni nodo
interno τi di T `e ripetuto mi volte e che al solito ingloba i nodi ausiliari.
Osserviamo poi che risulta n − k + 3 = µ + 2, cio`e n + 1 = µ + k che `e
la dimensione di Sm,T ,M e quindi siamo interessati sempre a definire n +
1 B–splines Ni,k , i = 0, . . . , n, di ordine k. A tale scopo si usa sempre la
definizione recursiva introdotta in (8) nella sezione precedente, dove le Ni,1 (t)
sono sempre definite come in (7). Si osservi che la presenza in T di nodi ti
tali che sia almeno ti = ti+1 anche per k < i < n (corrispondenti a nodi
multipli in T ), fa s`ı che per qualche r il polinomio ωi,r (t) usato in (8) possa
essere identicamente nullo e ci`o determina una riduzione della regolarit`a di
tutte le B–splines Nj,k il cui insieme di nodi attivi contiene il nodo ti con
molteplicit`a maggiore di 1. Pi`
u precisamente si dimostra che, se in nodo ti
r
ha molteplicit`a ` in Nj , allora la B–spline Nj,r in ti `e C r−`−1 .
Esercizio 4. Ricavare l’espressione analitica delle B–splines N2,2 , N3,2 e di
N1,3 , N2,3 , N3,3 e farne il grafico in IR con T = {0 , 1 , 2 , 3 , 3 , 4 , 5 , 6} .
Esercizio 5. Ricavare T e M a partire dal vettore esteso dei nodi definito
nell’esercizio precedente per k = 2 e per k = 3 e dire quindi su quale intervallo
[a , b] della retta reale le B–splines di ordine k definibili mediante T formano
una base per Sk−1,T,M .
Per quanto riguarda le B–splines a nodi multipli, ossia definite relativamente al vettore esteso dei nodi T come detto sopra, `e possibile dimostrare
che valgono ancora le propriet`a P1), P2) e P3). Inoltre si dimostra con
tecniche simili a quelle utilizzate per le B–splines classiche la validit`a del teorema di Curry–Shoenberg che asserisce in questo caso che lo spazio Sk−1,T ,M
coincide con Sk,T e che le B–splines ne costituiscono ancora una base.
Osservazione 1. Data l’arbitrariet`a con cui si possono definire i nodi ausiliari sinistri e destri in T, in genere si tende a fare la seguente scelta di nodi
ausiliari multipli,
t0 = · · · = tk−2 = tk−1 = a ,
b = tn+1 = · · · = tn+2 = tn+k .
(14)
Esercizio 6. Verificare che la scelta (14) garantiscel’annullamento di tutte
le B–splines di ordine k in a e in b, rispettivamente ad eccezione di N0,k che
in a vale 1 e di Nn,k che in b vale 1.
10
Fissato quindi l’ordine k delle splines con le quali si vuole lavorare (ossia il
grado m = k −1) e il vettore dei nodi T e il relativo vettore delle molteplicit`a
M (e di conseguenza fissato il vettore esteso dei nodi T ), una qualunque spline
s appartenente a Sk−1,T ,M si pu`o univocamente rappresentare mediante la
base delle B–spline,
s(t) =
n
X
ci Ni,k (t),
t ∈ [a , b] .
i=0
Tale rappresentazione delle funzioni di Sk−1,T ,M viene usualmente detta B–
form.
Esercizio 7. Utilizzare il comando spmak del toolbox splines del Matlab per
definire una spline in un fissato spazio Sk−1,T ,M in B–form. Farne quindi il
grafico dopo averla tabulata.
Nelle sezioni seguenti per semplicit`a indicheremo sempre con Sk,T uno
spazio di splines, facendo quindi riferimento alla loro rappresentazione in
B–form.
4
Curve B–spline
Una curva B–spline X : [a , b] → E d `e una curva parametrica le cui componenti sono funzioni spline di un certo grado assegnato m (ordine k = m + 1)
espresse nella base delle B–splines di un certo spazio di splines generalizzate Sm,T ,M , con T = {τi , i = 0, . . . , L} vettore dei break–points assegnato (a = τ0 < · · · < τL = b) e M = {mi , i = 1, . . . , L − 1} vettore delle
molteplicit`a pure assegnato (con mi ∈ IN , 1 ≤ mi ≤ k). Quindi una curva di
tale tipo pu`o essere scritta come segue
X(t) :=
n
X
di Ni,k (t) ,
t ∈ [a , b] ,
i=0
dove i di ∈ E d sono punti assegnati in modo ordinato dove la spezzata che
li congiunge dicesi poligono di controllo (di de Boor) relativo alla curva X.
Fissato lo spazio Sm,T ,M , abbiamo visto che per definire la corrispondente
base delle B–splines Ni,k , i = 0, . . . , n basta definire il corrispondente vettore
esteso dei nodi T = {t0 , . . . , tn+k } a partire dal grado m, da T e da M e in
11
generale la funzione vettoriale X sar`a C k−mi −1 nel break–point τi , , sebbene
naturalmente possano esistere particolari poligoni di controllo tali che una o
tutte le componenti della X risultino in τi pi`
u regolari (si pensi che i polinomi di grado m possono essere visti come particolari funzioni appartenenti
a Sm,T ,M ).
Grazie alle propriet`a delle B–splines, le curve B–splines godono delle
seguenti propriet`a:
• invarianza per trasformazioni affini (conseguenza della propriet`a di partizione dell’unit`a)
• localit`a (conseguenza della propriet`a di supporto compatto)
• strong convex–hull (conseguenza di partizione unit`a, non negativit`a e
supporto compatto)
• end–point interpolation se il vettore esteso dei nodi ha nodi ausiliari
multipli
• possibilit`a di definire curve chiuse (se gli ultimi k − 1 punti di controllo
coincidono con i primi k − 1 e il vettore esteso dei nodi `e ciclico (ossia
hi := hn−k+2+i , hn+1+i := hk−1+i , i = 0, . . . , k − 2).
Si noti che le curve di Bezier possono essere ottenute come un caso particolare
di curve B–spline usando T = {a , b} e nodi ausiliari multipli. Le curve B–
spline hanno per`o il vantaggio di svincolare il grado dal numero di punti di
controllo. Inoltre godono della propriet`a di localit`a che risulta davvero utile
per il disegno computerizzato e che permette di dimostrare quanto asserito
nel seguente esercizio,
Esercizio 8. Verificare che se k punti di controllo consecutivi sono allineati
allora la curva X per un tratto (corrispondente a un sottointervallo) si schiaccia sul segmento che li congiunge. Se sono solo k − 1 i punti di controllo
consecutivi allineati allora X tocca il segmento che li congiunge. Infine se il
poligono `e degenere con k − 1 punti di controllo consecutivi coincidenti con
lo stesso punto, allora la curva passa per tale punto.
Per quanto riguarda la derivazione, se X `e derivabile in [a , b] (quindi ogni
mi < k − 1), si dimostra che la sua derivata pu`o essere rappresentata come
12
segue,
n
X
dX
(1)
= (k − 1)
di Ni,k−1 (t) ,
dt
i=1
t ∈ [a , b] ,
dove
di − di−1
, i = 1, . . . , n .
ti+k−1 − ti
Si osservi che, nel caso ci siano k−1 punti di controllo consecutivi coincidenti,
questa formula implica che nel break–point τi in cui tale punto di controllo
(τi ) = 0.
viene interpolato si ha che risulta dX
dt
Le curve B–splines nel piano godono anche della propriet`a di variation–
diminishing che, come abbiamo visto parlando di curve di B´ezier, significa
che il numero di intersezioni di una curva B–spline piana con una qualunque
retta r `e minore o uguale del numero di intersezioni fra r e il suo poligono di
controllo. Tale propriet`a deriva dal fatto che le B–splines formano un sistema
di funzioni totalmente positivo in [a , b].
(1)
di
4.1
:=
Algoritmi per curve B–spline
Per valutare in un punto t o in una serie di punti in [a , b] una curva B–spline
X si pu`o utilizzare l’algoritmo di de Boor che ha diverse somiglianze con
l’algoritmo di de Casteljau per curve di B´ezier. Una differenza significativa
consiste nel fatto che preliminarmente occorre individuare il sottointervallo
[tj , tj+1 ) cui appartiene il punto t nel quale si vuole calcolare X(t), per cui
si pu`o scrivere
j
X
X(t) =
di Ni,k (t) .
i=j−k+1
L’idea `e allora quella di eseguire k − 1 passi in ciascuno dei quali si riscrive
X(t) in termini di B–splines diminuite di un ordine. Pi`
u precisamente, posto
(0)
di := di , i = j − k + 1, . . . , j , utilizzando la formula recursiva per le B–
splines, al primo passo si scrive
X(t) =
j
X
(1)
di (t)Ni,k−1 (t) ,
i=j−k+2
dove
(1)
(0)
(0)
di (t) := (1 − ωi,k (t)) di−1 + ωi,k (t) di , i = j − k + 2, . . . , j ,
13
e dove si ricorda che
t−ti
ti+s−1 −ti
ωi,s (t) :=
se ti < ti+s−1 ,
altrimenti.
0
In generale, al passo r–esimo scriveremo
j
X
X(t) =
(r)
di (t)Ni,k−r (t) ,
i=j−k+r+1
con
(r)
(r−1)
di (t) := (1 − ωi,k−r+1 (t)) di−1
(0)
+ ωi,k−r+1 (t) di , i = j − k + r + 1, . . . , j .
(k−1)
(t) . In tutto occorre calcoAl passo (k − 1)–esimo otteniamo X(t) = dj
lare quindi k(k − 1)/2 nuovi punti di controllo ciascuno definito come combinazione convessa di due punti di controllo consecutivi del passo precedente.
Vediamo ora un altro algoritmo molto potente, detto algoritmo di knot–
insertion che `e definibile per curve B–spline. Osserviamo che, se T e Tˆ sono
due vettori estesi dei nodi entrambi ammissibili per definire splines di ordine
k su [a , b] con T ⊂ Tˆ, si deduce dalla definizione di splines che se una
funzione `e combinazione lineare di B–splines associate a T essa deve anche
essere esprimibile come combinazione lineare di B–splines associate a Tˆ. Tale
osservazione ci porta a dire che in particolare, se
X(t) =
n
X
di Ni,k (t) , t ∈ [a , b],
i=0
dove le B–splines sono definite utilizzando T, allora deve essere possibile
ˆ i , i = 0, . . . , n + 1 tali che
determinare d
X(t) =
n+1
X
ˆ iN
ˆi,k (t) , t ∈ [a , b],
d
i=0
ˆi,k (t), i = 0, . . . , n+1 si sono indicate le B–splines di ordine sempre
dove con N
k costruite utilizzando il vettore esteso dei nodi Tˆ = T ∪ {tˆ}, con tˆ ∈ (a , b)
(che quindi pu`o corrispondere a un nuovo break–point o pu`o essere utilizzato
per aumentare la molteplicit`a di un vecchio break–point). Omettendo la
14
ˆ i , i = 0, . . . , n + 1,
dimostrazione, riportiamo qui soltanto l’espressione dei d
supponendo che tˆ ∈ [tr , tr+1 ),

se 0 ≤ i ≤ r − k + 1 ,
 di ,
ˆ
ˆ
ˆ
di :=
(1 − ωi,k (t)) di−1 + ωi,k (t)) di , se r − k + 2 ≤ i ≤ r ,

di−1 ,
se r + 1 ≤ i ≤ n + 1 .
Un’applicazione interessante di questo algoritmo consiste nel portare ogni
nodo ad avere molteplicit`a k ottenendo quindi la rappresentazione B´ezier–
spline della curva stessa (ossia polinomiale a tratti).
5
Interpolazione e approssimazione ai minimi
quadrati in Sk,T
Le splines costituiscono una generalizzazione estremamente duttile dei polinomi pur mantenendone la facilit`a di impego. Questo spiega perch`e esse abbiano largo impiego sia nell’ambito dell’approssimazione che in quello delle
applicazioni grafiche.
Per quanto riguarda l’interpolazione, siamo innanzi tutto interessati a
stabilire se esiste ed `e unica la spline s appartenente a Sk,T tale che
s(xj ) = fj , j = 0, . . . , n ,
(15)
dove a ≤ x0 < · · · < xn ≤ b (con a = tk−1 e b = tn+1 ), e dove fj denota
il valore noto assunto in xj dalla funzione f (x) da interpolare. Al solito le
ascisse xi , i = 0, . . . , n, si dicono ascisse di interpolazione e si suppongono
distinte. Ovviamente, usando la B–form per rappresentare s, il problema si
riconduce a stabilire se `e nonsingolare la seguente matrice A di dimensione
(n + 1) × (n + 1),


N0,k (x0 ) · · · Nn,k (x0 )


..
..
..
A := 
(16)
,
.
.
.
N0,k (xn ) · · · Nn,k (xn )
detta matrice di collocazione delle B–splines nelle ascisse xi , i = 0, . . . , n.
Infatti le condizioni di interpolazione in (15) corrispondono ad imporre il
seguente sistema lineare,
Ac = f ,
15
dove c := (c0 , , · · · , cn )T `e il vettore delle incognite corrispondenti ai coefficienti di s in B–form e f := (f0 , , · · · , fn )T `e il termine noto del sistema.
Ora, a differenza di quanto accade per l’interpolazione polinomiale, `e facile
dimostrare che nel caso delle splines la sola ipotesi di ascisse di interpolazione distinte non `e sufficiente a garantire la nonsingolarit`a della matrice
A e quindi l’esistenza e l’unicit`a della spline interpolante. Se per esempio si
scelgono tutte le ascisse xi < tn , i = 0, . . . , n, l’ultima colonna di A `e tutta
nulla e quindi necessariamente A risulter`a singolare. E’ quindi evidente che,
per garantire la nonsingolarit`a di A sar`a necessario assumere delle restrizioni
sulle ascisse di interpolazione legate alla distribuzione del vettore dei nodi.
Nel seguito, per k > 1, faremo sempre riferimento al caso di molteplicit`a
mi < k, i = 1, . . . .L − 1. Il teorema fondamentale a questo riguardo risulta
essere il cosiddetto teorema di Witney–Schoenberg,
Teorema 1. Sia k > 1 e mi < k, i = 1, . . . , L − 1. La matrice di collocazione A delle B–splines definita in (16) risulta nonsingolare sse le ascisse
di interpolazione xi , i = 0, . . . , n, oltre ad essere distinte (e ordinate in senso
crescente), verificano le seguenti disuguaglianze (dette di Witney–Schoenberg)
,
Ni,k (xi ) > 0 , i = 0, . . . , n .
(17)
Dimostrazione : Facciamo intanto vedere che le condizioni in (17) sono
necessarie, osservando che esse corrispondono a chiedere ti < xi < ti+k , con la
possibilit`a di x0 = t0 (xn = tn+k ) nel caso di nodi ausiliari multipli.Escludendo
per ora questi ultimi due casi particolari, supponiamo allora per assurdo che
esista xi ∈
/ (ti , ti+k ). Se risulta xi ≤ ti , si ha che Nj,k (xi ) = 0 , ∀j ≥ i. Ma
essendo le ascisse di interpolazione ordinate in senso crescente, ci`o implica
che Nj,k (xr ) = 0 , ∀j ≥ i, ∀r ≤ i . La matrice di collocazione A introdotta in
(16) sarebbe quindi una matrice a blocchi del tipo
A1,1 0
A=
,
(18)
A2,1 A2,2
con il blocco nullo di dimensione (i + 1) × (n − i + 1) . Essendo il blocco A2,2
di dimensione (n − i) × (n − i + 1), le ultime (n − i + 1) colonne della matrice
A sarebbero necessariamente linearmente dipendenti e quindi la matrice A
sarebbe singolare. Se invece risulta xi ≥ ti+k , si ha che Nj,k (xi ) = 0, ∀j ≤ i
e quindi Nj,k (xr ) = 0 , ∀j ≤ i, ∀r ≥ i . A allora avrebbe la struttura a blocchi
16
del tipo
A=
A1,1 A1,2
0 A2,2
,
(19)
con il blocco nullo di dimensione (n − i + 1) × (i + 1) . Essendo il blocco A2,2
di dimensione ((n − i + 1) × (n − i), le ultime (n − i + 1) righe della matrice
A sarebbero necessariamente linearmente dipendenti e quindi la matrice A
sarebbe singolare.
Facciamo allore ora vedere che le condizioni in (17) sono anche sufficienti.
Facciamo per`o innanzi tutto vedere che, senza perdita di generalit`a, si pu`o
assumere ti+1 ≤ xi ≤ ti+k−1 , i = 0, . . . , n. Infatti nel caso esistesse una
ascissa di interpolazione xi tale che per esempio xi < ti+1 , allora la matrice
A definita in (16) sarebbe una matrice triangolare a blocchi con due blocchi
diagonali quadrati rispettivamente di dimensione i + 1 e n − i e quindi la
sua nonsingolarit`a si otterrebbe dimostrando la nonsingolarit`a di queste due
sottomatrici. Il raginamento potrebbe essere ripetuto iterativamente fino
ad arrivare a considerare valida l’ipotesi suddetta. Osserviamo che nel caso
k > 2 si pu`o assumere addirittura, senza perdita di generalit`a, che ti+1 <
xi < ti+k−1 , i = 0, . . . , n (dato che, se xi = ti+1 o xi = ti+k−1 , `e ancora
valido il ragionamento precedente).
Per k = 2 assumiamo quindi xi = ti+1 . Allora risulta Ni,2 (xi ) = 1 e
Ni,2 (xj ) = 0 se j 6= i. Quindi la matrice A coincide con la matrice identit`a che
`e ovviamente nonsingolare. Consideriamo quindi il caso k ≥ 3, supponendo
ti+1 < xi < ti+k−1 , i = 0, . . . , n. Osserviamo che ci`o implica anche che
mi ≤ k − 2, i = 1, . . . , L − 1 e quindi che Sk,T,M ⊂ C 1 [a , b]. Ora, se per
assurdo la matrice A fosse singolare, esisterebbe un vettore c ∈ IRn+1 non
identicamente nullo tale che Ac = 0, cio´e esisterebbe una spline s ∈ Sk,T,M
non identicamente nulla che si annullerebbe nelle (n + 1) ascisse distinte
xi , i = 0, . . . n tali che ti+1 < xi < ti+k−1 . Dal teorema di Rolle seguirebbe
allora che esisterebbero n ascisse distinte yi , i = 0, . . . , n − 1, tali che ti+1 <
xi < yi < xi+1 < ti+k , ossia tali che ti+1 < yi < ti+k , i = 0, . . . , n − 1 nelle
quali dovrebbe annullarsi s0 ∈ Sk−1,T 0 ,M con T 0 = {t1 , . . . , tn+k−1 }. Quindi,
se k = 3 si arriverebbe ad un assurdo in quanto le ascisse yi , i = 0, . . . , n − 1,
verificano le condizioni di Witney–Schoenberg relativamente all’ordine k − 1
per T 0 . Se k > 3 si pu`o quindi fare la dimostrazione per induzione.
Osservazione 2. Se k > 1 e mi < k, i = 1, . . . , L − 1 e le ascisse di interpolazione sono scelte come le cosiddette ascisse di Greville definite mediante
17
i nodi come segue,
xi := (ti+1 + · · · + ti+k−1 )/(k − 1) ,
i = 0,... ,n,
allora le condizioni di Witney–Schoenberg sono verificate. Infatti in tal caso,
essedo i nodi in T non decrescenti e al pi`
u di molteplicit`a k − 1 necessariamente ti < xi < ti+k e quindi valgono le disuguaglianze in (17).
Osserviamo inoltre che nel caso lineare (k = 2) a nodi semplici n = L
e quindi i nodi τ0 = t1 , . . . , τL = tn+1 sono esattamente tanti quante sono
le condizioni di interpolazione. In tal caso, scegliendo xi = τi , i = 0, . . . , n,
le condizioni (17) sono sicuramente verificate e quindi la spline lineare a
nodi semplici interpolante nei nodi risulta univocamente determinata (il
suo grafico altro non `e che la spezzata che congiunge i punti di coordinate
(xi , fi ), i = 0, . . . , n). Se per`o k > 2, risulta L = n − k + 2 < n e quindi se ci
si limita a considerare condizioni di interpolazione nei nodi non si hanno sufficienti condizioni per caratterizzare la spline. Le splines cubiche interpolanti
nei nodi per esempio richiedono 2 condizioni ausiliari opportune che vengono
assegnate agli estremi a = tk−1 e b = tn+1 .
Per quanto riguarda l’approssimazione ai minimi quadrati, date m n
ascisse xi , i = 0, . . . , m siamo interessati a determinare la spline s ∈ Sk,T,M
tale che sia minima la seguente quantit`a detta residuo,
m
X
(fi − s(xi ))2 .
i=0
Rappresentando s in B–form attraverso il vettore dei coefficienti c = (c0 ,
· · · , cn )T , tale problema pu`o essere formalizzato come segue,
min
kf − Ack2
n+1
c∈IR
dove ora A `e una matrice rettangolare di dimensione (m + 1) × (n + 1)
che sempre colloca le B–splines in tutte le ascisse xi , i = 0, . . . , m. Sappiamo quindi dall’algebra lineare che il problema ammette soluzione unica se
la matrice A ha rango massimo (n + 1) (e tale soluzione si calcola utilizzando la fattorizzazione QR di A). Il rango massimo pari a (n + 1) risulta
garantito se `e possibile estrarre (n + 1) righe da A tali che la corrispondente
matrice quadrata An+1 risulti non singolare. Ci`o significa che deve esistere
una sottosequenza xij , j = 0, . . . , n di xi , i = 0, . . . , m, di ascisse distinte che
verifichino le condizioni di Witney–Schoenberg, ossia tali che tj < xij < tj+k ,
per j = 0, . . . , n.
18
References
[1] C de Boor (2001), A Practical Guide to Splines, Revised edition,
Applied Mathematical Sciences 27, Springer–Verlag, New York.
19