Chi-squared Distribution ($k>1$)
Theory
Given $k$ standard random variables $X_i \sim \mathcal{N}(0,1)$ for $i=1,\dots,k$ we would like to find the random variable $Y = \sum_{i=1}^k X_i^2$. The analytic solution is known: $Y$ follows a chi-squared distribution with $k$ degrees of freedom.
Using polynomial chaos expansion (PCE), the problem can be solved using Galerkin projection. Let $\{\phi_k \}_{k=0}^{n}$ be the monic orthogonal basis relative to the probability density of $X = [X_1, \dots, X_k]$, namely
Then, the PCE of $X_i$ is given by
with
To find the PCE coefficients $y_k$ for $Y = \sum_{k=}^n y_k \phi_k$, we apply Galerkin projection, which leads to
Hence, knowing the scalars $\langle \phi_m, \phi_m \rangle$, and $\langle \phi_{j_1} \phi_{j_2}, \phi_m \rangle$, the PCE coefficients $y_k$ can be obtained immediately. From the PCE coefficients we can get the moments and compare them to the closed-form expressions.
Notice: A maximum degree of 2 suffices to get the exact solution with PCE. In other words, increasing the maximum degree to values greater than 2 introduces nothing but computational overhead (and numerical errors, possibly).
Practice
First, we create a orthogonal basis relative to $f_X(x)$ of degree at most $d=2$ (degree
below).
Notice that we consider a total of Nrec
recursion coefficients, and that we also add a quadrature rule by calling OrthoPolyQ()
.
k = 12
using PolyChaos
degree, Nrec = 2, 20
op = OrthoPoly("gaussian",degree;Nrec=Nrec);
opq = OrthoPolyQ(op) #OR: opq = OrthoPolyQ("gaussian",deg;Nrec=Nrec)
OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", PolyChaos.w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", PolyChaos.w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))
Now let's define a multivariate basis
mop = MultiOrthoPoly([opq for i=1:k],degree)
MultiOrthoPoly(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], 2, 91, [0 0 … 0 0; 1 0 … 0 0; … ; 0 0 … 1 1; 0 0 … 0 2], MultiMeasure(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], getfield(PolyChaos, Symbol("#w#22")){Array{OrthoPolyQ,1},Int64}(OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))], 12), Function[w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian], Tuple{Float64,Float64}[(-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf)], Bool[true, true, true, true, true, true, true, true, true, true, true, true], Dict[Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}()]), OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))])
Next, we define the PCE for all $X_i$ with $i = 1, \dots, k$.
L = dim(mop)
mu, sig = 0., 1.
x = [ assign2multi(convert2affinePCE("gaussian",mu,sig),i,mop.ind) for i=1:k ]
12-element Array{SparseArrays.SparseVector{Float64,Int64},1}:
[2 ] = 1.0
[3 ] = 1.0
[4 ] = 1.0
[5 ] = 1.0
[6 ] = 1.0
[7 ] = 1.0
[8 ] = 1.0
[9 ] = 1.0
[10] = 1.0
[11] = 1.0
[12] = 1.0
[13] = 1.0
With the orthogonal basis and the quadrature at hand, we can compute the tensors t2
and t3
that store the entries $\langle \phi_m, \phi_m \rangle$, and $\langle \phi_{j_1} \phi_{j_2}, \phi_m \rangle$, respectively.
t2 = Tensor(2,mop)
t3 = Tensor(3,mop)
Tensor(3, [1 ] = 1.0
[92 ] = 1.0
[183 ] = 1.0
[274 ] = 1.0
[365 ] = 1.0
[456 ] = 1.0
[547 ] = 1.0
⋮
[696418] = 2.0
[704429] = 2.0
[704520] = 1.0
[712621] = 2.0
[720809] = 8.0
[720900] = 2.0
[729001] = 2.0
[737191] = 8.0, getfield(PolyChaos, Symbol("#g#26")){Int64,MultiOrthoPoly,SparseArrays.SparseVector{Float64,Int64}}(3, MultiOrthoPoly(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], 2, 91, [0 0 … 0 0; 1 0 … 0 0; … ; 0 0 … 1 1; 0 0 … 0 2], MultiMeasure(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], getfield(PolyChaos, Symbol("#w#22")){Array{OrthoPolyQ,1},Int64}(OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))], 12), Function[w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian], Tuple{Float64,Float64}[(-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf)], Bool[true, true, true, true, true, true, true, true, true, true, true, true], Dict[Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}()]), OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))]), [1 ] = 1.0
[92 ] = 1.0
[183 ] = 1.0
[274 ] = 1.0
[365 ] = 1.0
[456 ] = 1.0
[547 ] = 1.0
⋮
[696418] = 2.0
[704429] = 2.0
[704520] = 1.0
[712621] = 2.0
[720809] = 8.0
[720900] = 2.0
[729001] = 2.0
[737191] = 8.0), MultiOrthoPoly(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], 2, 91, [0 0 … 0 0; 1 0 … 0 0; … ; 0 0 … 1 1; 0 0 … 0 2], MultiMeasure(["gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian", "gaussian"], getfield(PolyChaos, Symbol("#w#22")){Array{OrthoPolyQ,1},Int64}(OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))], 12), Function[w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian, w_gaussian], Tuple{Float64,Float64}[(-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf), (-Inf, Inf)], Bool[true, true, true, true, true, true, true, true, true, true, true, true], Dict[Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}(), Dict{Any,Any}()]), OrthoPolyQ[OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}()))), OrthoPolyQ(OrthoPoly("gaussian", 2, [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())), Quad("golubwelsch", 19, [-7.38258, -6.26289, -5.32054, -4.46587, -3.66442, -2.89805, -2.1555, -1.42888, -0.712085, -2.10166e-16, 0.712085, 1.42888, 2.1555, 2.89805, 3.66442, 4.46587, 5.32054, 6.26289, 7.38258], [7.48283e-13, 1.22037e-9, 2.53222e-7, 1.53511e-5, 0.000378502, 0.00450724, 0.0286667, 0.103604, 0.220942, 0.283773, 0.220942, 0.103604, 0.0286667, 0.00450724, 0.000378502, 1.53511e-5, 2.53222e-7, 1.22037e-9, 7.48283e-13], Measure("gaussian", w_gaussian, (-Inf, Inf), true, Dict{Any,Any}())))]))
With the tensors at hand, we can compute the Galerkin projection.
Notice: there are more efficient ways to do this, but let's keep it simple.
y = [ sum( x[i][j1]*x[i][j2]*t3.get([j1-1,j2-1,m-1])/t2.get([m-1,m-1]) for i=1:k, j1=1:L, j2=1:L ) for m=1:L ]
91-element Array{Float64,1}:
12.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
0.0
⋮
0.0
0.0
0.0
1.0000000000000033
0.0
0.0
1.0000000000000033
0.0
1.0000000000000033
Let's compare the moments via PCE to the closed-form expressions.
moms_analytic(k) = [k, sqrt(2k), sqrt(8/k)]
function myskew(y)
e3 = sum( y[i]*y[j]*y[k]*t3.get([i-1,j-1,k-1]) for i=1:L,j=1:L,k=1:L )
μ = y[1]
σ = std(y,mop)
(e3-3*μ*σ^2-μ^3)/(σ^3)
end
print("Expected value:\t\t$(moms_analytic(k)[1]) = $(mean(y,mop))\n")
print("\t\t\terror = $(abs(mean(y,mop)-moms_analytic(k)[1]))\n")
print("Standard deviation:\t$(moms_analytic(k)[2]) = $(std(y,mop))\n")
print("\t\t\terror = $(moms_analytic(k)[2]-std(y,mop))\n")
print("Skewness:\t\t$(moms_analytic(k)[3]) = $(myskew(y))\n")
print("\t\t\terror = $(moms_analytic(k)[3]-myskew(y))\n")
Expected value: 12.0 = 12.0
error = 0.0
Standard deviation: 4.898979485566356 = 4.8989794855663735
error = -1.7763568394002505e-14
Skewness: 0.816496580927726 = 0.8164965809276922
error = 3.3861802251067274e-14
Let's plot the probability density function to compare results. We first draw samples from the measure with the help of sampleMeasure()
, and then evaluate the basis at these samples and multiply times the PCE coefficients. The latter stop is done using evaluatePCE()
. Both steps are combined in the function samplePCE()
. Finally, we compare the result agains the analytical PDF $\rho(t) = \frac{t^{t/2-1}\mathrm{e}^{-t/2}}{2^{k/2} \, \Gamma(k/2)}$ of the chi-squared distribution with one degree of freedom.
using Plots
gr()
Nsmpl = 10000
# ξ = sampleMeasure(Nsmpl,mop)
# ysmpl = evaluatePCE(y,ξ,mop)
ysmpl = samplePCE(Nsmpl,y,mop)
histogram(ysmpl;normalize=true,xlabel="t",ylabel="rho(t)")
import SpecialFunctions: gamma
ρ(t) = 1/(2^(0.5*k)*gamma(0.5*k))*t^(0.5*k-1)*exp(-0.5*t)
t = range(0.1; stop=maximum(ysmpl), length=100)
plot!(t,ρ.(t),w=4)