Descripción
Deje $\vec{U}=\{u_0,u_1,\ldots,u_m\}$ denota una no disminución de la secuencia de los números reales, yo.e, $u_i\leq u_{i+1} \quad i=0,1,2\ldots m-1$.
y el $i$-th B-spline función de base de $p$-grado, que se denota por a $N_{i,p}(u)$, se define de la siguiente manera:
$$ N_{i,0}(u)= \begin{cases} 1 & u_i\leq u<u_{i+1}\\ 0 & otherwise \end{casos} $$ $$ N_{i,p}(u)= \frac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}(u)+\frac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i+1,p-1}(u) $$
By reading the textbook The NURBS Book, I can know the following recursive formula about the derivetive of $N_{i,p}(u)$.
$$ \frac{d}{du}N_{i,p}(u)=p\left[ \frac{N_{i,p-1}(u)}{u_{i+p}-u_i}-\frac{N_{i+1,p-1}(u)}{u_{i+p+1}-u_{i+1}} \right] \qquad (1) $$
In addition, I can also understand the verification process by mathematical induction that the author given in the textbook pp.59-60. Namely,
(1) Varifying the correctness of this recursive formula for $p=1$;
(2) Assuming this formula is right for $p=k$, then proved that this formula is also right for $p=k+1$ with help of the assumption.
However, I would like to know where this formula came from. The author just given the conclusion and proved it by mathematical induction.
QUESTION
How to deduce the derivative formmula of the B-spline basis function $N_{i,p}(u)$?
Aunque el autor ha dado una referencia relacionada con El Cálculo de todos los Derivados de una B-spline Base en la bibliografía, no puedo descargar ese papel por el libriary de nuestra universidad. Además, la referencia sólo de otra fórmula recursiva(por favor ver Eq.(2)), no para Eq.(1).
$$ N_{i,p}^{(k)}=\frac{p}{p-k}\left(\frac{u-u_i}{u_{i+p}-u_i}N_{i,p-1}^{(k)}+\frac{u_{i+p+1}-u}{u_{i+p+1}-u_{i+1}}N_{i,p-1}^{(k)}\right) \quad (2) $$
where $k=0,1,\cdots,p-1$
Por último, he descubierto que la Eq.(1) fue útil de Eq.(2), y se aplicó en Wolfram Mathematica. Por ejemplo,
knots = {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1};
D[BSplineBasis[{3, knots}, 2, x], x]
(*9/2 BSplineBasis[{2, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 2, x] -
3 BSplineBasis[{2, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 3, x]*)
D[BSplineBasis[{3, knots}, 2, x], {x, 2}]
(*9/2 (6 BSplineBasis[{1, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 2, x] -
3 BSplineBasis[{1, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 3, x]) -
3 (3 BSplineBasis[{1, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 3, x] -
3 BSplineBasis[{1, {0, 0, 0, 0, 1/3, 2/3, 1, 1, 1, 1}}, 4, x])*)
Muchas gracias! :)