Bernstein基函数及其基本性质 matlab实现
一.Bernstein基函数
Bernstein基函数可以作为多项式空间的一组基底,n次Bernstein基函数 B i n ( t ) B^n_i(t) Bin(t)定义为:
B i 3 ( t ) = ( i n ) t i ( 1 − i ) n − i , ( i n ) = n ! i ! ( n − i ) ! , i = 0 , 1 , . . . , n . B^3_i(t) = (^n_i)t^i(1-i)^{n-i}, (^n_i) = \frac {n!} {i!(n-i)!} ,i=0,1,...,n. Bi3(t)=(in)ti(1−i)n−i,(in)=i!(n−i)!n!,i=0,1,...,n.
下图为n=5时的Bernstein基函数的图像
二、Bernstein基函数的性质
对于 t ∈ [ 0 , 1 ] t\in[0,1] t∈[0,1],Bernstein基函数有以下性质:
-
非负性.
B i n ( t ) ≥ 0 , t ∈ [ 0 , 1 ] . B^n_i(t)\geq 0,t\in[0,1]. Bin(t)≥0,t∈[0,1]. -
单位分解性.
∑ i = 1 n B i n ( t ) = [ t + ( 1 − t ) ] n ≡ 1. \sum_{i=1}^nB^n_i(t) = [t+(1-t)]^n \equiv1. i=1∑nBin(t)=[t+(1−t)]n≡1. -
端点性质.在端点 t = 0 t=0 t=0和 t = 1 t=1 t=1,分别只有一个Bernstein基函数取值为1,其余为0,即
B i n ( 0 ) = { 1 , i = 0 , 0 , i ≠ 0 , , B^n_i(0) = \begin{cases}1,&i= 0,\\ 0, & i \not=0 , \end{cases}, Bin(0)={ 1,0,i=0,i=0,,
B i n ( 1 ) = { 1 , i = n , 0 , i ≠ n . B^n_i(1) = \begin{cases}1,&i= n,\\ 0, & i \not=n . \end{cases} Bin(1)={ 1,0,i=n,i=n. -
对称性.从图像上看,第 i i i 个和第 n − i n-i n−i 个Bernstein基函数关于 t = 1 2 t= \frac {1} {2} t=21对称,即
B i n ( t ) = B n − i n ( 1 − t ) , i = 0 , 1 , . . . , n . B^n_i(t) = B^n_{n-i}(1-t) , i=0,1,...,n. Bin(t)=Bn−in(1−t),i=0,1,...,n. -
导函数.n次Bernstein 基函数的导数可以用由两个n-1次的Bernstein基函数线性组合得到,即
( B i n ( t ) ) ′ = n ( B i − 1 n − 1 ( t ) − B i n − 1 ( t ) ) . (B^n_i(t))^{'} = n(B^{n-1}_{i-1}(t)-B^{n-1}_{i}(t)). (Bin(t))′=n(Bi−1n−1(t)−Bin−1(t)). -
最大值. B i n ( t ) B^n_i(t) Bin(t)在 t = i n t = \frac{i}{n} t=ni时达到最大值.
-
递推性.n次Bernstein基函数可分别由两个n-1次或两个n+1次的Bernstein基函数递推得到,即
{ B i n ( t ) = ( 1 − t ) B i n − 1 ( t ) + t B i − 1 n − 1 ( t ) , B i n ( t ) = i + 1 n + 1 B i + 1 n + 1 ( t ) + ( 1 − i n + 1 ) B i − 1 n − 1 ( t ) , i = 0 , 1 , . . . , n . \begin{cases}B^n_i(t) = (1-t)B^{n-1}_i(t)+tB^{n-1}_{i-1}(t) , \\ B^n_i(t) =\frac{i+1}{n+1}B^{n+1}_{i+1}(t)+(1-\frac{i}{n+1})B^{n-1}_{i-1}(t) , \\ i=0,1,...,n . \end{cases} ⎩⎪⎨⎪⎧Bin(t)=(1−t)Bin−1(t)+tBi−1n−1(t),Bin(t)=n+1i+1Bi+1n+1(t)+(1−n+1i)Bi−1n−1(t),i=0,1,...,n.
其中 B − 1 n − 1 ( t ) = B n n − 1 ( t ) ≡ 0. B^{n-1}_{-1}(t) = B^{n-1}_{n}(t)\equiv0. B−1n−1(t)=Bnn−1(t)≡0. -
积分等值性.所有n次Bernstein基函数在区间[0,1]上的积分相等,即
∫ 0 1 B i n ( t ) d t = 1 n + 1 , i = 0 , 1 , . . . , n . \int_0^1 {B^n_i(t)} \, {dt} = \frac{1}{n+1}, i=0,1,...,n. ∫01Bin(t)dt=n+11,i=0,1,...,n.
%基函数图像相应的matlab程序为:
function bezier
% Bernstein基函数的图像
a = 0;
b = 1;
M = 40;
hx = (b-a)/M;
x = (a:hx:b)';
n=4;
for i = 1:n+1
y = B(x,n,i-1);
figure(1)
plot(x,y)
hold on
end
end
function y = B(x,n,i)
y = k(n,i).*(x.^i).*((1-x).^(n-i));
end
function y = k(n,i) %组合系数
y1 = factorial(n); %n的阶乘
y2 = factorial(i)*factorial(n-i);
y = y1/y2;
end
代码可以直接运行。
运行结果如下: