如何找到R中曲线中两点之间的完整距离?

How to find whole distance between two points in a curved line in R?

我使用 R 绘图函数绘制了一个类似的折线图 (plot(df))

我想得到图中两点之间整条线的距离(例如,x(1) 和 x(3) 之间)。我该怎么做?

  1. 如果您的函数是在精细的点网格上定义的,您可以计算每对点之间的线段长度并将它们相加。毕达哥拉斯是你的朋友:

    如果点之间的距离不够近,以至于函数在点之间基本上是线性的,它往往会(通常只是轻微地)低估弧长。

    请注意,如果您的 x 值按递增顺序存储,则可以通过差分直接获得这些 ẟx 和 ẟy 值(在 R 中为 diff

  2. 如果您有 y 作为 x 函数的函数形式,您可以应用 integral for the arc length——即整合

    ∫ √[1+(dy/dx)²] dx

介于 ab 之间。这本质上只是1中计算的极限。

  1. 如果xy都是另一个变量的参数函数(t, 比方说)你可以将上述积分的参数形式(如果我们不忘记雅可比行列式)简化为积分

    ∫ √[(dx/dt)²+(dy/dt)²] dt

    介于 ab

    之间

    (注意直接平行于1。)

  2. 如果在2.或3.中没有方便集成的函数形式,可以使用numerical quadrature;这可能非常有效(当求导函数的计算成本很高时,这会很方便)。