0

可能重复:
如何在给定三个点的情况下计算抛物线的顶点

我有三个 2D 点 P1、P2 和 P3,每个点由一对坐标 (Xn, Yn) 组成,假设:

  1. X1 < X2 < X3;
  2. Y2 < Y1;
  3. 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)

我确信通过三个点进行插值以找到局部最小值(或最大值)的问题可能已经在计算上得到解决,因此我将不胜感激任何帮助以使其正确。

谢谢阅读!

4

0 回答 0