[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 40. Bernstein

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

## 40.1 Funciones y variables para Bernstein

Función: bernstein_poly (k, n, x)

  Si `k` no es un entero negativo, los polinomios de Bernstein se definen como `bernstein_poly(k,n,x) = binomial(n,k) x^k (1-x)^(n-k)`; en cambio, si `k` es un entero negativo, el polinomio de Bernstein `bernstein_poly(k,n,x)` se anula. Cuando o bien `k` o `n` no son enteros, la variable opcional `bernstein_explicit` controla la expansión de los polinomios de Bernstein a su forma explícita.

  Ejemplo:

      (%i1) load(bernstein)$

      (%i2) bernstein_poly(k,n,x);
      (%o2)                bernstein_poly(k, n, x)
      (%i3) bernstein_poly(k,n,x), bernstein_explicit : true;
                                             n - k  k
      (%o3)            binomial(n, k) (1 - x)      x

  Los polinomios de Bernstein tienen definidas su derivada e integral:

      (%i4) diff(bernstein_poly(k,n,x),x);
      (%o4) (bernstein_poly(k - 1, n - 1, x)
                                       - bernstein_poly(k, n - 1, x)) n
      (%i5) integrate(bernstein_poly(k,n,x),x);
      (%o5)
                                                                  k + 1
       hypergeometric([k + 1, k - n], [k + 2], x) binomial(n, k) x
       ----------------------------------------------------------------
                                    k + 1

  Cuando los argumentos contienen números decimales en coma flotante, los polinomios de Bernstein también devuelven resultados decimales.

      (%i6) bernstein_poly(5,9, 1/2 + %i);
                              39375 %i   39375
      (%o6)                   -------- + -----
                                128       256
      (%i7) bernstein_poly(5,9, 0.5b0 + %i);
      (%o7)           3.076171875b2 %i + 1.5380859375b2

  Para hacer uso de `bernstein_poly`, ejecútese primero `load("bernstein")`.

Variable opcional: bernstein_explicit

  Valor por defecto: `false`

  Cuando o bien `k` o `n` no son enteros, la variable opcional `bernstein_explicit` controla la expansión de los polinomios de Bernstein a su forma explícita.

  Ejemplo:

      (%i1) bernstein_poly(k,n,x);
      (%o1)                       bernstein_poly(k, n, x)
      (%i2) bernstein_poly(k,n,x), bernstein_explicit : true;
                                                    n - k  k
      (%o2)                   binomial(n, k) (1 - x)      x

  Cuando tanto `k` como `n` son enteros, `bernstein(k,n,x)` se expande siempre a su forma explícita.

Función: multibernstein_poly ([k1,k2,...,kp],[n1,n2,..., np],[x1,x2,..., xp])

  La sentencia `multibernstein_poly ([k1,k2,...,kp],[n1,n2,..., np],[x1,x2,..., xp])` es el producto de polinomios de Bernstein `bernstein_poly(k1,n1,x1) bernstein_poly(k2,n2,x2) ... bernstein_poly(kp,np,xp)`.

  Para hacer uso de `multibernstein_poly`, ejecútese primero `load("bernstein")`.

Función: bernstein_approx (f,[x1,x1,...,xn],n)

  Devuelve el polinomio de Bernstein uniforme de `n`-ésimo orden que aproxima la función `(x1,x2,..xn) |--> f`.

  Ejemplos:

      (%i1) bernstein_approx(f(x),[x], 2);
                              2       1                          2
      (%o1)             f(1) x  + 2 f(-) (1 - x) x + f(0) (1 - x)
                                      2
      (%i2) bernstein_approx(f(x,y),[x,y], 2);
                     2  2       1                2                  2  2
      (%o2) f(1, 1) x  y  + 2 f(-, 1) (1 - x) x y  + f(0, 1) (1 - x)  y
                                2
                1   2                 1  1
       + 2 f(1, -) x  (1 - y) y + 4 f(-, -) (1 - x) x (1 - y) y
                2                     2  2
                1         2                      2        2
       + 2 f(0, -) (1 - x)  (1 - y) y + f(1, 0) x  (1 - y)
                2
             1                      2                  2        2
       + 2 f(-, 0) (1 - x) x (1 - y)  + f(0, 0) (1 - x)  (1 - y)
             2

  Para hacer uso de `bernstein_approx`, ejecútese primero `load("bernstein")`.

Función: bernstein_expand (e, [x1,x1,...,xn])

  Expresa el polinomio `e` como una combinación lineal de polinomios de Bernstein multivariantes.

      (%i1) bernstein_expand(x*y+1,[x,y]);
      (%o1)           2 x y + (1 - x) y + x (1 - y) + (1 - x) (1 - y)
      (%i2) expand(%);
      (%o2)                               x y + 1

  Maxima devuelve un error si el primer argumento no es un polinomio.

  Para hacer uso de `bernstein_expand`, ejecútese primero `load("bernstein")`.

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by Viktor T. Toth on septiembre, 27 2018 using texi2html 1.76.