參考:http://blog.csdn.net/ztmsimon/article/details/50524392
在論壇中總看到有人在說Math.NET Iridium,查了一下,現在被整合到MathNet.Numerics這個庫中來了。
但是好像對於MathNet.Numerics這個庫的相關資料比較少。我
大概看了一下,MathNet.Numerics這個庫太博大精深了,就舉線性擬合的例子來說明一下這個庫。
1、引用庫:
在http://numerics.mathdotnet.com/這個網址中,我沒看到怎么直接下載這個庫的地方,但是有Nuget/GitHub。
但是GitHub好像是這個項目的源代碼,不是庫,沒怎么具體看。就轉到Nuget上下載了。
安裝Nuget在https://dist.nuget.org/index.html這個頁面--DOWNLOADS里面就有。並且在VS2013好像是集成Nuget的,不用安裝。
在VS2013中--工具--Nuget包管理器--程序包管理器控制台--輸入"Install-Package MathNet.Numerics"。等待安裝完成即可。
完成后,程序的文件夾中會多一個packages文件夾,程序中也自動引用了MathNet.Numerics,這個時候就能使用了。
2、擬合直線:
Tuple<double, double> s = new Tuple<double, double>(0, 0);
s = Fit.Line(X, Y);
這個就很好理解了:double[] X = new double[i];為x軸的數組,double[] Y = new double[i];為y軸的數組,s為擬合出來直線參數,s.Item2為斜率k,s.Item1為斜率b。
(公式為y=s.Item2*x+s.Item1)
3、擬合曲線:
double[] res = Fit.Polynomial(X, Y, m);
其中:與直線擬合一樣,X為x軸的數組,Y為y軸數組,m為次方數。
比如平時我們使用較多的4次方,m就輸入4,公式為:y=res[4]*x^4+res[3]*x^3+res[2]*x^2+res[1]*x+res[0]
4、計算曲線擬合出來的R^2
雖然不太理解R^2是什么意思,但是使用EXCEL擬合的時候,都會有這個值,並且這個值越接近1,說明擬合出來的曲線跟原曲線就越接近。
RSquared=GoodnessOfFit.RSquared(Y, Ytest);
這個命令就是計算R^2,其中Y為原始的Y點,Ytest是使用擬合出來的線計算的Y點,相當於原始線與擬合線做比較。
本人對MathNet.Numerics理解也不深,也是才開始使用。后續如有再遇到其他的問題的時候再記錄。
c#代碼三次樣條插值。
http://blog.csdn.net/panjinliang066333/article/details/56682829
c# 二元多次函數擬合:
http://blog.sina.com.cn/s/blog_6e51df7f0100thie.html