7#ifndef BALL_MATHS_ROMBERGINTEGRATOR_H
8#define BALL_MATHS_ROMBERGINTEGRATOR_H
10#ifndef BALL_MATHS_NUMERICALINTERGRATOR_H
19 template <
typename Function,
typename DataType>
70 DataType
integrate(DataType from, DataType to);
82 DataType
trapezoid(DataType h, DataType from, DataType to);
93 template<
typename Function,
typename DataType>
100 template<
typename Function,
typename DataType>
106 template<
typename Function,
typename DataType>
112 template<
typename Function,
typename DataType>
125 template<
typename Function,
typename DataType>
132 template<
typename Function,
typename DataType>
139 template<
typename Function,
typename DataType>
147 template<
typename Function,
typename DataType>
156 && (
result_ == romint.result_ ));
159 template<
typename Function,
typename DataType>
164 DataType helper = (to - from);
167 Size nsteps = (
Size) (sqrt((helper*helper)/(h*h)));
168 for (count=1; count<nsteps-1; count++)
180 template<
typename Function,
typename DataType>
183 (DataType from, DataType to)
197 for (j=1; j <= i; j++)
203 dev =
result_[((i-2)*(i-1))/2+(i-2)] -
result_[((i-1)*(i))/2+(i-1)];
206 return (
result_[((i-1)*(i))/2 + (i-1)]);
void setMaxNumSteps(Size mns)
Set the maximum number of steps we want to use in computation.
DataType integrate(DataType from, DataType to)
RombergIntegrator(float epsilon=1E-5, Size nsteps=1000)
Default constructor.
const RombergIntegrator & operator=(const RombergIntegrator &romint)
Assignment operator.
~RombergIntegrator()
Destructor.
DataType trapezoid(DataType h, DataType from, DataType to)
bool operator==(const RombergIntegrator &romint) const
Equality operator.
virtual void clear()
Clear method.
vector< DataType > result_
void setEpsilon(float eps)
Set the upper bound for the error we want to allow.
#define BALL_CREATE(name)