带约束多项式曲线拟合三

1 问题
平面上有两个点\((0,0),(\bar{x},\bar{y})\),其中\(\bar{x}\neq 0\)。现在需要构建一条满足如下条件的多项式曲线方程
① 曲线必须过\((0,0),(\bar{x},\bar{y})\)点。
② 曲线在\((0,0),(\bar{x},\bar{y})\)点处的斜率尽量逼近\(k_0,k_1\)。且每个点在整体误差权重占比为\(w_0,w_1\)。
③ 曲线在\((0,0),(\bar{x},\bar{y})\)之间逼近直线。

也就是说,想找一条曲线,使得曲线过两端点,使得曲线在两个端点处斜率尽量与指定值保持一致,且在两个端点内尽量逼近直线。

2 求解
这里设曲线为\(n\)次多项式
(1)
$$
y=a_1x+a_2x^2+…+a_nx^n
$$
明显上面方程过\((0,0)\)点,根据曲线必须过\((\bar{x},\bar{y})\)可以得到
(2)
$$
a_1=\dfrac{\bar{y}}{\bar{x}}-(a_2\bar{x} + a_3\bar{x}^2+…+a_n\bar{x}^{n-1})
$$
对于第②③个条件,这里以最小二乘思想求解。设在区间\((0,\bar{x})\)内均匀采样\(m-1\)个点,每个点贡献权重为\(w\),则可构建如下最小化目标函数
(3)
$$
\begin{aligned}
\mathbf{min}:e&=w_0^2(a_1-k_0)^2+w_1^2(a_1+2a_2\bar{x}+3a_3\bar{x}^2+…+(n-1)\bar{x}^{n-1}-k_1)^2+\dfrac{w^2}{m-1}\sum_{i=1}^{m-1}(a_1\dfrac{i}{m}\bar{x}+a_2(\dfrac{i}{m}\bar{x})^2+a_3(\dfrac{i}{m}\bar{x})^3+…+a_n(\dfrac{i}{m}\bar{x})^n-\dfrac{i}{m}\bar{y})^2
\\
\\
&=w_0^2(a_2\bar{x}+a_3\bar{x}^2+…+a_n\bar{x}^{n-1}+k_0-\dfrac{\bar{y}}{\bar{x}})^2
\\
\\
&+w_1^2(a_2\bar{x}+2a_3\bar{x}^2+…+(n-1)a_n\bar{x}^{n-1}+\dfrac{\bar{y}}{\bar{x}}-k_1)^2
\\
\\
&+\dfrac{w^2}{m-1}\sum_{i=1}^{m-1}(a_2((\dfrac{i}{m})^2-\dfrac{i}{m})\bar{x}^2+a_3((\dfrac{i}{m})^3-\dfrac{i}{m})\bar{x}^3+…+a_n((\dfrac{i}{m})^n-\dfrac{i}{m})\bar{x}^n)^2
\end{aligned}
$$
很明显,(3)和求解如下线性方程组的最小二乘解等价
(4)
$$
G\mathbf{a}=\mathbf{g}
$$
其中\(\mathbf{a},\mathbf{g},G\)来自如下参数
(5)
$$
\begin{aligned}
\mathbf{a}&=\begin{bmatrix}
a_2
\\
a_3
\\

\\
a_n
\end{bmatrix},\mathbf{b}=\begin{bmatrix}
0
\\
0
\\
0
\\
\\

\\
\\
0
\\
\\
\dfrac{\bar{y}}{\bar{x}}-k_0
\\
\\
k_1-\dfrac{\bar{y}}{\bar{x}}
\end{bmatrix}
\\
\\
C&=\begin{bmatrix}
(\dfrac{1}{m})^2-\dfrac{1}{m}&(\dfrac{1}{m})^3-\dfrac{1}{m}&…&(\dfrac{1}{m})^n-\dfrac{1}{m}
\\
\\
(\dfrac{2}{m})^2-\dfrac{2}{m}&(\dfrac{2}{m})^3-\dfrac{2}{m}&…&(\dfrac{2}{m})^n-\dfrac{2}{m}
\\
\\

