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
© Copyright 2024 Paperzz