可能重复:
如何在给定三个点的情况下计算抛物线的顶点
我有三个 2D 点 P1、P2 和 P3,每个点由一对坐标 (Xn, Yn) 组成,假设:
- X1 < X2 < X3;
- Y2 < Y1;
- Y2 < Y3;
从几何上讲,它们形成一个“V”。
我需要的是一种获得通过三个点的抛物线顶点坐标的方法,它的凹面朝上,以便将其视为采样不足曲线的局部最小值。
我正在使用 Python,并采用了一种在网上找到的算法,但它似乎只在 V 的左腿较高时才有效。我想我在调整它时犯了一些错误 - 以避免原始算法的一些不希望的索引依赖行为:
def parabolic_interpolation(p1, p2, p3):
x1, y1 = p1
x2, y2 = p2
x3, y3 = p3
dx = x2 - x1
dy = (y3 - y1) * 0.5
d2y = 2 * y2 - y1 - y2
di = dy/d2y
xout = x2 + di * dx
yout = y2 + (dy**2/d2y)*0.5
return (xout,yout)
我确信通过三个点进行插值以找到局部最小值(或最大值)的问题可能已经在计算上得到解决,因此我将不胜感激任何帮助以使其正确。
谢谢阅读!