4.4.1. tkwant.integration.calc_abscissas_and_weights

tkwant.integration.calc_abscissas_and_weights(a, b, n, quadrature)[source]

Abscissas and weights for fixed-order integration quadratures.

Parameters
  • a (float) – Lower limit of integration.

  • b (float) – Upper limit of integration.

  • n (int) – Order of quadrature integration. Must be positive, n > 0

  • quadrature (string) –

    Quadrature rule to use. Possible choices:

    • gausslegendre: order n Gauss-Legendre

    • kronrod: order n and 2 n + 1 Gauss-Kronrod

    • trapezoidal: n point trapezoidal rule

    • trapezoidal-2: n and 2 n - 1 point trapezoidal rule

Returns

  • x (Numpy float array) – abscissa values

  • w (Numpy float array) – quadrature weights

Notes

  • For the Guass-Legendre quadrature, both x and w are one-dimensional numpy arrays of shape (n, ). A one-dimensional integral \(\int_a^b f(x) dx\) can be approximated by an order n quadrature via np.sum(w * f(x)).

  • For the Gauss-Kronrod quadrature, x is a one dimensional numpy array of shape (2*n+1,) and w is a two-dimensional array of shape (2, 2*n+1). A one-dimensional integral \(\int_a^b f(x) dx\) can be approximated by result = np.sum(w * f(x), axis=1). The element result[0] then corresponds to the lower-order (n) and the second element result[1] corresponds to the higher-order (2*n + 1) approximation of the integral.

  • For general quadratures with array-like weights aka Gauss-Kronrod, we use the convention that the last element of the first array index corresponds to the higher-order rule.