6

我已经在互联网上搜索了很长一段时间,试图找到一种简单、直观、快速的方法来使用 5 个数据点逼近 2 次多项式。

我正在使用 VC++ 2008。

我遇到过很多库,例如 cminipack、cmpfit、lmfit 等……但它们看起来都不是很直观,而且我很难实现代码。

最终,我将一组离散值放入一维数组中,我试图通过曲线拟合数据来找到“虚拟最大点”,然后在非整数值处找到该数据的最大点(其中一个整数值将是仅查看数组的最高精度)。

无论如何,如果有人做过类似的事情,并且可以指出他们使用的包,也许是包的简单实现,那就太好了!

我很高兴提供一些测试数据和图表来向您展示我正在使用什么样的东西,但我觉得我的要求非常简单。非常感谢。

编辑:这是我写的有效的代码! http://pastebin.com/tUvKmGPn

更改大小以更改使用的输入数量

0 0 1 1 2 4 4 16 7 49

a:1 b:0 c:0 按任意键继续。. .

谢谢您的帮助!

4

2 回答 2

3

假设您要拟合形式的标准抛物线

    y = ax^2 + bx + c 

到您的 5 个数据点,那么您只需要求解一个 3 x 3 矩阵方程。看看这个例子http://www.personal.psu.edu/jhm/f90/lectures/lsq2.html - 它可以解决您似乎描述的相同问题(仅使用更多数据点)。如果您对微积分有基本的了解,并且能够反转 3x3 矩阵(或者在数字上更好的东西 - 我猜你会这样做,因为你在问题标题中专门提到了 SVD),那么这个例子将阐明你需要做什么。

于 2012-06-27T19:49:44.220 回答
1

看看这个关于多项式回归的维基百科页面

于 2012-06-27T19:36:49.397 回答