home *** CD-ROM | disk | FTP | other *** search
- #
- # qtrap
- #
- # Simple interface for trapzd. Returns estimate of integral of f from a to b,
- # using the trapezoidal rule.
- #
- # The (global) variable QTRAP_EPS can be set to desired fractional accuracy
- # and QTRAP_JMAX so that 2^(QTRAP_JMAX-1) is maximum allowed number of steps.
- #
- # Error 100 indicates that QTRAP_JMAX is too low to get desired accuracy.
- #
- # This routine is from "Numerical Recipes in C" by Press et. al.
- # It uses trapzd(), defined in trapzd.ic.
- #
- # mws, 7/92.
- #
- silent
- echo "Reading trapzd..."
- read "trapzd.ic"
- echo "Defining qtrap..."
- #
- QTRAP_EPS = 1.0e-5
- QTRAP_JMAX = 20
- #
- func qtrap(~f,a,b) = {
- local j,s,olds
-
- olds = -1.0e30;
- for (j = 1; j <= QTRAP_JMAX; j += 1) {
- s = trapzd(f,a,b,j)
- if (abs(s-olds) < QTRAP_EPS*abs(olds)) return s
- olds = s
- }
- error(99) # too many steps
- }
-
- echo "Done."
- verbose
-