
Boost : 
From: Martin Weiser (weiser_at_[hidden])
Date: 20021028 04:06:52
On Montag, 28. Oktober 2002 00:22, Chuck Allison wrote:
> I've been doing adaptive integration for over 20 years. It's the least
> I think a user would expect. Maybe we should compare algorithms.
Comparing algorithms is always interesting. I'd like to draw your
attention, however, to specifying a C++ interface first. The actual
algorithmic realization would then be a "quality of implementation"
issue.
Since there seems to be some interest in adaptive integration over
onedimensional bounded intervals, I'll make a first stab at a possible
interface. This is meant to be the starting point for detailed discussion
and may contain severe errors.
For the evaluation of $\int_a^b f(x) dx$, where $a,b\in\R$ and $f:\R > B$
($B$ should be a Banach space over the real numbers maybe even some more
general structure) up to a certain tolerance, the following minimal
interface could be used:
template <class Functor>
typename Functor::result_type
integrate(typename Functor::argument_type a,
typename Functor::argument_type b,
Functor f,
double tol);
The following optional interface extensions may be desirable:
 select between relative and absolute tolerance
 specify known discontinuities
 give a hint for the maximally useful integration order
 select some specific algorithm
 provide a rough estimate on flops per fevaluation
Maybe this calls for a policy argument.
Several theoretic properties could be made part of the interface by giving
guarantees that the implementation will respect them at least in exact
arithmetic (abbreviated notation):
 linearity: integ(a,b,r*f+s*g) = r*integ(a,b,f)+s*integ(a,b,g)
 symmetry: integ(a,b,f) = integ(b,a,f)
 additivity: integ(a,b,f) = integ(a,c,f)+integ(c,b,f) (that's tough)
 positivity: integ(a,b,f)>=0 if a<=b and f>=0
Any thoughts?
Martin
>  Original Message 
> From: "Gabriel Dos Reis" <gdr_at_[hidden]>
> > Martin Weiser <weiser_at_[hidden]> writes:
> >  It appears to me that many users of such an interface do not have
> >  the experience to select suitable integration points x. And even
> >  the experienced ones may prefer the nodes selected by a carefully
> >  crafted integration code  it's easier to use and the
> >  efficiency/accuracy is probably not worse.
> >
> > Indeed. Adaptive algorithms are known to do a very good job at that
> > most of the time. If a numerical integrator were to made it into
> > Boost, I would expect it to provide for that basic functionality.
 Dr. Martin Weiser Zuse Institute Berlin weiser_at_[hidden] Scientific Computing http://www.zib.de/weiser Numerical Analysis and Modelling
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk