介绍
Math.NET是一个开源项目:https://www.mathdotnet.com/,旨在构建和维护涵盖基础数学的工具箱,以满足 .NET开发人员的高级需求和日常需求。
关于Math.NET用法的参考博客:
https://www.cnblogs.com/dino623/p/curve_fitting_and_data_prediction_using_math_net.html
开源Math.NET基础数学类库使用总目录
示例
直线拟合
var xArr = new double[] { 1, 2, 3, 4};
var yArr = new double[] { 0, 0.1, 0.8, 0.9 };
int order = 1;
double[] parameters = Fit.Polynomial(xArr, yArr, order);
foreach (var x in xArr)
{
double y = 0;
for (int i = 0; i <= order; i++)
{
y+= parameters[i] * Math.Pow(x, i);
}
Trace.WriteLine(y);
}
手动在excel绘制了拟合前后的结果,用于查看效果:
抛物线
var xArr = new double[] { 1, 2, 3, 4 };
var yArr = new double[] { 1, 3, 7, 17 };
int order = 2;
double[] parameters = Fit.Polynomial(xArr, yArr, order);
foreach (var x in xArr)
{
double y = 0;
for (int i = 0; i <= order; i++)
{
y+= parameters[i] * Math.Pow(x, i);
}
Trace.WriteLine(y);
}
上图抛物线没有平滑地绘制,而是只连接了四个点。