平面拟合最小二乘法c语言,最小二乘线性及平面拟合原理及C++实现

本文介绍了线性和平面最小二乘拟合的原理,通过最小化偏差平方和来确定最佳拟合曲线。并提供了C++实现代码,包括线性拟合函数`gFittingLine`和平面拟合函数`gFittingPlane`,适用于二维和三维数据点的拟合。
摘要由CSDN通过智能技术生成

一、线性最小二乘拟合

使用一个简单函数在整体上逼近已知函数,使其在整体上尽可能与原始数据曲线近似。记为:

称之为拟合曲线,若该函数为插值多项式,则所有偏差为零。

但实际情况中,我们不可能要求近似曲线

y =

严格通过这么多数据点。但为了使其尽可能反映所给数据的变化趋势,我们可以要求偏差的绝对值尽可能小,甚至是所有偏差中的最大值尽可能小。我们可以通过使选取的近似曲线在节点xi 处的偏差的平方和达到最小来实现这一目标,这一原则就是 最小二乘原则。

按最小原则选择的拟合曲线就称为最小二乘拟合曲线,此方法称为最小二乘法。

实用公式推导:

假设我们此处有这样一组数据点,这些点的分布接近于在一条直线上,因此选一条直线(一条曲线则加入对应方程推导)来拟合这组数据,令:

根据最小二乘原则,有:

令a0,a1为未知数,则此处转换为求二元函数S(a0,a1)的极小点问题:

由此可得:

联立解得:

即得到了待求的拟合直线段。

C++实现:

bool gFittingLine(double *xArray, double *yArray, int firstIndex, int lastIndex,

double &a, double &b)

{

int count = lastIndex-firstIndex+1;

if(count < 2) return false;

double s0 =

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值