我已经在互联网上搜索了一段时间,试图找到一种简单,直观,快速的方法来使用5个数据点逼近二次多项式.
我正在使用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按任意键继续...
谢谢您的帮助!
假设您想要拟合以下形式的标准抛物线
y = ax^2 + bx + c
Run Code Online (Sandbox Code Playgroud)
到您的 5 个数据点,那么您所需要的只是求解 3 x 3 矩阵方程。看一下这个示例http://www.personal.psu.edu/jhm/f90/lectures/lsq2.html - 它解决了您似乎正在描述的相同问题(仅使用更多数据点)。如果您对微积分有基本的掌握,并且能够反转 3x3 矩阵(或者更好的数字矩阵 - 我猜您确实做到了,因为您在问题标题中专门提到了 SVD),那么这个示例将阐明您需要做什么。