mattlab 求二次最佳平方逼近多项式
时间: 2024-02-14 10:22:44 浏览: 26
对于给定的一组数据点 $(x_1,y_1),(x_2,y_2),\dots,(x_n,y_n)$,我们要找到一个二次多项式 $f(x)=ax^2+bx+c$ 使得 $f(x_i)$ 尽可能接近 $y_i$。这个问题可以通过最小化误差平方和来解决。
令 $E(a,b,c)=\sum_{i=1}^n (f(x_i)-y_i)^2$,则问题转化为求 $E(a,b,c)$ 的最小值。对 $E(a,b,c)$ 求偏导数,得到以下方程组:
$$\begin{cases}
\frac{\partial E}{\partial a}=2\sum_{i=1}^n (ax_i^2+bx_i+c-y_i)x_i^2=0 \\
\frac{\partial E}{\partial b}=2\sum_{i=1}^n (ax_i^2+bx_i+c-y_i)x_i=0 \\
\frac{\partial E}{\partial c}=2\sum_{i=1}^n (ax_i^2+bx_i+c-y_i)=0
\end{cases}$$
化简得到:
$$\begin{cases}
a\sum_{i=1}^n x_i^4+b\sum_{i=1}^n x_i^3+c\sum_{i=1}^n x_i^2=\sum_{i=1}^n x_i^2y_i \\
a\sum_{i=1}^n x_i^3+b\sum_{i=1}^n x_i^2+c\sum_{i=1}^n x_i=\sum_{i=1}^n x_iy_i \\
a\sum_{i=1}^n x_i^2+b\sum_{i=1}^n x_i+c\sum_{i=1}^n 1=\sum_{i=1}^n y_i
\end{cases}$$
这是一个三元一次方程组,可以用高斯消元法求解得到 $a,b,c$ 的值,从而得到二次多项式 $f(x)=ax^2+bx+c$。
注意,如果数据点比较离散或者有一些异常值,最小二乘法可能会得到不太满意的结果。此时可以考虑用其他的拟合方法,比如局部加权线性回归(Locally Weighted Regression)等。