Bernstein基函数及其性质 matlab实现
Bernstein基函数及其基本性质 matlab实现
一.Bernstein基函数
Bernstein基函数可以作为多项式空间的一组基底,n次Bernstein基函数Bin(t)B^n_i(t)Bin(t)定义为:
Bin(t)=(in)ti(1−i)n−i,(in)=n!i!(n−i)!,i=0,1,...,n.
B^n_i(t) = (^n_i)t^i(1-i)^{n-i}, (^n_i) = \frac {n!} {i!(n-i)!} ,i=0,1,...,n.
Bin(t)=(in)ti(1−i)n−i,(in)=i!(n−i)!n!,i=0,1,...,n.
下图为n=4时的Bernstein基函数的图像
二、Bernstein基函数的性质
对于t∈[0,1]t\in[0,1]t∈[0,1],Bernstein基函数有以下性质:
-
非负性.
Bin(t)≥0,t∈[0,1]. B^n_i(t)\geq 0,t\in[0,1]. Bin(t)≥0,t∈[0,1]. -
单位分解性.
∑i=1nBin(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=0t=0t=0和t=1t=1t=1,分别只有一个Bernstein基函数取值为1,其余为0,即
Bin(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,,
Bin(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. -
对称性.从图像上看,第 iii 个和第 n−in-in−i 个Bernstein基函数关于t=12t= \frac {1} {2}t=21对称,即
Bin(t)=Bn−in(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基函数线性组合得到,即
(Bin(t))′=n(Bi−1n−1(t)−Bin−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)). -
最大值.Bin(t)B^n_i(t)Bin(t)在t=int = \frac{i}{n}t=ni时达到最大值.
-
递推性.n次Bernstein基函数可分别由两个n-1次或两个n+1次的Bernstein基函数递推得到,即
{Bin(t)=(1−t)Bin−1(t)+tBi−1n−1(t),Bin(t)=i+1n+1Bi+1n+1(t)+(1−in+1)Bi−1n−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−1n−1(t)=Bnn−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]上的积分相等,即
∫01Bin(t) dt=1n+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
代码可以直接运行。
运行结果如下:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)