Struct rgsl::types::integration::IntegrationQawsTable
source · [−]pub struct IntegrationQawsTable { /* private fields */ }
Expand description
The QAWS algorithm is designed for integrands with algebraic-logarithmic singularities at the end-points of an integration region. In order to work efficiently the algorithm requires a precomputed table of Chebyshev moments.
Implementations
sourceimpl IntegrationQawsTable
impl IntegrationQawsTable
sourcepub fn new(
alpha: f64,
beta: f64,
mu: i32,
nu: i32
) -> Option<IntegrationQawsTable>
pub fn new(
alpha: f64,
beta: f64,
mu: i32,
nu: i32
) -> Option<IntegrationQawsTable>
This function allocates space for a gsl_integration_qaws_table struct describing a singular
weight function W(x) with the parameters alpha
, beta
, mu
and nu
,
W(x) = (x-a)^alpha (b-x)^beta log^mu (x-a) log^nu (b-x)
where alpha > -1f64
, beta > -1f64
, and mu = 0, 1
, nu = 0, 1
. The weight function can
take four different forms depending on the values of mu
and nu
,
W(x) = (x-a)^alpha (b-x)^beta (mu = 0, nu = 0)
W(x) = (x-a)^alpha (b-x)^beta log(x-a) (mu = 1, nu = 0)
W(x) = (x-a)^alpha (b-x)^beta log(b-x) (mu = 0, nu = 1)
W(x) = (x-a)^alpha (b-x)^beta log(x-a) log(b-x) (mu = 1, nu = 1)
The singular points (a,b) do not have to be specified until the integral is computed, where they are the endpoints of the integration range.
The function returns a pointer to the newly allocated table gsl_integration_qaws_table if no errors were detected, and 0 in the case of error.
sourcepub fn set(&mut self, alpha: f64, beta: f64, mu: i32, nu: i32) -> Value
pub fn set(&mut self, alpha: f64, beta: f64, mu: i32, nu: i32) -> Value
This function modifies the parameters (\alpha, \beta, \mu, \nu)
sourcepub fn qaws<F: Fn(f64) -> f64>(
&mut self,
f: F,
a: f64,
b: f64,
epsabs: f64,
epsrel: f64,
limit: usize,
workspace: &mut IntegrationWorkspace
) -> (Value, f64, f64)
pub fn qaws<F: Fn(f64) -> f64>(
&mut self,
f: F,
a: f64,
b: f64,
epsabs: f64,
epsrel: f64,
limit: usize,
workspace: &mut IntegrationWorkspace
) -> (Value, f64, f64)
This function computes the integral of the function f(x) over the interval (a,b) with the
singular weight function (x-a)^\alpha (b-x)^\beta \log^\mu (x-a) \log^\nu (b-x)
. The
parameters of the weight function (\alpha, \beta, \mu, \nu) are taken from the table self.
The integral is,
I = \int_a^b dx f(x) (x-a)^alpha (b-x)^beta log^mu (x-a) log^nu (b-x).
The adaptive bisection algorithm of QAG is used. When a subinterval contains one of the endpoints then a special 25-point modified Clenshaw-Curtis rule is used to control the singularities. For subintervals which do not include the endpoints an ordinary 15-point Gauss-Kronrod integration rule is used.
Returns (result, abs_err)
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for IntegrationQawsTable
impl !Send for IntegrationQawsTable
impl !Sync for IntegrationQawsTable
impl Unpin for IntegrationQawsTable
impl UnwindSafe for IntegrationQawsTable
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more