Example #1
0
    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
Example #2
0
    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
Example #3
0
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
Example #4
0
def regular_grid(dim, n):
    "regular grid"
    x = np.arange(1, n + 1) / (n + 1.)
    X = combine([x] * dim)
    return X.T
Example #5
0
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
Example #6
0
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
Example #7
0
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
Example #8
0
def regular_grid(dim, n):
    "regular grid"
    x = np.arange(1,n+1)/(n+1.)
    X = combine([x]*dim)
    return X.T
Example #9
0
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
Example #10
0
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