\\
\\
(\dfrac{m-1}{m})^2-\dfrac{m-1}{m}&(\dfrac{m-1}{m})^3-\dfrac{m-1}{m}&…&(\dfrac{m-1}{m})^n-\dfrac{m-1}{m}
\\
\\
1 & 1 & … & 1
\\
\\
1 & 2 & … & n-1
\end{bmatrix}
\\
\\
X&=\begin{bmatrix}
\bar{x}&0&0&…&0
\\
0&\bar{x}^2&0&…&0
\\
0&0&\bar{x}^3&…&0
\\

\\
0 & 0 &…&\bar{x}^{n-2}&0
\\
0&0&…&0&\bar{x}^{n-1}
\end{bmatrix}
\\
\\
\bar{w} &=\dfrac{w}{\sqrt{m-1}}
\\
\\
W&=\begin{bmatrix}
\bar{w}&0&0&0&…&0
\\
0&\bar{w}&0&0&…&0
\\
0&0&\bar{w}&0&…&0
\\

\\
0&0&0&…&w_0&0
\\
0&0&0&…&0&w_1
\end{bmatrix}
\\
\\
G&=WCX,\mathbf{g}=W\mathbf{b}
\end{aligned}
$$
因此,可以根据(2)、(4)、(5)可以求得曲线方程所有系数(注意,为了避免矩阵运算,\(G,\mathbf{g}\)矩阵可直接进行构建)。

3 特殊求解
特别地,一般会设置\(w_0=w_1\),且设②整体权重为③整体权重的\(\alpha^2(\alpha>0)\)倍,这时可以推得
(6)
$$
w_0=w_1=\dfrac{1}{\sqrt{2}}\alpha w = \sqrt{\dfrac{m-1}{2}}\alpha \bar{w}
$$
当\(m\)不趋近无穷大时,公式(5)里的\(W\)可以等效使用如下矩阵代替
(7)
$$
W=\begin{bmatrix}
1 &0&0&0 &…&0
\\
0&1&0&0&…&0
\\
0&0&1&0&…&0
\\

\\
0&0&0&…&\sqrt{\dfrac{m-1}{2}}\alpha & 0
\\
0&0&0&…&0&\sqrt{\dfrac{m-1}{2}}\alpha
\end{bmatrix}
$$
因此,大部分情况下,只需要设置 \(\alpha,m,n\) 即可求解方程系数。

4 抛物线
特别地,当(1)里的\(n=2\)时,(3)可以变为
(8)
$$
\begin{aligned}
\mathbf{min}:e&=w_0^2(a_2\bar{x}+k_0-\dfrac{\bar{y}}{\bar{x}})^2+w_1^2(a_2\bar{x}+\dfrac{\bar{y}}{\bar{x}}-k_1)^2+\dfrac{w^2}{m-1}\sum_{i=1}^{m-1}(a_2((\dfrac{i}{m})^2-\dfrac{i}{m})\bar{x})^2
\\
\\
&=a_2^2\bar{x}^2(w_0^2+w_1^2+\dfrac{w^2}{m-1}\sum_{i=1}^{m-1}((\dfrac{i}{m})^2-\dfrac{i}{m})^2)+2a_2(w_0^2(k_0\bar{x}-\bar{y})+w_1^2(\bar{y}-k_1\bar{x}))+…
\\
\\
&=\bar{x}^2\beta_0(a_2+\dfrac{\beta_1}{\bar{x}^2\beta_0})^2+…
\end{aligned}
$$
公式里
(9)
$$
\begin{cases}
\beta_0&=w_0^2+w_1^2+\dfrac{m^3+m^2+m+1}{30m^3}w^2
\\
\\
\beta_1&=w_0^2(k_0\bar{x}-\bar{y})+w_1^2(\bar{y}-k_1\bar{x})
\end{cases}
$$
最终可以求解得到系数
(10)
$$
\begin{cases}
a_1&=\dfrac{\bar{y}}{\bar{x}}+\dfrac{\beta_1}{\beta_0 \bar{x}}
\\
\\
a_2&=-\dfrac{\beta_1}{\beta_0 \bar{x}^2}
\end{cases}
$$
特别地,当满足(6)的条件时,可以得到
(11)
$$
\dfrac{\beta_1}{\beta_0 \bar{x}}=\dfrac{\alpha^2(k_0-k_1)}{2\alpha^2+\dfrac{2}{30m^3}(m^3+m^2+m+1)}
$$

发表回复

您的电子邮箱地址不会被公开。