10 votos

¿Cómo deducir la fórmula de recursivo derivado de base de B-spline?

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! :)

6voto

bubba Puntos 16773

B-spline funciones de base son sólo polinomios a trozos, por supuesto. Esto implica que la derivada $g$ de una b-spline función de base de $f$ grado $p$ es un polinomio a trozos de grado $p-1$ con los mismos puntos de ruptura, entre los segmentos. Por eso, $g$ puede ser escrito como una cierta combinación lineal de b-spline funciones de base de grado $p-1$. El único problema es averiguar lo que los coeficientes son en esta combinación lineal, que luego le da las fórmulas citado. Una vez hecho esto, usted puede "demostrar" la fórmula como si por arte de magia, solo por confirmar que es correcta. Como se observa, en este caso, la verificación de una fórmula no le da ninguna pista acerca de dónde vino, o incluso ¿por qué una fórmula que debe de existir.

Otro enfoque es trabajar primero con las curvas de Bézier, que son un caso especial de b-splines. En este caso, es fácil escribir fórmulas explícitas para las funciones de base (que son sólo los polinomios de Bernstein), por lo que el álgebra es más simple. Usted puede fácilmente derivar las fórmulas para las derivadas de las curvas de Bézier, y esto sugiere que otras fórmulas que podrían existir en el más general de b-spline caso, también.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X