title: Algoritmo de De Casteljau
text: # Algoritmo de De Casteljau
  
  El algoritmo de De Casteljau es, en el campo del análisis numérico de la matemática, un método recursivo para calcular polinomios en la forma de Bernstein o base de Bernstein, o en las curvas de Bézier. Toma su nombre del ingeniero Paul De Casteljau. Este algoritmo es un método numéricamente estable para evaluar las curvas de Bézier.
  
  Aunque el algoritmo de De Casteljau es relativamente lento en las configuraciones, si se compara con otros es numéricamente más estable.
  
  ## Idea base
  
  La idea principal de este algoritmo surge de requisitos gráficos en informática y se basa en el hecho que una restricción de una curva de Bézier es también una curva de Bézier. Entonces, a partir de la curva inicial se encuentran los puntos de control de dos curvas definidas por $t\in [0,1/2]$ y $t\in [1/2,1]$ y se fijan los pixeles que corresponden al punto por $t={\frac {1}{2}}$. Donde se iteran los procesos sobre cada una de las dos curvas hasta que la precisión sea inferior al pixel.
  
  ## Definición
  
  Dado un polinomio B en forma de Bernstein de grado n
  
      $B(t)=\sum _{i=0}^{n}\beta _{i}b_{i,n}(t),$
  
  donde b es un polinomio base de Bernstein, el polinomio en el punto $t_0$ puede ser calculado con la relación de recurrencia
  
      $\beta _{i}^{(0)}=\beta _{i}{\mbox{ , }}i=0,\ldots ,n$
      $\beta _{i}^{(j)}=\beta _{i}^{(j-1)}(1-t_{0})+\beta _{i+1}^{(j-1)}t_{0}{\mbox{ , }}i=0,\ldots ,n-j{\mbox{ , }}j=1,\ldots n$
  
  con
  
      $B(t_{0})=\beta _{0}^{(n)}$.
  
  ## Anotaciones
  
  En el cálculo manual es útil escribir los coeficientes en un esquema triangular del tipo:
  
      ${\begin{matrix}\beta _{0}&=\beta _{0}^{(0)}&&&\\&&\beta _{0}^{(1)}&&\\\beta _{1}&=\beta _{1}^{(0)}&&&\\&&&\ddots &\\\vdots &&\vdots &&\beta _{0}^{(n)}\\&&&&\\\beta _{n-1}&=\beta _{n-1}^{(0)}&&&\\&&\beta _{n-1}^{(1)}&&\\\beta _{n}&=\beta _{n}^{(0)}&&&\\\end{matrix}}$
  
  En la elección de un punto $t_0$ por el cual calcular el polinomio de Bernstein se pueden usar las diagonales del esquema triangular para construir una división del polinomio.
  
      $B(t)=\sum _{i=0}^{n}\beta _{i}^{(0)}b_{i,n}(t){\mbox{ , }}\qquad t\in [0,1]$
  
  hasta
  
      $B_{1}(t)=\sum _{i=0}^{n}\beta _{0}^{(i)}b_{i,n}\left({\frac {t}{t_{0}}}\right){\mbox{ , }}\qquad t\in [0,t_{0}]$
  
  y
  
      $B_{2}(t)=\sum _{i=0}^{n}\beta _{n-i}^{(i)}b_{i,n}\left({\frac {t-t_{0}}{1-t_{0}}}\right){\mbox{ , }}\qquad t\in [t_{0},1]$
  
  ## Ejemplo
  
  Si se desea calcular el valor del polinomio de Bernstein de grado 2 con los coeficientes:
  
      $\beta _{0}^{(0)}=\beta _{0}$
      $\beta _{1}^{(0)}=\beta _{1}$
      $\beta _{2}^{(0)}=\beta _{2}$
  
  en el punto $t_0.$
  
  Se efectúa la recursión con:
  
      $\beta _{0}^{(1)}=\beta _{0}^{(0)}(1-t_{0})+\beta _{1}^{(0)}t_{0}=\beta _{0}(1-t_{0})+\beta _{1}t_{0}$
      $\beta _{1}^{(1)}=\beta _{1}^{(0)}(1-t_{0})+\beta _{2}^{(0)}t_{0}=\beta _{1}(1-t_{0})+\beta _{2}t_{0}$
  
  y a la segunda iteración la recursión concluye en:
  
      ${\begin{matrix}\beta _{0}^{(2)}&=&\beta _{0}^{(1)}(1-t_{0})+\beta _{1}^{(1)}t_{0}\\\ &=&\beta _{0}(1-t_{0})(1-t_{0})+\beta _{1}t_{0}(1-t_{0})+\beta _{1}(1-t_{0})t_{0}+\beta _{2}t_{0}t_{0}\\\ &=&\beta _{0}(1-t_{0})^{2}+\beta _{1}2t_{0}(1-t_{0})+\beta _{2}t_{0}^{2}\\\end{matrix}}$
  
  que es el polinomio de Bernstein buscado de grado 2.
  
  