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(1i)ni,(in)=i!(ni)!n!,i=0,1,...,n.
下图为n=4时的Bernstein基函数的图像n=5

二、Bernstein基函数的性质

对于t∈[0,1]t\in[0,1]t[0,1],Bernstein基函数有以下性质:

  1. 非负性.
    Bin(t)≥0,t∈[0,1]. B^n_i(t)\geq 0,t\in[0,1]. Bin(t)0,t[0,1].

  2. 单位分解性.
    ∑i=1nBin(t)=[t+(1−t)]n≡1. \sum_{i=1}^nB^n_i(t) = [t+(1-t)]^n \equiv1. i=1nBin(t)=[t+(1t)]n1.

  3. 端点性质.在端点t=0t=0t=0t=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.

  4. 对称性.从图像上看,第 iii 个和第 n−in-ini 个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)=Bnin(1t),i=0,1,...,n.

  5. 导函数.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(Bi1n1(t)Bin1(t)).

  6. 最大值.Bin(t)B^n_i(t)Bin(t)t=int = \frac{i}{n}t=ni时达到最大值.

  7. 递推性.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)=(1t)Bin1(t)+tBi1n1(t),Bin(t)=n+1i+1Bi+1n+1(t)+(1n+1i)Bi1n1(t),i=0,1,...,n.
    其中B−1n−1(t)=Bnn−1(t)≡0.B^{n-1}_{-1}(t) = B^{n-1}_{n}(t)\equiv0.B1n1(t)=Bnn1(t)0.

  8. 积分等值性.所有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


代码可以直接运行。
运行结果如下:
在这里插入图片描述

Logo

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

更多推荐