如何用已知点集拟合二次曲线
时间: 2023-06-12 07:04:01 浏览: 105
假设已知点集为 $(x_1,y_1), (x_2,y_2), \cdots, (x_n, y_n)$,我们可以使用最小二乘法拟合二次曲线 $y=a+bx+cx^2$,其中 $a, b, c$ 是待求参数。
将每个已知点 $(x_i, y_i)$ 代入二次曲线方程得到:
$$
y_i = a + bx_i + cx_i^2,\quad i=1,2,\cdots,n
$$
将上式改写为矩阵形式:
$$
\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}
= \begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ \vdots & \vdots & \vdots \\ 1 & x_n & x_n^2 \end{bmatrix}
\begin{bmatrix} a \\ b \\ c \end{bmatrix}
+ \begin{bmatrix} e_1 \\ e_2 \\ \vdots \\ e_n \end{bmatrix}
$$
其中,$\begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}$ 和 $\begin{bmatrix} e_1 \\ e_2 \\ \vdots \\ e_n \end{bmatrix}$ 分别表示已知点集的 $y$ 坐标和误差,$\begin{bmatrix} 1 & x_1 & x_1^2 \\ 1 & x_2 & x_2^2 \\ \vdots & \vdots & \vdots \\ 1 & x_n & x_n^2 \end{bmatrix}$ 是系数矩阵,$\begin{bmatrix} a \\ b \\ c \end{bmatrix}$ 是待求参数向量。
我们的目标是找到参数向量 $\begin{bmatrix} a \\ b \\ c \end{bmatrix}$ 使得误差 $\begin{bmatrix} e_1 \\ e_2 \\ \vdots \\ e_n \end{bmatrix}$ 的平方和最小。即,最小化以下目标函数:
$$
\min_{a,b,c} \sum_{i=1}^n e_i^2 = \min_{a,b,c} \sum_{i=1}^n (y_i - a - bx_i - cx_i^2)^2
$$
对上式求导,令导数等于零,可以得到参数向量的最优解:
$$
\begin{bmatrix} a \\ b \\ c \end{bmatrix} = (\mathbf{X}^T\mathbf{X})^{-1}\mathbf{X}^T\mathbf{Y}
$$
其中,$\mathbf{X}$ 是系数矩阵,$\mathbf{Y}$ 是已知点集的 $y$ 坐标向量。
最后,将求得的参数向量代入二次曲线方程中,即可得到拟合的二次曲线。
阅读全文