16.11.2014 Views

(parte Sestini) : B--splines e curve B-spline

(parte Sestini) : B--splines e curve B-spline

(parte Sestini) : B--splines e curve B-spline

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!