|
Deterministic Gaussian Sampling
|
Gaussian-to-Dirac approximation, quadrature-free and bMax-free (even dimensions).
gm_to_dirac_even_binf<T> approximates a standard normal distribution by a Dirac mixture with L components in N dimensions, exactly as gm_to_dirac_even_closed_form does, but with the limit bMax -> infinity taken analytically.
The finite-bMax path evaluates every b-integral in closed form but still carries the integration bound as a parameter, and the answer it reports depends on it. Here the bound is gone: there is no bMax argument on any method, and ApproximateOptions::bMax is ignored.
With N = 2k, \( c_i = \parallel s_i \parallel^2 \) and \( T_ij = \parallel s_i - s_j \parallel ^2 \), the limit distance is
in units of \( \pi^{N/2} \), the same normalisation the other paths use, so all three are directly comparable.
Every point below was produced by gm_to_dirac_even_binf alone, no quadrature path, no finite-bMax path, no bMax anywhere. The shaded field is the target standard normal density and the red points are the optimized Dirac locations. D is the reported bMax-free mCvM distance at the optimum, K_k included.
Reproduce with:
The bMax -> infinity limit exists only on the zero-mean manifold. Off it, the true distance diverges,
and grows without bound as the integration bound is relaxed.
The class removes the hazard structurally rather than checking for it. The minimizer varies an unconstrained t, and every objective and gradient evaluation begins by projecting
with the assembled gradient chain-ruled back by
so no iterate can leave the manifold and the finite non-distance is unreachable. The same projection runs inside the standalone distance and derivative entry points, which therefore report the value for the mean-corrected input rather than for the raw input.
correctMean() after minimize() is not a substitute for this and must not be relied on as one. It is called at the end because it is exactly the same projection and so turns the returned optimizer variable t into the sample set s that the reported objective belongs to.
Template parameter:
Provides overloads of:
for raw pointers (T*), GSL vectors (gsl_vector / gsl_vector_float) and GSL matrices (gsl_matrix / gsl_matrix_float). x is L x N, row major.
If wX is nullptr, uniform weights are assumed.
The building blocks live in lcd_even_binf_closed_form.h:
Ei is taken from lcd_ei() of lcd_even_closed_form.h.
K_k is a pure constant. It does not move the optimum, and is carried so that the reported value is the true distance; it plays the role lcd_reported_offset() plays on the finite-bMax path.