![]() |
LINE Solver (C++)
Templated C++ port of the LINE queueing solver
|
Adaptive Gauss-Hermite quadrature of the simplex factor of the McKenna-Mitra integral. More...
#include <cmath>#include <cstddef>#include <vector>#include "line/api/pfqn/pfqn_asympt_common.h"#include "line/api/pfqn/pfqn_le.h"#include "line/api/pfqn/pfqn_simplex.h"#include "line/lang/lang_types.h"#include "line/num/number.h"#include "line/util/error.h"#include "line/util/matrix.h"Go to the source code of this file.
Namespaces | |
| namespace | line |
| namespace | line::pfqn |
Typedefs | |
| template<class T> | |
| using | line::pfqn::AghqResult = LeResult<T> |
Functions | |
| template<class T> | |
| AghqResult< T > | line::pfqn::pfqn_aghq (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z, std::size_t q) |
| template<class T> | |
| AghqResult< T > | line::pfqn::pfqn_aghq (const Matrix< T > &L, const std::vector< T > &N, const std::vector< T > &Z) |
| template<class T> | |
| AghqResult< T > | line::pfqn::pfqn_aghq (const Matrix< T > &L, const std::vector< T > &N) |
Adaptive Gauss-Hermite quadrature of the simplex factor of the McKenna-Mitra integral.
Templated port of matlab/src/api/pfqn/pfqn_aghq.m. Rescaling by the logistic-expansion mode and curvature, w = w* + A^(-1/2) z, and applying the q-node probabilists' Gauss-Hermite rule in each of the M-1 simplex directions gives a convergent rule whose q = 1 member is pfqn_le itself: one node at the mode with weight sqrt(2 pi). So LE is the first term of a convergent quadrature rather than an approximation of unknown accuracy. Cost q^(M-1), which is what confines the method to small M.
A tensor rule is NOT invariant to the choice of square root of A: any B with B B' = inv(A) is admissible and they place the nodes differently. The principal-axis frame is used here, as in the reference results; where two curvatures are close to equal that frame is close to arbitrary and two valid rules can part company well above their own error, converging back together as q grows. Do NOT compare across codebases node by node.
With Z > 0 the radius is integrated numerically (pfqn_simplex.h) and the rule is applied to the M-1 simplex directions, so every node costs one radial quadrature. Because the radius is integrated rather than Laplaced, q = 1 there is the logistic expansion with an exact radius, which is NOT pfqn_le's own Z > 0 branch.
ARITHMETIC. Gated on num_traits<T>::has_transcendental exactly as pfqn_le is.
References: J. McKenna, D. Mitra, "Integral Representations and Asymptotic Expansions for Closed Markovian Queueing Networks: Normal Usage", Bell Syst. Tech. J. 61(5), 1982. Q. Liu, D. A. Pierce, "A Note on Gauss-Hermite Quadrature", Biometrika 81(3), 1994.
Definition in file pfqn_aghq.h.