C#使用mathNet进行线性拟合和多次拟合

C#使⽤mathNet进⾏线性拟合和多次拟合
⾸先需要引⽤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]
4、计算曲线拟合出来的R^2
R^2这个值越接近1,说明拟合出来的曲线跟原曲线就越接近。
double RSquared = GoodnessOfFit.RSquared(Y, Ytest);
这个命令就是计算R^2,其中Y为原始的Y点,Ytest是使⽤拟合出来的线计算的Y点,相当于原始线与拟合线做⽐较。

本文发布于:2024-09-22 15:30:47,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/358995.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:拟合   出来   实际   代表
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议