c#数值多项式回归

时间:2012-05-15 17:08:22

标签: c# numerical-methods polynomial-math

我正在开始我的第一个C#项目之一 - 需要找到适合几个x-y数据点的曲线。

例如:

x:1,2,3,4,5,6 y:0.5,5,0.5,2.5,5,0.5

实际上,根据excel,我需要的这些点的正确曲线拟合是六阶多项式。

如何在C#中编写正确的表达式来获取此曲线的系数和指数?我想远离库,因为这很可能最终被转换为C用于微处理器。

我是C#的新手,对硬件/软件集成知之甚少。

那就是说,我现在正在阅读数值方法论......这个项目的第二步是采用曲线并在连续的最小值之间进行数值积分......

非常感谢任何建议/指示。

输入将由六个x-y坐标给出......

问题#1: 如何给出六个坐标的多项式?

3 个答案:

答案 0 :(得分:3)

在某些 x i 处求出 n 点的多项式系数的问题被称为多项式插值问题。您可以阅读问题的详细信息及其解决方案here(wikipedia.org)。

你应该密切注意构造插值多项式这一部分,他们提到你需要反转的矩阵如果你使用高斯消元就会引入大错误,并检查{{3} (wikipedia.org)提供更好的方法。只有六点可能无关紧要,但值得了解。

至于实现,您有两种选择:使用具有线性代数支持的第三方库 - 例如Newton interpolation(sciencecode.com),或者开始为向量和矩阵编写一些基本的抽象,以及实现乘法,加法和反演等基本操作。在当天,我们使用了一个名为“C中的数字食谱”的库,他们可能有一个C#端口。可能值得一试。

答案 1 :(得分:0)

如果您认为六阶多项式最适合六个数据点,看起来您是认真的overfitting我很好奇您是否真的意味着实际数据中只有六个点(在这种情况下,拟合没有意义)或者您只有六个样本点,并且预计会预测数据的实际形状。

https://www.coursera.org/course/ml有一个关于机器学习的优秀课程,更具体地说是相关的,因为它教会自动选择多项式的正确顺序,分割数据和更基本的方面,例如整个事物的基础数学。

这不是你可以指向“算法X”的东西,并希望它会出现正确...... ML课程涵盖了人们犯下的许多错误(过度拟合,拟合,差数据采样)等等...)在拟合数据时。它还讨论了如何避免它们。

答案 2 :(得分:0)

我为此成功使用了 MathNET.Numerics 库。它可以作为 Nuget 包安装,并且似乎得到了积极维护。曲线拟合在其文档 here 中进行了描述。