LINE Solver (C++)
Templated C++ port of the LINE queueing solver
Loading...
Searching...
No Matches
pfqn_aghq.h File Reference

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"
Include dependency graph for pfqn_aghq.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)

Detailed Description

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.