(maxima.info)Functions and Variables for Bernstein
42.1 Functions and Variables for Bernstein
==========================================
-- Function: bernstein_poly (<k>, <n>, <x>)
Provided 'k' is not a negative integer, the Bernstein polynomials
are defined by 'bernstein_poly(k,n,x) = binomial(n,k) x^k
(1-x)^(n-k)'; for a negative integer 'k', the Bernstein polynomial
'bernstein_poly(k,n,x)' vanishes. When either 'k' or 'n' are non
integers, the option variable 'bernstein_explicit' controls the
expansion of the Bernstein polynomials into its explicit form;
example:
(%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
The Bernstein polynomials have both a gradef property and an
integrate property:
(%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
For numeric inputs, both real and complex, the Bernstein
polynomials evaluate to a numeric result:
(%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
To use 'bernstein_poly', first 'load("bernstein")'.
-- Variable: bernstein_explicit
Default value: 'false'
When either 'k' or 'n' are non integers, the option variable
'bernstein_explicit' controls the expansion of 'bernstein(k,n,x)'
into its explicit form; example:
(%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
When both 'k' and 'n' are explicitly integers, 'bernstein(k,n,x)'
_always_ expands to its explicit form.
-- Function: multibernstein_poly (<[k1,k2,..., kp]>, <[n1,n2,..., np]>,
<[x1,x2,..., xp]>)
The multibernstein polynomial 'multibernstein_poly (<[k1, k2, ...,
kp]>, <[n1, n2, ..., np]>, <[x1, x2, ..., xp]>)' is the product of
bernstein polynomials 'bernstein_poly(k1, n1, x1)
bernstein_poly(k2, n2, x2) ... bernstein_poly(kp, np, xp)'.
To use 'multibernstein_poly', first 'load("bernstein")'.
-- Function: bernstein_approx (<f>, <[x1, x1, ..., xn]>, n)
Return the 'n'-th order uniform Bernstein polynomial approximation
for the function '(x1, x2, ..., xn) |--> f'. Examples
(%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
(%o2) f(1, 1) x y + 2 f(-, 1) (1 - x) x y
2
2 2 1 2
+ f(0, 1) (1 - x) y + 2 f(1, -) x (1 - y) y
2
1 1 1 2
+ 4 f(-, -) (1 - x) x (1 - y) y + 2 f(0, -) (1 - x) (1 - y) y
2 2 2
2 2 1 2
+ f(1, 0) x (1 - y) + 2 f(-, 0) (1 - x) x (1 - y)
2
2 2
+ f(0, 0) (1 - x) (1 - y)
To use 'bernstein_approx', first 'load("bernstein")'.
-- Function: bernstein_expand (<e>, <[x1, x1, ..., xn]>)
Express the _polynomial_ 'e' exactly as a linear combination of
multi-variable Bernstein polynomials.
(%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 signals an error when the first argument isn't a polynomial.
To use 'bernstein_expand', first 'load("bernstein")'.
automatically generated by info2www version 1.2.2.9