Feature #3328
Implement numerical integration over vectors of functions
Status: | Closed | Start date: | 09/03/2020 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assigned To: | Knödlseder Jürgen | % Done: | 100% | |
Category: | - | |||
Target version: | 2.0.0 | |||
Duration: |
Description
To improve the efficiency of the computations it should be possible to apply numerical integration to vectors of functions, returning hence the a vector of integrals in a single method call. This allows for example to integrate in one shot a function and its derivatives.
For this purpose a new class
class GFunctions {
public:
// Constructors and destructors
GFunction(void);
GFunction(const GFunction& function);
virtual ~GFunction(void);
// Operators
GFunction& operator=(const GFunction& function);
// Methods
virtual GVector eval(const double& x) = 0;
}
needs to be introduced which an eval()
method that returns a vector of values for a given argument x
.
Methods
explicit GIntegral(GFunctions* kernel);
void kernel(GFunctions* kernel);
const GFunctions* kernel(void) const;
GVector trapzd(const double& a, const double& b, const int& n, GVector result);
GVector romberg_vector(const double& a, const double& b, const int& order);
need to be added to the GIntegral
class to support these vectors.
Recurrence
No recurrence.
Related issues
History
#1 Updated by Knödlseder Jürgen about 4 years ago
- Related to Action #3203: Implement spatial IRF integration methods that return IRF values for all events added
#2 Updated by Knödlseder Jürgen about 4 years ago
- Status changed from New to In Progress
- % Done changed from 0 to 10
I implemented the GFunctions
class and added a dedicated unit test.
#3 Updated by Knödlseder Jürgen about 4 years ago
- % Done changed from 10 to 90
I replaced GVector
by GNdarray
to have a more general definition of a set of functions in GFunctions
.
For integration of a set of functions I implemented the GIntegrals
class. Only the GIntegrals::romberg
methods were implemented since the other integration methods are actually nowhere used. They can be added later if really needed.
#4 Updated by Knödlseder Jürgen about 4 years ago
- Status changed from In Progress to Closed
- % Done changed from 90 to 100
Merged into devel
.