61 template <
typename T,
typename U>
66 for (
int i=1; i < length+1; i++)
87 for (
int i = 0; i < length; i++) {
89 delta_x = x[i+1] - x[i];
91 delta_x = x[i] - x[i-1];
93 integral += delta_x * y[i];
108 template <
typename T>
114 for (
int i = 1; i < length-1; i++) {
115 delta_x = x[i] - x[i-1];
116 integral += delta_x * y[i];
131 template <
typename T>
137 for (
int i = 0; i < length; i++) {
139 delta_x = x[i+1] - x[i];
140 else if (i == length - 1)
141 delta_x = x[i] - x[i-1];
143 delta_x = (x[i] - x[i-1]) / 2.0 + (x[i+1] - x[i]) / 2.0;
145 integral += delta_x * y[i];
160 template <
typename T>
166 for (
int i = 1; i < length; i++) {
167 delta_x = x[i] - x[i-1];
168 integral += delta_x * (y[i] + y[i-1]) / 2.0;
183 template <
typename T>
189 for (
int i = 0; i < length - 2; i++) {
190 delta_x = x[i+1] - x[i];
191 integral += (delta_x / 6.0) * (y[i] + 4*y[i+1] + y[i+2]);
206 template <
typename T>
212 for (
int i = 0; i < length - 3; i++) {
213 delta_x = x[i+1] - x[i];
214 integral += (delta_x / 8.0) * (y[i] + 3*y[i+1] + 3*y[i+2] + y[i+3]);
235 for (
int i = 0; i < length - 4; i++) {
236 delta_x = x[i+1] - x[i];
237 integral += (delta_x / 90.0) * (7*y[i] + 32*y[i+1] + 12*y[i+2] +
238 32*y[i+3] + 7*y[i+4]);
254 template <
typename T>
Definition: integrate.h:42
double computeTrapezoidal(T *x, T *y, int length)
Performs a numerical integral using the trapezoidal numerical integration method. ...
Definition: integrate.h:161
double computeSimpsons38(T *x, T *y, int length)
Performs a numerical integral using the Simpson's 3/8ths numerical integration method.
Definition: integrate.h:207
Definition: integrate.h:36
Definition: integrate.h:48
double computeSimpsons(T *x, T *y, int length)
Performs a numerical integral using the Simpson's numerical integration method.
Definition: integrate.h:184
void cumulativeIntegral(T *x, T *y, U *cdf, int length, integrationScheme scheme)
Performs a cumulative numerical integral over arrays of x and y values using the specificed integrati...
Definition: integrate.h:62
double computeRiemannCenter(T *x, T *y, int length)
Performs a numerical integral using the midpoint-centered Riemann numerical integration method...
Definition: integrate.h:132
Definition: integrate.h:40
enum integrationSchemes integrationScheme
Numerical integration methods.
double computeRiemannLeft(T *x, T *y, int length)
Performs a numerical integral using the left-centered Riemann numerical integration method...
Definition: integrate.h:82
double computeBooles(T *x, T *y, int length)
Performs a numerical integral using the Boole's numerical integration method.
Definition: integrate.h:230
integrationSchemes
Numerical integration methods.
Definition: integrate.h:34
double integrate(T *x, T *y, int length, integrationScheme scheme)
Performs a 1D numerical integral over arrays of x and y values using the specified integration scheme...
Definition: integrate.h:255
Definition: integrate.h:44
Definition: integrate.h:38
Definition: integrate.h:46
double computeRiemannRight(T *x, T *y, int length)
Performs a numerical integral using the right-centered Riemann numerical integration method...
Definition: integrate.h:109