37 unsigned int j)
const=0;
61 unsigned int j)
const;
71 mutable double retVal;
72 mutable unsigned int nFunctionCalls;
90 unsigned int j)
const;
100 mutable double retVal;
101 mutable unsigned int nFunctionCalls;
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;
virtual unsigned int stepMultiplier() const =0
virtual unsigned int numFunctionCalls() const =0
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const =0
virtual ~QuadratureRule()
virtual unsigned int stepMultiplier() const
virtual unsigned int numFunctionCalls() const
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const
~TrapezoidQuadratureRule()
TrapezoidQuadratureRule()
virtual double integrate(const AbsFunction &function, double a, double b, unsigned int j) const
~XtMidpointQuadratureRule()
virtual unsigned int numFunctionCalls() const
virtual unsigned int stepMultiplier() const
XtMidpointQuadratureRule()
void polint(std::vector< double >::iterator xArray, std::vector< double >::iterator yArray, double x, double &y, double &deltay) const
unsigned int nFunctionCalls
DefiniteIntegral::Type type
DefiniteIntegral(double a, double b, Type=CLOSED)
void setMinOrder(unsigned int order)
virtual double operator[](const AbsFunction &function) const
unsigned int numFunctionCalls() const
DefiniteIntegral & operator=(const DefiniteIntegral &)
void setEpsilon(double eps)
void setMaxIter(unsigned int maxIter)