1 @c English version: 2011-07-24
3 * Funciones y variables para Bernstein::
6 @node Funciones y variables para Bernstein, , Bernstein, Bernstein
7 @section Funciones y variables para Bernstein
9 @deffn {Función} bernstein_poly (@var{k}, @var{n}, @var{x})
11 Si @code{k} no es un entero negativo, los polinomios de Bernstein se
12 definen como @code{bernstein_poly(k,n,x) = binomial(n,k) x^k (1-x)^(n-k)};
13 en cambio, si @code{k} es un entero negativo, el polinomio de Bernstein
14 @code{bernstein_poly(k,n,x)} se anula. Cuando o bien @code{k} o @code{n}
15 no son enteros, la variable opcional @code{bernstein_explicit} controla
16 la expansión de los polinomios de Bernstein a su forma explícita.
21 (%i1) load("bernstein")$
23 (%i2) bernstein_poly(k,n,x);
24 (%o2) bernstein_poly(k, n, x)
25 (%i3) bernstein_poly(k,n,x), bernstein_explicit : true;
27 (%o3) binomial(n, k) (1 - x) x
30 Los polinomios de Bernstein tienen definidas su derivada e integral:
33 (%i4) diff(bernstein_poly(k,n,x),x);
34 (%o4) (bernstein_poly(k - 1, n - 1, x)
35 - bernstein_poly(k, n - 1, x)) n
36 (%i5) integrate(bernstein_poly(k,n,x),x);
39 hypergeometric([k + 1, k - n], [k + 2], x) binomial(n, k) x
40 ----------------------------------------------------------------
44 Cuando los argumentos contienen números decimales en coma flotante, los
45 polinomios de Bernstein también devuelven resultados decimales.
48 (%i6) bernstein_poly(5,9, 1/2 + %i);
50 (%o6) -------- + -----
52 (%i7) bernstein_poly(5,9, 0.5b0 + %i);
53 (%o7) 3.076171875b2 %i + 1.5380859375b2
56 Para hacer uso de @code{bernstein_poly}, ejecútese primero @code{load("bernstein")}.
60 @defvr {Variable opcional} bernstein_explicit
61 Valor por defecto: @code{false}
63 Cuando o bien @code{k} o @code{n} no son enteros, la variable opcional @code{bernstein_explicit} controla
64 la expansión de los polinomios de Bernstein a su forma explícita.
69 (%i1) bernstein_poly(k,n,x);
70 (%o1) bernstein_poly(k, n, x)
71 (%i2) bernstein_poly(k,n,x), bernstein_explicit : true;
73 (%o2) binomial(n, k) (1 - x) x
76 Cuando tanto @code{k} como @code{n} son enteros, @code{bernstein(k,n,x)} se
77 expande siempre a su forma explícita.
83 @deffn {Función} multibernstein_poly (@var{[k1,k2,...,kp]},@var{[n1,n2,..., np]},@var{[x1,x2,..., xp]})
85 La sentencia @code{multibernstein_poly (@var{[k1,k2,...,kp]},@var{[n1,n2,..., np]},@var{[x1,x2,..., xp]})}
86 es el producto de polinomios de Bernstein
87 @code{bernstein_poly(k1,n1,x1) bernstein_poly(k2,n2,x2) ... bernstein_poly(kp,np,xp)}.
89 Para hacer uso de @code{multibernstein_poly}, ejecútese primero @code{load("bernstein")}.
95 @deffn {Función} bernstein_approx (@var{f},@var{[x1,x1,...,xn]},n)
97 Devuelve el polinomio de Bernstein uniforme de @code{n}-ésimo orden que aproxima
98 la función @code{(x1,x2,..xn) |--> f}.
103 (%i1) bernstein_approx(f(x),[x], 2);
105 (%o1) f(1) x + 2 f(-) (1 - x) x + f(0) (1 - x)
107 (%i2) bernstein_approx(f(x,y),[x,y], 2);
109 (%o2) f(1, 1) x y + 2 f(-, 1) (1 - x) x y + f(0, 1) (1 - x) y
112 + 2 f(1, -) x (1 - y) y + 4 f(-, -) (1 - x) x (1 - y) y
115 + 2 f(0, -) (1 - x) (1 - y) y + f(1, 0) x (1 - y)
118 + 2 f(-, 0) (1 - x) x (1 - y) + f(0, 0) (1 - x) (1 - y)
122 Para hacer uso de @code{bernstein_approx}, ejecútese primero @code{load("bernstein")}.
128 @deffn {Función} bernstein_expand (@var{e}, @var{[x1,x1,...,xn]})
130 Expresa el polinomio @code{e} como una combinación lineal de polinomios de
131 Bernstein multivariantes.
134 (%i1) bernstein_expand(x*y+1,[x,y]);
135 (%o1) 2 x y + (1 - x) y + x (1 - y) + (1 - x) (1 - y)
140 Maxima devuelve un error si el primer argumento no es un polinomio.
142 Para hacer uso de @code{bernstein_expand}, ejecútese primero @code{load("bernstein")}.