Basi per funzioni spline

Messaggioda Zstar » 31/05/2021, 11:47

Salve, sto ragionando sulla definizione di Cox-De Boor per basi spline e su una loro implementazione in matlab ma ho un problema nel caso di nodi con molteplicità 1. La definizione delle basi spline avviene per ricorsione e si ha:
$B_(i,p)(x)=(x-\xi_(i))/(\xi_(i+p)-\xi_(i))*B_(i,p-1)(x)+(\xi_(i+p+1)-x)/(\xi_(i+p+1)-\xi_(i+1))*B_(i+1,p-1)(x)$
e passo base
$B_(i,0)=\chi([\xi_(i),\xi_(i+1))$ (funzione caratteristica)

Ora, il problema avviene se ho un vettore di nodi di questo tipo: $Knots=[0 0.25 0.5 0.75 1]$ ossia uniforme e senza nodi multipli. In questo caso, provo a valutare la base per $p>0$ e $x=0$. Supponiamo $p=1$. Per le proprietà sul dominio di queste funzioni, dovrebbe sopravvivere non nulla solo la prima, per $i=0$.
$B(0,1)(0)=(0-0)/(0.25-0)*B_(0,0)(0)$

A questo punto $B_(0,0)(0)=1$ ma il coefficiente che la moltiplica è nullo. Perciò anche $B_(0,1)(0)=0$ cosa impossibile perchè deve sempre valere la regola di partizione dell'unità e quindi dovrei avere che
$\sum_(i=0)^n B_(i,1)(0)=1$
Zstar
New Member
New Member
 
Messaggio: 43 di 92
Iscritto il: 28/01/2020, 09:40

Re: Basi per funzioni spline

Messaggioda apatriarca » 03/06/2021, 12:52

La proprietà di partizione dell'unità si ha soltanto nell'intervallo \([\xi_p, \xi_{n - p})\) per ogni valore di \(p\). Nel tuo caso varrà quindi solo tra \([0.25, 0.75)\). Nella parte esterna a questo intervallo avrai che il valore va da \(0\) a \(1\). In effetti questi nodi per cui vale si chiamano interni e gli altri sono i nodi terminali che si prendono di solito uguali al primo o ultimo nodo interno.

Nello specifico del tuo caso hai che la somma delle basi avrà la forma:
\[
\sum B_{i,1}(x) =
\begin{cases}
x /0.25 & x \in [0, 0.25) \\
(0.75 - x)/0.5 + (x - 0.25)/0.5 = 1 & x \in [0.25, 0.75) \\
(1 - x)/0.25 & x \in [0.75, 1)
\end{cases}
\]
apatriarca
Moderatore
Moderatore
 
Messaggio: 5557 di 10436
Iscritto il: 08/12/2008, 20:37
Località: Madrid

Re: Basi per funzioni spline

Messaggioda Zstar » 06/06/2021, 18:05

Okay, ora è più chiaro, però restano comunque dei dubbi. Ora sto facendo l'algoritmo di De Boor per il calcolo della curva spline in un determinato punto quindi, per la rappresentazione, conviene sfruttare questo algoritmo.
Il mio problema principale sono comunque i nodi iniziale e finale, anche in questo caso.

L'algoritmo prende in input il valore $t$ nel quale deve essere valutata la spline, controlla l'intervallo in cui si trova e calcola la sua molteplicità. A questo punto prende i nodi di interesse e applica l'algoritmo che può essere schematizzato cosi:
Immagine
In questo caso però si prende in considerazione la presenza di nodi multipli sia all'inizio che alla fine della curva. Ma se io non avessi dei nodi multipli e volessi adattare l'algoritmo a funzionare in qualsiasi caso? Non riesco a capire che tipo di modifiche fare...
Zstar
New Member
New Member
 
Messaggio: 44 di 92
Iscritto il: 28/01/2020, 09:40


Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite