给定一组点,用抛物线拟合它们的最快方法是什么?它是在做最小二乘计算还是有迭代的方法?
谢谢
编辑:我认为梯度下降是要走的路。最小二乘计算会更费力(必须进行 qr 分解或其他操作以保持稳定)。
给定一组点,用抛物线拟合它们的最快方法是什么?它是在做最小二乘计算还是有迭代的方法?
谢谢
编辑:我认为梯度下降是要走的路。最小二乘计算会更费力(必须进行 qr 分解或其他操作以保持稳定)。
我最近需要找到一条通过 3 点的抛物线。
假设你有(x1,y1), (x2,y2) and (x3,y3)
并且你想要抛物线
y-y0 = a*(x-x0)^2
通过它们:找到y0, x0, and a
.
你可以做一些代数并得到这个解决方案(假设点不是都在一条线上):
let c = (y1-y2) / (y2-y3)
x0 = ( -x1^2 + x2^2 + c*( x2^2 - x3^2 ) ) / (2.0*( -x1+x2 + c*x2 - c*x3 ))
a = (y1-y2) / ( (x1-x0)^2 - (x2-x0)^2 )
y0 = y1 - a*(x1-x0)^2
请注意等式中的 cif y2==y3
那么你就有问题了。所以在我的算法中,我检查这个并将 x1, y1 与 x2, y2 交换然后继续。
希望有帮助!
保罗·普罗伯特
计算的解决方案几乎总是比迭代解决方案快。“例外”是针对低迭代次数和复杂计算的。
我会使用最小二乘法。我只为线性回归拟合编写了每个代码,但它可以用于抛物线(我最近有理由查找它 - 来源包括旧版“数值食谱”出版社等;和“工程数学”克雷齐格)。
抛物线算法