Armadillo supports several numerical integration methods, including the trapezoidal rule, Simpson’s rule, and adaptive quadrature. These methods can be applied to solve integral equations or perform quadrature by approximating definite integrals of functions.
1. Trapezoidal Rule: Approximates the integral by dividing the area under the curve into trapezoids. In Armadillo, use
trapz
function with input as vectors for x and y values.
Example:
arma::vec x = arma::linspace(0, 1, 100);
arma::vec y = arma::sin(x * M_PI);
double result = arma::trapz(x, y);
2. Simpson’s Rule: Improves upon the trapezoidal rule by using parabolic segments instead of linear ones. Not directly available in Armadillo, but can be implemented manually or through external libraries.
3. Adaptive Quadrature: Adjusts the number of subintervals based on the function’s behavior, providing more accurate results. Use
quad
function from Boost library integrated with Armadillo.
Example:
#include <boost/math/quadrature/trapezoidal.hpp>
auto f = [](double x) { return std::sin(x); };
double result = boost::math::quadrature::trapezoidal(f, 0.0, M_PI);