用最小二乘法拟合一元一次直线的C#代码!

lishijie910123 2013-07-18 04:19:11
例如y=ax,a为斜率,求用最小二乘法求a的值的代码!
...全文
966 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lishijie910123 2013-07-23
  • 打赏
  • 举报
回复
求解答。。。
人生导师 2013-07-23
  • 打赏
  • 举报
回复
看看这个:http://www.cnblogs.com/mgen/archive/2012/01/17/amalon.html
hansin 2013-07-23
  • 打赏
  • 举报
回复
/// <summary>
/// 最小二乗法
/// </summary>
public void LeastSquareMethod(float[] x, float[] y, ref float a, ref float b)
{
	int ii = 0;
	float sum_x = 0;
	float sum_y = 0;
	float sum_xy = 0;
	float sum_x2 = 0;

	int dataCnt = Math.Min(Information.UBound(x), Information.UBound(y)) + 1;

	if (dataCnt == 1) {
		a = 0;
		b = y[0];
		return;
	}

	for (ii = 0; ii <= dataCnt - 1; ii++) {
		//X和
		sum_x += x[ii];
		//Y和
		sum_y += y[ii];
		//X*Y和
		sum_xy += x[ii] * y[ii];
		//X2和
		sum_x2 += x[ii] * x[ii];
	}

	//nΣx2-(Σx)2
	float divisor = dataCnt * sum_x2 - sum_x * sum_x;
	if (Math.Abs(divisor) > 1E-06) {
		// a=(nΣxy - ΣxΣy)/[nΣx2-(Σx)2]
		a = (dataCnt * sum_xy - sum_x * sum_y) / divisor;

		// b=(Σx2Σy - ΣxyΣx)/[nΣx2-(Σx)2]
		b = (sum_x2 * sum_y - sum_xy * sum_x) / divisor;

	}

}
lishijie910123 2013-07-19
  • 打赏
  • 举报
回复
以上代码为二元多次,怎么改为一元多次?
threenewbee 2013-07-18
  • 打赏
  • 举报
回复
http://blog.sina.com.cn/s/blog_6e51df7f0100thie.html
lishijie910123 2013-07-18
  • 打赏
  • 举报
回复
求解答。。。

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