# IntervalIntegrate.frink

``` // This contains routines for integrating a function numerically using // interval techniques. // This function takes an anonymous one-argument function f and numerically // integrates it over n steps from lower to upper.  The result is an interval // that should be guaranted to contain the true value of the function. IntervalIntegrate[f, lower, upper, steps] := {    // Make sure steps is an integer or this will fail.    steps = ceil[steps]    stepsize = (upper-lower) / steps    sum = 0 f[lower] stepsize  // This is necessary to get the units right.    min = lower    max = lower    // By counting for a guaranteed number of steps, we can avoid roundoff    // error and "missing" and endpoint when using floating-point boundaries.    while min < upper    {       min = max       max = min + stepsize       if (max > upper)          max = upper       width = max-min       mid = (min + max)/2       int = new interval[min, mid, max] /*      println["int: \$int"]       println["f[int]: " + f[int]]       println["width: \$width"]       println["sum: \$sum"]*/       area = f[int] * width  //      println["\$int\t\$area"]       sum = sum + area    }    return sum } // This equation tests the integration with an anonymous function and returns // an interval. //IntervalIntegrate[{|x| sin[x]/x}, 1e-10, 2 pi, 100000] // This represents the light from a long cylindrical lightbulb //IntervalIntegrate[{|h| 1000. lumens/ft / (h^2 + (12 in)^2)}, -1/2 ft, 1/2 ft, 10000] -> lumens/(foot^2) ```

This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 18492 days, 22 hours, 25 minutes ago.