# [R] Integration of two lines

Hans W Borchers hwborchers at googlemail.com
Tue Jan 25 15:39:23 CET 2011

```Xavier Robin <Xavier.Robin <at> unige.ch> writes:

> Hello,
>
> I need to integrate the absolute difference between two lines measured
> on different points.
>
> # For example :
> x <- seq(0, 1, 1/100)
> f_x <- runif(101) + x
> y <- seq(0, 1, 1/23)
> f_y <- runif(24) + (1 - y)
>
> plot(x, f_x, type="l")
> lines(y, f_y)
>
> Then I would like to compute Integral( | f_x - f_y | )dx.
> (This is not the same as | Integral(f_x)dx -  Integral(f_y)dx |.)

First define a function from those points:

fx <- approxfun(x, f_x)
fy <- approxfun(y, f_y)
f  <- function(x) abs(fx(x)-fy(x))

and now you can apply integrate() or trapz():

xx <- sort(c(x, y))
yy <- f(xx)
trapz(xx, yy)

trapz() should return the more accurate (i.e. exact) result.

--Hans Werner

> Computing this integral looks non trivial. I guess I should interpolate
> the points of f_y over x and integrate both lines on these intervals.
> Even then I would miss points where the lines cross.
>
> There are functions to integrate below *one* line (I'm thinking about
> the trapz function in caTools).
> Do you know if there is a function to do this integration properly with
> two lines (and especially their absolute difference)?
>
> Regards,
> Xavier
>
>

```