最小二乘解正规方程matlab
时间: 2024-12-29 12:27:34 浏览: 8
### 使用MATLAB实现最小二乘法求解正规方程
在MATLAB中,通过构建并求解正规方程可以有效地应用最小二乘法来解决问题。对于给定的数据集\[X\]和观测值向量\[y\],假设模型形式为线性的,则可以通过下面的方式建立并求解正规方程。
#### 构建设计矩阵与观测向量
首先定义输入变量的设计矩阵\(A\)以及对应的输出变量构成的列向量\(b\)。如果考虑的是简单的一元线性回归问题,其中每个样本只有一个特征,则设计矩阵的形式如下:
```matlab
% 假设有n个数据点 (xi, yi),i=1,...,n
x = [x1; x2; ... ; xn]; % 输入数据作为列向量
y = [y1; y2; ... ; yn]; % 输出数据作为列向量
A = [ones(length(x), 1), x]; % 设计矩阵 A=[1 xi]
```
这里`ones(length(x), 1)`用来创建一列全为1的数组以便表示常数项系数,而第二列为自变量\(x_i\)组成的列向量[^2]。
#### 计算正规方程的解
接着计算正规方程\(A^TA\beta=A^Tb\)中的各项,并最终得到参数估计值\(\hat{\beta}\)。这一步骤可以直接调用MATLAB内置命令完成:
```matlab
beta_hat = (A' * A)\(A' * b); % 解决(A'A)^(-1)(A'b)=β 的过程简化成此表达式
```
上述代码片段实现了对正规方程的直接求解,返回的结果是一个包含两个元素的向量`\beta_hat`,分别对应于截距项和斜率项的最佳估值。
#### 验证结果
为了检验所获得的拟合直线的质量,还可以绘制原始数据点连同拟合后的直线图像来进行直观比较:
```matlab
plot(x, y, 'o'); hold on;
xfit = linspace(min(x), max(x));
yfit = beta_hat(1) + beta_hat(2)*xfit;
plot(xfit, yfit);
legend('Data Points', 'Fitted Line');
xlabel('Independent Variable X');
ylabel('Dependent Variable Y');
title('Least Squares Fit Using Normal Equation');
grid on;
hold off;
```
这段脚本会生成一张图表展示原有点云分布及由最小二乘法得出的最佳匹配直线[^4]。
阅读全文