def __call__(self, N): """ Sample generator Parameters ---------- N : int Upper quadrature order Returns ------- samples : np.ndarray The quadrature nodes with `samples.shape=(D,K)` where `D=len(dist)` and `K` is the number of nodes. """ dim = len(self.dist) if self.sparse == 0 or self.scheme in (3, 4, 5, 6): X = self.segment(N) if self.scheme in (1, 2): X = combine((X, ) * dim) out = self.trans(X) else: out = [] for i in xrange(be.terms(N - self.sparse, dim), be.terms(N, dim)): I = be.multi_index(i, dim) out.append(combine([self.segment(n) for n in I])) out = self.trans(np.concatenate(out, 0)) return out.T
def __call__(self, N): """ Sample generator Parameters ---------- N : int Upper quadrature order Returns ------- samples : np.ndarray The quadrature nodes with `samples.shape=(D,K)` where `D=len(dist)` and `K` is the number of nodes. """ dim = len(self.dist) if self.sparse==0 or self.scheme in (3,4,5,6): X = self.segment(N) if self.scheme in (1,2): X = combine((X,)*dim) out = self.trans(X) else: out = [] for i in xrange(be.terms(N-self.sparse, dim), be.terms(N, dim)): I = be.multi_index(i, dim) out.append(combine([self.segment(n) for n in I])) out = self.trans(np.concatenate(out, 0)) return out.T
def regular_grid_nested(dim, n): "regular grid, nested" x = np.arange(1, 2**n) * 1. / (2**n) X = combine([x] * dim) return X.T
def regular_grid(dim, n): "regular grid" x = np.arange(1, n + 1) / (n + 1.) X = combine([x] * dim) return X.T
def chebyshev_nested(dim, n): "Chebyshev sampling, nested" x = .5 * np.cos(np.arange(2**n - 1, 0, -1) * np.pi / (2**n)) + .5 X = combine([x] * dim) return X.T
def chebyshev(dim, n): "Chebyshev sampling" x = .5 * np.cos(np.arange(n, 0, -1) * np.pi / (n + 1)) + .5 X = combine([x] * dim) return X.T
def regular_grid_nested(dim, n): "regular grid, nested" x = np.arange(1,2**n)*1./(2**n) X = combine([x]*dim) return X.T
def regular_grid(dim, n): "regular grid" x = np.arange(1,n+1)/(n+1.) X = combine([x]*dim) return X.T
def chebyshev_nested(dim, n): "Chebyshev sampling, nested" x = .5*np.cos(np.arange(2**n-1,0,-1)*np.pi/(2**n)) + .5 X = combine([x]*dim) return X.T
def chebyshev(dim, n): "Chebyshev sampling" x = .5*np.cos(np.arange(n,0,-1)*np.pi/(n+1)) + .5 X = combine([x]*dim) return X.T