最小二乘法直线拟合

 

设经验方程是y=F(x),方程中含有一些待定系数an,给出真实值{(xi,yi)|i=1,2,...n},将这些x,y值代入方程然后作差,可以描述误差:yi-F(xi),为了考虑整体的误差,可以取平方和,之所以要平方是考虑到误差可正可负直接相加可以相互抵消,所以记误差为:

 

e=∑(yi-F(xi))2


 

 

 

 

如果经验方程是线性的,形如y=ax+b,就是线性回归。按上面的分析,误差函数为:

 

e=∑(yi-axi-b)2

 

 

各偏导为:

de/da=2∑((yi-axi-b)(-xi)=0
de/db=-2∑(yi-axi-b)=0

 

于是得到关于a,b的线性方程组:

(∑xi2)a+(∑xi)b=∑yixi

(∑xi)a+nb=∑yi

 

 

 

设A=∑xi2,B=∑xi,C=∑yixi,D=∑yi,则方程化为:

Aa+Bb=C
Ba+nb=D

解出a,b得:

a=(Cn-BD)/(An-BB)
b=(AD-CB)/(An-BB)
 
这就是我们要进行的算法。

 

 

C++代码如下:

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值