### 曲线拟合的最小二乘法MATLAB举例
#### 一、曲线拟合的最小二乘法原理
在数据分析领域,**曲线拟合**是一种常用的技术,它旨在找到一条能够最好地“匹配”一组数据点的曲线或函数。这种方法在科学、工程以及商业分析等领域都有广泛的应用。其中,**最小二乘法**是最常用的曲线拟合方法之一。
对于给定的一组离散数据点 \((x_i, y_i)\),\(i = 1, 2, ..., n\),我们希望通过一个函数 \(f(x; \theta)\) 来近似这些数据点,其中 \(\theta\) 表示该函数的参数。最小二乘法的基本思想是寻找一组参数 \(\theta^*\),使得所有数据点到函数 \(f(x; \theta^*)\) 的距离(通常是指垂直距离)的平方和最小。数学上可以表示为:
\[
\theta^* = \arg\min_\theta \sum_{i=1}^{n}(y_i - f(x_i; \theta))^2
\]
当函数 \(f(x; \theta)\) 是关于参数 \(\theta\) 的线性函数时,这个问题可以通过解析的方法求解,即通过解所谓的“法方程”来确定最优参数 \(\theta^*\)。法方程是一组线性方程,其解即为最优参数。
例如,假设我们希望使用一个多项式 \(p(x) = \theta_0 + \theta_1 x + \theta_2 x^2 + \cdots + \theta_m x^m\) 来拟合一组数据点,则法方程可以表示为:
\[
\begin{align*}
\mathbf{A}^\top\mathbf{A}\theta &= \mathbf{A}^\top\mathbf{y}\\
\text{其中,}&\\
\mathbf{A} &= \begin{bmatrix}
1 & x_1 & x_1^2 & \cdots & x_1^m \\
1 & x_2 & x_2^2 & \cdots & x_2^m \\
\vdots & \vdots & \vdots & \ddots & \vdots \\
1 & x_n & x_n^2 & \cdots & x_n^m \\
\end{bmatrix},\quad
\theta &= \begin{bmatrix}
\theta_0 \\
\theta_1 \\
\vdots \\
\theta_m
\end{bmatrix},\quad
\mathbf{y} = \begin{bmatrix}
y_1 \\
y_2 \\
\vdots \\
y_n
\end{bmatrix}
\end{align*}
\]
其中 \(\mathbf{A}\) 是一个 \(n \times (m+1)\) 的矩阵,\(\mathbf{y}\) 是包含观测值 \(y_i\) 的 \(n \times 1\) 向量。
#### 二、数值实例
下面给出了乌鲁木齐地区一个月内每天早晨7:00左右的温度数据。我们的目标是使用不同的多项式阶次对这些数据进行拟合,并比较不同拟合模型的表现。
**温度数据表**:
| 天数 | 温度 |
|------|------|
| 1 | 9 |
| 2 | 10 |
| ... | ... |
| 30 | 1 |
**Matlab程序代码**:
```matlab
x = [1:1:30]; % x轴的数据
y = [9, 10, 11, 12, 13, 14, 13, 12, 11, 9, 10, 11, 12, 13, 14, 12, 11, 10, 9, 8, 7, 8, 9, 11, 9, 7, 6, 5, 3, 1]; % y轴的数据
a1 = polyfit(x, y, 3); % 三次多项式拟合
a2 = polyfit(x, y, 9); % 九次多项式拟合
a3 = polyfit(x, y, 15); % 十五次多项式拟合
b1 = polyval(a1, x);
b2 = polyval(a2, x);
b3 = polyval(a3, x);
r1 = sum((y - b1).^2); % 三次多项式的误差平方和
r2 = sum((y - b2).^2); % 九次多项式的误差平方和
r3 = sum((y - b3).^2); % 十五次多项式的误差平方和
plot(x, y, '*'); % 原始数据点
hold on;
plot(x, b1, 'r'); % 三次多项式拟合曲线
plot(x, b2, 'g'); % 九次多项式拟合曲线
plot(x, b3, 'b:o'); % 十五次多项式拟合曲线
legend('原始数据', '三次多项式', '九次多项式', '十五次多项式');
```
**数值结果**:
- 三次多项式拟合的误差平方和 \(r1 = 67.6659\)
- 九次多项式拟合的误差平方和 \(r2 = 20.1060\)
- 十五次多项式拟合的误差平方和 \(r3 = 3.7952\)
**结论**:
从上述结果可以看出,随着拟合多项式的阶次增加,误差平方和逐渐减小。然而,这并不意味着更高的阶次就一定是最佳选择。例如,十五次多项式虽然误差平方和最小,但它可能过于复杂,导致过拟合现象——即模型过于依赖于训练数据中的噪声,而不是数据的真实趋势。因此,在实际应用中,我们需要根据具体情况权衡模型复杂度和拟合效果,选择合适的阶次。通常会采用交叉验证等技术来评估模型的泛化能力,从而避免过拟合的问题。
- 1
- 2
前往页