有一個項目需要擬合數據序列,從最簡單的線性擬合,到復雜的多項式擬合。對於線性擬合,有一個簡單的實現,請參考博客:利用最小二乘法擬合任意次函數曲線(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”。