有一个项目需要拟合数据序列,从最简单的线性拟合,到复杂的多项式拟合。对于线性拟合,有一个简单的实现,请参考博客:利用最小二乘法拟合任意次函数曲线(C#)http://blog.sina.com.cn/s/blog_6e51df7f0100thie.html。
其实有一个现成的库可以用,可参考博客:使用、 Excel 和 Math.Net 进行曲线拟合和数据预测。
我用了一些数据,做了一个简单的例子,感觉挺好的:
double[] X = new double[] { 1, 2, 3, 4, 5 }; double[] Y = new double[] { 12, 16, 34, 45, 47 }; double[] parameters = Fit.Polynomial(X, Y, 1); foreach (var item in parameters) { Console.WriteLine(item); }
需要先安装Nuget 包:MathNet.Numerics。另外,其返回的参数是从第位开始的,比如对于“y=ax^2+bx+c”,c=p0,b=p1,c=p2。也可以理解为“y=p0+p1*x+p2*x*x”。