最小二乘法拟合曲线原理及其Matlab实现

目录

1.最小二乘法曲线拟合原理

2.最小二乘法的随机误差模型  

3.最小二乘法的Matlab实现

3.1 生成随机数据

3.2 构建最小二乘模型

3.3 求解参数

3.4 绘图验证  

4.最小二乘法的应用实例

 

1.最小二乘法曲线拟合原理

最小二乘法是一种曲线拟合的方法,用于找到一条曲线,使其在给定的离散点集中大致“最佳地”拟合这些点。所谓“最佳”是指使得这些点到曲线的距离之和最小。

 

最小二乘法通过求解一组已知离散点集(xi,yi),找到一条y=f(x)的曲线方程,使得点集中每个点到曲线的距离的平方和最小。

 

不失一般性,我们这里以二次函数曲线y=ax2+bx+c为例进行说明。根据最小二乘法原理,我们需要找到a,b,c的值,使得离散点与曲线之间误差平方和最小,即:

E=(y1-ax1^2-bx1-c)^2+(y2-ax2^2-bx2-c)^2+...+(yn-axn^2-bxn-c)^2 →最小

 

对a,b,c求导,并令导数等于0,Solve出a,b,c的参数,即可得到最小二乘法求解的曲线方程。     

 

2.最小二乘法的随机误差模型   

在实际问题中,我们观测到的离散点往往不是曲线上的精确点,而是带有误差的估计点。我们可以看作观测值是真值与随机误差之和:

yi=f(xi)+ei (i=1,2,...,n)

其中ei表示第i个观测点的随机误差,满足均值为0,方差为σ2。

 

基于此误差模型,我们构造的最小二乘模型的目标函数为:

E = ∑[yi - f(xi)]2 = ∑ ei2→最小 

即最小化随机误差的方差和。

 

3.最小二乘法的Matlab实现

3.1 生成随机数据

这里我们生成9个数据点(xi,yi),xi在0-1区间均匀分布,yi=2*xi+0.5+噪声。噪声ei服从均值为0,方差为1的正态分布。

 

```matlab

n = 9; % 数据点个数

x = linspace(0, 1, n); % x均匀分布在0-1区间

y = 2*x + 0.5; % 真实数据    

e = randn(n, 1); % 随机误差 

y = y + e; % 观测数据

```  

 

3.2 构建最小二乘模型 

 我们这里选用一元二次曲线y=ax2+bx+c进行拟合。根据最小二乘法原理,目标函数为:

 E = ∑(yi - axi2 - bxi - c)2 (1)

 

3.3 求解参数

将(1)方程对a,b,c求导并令导数等于0,解出三个参数的值:

a = ∑(xi2yi - nxiȳ - xiȳi)/∑(xi4 - nxi2ȳ2 + nȳ2)  

b = ∑(xi3yi - xiȳ2 - xi2ȳi)/∑(xi2 - ȳ2)     

c = ȳ - bȳ - aȳ2

 

其中,ȳ = (y1 + y2 + ... + yn)/n,ȳi = (xiy1 + x2y2 + ... + xny1)/n 

 

3.4 绘图验证

将观测数据点与拟合曲线作图,看是否拟合效果良好。

 

```matlab

x1 = 0:0.1:1; % 自变量分布

y1 = a.*x1.^2 + b.*x1 + c; % 拟合曲线

 

figure  

plot(x,y,'o',x1,y1) % 画观测数据点及拟合曲线

xlabel('x');ylabel('y') % 添加坐标轴标签

```

 

4.最小二乘法的应用实例

最小二乘法在很多领域有广泛应用,如回归分析、插值等。这里给出一个简单应用实例:

 

利用8个数据点{(1,6),(2,4),(3,3),(4,4),(5,6),(6,9),(7,12),(8,14)}利用最小二乘法进行曲线拟合,并对x=9时的y值进行预测。

 

解:输入数据点,调用matlab最小二乘法程序求得拟合曲线方程:

y=0.072x^2-0.48x+6.22

对x=9代入,得y=16.34

所以x=9时的y值为16.34

 

预测结果与实际值(14)有一定误差,这是由于数据中存在随机噪声所致,但利用最小二乘法拟合的曲线总体上可以较好地反映数据变化趋势,因此其预测结果也是可靠的。

 

综上,最小二乘法通过求解使误差平方和最小的一组参数,找到最佳拟合给定离散点集的曲线方程。它是数理统计中重要的Regression方法,在统计学和工程技术等领域有着广泛的应用。

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值