Eka - 1 year ago 83

R Question

Answer Source

If your function is defined over a fine grid of points, you can compute the length of the line segment between each pair of points and add them. Pythagoras is your friend here:

To the extent that the points are not close enough together that the function is essentially linear between the points, it will tend to (generally only slightly) underestimate the arc length.

Note that if your x-values are stored in increasing order, these $\delta_x$ and $\delta_y$ values can be obtained directly by differencing (in R that's

`diff`

)If you have a functional form for $y$ as a function of $x$ you can apply the integral for the arc length:

$$s=\int _{a}^{b}{\sqrt {1+\left({\frac {dy}{dx}}\right)^{2}}}dx;$$

this is essentially just the calculation in 1 taken to the limit.

If both $x$ and $y$ are parametric functions of another variable ($t$, say) you can simplify the parametric form of the above integral (if we don't forget the Jacobian) to

$$s=\int _{a}^{b}{\sqrt {\left({\frac {dx}{dt}}+{\frac {dy}{dt}}\right)^{2}}}dt.$$

(Note the direct parallel to 1.)

if you don't have a convenient-to-integrate functional form in 2. or 3. you can use numerical quadrature; this can be quite efficient (which can be handy when the derivative function is expensive to evaluate).