matlab笔记 - 最小二乘法拟合直线的原理与实现

最小二乘法拟合直线原理与实现

一、引言

最小二乘法(Least Squares Method)是一种广泛应用的数学优化方法,它通过最小化误差的平方和来找到最佳匹配函数。在数据分析和工程应用中,我们经常需要拟合直线或其他曲线以描述数据的趋势。

二、原理概述

1. 建模思路

最小二乘法拟合直线的核心思想是:给定一组数据点(xi, yi),其中i=1, 2, ..., N,我们希望找到一条直线y = kx + b,使得这些点到直线的垂直距离的平方和最小。这里的k是直线的斜率,b是直线的截距。

2.误差函数

为了找到最佳的k和b,我们需要定义一个误差函数,该函数表示所有数据点到直线的垂直距离的平方和。误差函数e可以表示为:

3.求解最优参数

为了找到使误差函数e最小的k和b,我们需要对e分别关于k和b求偏导,并令其为0。

对k求偏导:

化简得:

对b求偏导:

化简得:

将上述两个方程联立,我们可以得到一个关于k和b的线性方程组,解这个方程组就可以得到k和b的最优值。

令:

我们可以得到以下形式的线性方程组:

解这个方程组,我们可以得到k和b的表达式:

​至此,已经通过最小二乘法求解出了拟合直线的k和b参数,即求得最优直线

三、matlab实现最小二乘法拟合直线

1.直接代码实现

在代码中,我们给定一组数据点(x, y)模拟离散点,直接根据上面推导的公式计算k和b。

bash 复制代码
% 给定数据  
x = [0.1; 0.3; 0.4; 0.75; 0.9];  
y = [1.7805; 2.2285; 2.3941; 3.2226; 3.5697];  
  
% 计算k和b  
N = length(x);  
k = (sum(y .* x) - N * mean(y) * mean(x)) / (sum(x .^ 2) - N * mean(x) ^ 2);  
b = mean(y) - k * mean(x);  
  
% 绘制拟合直线  
x_line = linspace(min(x), max(x), 100);  
y_line = k * x_line + b;  
plot(x, y, 'o', x_line, y_line, '-r');  
legend('原始数据', '拟合直线');  
xlabel('x');  
ylabel('y');  
title('最小二乘法拟合直线');

代码中给定了一组5个点的数据 ,通过最小二乘公式运算结果如下:

2.MATLAB内置函数实现

MATLAB还提供了内置函数如polyfit来实现多项式拟合,拟合方法也是最小二乘法。直线可以看作是一阶多项式。代码如下所示:

cpp 复制代码
% 给定数据  
x = [0.1; 0.3; 0.4; 0.75; 0.9];  
y = [1.7805; 2.2285; 2.3941; 3.2226; 3.5697];  
  
% 使用 polyfit 函数拟合直线(n=1 表示一阶多项式,即直线)  
p = polyfit(x, y, 1);  
k = p(1); % 斜率  
b = p(2); % 截距  
  
% 绘制拟合直线  
x_line = linspace(min(x), max(x), 100);  
y_line = k * x_line + b;  
plot(x, y, 'o', x_line, y_line, '-r');  
xlabel('x');  
ylabel('y');  
title('最小二乘法拟合直线');

运算结果如下:

四、扩展

最小二乘法(又称最小平方法)是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。拟合直线只是其中一种简单的应用,这种方法在多个领域有着其他广泛的应用,以下是一些典型的应用领域:

统计学与回归分析

  • 线性回归:最小二乘法广泛应用于线性回归分析中,用于确定自变量和因变量之间的线性关系。通过最小化残差平方和,可以求解出线性模型的参数(斜率和截距),从而得到最佳拟合直线或超平面。
  • 多元回归:在多元回归分析中,最小二乘法同样适用,可以处理多个自变量与因变量之间的关系。

经济学

  • 经济指标预测:最小二乘法可以用来分析宏观经济数据,如预测GDP、失业率等经济指标,为政府制定经济政策提供依据。
  • 金融市场分析:在金融市场,最小二乘法可用于股票价格、汇率等金融数据的预测和分析,帮助投资者做出更明智的投资决策。

工程学

  • 材料性质分析:在工程学领域,最小二乘法可用于分析材料的性质,如强度、硬度、耐腐蚀性等,对材料的选取和设计具有重要意义。
  • 系统辨识与预测:在控制系统和信号处理中,最小二乘法可用于系统参数的辨识和预测,提高系统的性能和稳定性。### 医学
    医学数据分析:在医学领域,最小二乘法可用于分析药物代谢速率、病人健康指标、病人预后等数据,为疾病治疗和预防提供支持。

图像处理

图像拟合、滤波、去噪:在图像处理中,最小二乘法可用于对图像进行拟合、滤波和去噪等操作,提高图像的质量和可读性。

机器学习

参数估计:在机器学习的某些算法中,如线性回归模型、逻辑回归模型等,最小二乘法也被用于参数的估计和优化。

相关推荐
Chunyyyen3 分钟前
【第十八周】自然语言处理的学习笔记03
笔记·学习·自然语言处理
聪明的笨猪猪4 分钟前
Java JVM “类加载与虚拟机执行” 面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
im_AMBER43 分钟前
React 02
前端·笔记·学习·react.js·前端框架
怀揣小梦想1 小时前
跟着Carl学算法--哈希表
数据结构·c++·笔记·算法·哈希算法·散列表
zyq~1 小时前
【课堂笔记】概率论-1
笔记·概率论
Kapibalapikapi1 小时前
C 标准库函数 | strcmp, strlen
笔记·逆向·c标准库函数
rechol2 小时前
ARM 架构核心知识笔记(整理与补充版)
arm开发·笔记·架构
paishishaba2 小时前
JAVA面试复习笔记(待完善)
java·笔记·后端·面试
四谎真好看3 小时前
Java 黑马程序员学习笔记(进阶篇19)
java·笔记·学习·学习笔记
新子y4 小时前
【小白笔记】最大交换 (Maximum Swap)问题
笔记·python