function bern = bernstein_poly ( n, x ) %*****************************************************************************80 % %% BERNSTEIN_POLY evaluates the Bernstein polynomials at a point X. % % Discussion: % % The Bernstein polynomials are assumed to be based on [0,1]. % % Formula: % % B(N,I)(X) = [N!/(I!*(N-I)!)] * (1-X)**(N-I) * X**I % % First values: % % B(0,0)(X) = 1 % % B(1,0)(X) = 1-X % B(1,1)(X) = X % % B(2,0)(X) = (1-X)**2 % B(2,1)(X) = 2 * (1-X) * X % B(2,2)(X) = X**2 % % B(3,0)(X) = (1-X)**3 % B(3,1)(X) = 3 * (1-X)**2 * X % B(3,2)(X) = 3 * (1-X) * X**2 % B(3,3)(X) = X**3 % % B(4,0)(X) = (1-X)**4 % B(4,1)(X) = 4 * (1-X)**3 * X % B(4,2)(X) = 6 * (1-X)**2 * X**2 % B(4,3)(X) = 4 * (1-X) * X**3 % B(4,4)(X) = X**4 % % Special values: % % B(N,I)(X) has a unique maximum value at X = I/N. % % B(N,I)(X) has an I-fold zero at 0 and and N-I fold zero at 1. % % B(N,I)(1/2) = C(N,K) / 2**N % % For a fixed X and N, the polynomials add up to 1: % % Sum ( 0 <= I <= N ) B(N,I)(X) = 1 % % Licensing: % % This code is distributed under the GNU LGPL license. % % Modified: % % 22 July 2004 % % Author: % % John Burkardt % % Parameters: % % Input, integer N, the degree of the Bernstein polynomials to be % used. For any N, there is a set of N+1 Bernstein polynomials, % each of degree N, which form a basis for polynomials on [0,1]. % % Input, real X, the evaluation point. % % Output, real BERN(1:N+1), the values of the N+1 Bernstein polynomials at X. % if ( n == 0 ) bern(1) = 1.0; elseif ( 0 < n ) bern(1) = 1.0 - x; bern(2) = x; for i = 2 : n bern(i+1) = x * bern(i); for j = i-1 : -1 : 1 bern(j+1) = x * bern(j) + ( 1.0 - x ) * bern(j+1); end bern(1) = ( 1.0 - x ) * bern(1); end end return end