高阶多项式曲线拟合方程求解
文章目录
已知参数(2个位置点)
起点状态(3组已知值)
( p 0 , x 0 ) , ( p 0 , x 0 ′ ) , ( p 0 , x 0 ′ ′ ) (p_0, x_0),(p_0, x_0'),(p_0, x_0'') (p0,x0),(p0,x0′),(p0,x0′′)
终点状态(3组已知值)
( p 1 , x 1 ) , ( p 1 , x 1 ′ ) , ( p 1 , x 1 ′ ′ ) (p_1, x_1),(p_1, x_1'),(p_1, x_1'') (p1,x1),(p1,x1′),(p1,x1′′)
n阶多项式曲线(n+1个未知参数)
基本形式
- 输入: p p p
- 输出: x x x
- 系数: w 0 , w 1 … … w n w_0,w_1……w_n w0,w1……wn
- 方程: x = w n p n + w n − 1 p n − 1 + w n − 2 p n − 2 + … … + w 1 p 1 + w 0 x = w_np^n+w_{n-1}p^{n-1}+w_{n-2}p^{n-2}+……+w_{1}p^1+w_0 x=wnpn+wn−1pn−1+wn−2pn−2+……+w1p1+w0
基本特性
- n阶多项式共有n+1个参数,要想求的唯一解需要n+1组已知量才能求得。
- 对于超过5阶的多项式,仅知道两个点的0、1、2阶导数(共6组参数)是无法求的唯一解的。
高阶曲线拟合示意图
3阶多项式曲线(4个未知参数)
需要4组已知值,才能求得唯一解
曲线方程
x = a p 3 + b p 2 + c p + d \begin{aligned} x &= ap^3+bp^2+cp+d \end{aligned} x=ap3+bp2+cp+d
导数方程
x ′ = 3 a p 2 + 2 b p + c x ′ ′ = 6 a p + 2 b \begin{aligned} x' &= 3ap^2+2bp+c \\ x'' &= 6ap+2b \\ \end{aligned} x′x′′=3ap2+2bp+c=6ap+2b
构建方程组
{ x 0 = a p 0 3 + b p 0 2 + c p 0 + d x 0 ′ = 3 a p 0 2 + 2 b p 0 + c x 0 ′ ′ = 6 a p 0 + 2 b x 1 = a p 1 3 + b p 1 2 + c p 1 + d x 1 ′ = 3 a p 1 2 + 2 b p 1 + c x 1 ′ ′ = 6 a p 1 + 2 b \begin{cases} x_0 &= ap_0^3+bp_0^2+cp_0+d \\ x_0' &= 3ap_0^2+2bp_0+c \\ x_0'' &= 6ap_0+2b \\ x_1 &= ap_1^3+bp_1^2+cp_1+d \\ x_1' &= 3ap_1^2+2bp_1+c \\ x_1'' &= 6ap_1+2b \\ \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧x0x0′x0′′x1x1′x1′′=ap03+bp02+cp0+d=3ap02+2bp0+c=6ap0+2b=ap13+bp12+cp1+d=3ap12+2bp1+c=6ap1+2b
系数求解
- 方程组中有4个未知参数,只需要4个方程即可获得唯一解,
- 此处采用 ( p 0 , x 0 ) , ( p 0 , x 0 ′ ) , ( p 0 , x 0 ′ ′ ) , ( p 1 , x 1 ) (p_0, x_0),(p_0, x_0'),(p_0, x_0''),(p_1, x_1) (p0,x0),(p0,x0′),(p0,x0′′),(p1,x1) 4个已知条件进行求解,
- 因此只需要选择1、2、3、4共4子方程构造新的方程组
{ x 0 = a p 0 3 + b p 0 2 + c p 0 + d x 0 ′ = 3 a p 0 2 + 2 b p 0 + c x 0 ′ ′ = 6 a p 0 + 2 b x 1 = a p 1 3 + b p 1 2 + c p 1 + d \begin{cases} x_0 &= ap_0^3+bp_0^2+cp_0+d \\ x_0' &= 3ap_0^2+2bp_0+c \\ x_0'' &= 6ap_0+2b \\ x_1 &= ap_1^3+bp_1^2+cp_1+d \\ \end{cases} ⎩⎪⎪⎪⎨⎪⎪⎪⎧x0x0′x0′′x1=ap03+bp02+cp0+d=3ap02+2bp0+c=6ap0+2b=ap13+bp12+cp1+d
方程组整理可得:
d = x 0 − ( a p 0 3 + b p 0 2 + c p 0 ) c = x 0 ′ − ( 3 a p 0 2 + 2 b p 0 ) b = x 0 ′ ′ − 6 a p 0 2 a = x 1 − d − c p 1 − b p 1 2 p 1 3 \begin{aligned} d &= x_0 - (ap_0^3+bp_0^2+cp_0)\\ c &= x_0' - (3ap_0^2+2bp_0)\\ b &= \frac{x_0''-6ap_0}{2} \\ a &= \frac{x_1-d-cp_1-bp_1^2}{p_1^3}\\ \end{aligned} dcba=x0−(ap03+bp02+cp0)=x0′−(3ap02+2bp0)=2x0′′−6ap0=p13x1<