Exemple #1
0
    def set_values(self, x):

        from interpolation.splines.filter_cubic import filter_data, filter_mcoeffs

        x = np.array(x)

        if isinstance(self.exo_grid, UnstructuredGrid) and isinstance(
                self.endo_grid, CartesianGrid):
            min = self.endo_grid.min
            max = self.endo_grid.max
            n = self.endo_grid.n
            coeffs = filter_controls(min, max, n, x)
            self.coefficients = coeffs
        elif isinstance(self.exo_grid, UnstructuredGrid) and isinstance(
                self.endo_grid, SmolyakGrid):
            from scipy.linalg import lu_solve
            from numpy import linalg
            self.thetas = [lu_solve(self.sg.lu_fact, v) for v in x]
        elif isinstance(self.exo_grid, EmptyGrid) and isinstance(
                self.endo_grid, SmolyakGrid):
            from scipy.linalg import lu_solve
            from numpy import linalg
            self.thetas = lu_solve(self.sg.lu_fact, x[0])
        elif isinstance(self.exo_grid,
                        (EmptyGrid, CartesianGrid)) and isinstance(
                            self.endo_grid, CartesianGrid):
            full_grid = self.full_grid
            min = full_grid.min
            max = full_grid.max
            n = full_grid.n
            coeffs = filter_mcoeffs(min, max, n, x)
            self.coefficients = coeffs
        else:
            raise Exception("Not implemented")
        self.n_x = x.shape[-1]
def filter_controls(a, b, ndims, controls):

    from interpolation.splines.filter_cubic import filter_data, filter_mcoeffs
    dinv = (b - a) / (ndims - 1)
    ndims = array(ndims)
    n_m, N, n_x = controls.shape
    coefs = zeros((n_m, ) + tuple(ndims + 2) + (n_x, ))
    for i_m in range(n_m):
        tt = filter_mcoeffs(a, b, ndims, controls[i_m, ...])
        # for i_x in range(n_x):
        coefs[i_m, ...] = tt
    return coefs
def filter_controls(a,b,ndims,controls):

    from interpolation.splines.filter_cubic import filter_data, filter_mcoeffs
    dinv = (b-a)/(ndims-1)
    ndims = array(ndims)
    n_m, N, n_x = controls.shape
    coefs = zeros( (n_m,) + tuple(ndims + 2) + (n_x,))
    for i_m in range(n_m):
        tt = filter_mcoeffs(a,b,ndims, controls[i_m,...])
        # for i_x in range(n_x):
        coefs[i_m,...] = tt
    return coefs
def test_cubic_multi_spline():

    from interpolation.splines.filter_cubic import filter_mcoeffs
    from interpolation.splines.eval_cubic import eval_cubic_splines, vec_eval_cubic_splines

    cc = filter_mcoeffs(a,b,orders,mvals)
    assert(tuple(cc.shape) == tuple([o+2 for o in orders]+[mvals.shape[1]]))

    ii = eval_cubic_splines(a, b, orders, cc, point)
    iii = vec_eval_cubic_splines(a, b, orders, cc, points)

    assert(ii.ndim==1)
    assert(iii.ndim==2)
Exemple #5
0
def test_cubic_multi_spline():

    from interpolation.splines.filter_cubic import filter_mcoeffs
    from interpolation.splines.eval_cubic import eval_cubic_splines, vec_eval_cubic_splines

    cc = filter_mcoeffs(a, b, orders, mvals)
    assert (tuple(cc.shape) == tuple([o + 2
                                      for o in orders] + [mvals.shape[1]]))

    ii = eval_cubic_splines(a, b, orders, cc, point)
    iii = vec_eval_cubic_splines(a, b, orders, cc, points)

    assert (ii.ndim == 1)
    assert (iii.ndim == 2)