我试图以 F(x)=1/(ax^2+bx+c) 的形式将一些点拟合到反抛物线。
我的目标是在 c++ 中编写一个函数,该函数需要一组 10-30 个点并将它们拟合到反抛物线。
我开始尝试使用最小二乘法获得解析表达式,但无法获得结果。我手动尝试(有点疯狂),然后我尝试解析 a、b 和 c 的表达式,但 mupad 没有给我结果(我对 Matlab 的 mupad 很陌生,所以也许我做的不正确) . 我不知道如何解决这个问题了。
我可以得到这个特定问题的解析表达式吗?我也看过一般最小二乘拟合的算法,但我不需要这么复杂的算法,我只需要它来处理这个方程。如果没有,StackOverflow 的人将如何解决这个问题?
如果需要,我可以发布方程式,以及我尝试过的小型 Mupad 代码,但我认为没有必要。
编辑:一些例子
对不起,图像有点乱,但这是我需要的东西。数据为蓝色(此数据特别嘈杂)。我只需要使用垂直线之间的数据(左侧的一堆数据和右侧的另一个数据)。
拟合的结果用红线表示。
所有这些都是用matlab制作的,但我需要用c++制作。
我会尝试发布一些数据...
编辑2:我实际上在Matlab中进行了如下拟合(不是实际代码):
create linear system Ax = b, with
A = [x² x 1]
x = [a; b; c]
b = 1/y;
它应该工作,不是吗?然后我可以使用用 SVD 计算的 Moore-Penrose pseudoinv 来解决。不是吗?