如何找到R中曲线中两点之间的完整距离?
How to find whole distance between two points in a curved line in R?
我使用 R 绘图函数绘制了一个类似的折线图 (plot(df)
)
我想得到图中两点之间整条线的距离(例如,x(1) 和 x(3) 之间)。我该怎么做?
如果您的函数是在精细的点网格上定义的,您可以计算每对点之间的线段长度并将它们相加。毕达哥拉斯是你的朋友:
如果点之间的距离不够近,以至于函数在点之间基本上是线性的,它往往会(通常只是轻微地)低估弧长。
请注意,如果您的 x 值按递增顺序存储,则可以通过差分直接获得这些 ẟx 和 ẟy 值(在 R 中为 diff
)
如果您有 y 作为 x 函数的函数形式,您可以应用 integral for the arc length——即整合
∫ √[1+(dy/dx)²] dx
介于 a 和 b 之间。这本质上只是1中计算的极限。
如果x和y都是另一个变量的参数函数(t, 比方说)你可以将上述积分的参数形式(如果我们不忘记雅可比行列式)简化为积分
∫ √[(dx/dt)²+(dy/dt)²] dt
介于 a 和 b
之间
(注意直接平行于1。)
如果在2.或3.中没有方便集成的函数形式,可以使用numerical quadrature;这可能非常有效(当求导函数的计算成本很高时,这会很方便)。
我使用 R 绘图函数绘制了一个类似的折线图 (plot(df)
)
我想得到图中两点之间整条线的距离(例如,x(1) 和 x(3) 之间)。我该怎么做?
如果您的函数是在精细的点网格上定义的,您可以计算每对点之间的线段长度并将它们相加。毕达哥拉斯是你的朋友:
如果点之间的距离不够近,以至于函数在点之间基本上是线性的,它往往会(通常只是轻微地)低估弧长。
请注意,如果您的 x 值按递增顺序存储,则可以通过差分直接获得这些 ẟx 和 ẟy 值(在 R 中为
diff
)如果您有 y 作为 x 函数的函数形式,您可以应用 integral for the arc length——即整合
∫ √[1+(dy/dx)²] dx
介于 a 和 b 之间。这本质上只是1中计算的极限。
如果x和y都是另一个变量的参数函数(t, 比方说)你可以将上述积分的参数形式(如果我们不忘记雅可比行列式)简化为积分
∫ √[(dx/dt)²+(dy/dt)²] dt
介于 a 和 b
之间(注意直接平行于1。)
如果在2.或3.中没有方便集成的函数形式,可以使用numerical quadrature;这可能非常有效(当求导函数的计算成本很高时,这会很方便)。