多项式是非常有用的数学工具,因为它们定义简单,可以在计算机系统上快速计算,并代表各种函数。多项式可以很容易进行微分和积分,并且可以拼接在一起形成样条曲线,该曲线可以逼近任何函数,达到所需的任何精度。我们在小学四年级就已经学过多项式的相关知识,让我们来回顾一下
p(t)=antn+an−1tn−1+⋯+a1t+a0(1)
p(t)=a_nt^n+a_{n-1}t^{n-1}+\cdots+a_1t+a_0 \tag{1}
p(t)=antn+an−1tn−1+⋯+a1t+a0(1)
上式表示某些初等多项式的{1,t,t2,…,tn}\{1,t,t^2,\dots,t^n\}{1,t,t2,…,tn}的线性组合。
通常来说,次数小于nnn的多项式函数都可以写成式(1)这种形式,原因很简单
- 次数小于或等于nnn的一组多项式构成一个向量空间:多项式可以相加,可以乘以一个标量,且所有向量空间的性质都保持不变。
- {1,t,t2,…,tn}\{1,t,t^2,\dots,t^n\}{1,t,t2,…,tn}这组函数可以作为此向量空间的基,也就是说,任何次数小于或等于nnn的多项式都可以被这组基唯一的线性表示出来。
这组基通常称为幂基(power basis),其只是多项式空间无穷多个基中其中的一个。
下面我们开始讨论多项式空间中的另一种常用的基——伯恩斯坦基(Bernstein basis),并讨论其性质。
伯恩斯坦多项式(Bernstein Polynomials)
nnn次伯恩斯坦多项式定义为
Bi,n(t)=(ni)ti(1−t)n−i(2)
B_{i, n}(t)=\left(\begin{array}{l}
n \\
i
\end{array}\right) t^{i}(1-t)^{n-i} \tag{2}
Bi,n(t)=(ni)ti(1−t)n−i(2)
i=0,1,⋯ ,ni=0,1,\cdots,ni=0,1,⋯,n,其中
(ni)=n!i!(n−i)!
\left(\begin{array}{l}
n \\
i
\end{array}\right) = \frac{n!}{i!(n-i)!}
(ni)=i!(n−i)!n!
从定义我们可以看出,共有n+1n+1n+1个nnn次的伯恩斯坦多项式。为了方便,当i<0i<0i<0或i>ni>ni>n时,我们令Bi,n=0B_{i,n}=0Bi,n=0
-
一次的伯恩斯坦多项式为
B0,1(t)=1−tB1,1(t)=t \begin{array}{l} B_{0,1}(t)=1-t \\ B_{1,1}(t)=t \end{array} B0,1(t)=1−tB1,1(t)=t
当0≤t≤10\leq t \leq 10≤t≤1时,我们可以画出其图像
-
二次伯恩斯坦多项式为
B0,2(t)=(1−t)2B1,2(t)=2t(1−t)B2,2(t)=t2 \begin{array}{l} B_{0,2}(t)=(1-t)^2 \\ B_{1,2}(t)=2t(1-t) \\ B_{2,2}(t)=t^2 \end{array} B0,2(t)=(1−t)2B1,2(t)=2t(1−t)B2,2(t)=t2
当0≤t≤10\leq t \leq 10≤t≤1时,我们可以画出其图像
-
三次伯恩斯坦多项式为
B0,3(t)=(1−t)3B1,3(t)=3t(1−t)2B2,3(t)=3t2(1−t)B3,3(t)=t3 \begin{array}{l} B_{0,3}(t)=(1-t)^3 \\ B_{1,3}(t)=3t(1-t)^2 \\ B_{2,3}(t)=3t^2(1-t) \\ B_{3,3}(t)=t^3 \end{array} B0,3(t)=(1−t)3B1,3(t)=3t(1−t)2B2,3(t)=3t2(1−t)B3,3(t)=t3
当0≤t≤10\leq t \leq 10≤t≤1时,我们可以画出其图像
伯恩斯坦多项式的递归定义
nnn阶伯恩斯坦多项式可以定义为两个n−1n-1n−1阶伯恩斯坦多项式的混合。也就是说第kkk个nnn阶伯恩斯坦多项式可以写成
Bk,n(t)=(1−t)Bk,n−1(t)+tBk−1,n−1(t)(3)
B_{k,n}(t)=(1-t)B_{k,n-1}(t)+tB_{k-1,n-1}(t) \tag{3}
Bk,n(t)=(1−t)Bk,n−1(t)+tBk−1,n−1(t)(3)
为了证明式(3)成了,我们只需用到伯恩斯坦多项式的定义和一些简单的代数:
(1−t)Bk,n−1(t)+tBk−1,n−1(t)=(1−t)(n−1k)tk(1−t)n−1−k+t(n−1k−1)tk−1(1−t)n−1−(k−1)=(n−1k)tk(1−t)n−k+(n−1k−1)tk(1−t)n−k=[(n−1k)+(n−1k−1)]tk(1−t)n−k=(nk)tk(1−t)n−k=Bk,n(t)
\begin{aligned}
(1-t) B_{k, n-1}(t)+t B_{k-1, n-1}(t) &=(1-t)\left(\begin{array}{c}
n-1 \\
k
\end{array}\right) t^{k}(1-t)^{n-1-k}+t\left(\begin{array}{l}
n-1 \\
k-1
\end{array}\right) t^{k-1}(1-t)^{n-1-(k-1)} \\
&=\left(\begin{array}{c}
n-1 \\
k
\end{array}\right) t^{k}(1-t)^{n-k}+\left(\begin{array}{c}
n-1 \\
k-1
\end{array}\right) t^{k}(1-t)^{n-k} \\
&=\left[\left(\begin{array}{c}
n-1 \\
k
\end{array}\right)+\left(\begin{array}{l}
n-1 \\
k-1
\end{array}\right)\right] t^{k}(1-t)^{n-k} \\
&=\left(\begin{array}{l}
n \\
k
\end{array}\right) t^{k}(1-t)^{n-k} \\
&=B_{k, n}(t)
\end{aligned}
(1−t)Bk,n−1(t)+tBk−1,n−1(t)=(1−t)(n−1k)tk(1−t)n−1−k+t(n−1k−1)tk−1(1−t)n−1−(k−1)=(n−1k)tk(1−t)n−k+(n−1k−1)tk(1−t)n−k=[(n−1k)+(n−1k−1)]tk(1−t)n−k=(nk)tk(1−t)n−k=Bk,n(t)
伯恩斯坦多项式是非负的
如果一个函数f(t)f(t)f(t)在区间[a,b][a,b][a,b]上满足f(t)≥0f(t) \geq 0f(t)≥0,则这个函数就是非负的。每一个nnn次的伯恩斯坦多项式在区间[0,1][0,1][0,1]上都是非负的。我们可以通过递归定义来证明此性质。
很容易,我们可以知道一次伯恩斯坦多项式B0,1(t)=1−tB_{0,1}(t)=1-tB0,1(t)=1−t和B1,1(t)=tB_{1,1}(t)=tB1,1(t)=t在0≤t≤10 \leq t \leq 10≤t≤1上是非负的。我们假设所有不大于kkk次的伯恩斯坦多项式都是非负的,则我们使用递归定义
Bi,k(t)=(1−t)Bi,k−1(t)+tBi−1,k−1(t)
B_{i,k}(t)=(1-t)B_{i,k-1}(t)+tB_{i-1,k-1}(t)
Bi,k(t)=(1−t)Bi,k−1(t)+tBi−1,k−1(t)
由于等式右边所有的项在0≤t≤10 \leq t \leq 10≤t≤1上都是非负的,则我们可以认为Bi,k(t)B_{i,k}(t)Bi,k(t)在0≤t≤10 \leq t \leq 10≤t≤1上也是非负的。通过数学归纳法,我们就可以证明所有的伯恩斯坦多项式在0≤t≤10 \leq t \leq 10≤t≤1上是非负的。
伯恩斯坦多项式拥有单位剖分性
如果一组函数,当自变量取值为ttt时相加等于1,则称该组函数具有单位剖分性。k+1k+1k+1个kkk次多项式具有单位剖分性质,因为他们相加等于1.
对于任意的kkk,k+1k+1k+1个kkk次伯恩斯坦多项式的在ttt处的和等于kkk个k−1k-1k−1次伯恩斯坦多项式的在ttt处的和,即
∑i=0kBi,k(t)=∑i=0k−1Bi,k−1(t)
\sum_{i=0}^k B_{i,k}(t) = \sum_{i=0}^{k-1} B_{i,k-1}(t)
i=0∑kBi,k(t)=i=0∑k−1Bi,k−1(t)
单位划分的性质在几何建模和计算机图形学上非常的重要。特别的,对于三维空间中任何一组点P0,P1,⋯ ,PnP_0,P_1,\cdots,P_nP0,P1,⋯,Pn对于任意的ttt,表达式
P(t)=P0B0,n(t)+P1B1,n(t)+⋯+PnBn,n(t)
P(t)=P_0B_{0,n}(t)+P_1B_{1,n}(t)+\cdots+P_nB_{n,n}(t)
P(t)=P0B0,n(t)+P1B1,n(t)+⋯+PnBn,n(t)
是这组点的仿射组合,且如果0≤t≤10 \leq t \leq 10≤t≤1则它是这组点的凸组合。
升阶
任意一个低阶的伯恩斯坦多项式(次数<n<n<n)都可以表达成nnn次伯恩斯坦多项式的线性组合。特别的,n−1n-1n−1次伯恩斯坦多项式可以写成nnn次伯恩斯坦多项式的线性组合。首先我们注意到
tBi,n(t)=(ni)ti+1(1−t)n−i=(ni)ti+1(1−t)(n+1)−(i+1)=(ni)(n+1i+i)Bi+1,n+1(t)=i+1n+1Bi+1,n+1(t)
\begin{aligned}
t B_{i, n}(t) &=\left(\begin{array}{c}
n \\
i
\end{array}\right) t^{i+1}(1-t)^{n-i} \\
&=\left(\begin{array}{c}
n \\
i
\end{array}\right) t^{i+1}(1-t)^{(n+1)-(i+1)} \\
&=\frac{\left(\begin{array}{c}
n \\
i
\end{array}\right)}{\left(\begin{array}{c}
n+1 \\
i+i
\end{array}\right)} B_{i+1, n+1}(t) \\
&=\frac{i+1}{n+1} B_{i+1, n+1}(t)
\end{aligned}
tBi,n(t)=(ni)ti+1(1−t)n−i=(ni)ti+1(1−t)(n+1)−(i+1)=(n+1i+i)(ni)Bi+1,n+1(t)=n+1i+1Bi+1,n+1(t)
且
(1−t)Bi,n(t)=(ni)ti(1−t)n+1−i=(ni)(n+1i)Bi,n+1(t)=n−i+1n+1Bi,n+1(t)
\begin{aligned}
(1-t) B_{i, n}(t) &=\left(\begin{array}{c}
n \\
i
\end{array}\right) t^{i}(1-t)^{n+1-i} \\
&=\frac{\left(\begin{array}{c}
n \\
i
\end{array}\right)}{\left(\begin{array}{c}
n+1 \\
i
\end{array}\right)} B_{i, n+1}(t) \\
&=\frac{n-i+1}{n+1} B_{i, n+1}(t)
\end{aligned}
(1−t)Bi,n(t)=(ni)ti(1−t)n+1−i=(n+1i)(ni)Bi,n+1(t)=n+1n−i+1Bi,n+1(t)
最后
1(ni)Bi,n(t)+1(ni+1)Bi+1,n(t)=ti(1−t)n−i+ti+1(1−t)n−(i+1)=ti(1−t)n−i−1((1−t)+t)=ti(1−t)n−i−1=1(n−1i)Bi,n−1(t)
\begin{aligned}
\frac{1}{\left(\begin{array}{c}
n \\
i
\end{array}\right)} B_{i, n}(t)+\frac{1}{\left(\begin{array}{c}
n \\
i+1
\end{array}\right)} B_{i+1, n}(t) &=t^{i}(1-t)^{n-i}+t^{i+1}(1-t)^{n-(i+1)} \\
&=t^{i}(1-t)^{n-i-1}((1-t)+t) \\
&=t^{i}(1-t)^{n-i-1} \\
&=\frac{1}{\left(\begin{array}{c}
n-1 \\
i
\end{array}\right)} B_{i, n-1}(t)
\end{aligned}
(ni)1Bi,n(t)+(ni+1)1Bi+1,n(t)=ti(1−t)n−i+ti+1(1−t)n−(i+1)=ti(1−t)n−i−1((1−t)+t)=ti(1−t)n−i−1=(n−1i)1Bi,n−1(t)
使用最后这个公式,我们就可以根据高阶的伯恩斯坦多项式写出任意的伯恩斯坦多项式,即
Bi,n−1(t)=(n−1i)[1(ni)Bi,n(t)+1(ni+1)Bi+1,n(t)]=(n−in)Bi,n(t)+(i+1n)Bi+1,n(t)
\begin{aligned}
B_{i, n-1}(t) &=\left(\begin{array}{c}
n-1 \\
i
\end{array}\right)\left[\frac{1}{\left(\begin{array}{c}
n \\
i
\end{array}\right)} B_{i, n}(t)+\frac{1}{\left(\begin{array}{c}
n \\
i+1
\end{array}\right)} B_{i+1, n}(t)\right] \\
&=\left(\frac{n-i}{n}\right) B_{i, n}(t)+\left(\frac{i+1}{n}\right) B_{i+1, n}(t)
\end{aligned}
Bi,n−1(t)=(n−1i)⎣⎢⎢⎡(ni)1Bi,n(t)+(ni+1)1Bi+1,n(t)⎦⎥⎥⎤=(nn−i)Bi,n(t)+(ni+1)Bi+1,n(t)
这说明了n−1n-1n−1次的伯恩斯坦多项式可以有nnn次的伯恩斯坦多项式线性组合表示。于是我们可以说任何kkk次(小于nnn)的伯恩斯坦多项式都可以写成nnn次伯恩斯坦多项式的线性组合。例如,n−2n−2n−2次的伯恩斯坦多项式可以表示为两个n−1n−1n−1次伯恩斯坦多项式的线性组合,而每个n−1n-1n−1次的伯恩斯坦多项式,又可以表示为两个nnn次伯恩斯坦多项式的线性组合,依此类推。
伯恩斯坦多项式基与幂基的转换
由于幂基{1,t,t2,⋯ ,tn}\{1,t,t^2,\cdots,t^n\}{1,t,t2,⋯,tn}构成了次数小于或等于nnn的多项式空间的基,所以任何一个nnn次伯恩斯坦多项式都可以用幂基表示。我们可以通过伯恩斯坦多项式的定义和二项式定理得到
Bk,n(t)=(nk)tk(1−t)n−k=(nk)tk∑i=0n−k(−1)i(n−ki)ti=∑i=0n−k(−1)i(nk)(n−ki)ti+k=∑i=kn(−1)i−k(nk)(n−ki−k)ti=∑i=kn(−1)i−k(ni)(ik)ti
\begin{aligned}
B_{k, n}(t) &=\left(\begin{array}{l}
n \\
k
\end{array}\right) t^{k}(1-t)^{n-k} \\
&=\left(\begin{array}{l}
n \\
k
\end{array}\right) t^{k} \sum_{i=0}^{n-k}(-1)^{i}\left(\begin{array}{c}
n-k \\
i
\end{array}\right) t^{i} \\
&=\sum_{i=0}^{n-k}(-1)^{i}\left(\begin{array}{l}
n \\
k
\end{array}\right)\left(\begin{array}{c}
n-k \\
i
\end{array}\right) t^{i+k} \\
&=\sum_{i=k}^{n}(-1)^{i-k}\left(\begin{array}{c}
n \\
k
\end{array}\right)\left(\begin{array}{c}
n-k \\
i-k
\end{array}\right) t^{i} \\
&=\sum_{i=k}^{n}(-1)^{i-k}\left(\begin{array}{c}
n \\
i
\end{array}\right)\left(\begin{array}{l}
i \\
k
\end{array}\right) t^{i}
\end{aligned}
Bk,n(t)=(nk)tk(1−t)n−k=(nk)tki=0∑n−k(−1)i(n−ki)ti=i=0∑n−k(−1)i(nk)(n−ki)ti+k=i=k∑n(−1)i−k(nk)(n−ki−k)ti=i=k∑n(−1)i−k(ni)(ik)ti
其中,我们使用了二项式定理对(1−t)n−k(1-t)^{n-k}(1−t)n−k进行展开。
对于幂基转换成伯恩斯坦基,我们可以使用升阶公式
tk=t(tk−1)=t∑i=k−1n(ik−1)(nk−1)Bi,n−1(t)=∑i=kn(i−1k−1)(n−1k−1)tBi−1,n−1(t)=∑i=k−1n−1(ik−1)(nk−1)inBi,n(t)=∑i=k−1n−1(ik)(nk)Bi,n(t)
\begin{aligned}
t^{k} &=t\left(t^{k-1}\right) \\
&=t \sum_{i=k-1}^{n} \frac{\left(\begin{array}{c}
i \\
k-1
\end{array}\right)}{\left(\begin{array}{l}
n \\
k-1
\end{array}\right)} B_{i, n-1}(t) \\
&=\sum_{i=k}^{n} \frac{\left(\begin{array}{c}
i-1 \\
k-1
\end{array}\right)}{\left(\begin{array}{c}
n-1 \\
k-1
\end{array}\right)} t B_{i-1, n-1}(t) \\
&=\sum_{i=k-1}^{n-1} \frac{\left(\begin{array}{c}
i \\
k-1
\end{array}\right)}{\left(\begin{array}{c}
n \\
k-1
\end{array}\right)} \frac{i}{n} B_{i, n}(t) \\
&=\sum_{i=k-1}^{n-1} \frac{\left(\begin{array}{l}
i \\
k
\end{array}\right)}{\left(\begin{array}{c}
n \\
k
\end{array}\right)} B_{i, n}(t)
\end{aligned}
tk=t(tk−1)=ti=k−1∑n(nk−1)(ik−1)Bi,n−1(t)=i=k∑n(n−1k−1)(i−1k−1)tBi−1,n−1(t)=i=k−1∑n−1(nk−1)(ik−1)niBi,n(t)=i=k−1∑n−1(nk)(ik)Bi,n(t)
在第二步中我们使用了归纳假设。
伯恩斯坦多项式的矩阵表达
在许多应用场景中,使用矩阵形式的伯恩斯坦多项式是方便的。我们写出一个由伯恩斯坦基函数线性组合得到的多项式
B(t)=c0B0,n(t)+c1B1,n(t)+⋯+cnBn,n(t)
B(t)=c_0B_{0,n}(t)+c_1B_{1,n}(t)+\cdots+c_nB_{n,n}(t)
B(t)=c0B0,n(t)+c1B1,n(t)+⋯+cnBn,n(t)
我们很容易的将上式写成两个向量点乘的形式
B(t)=[B0,n(t)B1,n(t)⋯Bn,n(t)][c0c1⋮cn]
B(t)=\left[\begin{array}{llll}
B_{0, n}(t) & B_{1, n}(t) & \cdots & B_{n, n}(t)
\end{array}\right]\left[\begin{array}{c}
c_{0} \\
c_{1} \\
\vdots \\
c_{n}
\end{array}\right]
B(t)=[B0,n(t)B1,n(t)⋯Bn,n(t)]⎣⎢⎢⎢⎡c0c1⋮cn⎦⎥⎥⎥⎤
进一步,可以写出
B(t)=[1tt2⋯tn][b0,000⋯0b1,0b1,10⋯0b2,0b2,1b2,2⋯0⋮⋮⋮⋱⋮bn,0bn,1bn,2⋯bn,n][c0c1c2⋮cn]
B(t)=\left[\begin{array}{llll}
1 & t & t^2 & \cdots & t^n
\end{array}\right]
\left[\begin{array}{c}
b_{0,0} & 0 & 0 & \cdots & 0 \\
b_{1,0} & b_{1,1} & 0 & \cdots & 0 \\
b_{2,0} & b_{2,1} & b_{2,2} & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
b_{n,0} & b_{n,1} & b_{n,2} & \cdots & b_{n,n}
\end{array}\right]
\left[\begin{array}{c}
c_{0} \\
c_{1} \\
c_{2} \\
\vdots \\
c_{n}
\end{array}\right]
B(t)=[1tt2⋯tn]⎣⎢⎢⎢⎢⎢⎡b0,0b1,0b2,0⋮bn,00b1,1b2,1⋮bn,100b2,2⋮bn,2⋯⋯⋯⋱⋯000⋮bn,n⎦⎥⎥⎥⎥⎥⎤⎣⎢⎢⎢⎢⎢⎡c0c1c2⋮cn⎦⎥⎥⎥⎥⎥⎤
其中bi,jb_{i,j}bi,j是用于确定相应伯恩斯坦多项式的幂基系数。可以看出,该矩阵是一个下三角矩阵。
对于二次多项式(n=2n=2n=2)的情况,矩阵表示为
B(t)=[1tt2][100−2201−20][c0c1c2]
B(t)=\left[\begin{array}{llll}
1 & t & t^2
\end{array}\right]
\left[\begin{array}{c}
1 & 0 & 0 \\
-2 & 2 & 0 \\
1 & -2 & 0 \\
\end{array}\right]
\left[\begin{array}{c}
c_{0} \\
c_{1} \\
c_{2}
\end{array}\right]
B(t)=[1tt2]⎣⎡1−2102−2000⎦⎤⎣⎡c0c1c2⎦⎤
对于三次(n=3n=3n=3)的情况,矩阵表示为
B(t)=[1tt2t3][1000−33003−630−13−31][c0c1c2c3]
B(t)=\left[\begin{array}{llll}
1 & t & t^2 & t^3
\end{array}\right]
\left[\begin{array}{c}
1 & 0 & 0 & 0 \\
-3 & 3 & 0 & 0 \\
3 & -6 & 3 & 0 \\
-1 & 3 & -3 & 1 \\
\end{array}\right]
\left[\begin{array}{c}
c_{0} \\
c_{1} \\
c_{2} \\
c_{3}
\end{array}\right]
B(t)=[1tt2t3]⎣⎢⎢⎡1−33−103−63003−30001⎦⎥⎥⎤⎣⎢⎢⎡c0c1c2c3⎦⎥⎥⎤
本文深入探讨了伯恩斯坦多项式,包括其定义、性质和在数学及计算机图形学中的应用。伯恩斯坦多项式是多项式空间的一种基,具有非负性和单位剖分性,常用于几何建模。此外,文章还介绍了如何在伯恩斯坦基与幂基之间转换,并展示了其矩阵表示,这对于理解和使用这些多项式至关重要。
149





