37 unsigned int j)
const=0;
61 unsigned int j)
const;
71 mutable double retVal;
90 unsigned int j)
const;
100 mutable double retVal;
113 void polint(std::vector<double>::iterator xArray, std::vector<double>::iterator yArray,
double x,
double & y,
double & deltay)
const;
167 for (
unsigned int j=1;j<=c->
MAXITER;j++) {
172 c->
polint(h.begin()+j-c->
K,s.begin()+j-c->
K,0.0,ss, dss);
173 if (fabs(dss) <= c->
EPS*fabs(ss)) {
179 h[j+1]=h[j]/xMult/xMult;
182 throw std::runtime_error(
"DefiniteIntegral: too many steps. No convergence");
187 double dif = fabs(x-xArray[1]),dift;
188 std::vector<double> c(K+1),d(K+1);
190 for (
unsigned int i=1;i<=K;i++) {
191 dift=fabs(x-xArray[i]);
199 for (
unsigned int m=1;m<K;m++) {
200 for (
unsigned int i=1;i<=K-m;i++) {
201 double ho = xArray[i]-x;
202 double hp= xArray[i+m]-x;
203 double w=c[i+1]-d[i];
207 <<
"Error in polynomial extrapolation" 213 deltay = 2*ns < (K-m) ? c[ns+1]: d[ns--];
226 retVal = 0.5*(b-
a)*(
function(a)+
function(
b));
230 for (it=1,j=1;j<n-1;j++) it <<=1;
232 double del = (b-
a)/tnm;
235 for (sum=0.0,j=1;j<=it;j++,x+=del) {
239 retVal = 0.5*(retVal+(b-
a)*sum/tnm);
248 retVal = (b-
a)*(
function((a+b)/2.0));
252 for (it=1,j=1;j<n-1;j++) it *=3;
254 double del = (b-
a)/(3.0*tnm);
255 double ddel = del+del;
258 for (j=1;j<=it;j++) {
265 retVal = (retVal+(b-
a)*sum/tnm)/3.0;
void setEpsilon(double eps)
void setMaxIter(unsigned int maxIter)
DefiniteIntegral & operator=(const DefiniteIntegral &)
virtual unsigned int numFunctionCalls() const
unsigned int numFunctionCalls() const
~TrapezoidQuadratureRule()
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const =0
XtMidpointQuadratureRule()
void setMinOrder(unsigned int order)
virtual unsigned int numFunctionCalls() const =0
unsigned int nFunctionCalls
virtual unsigned int stepMultiplier() const =0
DefiniteIntegral(double a, double b, Type=CLOSED)
void polint(std::vector< double >::iterator xArray, std::vector< double >::iterator yArray, double x, double &y, double &deltay) const
virtual unsigned int numFunctionCalls() const
virtual unsigned int stepMultiplier() const
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const
virtual double operator[](const AbsFunction &function) const
virtual unsigned int stepMultiplier() const
DefiniteIntegral::Type type
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const
TrapezoidQuadratureRule()
virtual ~QuadratureRule()
~XtMidpointQuadratureRule()