⾸先需要引⽤mathNet,VS2013及以上的版本在联⽹的情况下可以按照下⾯的步骤进⾏添加引⽤。
⾸先需要新建⼀个项⽬,在⾃⼰的项⽬界⾯中,依次选择⼯具–>NuGet包管理器–>程序包管理器控制台。
在打开的程序包管理器控制台中输⼊如下命令
拟合直线
Install-Package MathNet.Numerics
等待⼏秒钟即可看到安装成功。
线性拟合代码:
Tuple<double,double> s =new Tuple<double,double>(0,0);
double[] X =new double[5];
double[] Y =new double[5];
for(int i =0; i <5; i++)
{
X[i]= i +1;
Y[i]= i +1;
}
s = Fit.Line(X, Y);
double b = s.Item1;
double k = s.Item2;
数组X代表横坐标x的集合,数组Y代表纵坐标y的集合,我这⾥⽤⼀个for循环随便给X和Y赋的值,真正使⽤的时候,可以根据实际情况对X 和Y进⾏赋值。Fit.Line(X,Y)是进⾏拟合的函数调⽤,拟合结果存放在s中,其中,s.Item1存放的是截距b,s.Item2存放的是斜率k。 多次拟合:
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]
R^2这个值越接近1,说明拟合出来的曲线跟原曲线就越接近。
double RSquared = GoodnessOfFit.RSquared(Y, Ytest);
这个命令就是计算R^2,其中Y为原始的Y点,Ytest是使⽤拟合出来的线计算的Y点,相当于原始线与拟合线做⽐较。