I'm looking for a library to find the integral of a given set of random data (rather than a function) in C++ (or C, but preferably C++). There is another question asking about integration in C but the answers discuss more how to integrate a function (I think...). I understand that this can be done simply by calculating the area under the line segment between each pair of points from start to finish, but I'd rather not reinvent the wheel if this has already been done. I apologize in advance if this is a duplicate; I searched pretty extensively to no avail. My math isn't as strong as I'd like it so it's entirely possible I'm using the wrong terminology.
Thanks in advance for any help!
Chris
Edit: In case anybody is interested, I feel like an idiot. Even adding in a bunch of OO abstraction to make my other code easier to use, that was maybe 30 lines of code. This is what 3 years away from any sort of math will do to you...thanks for all of the help!
This is trivial. If the points are (x0, y0), (x1, y1), ..., (xN, yN), and the points are ordered so that x0 <= x1 <= ... <= xN, then the integral is
using no interpolation (summing areas of rectangles), and
using linear interpolation (summing areas of trapezia).
The problem is especially simple if your data is y0, y1, ..., yN and the corresponding x values are assumed to be 0, 1, ..., N. Then you get
using no interpolation (summing areas of rectangles), and
using linear interpolation (summing areas of trapezia).
Of course, using some simple algebra, the trapezia formulae can be simplified. For instance, in the last case, you get
i have just had my numerical exam today :) and i have 3 rules for you
integral = h/2 * ( y0 + 2y1 + 2y2 + 2y3 ....... + yn)
integral = h * ( y0.5 + y1.5 + y2.5 + .... y(n-0.5) )
y0.5 means the value of y at the point between x0 and x1
integral = h/3 * ( y0 + 4y1 + 2y2 + 4y3 + 2y4 ....... + yn)
where h is the step you take which is usually small number ( but not too small to avoid round off error) and n is the number of periods you take
those were the easy to apply ... you can read more about gauss quadrature also
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With