def generateBBTMatrix(factory, training, verbose=False): from pysgpp import DataVector storage = factory.getStorage() b = factory.createOperationB() alpha = DataVector(storage.getSize()) temp = DataVector(training.getSize()) erg = DataVector(alpha.getSize()) col = 0 # create B matrix m = np.zeros((storage.getSize(), storage.getSize())) for i in range(storage.getSize()): # apply unit vectors temp.setAll(0.0) erg.setAll(0.0) alpha.setAll(0.0) alpha[i] = 1.0 b.multTranspose(alpha, training, temp) b.mult(temp, training, erg) #Sets the column in m for j in range(storage.getSize()): m[j, col] = erg[j] col = col + 1 return m
def addConst(grid, alpha, c, y): alpha_vec = DataVector(alpha) opHier = createOperationHierarchisation(grid) opHier.doDehierarchisation(alpha_vec) for i in range(alpha_vec.getSize()): alpha_vec[i] = c * alpha_vec[i] + y opHier.doHierarchisation(alpha_vec) return alpha_vec.array()
def generateBBTMatrixPython(factory, training, verbose=False): storage = factory.getStorage() b = factory.createOperationB() alpha = DataVector(storage.getSize()) erg = DataVector(alpha.getSize()) temp = DataVector(training.getSize()) # create B matrix m = DataVector(storage.getSize(), storage.getSize()) for i in range(storage.getSize()): # apply unit vectors temp.setAll(0.0) erg.setAll(0.0) alpha.setAll(0.0) alpha[i] = 1.0 b.multTranspose(alpha, training, temp) b.mult(temp, training, erg) #Sets the column in m m.setColumn(i, erg) return m
dim = 2 grid = Grid.createLinearGrid(dim) gridStorage = grid.getStorage() print "dimensionality: {}".format(dim) # create regular grid, level 3 level = 3 gridGen = grid.createGridGenerator() gridGen.regular(level) print "number of initial grid points: {}".format(gridStorage.size()) # definition of function to interpolate - nonsymmetric(!) f = lambda x0, x1: 16.0 * (x0 - 1) * x0 * (x1 - 1) * x1 * x1 # create coefficient vector alpha = DataVector(gridStorage.size()) print "length of alpha vector: {}".format(alpha.getSize()) # now refine adaptively 5 times for refnum in range(5): # set function values in alpha for i in xrange(gridStorage.size()): gp = gridStorage.get(i) alpha[i] = f(gp.getCoord(0), gp.getCoord(1)) # hierarchize createOperationHierarchisation(grid).doHierarchisation(alpha) # refine a single grid point each time gridGen.refine(SurplusRefinementFunctor(alpha, 1)) print "refinement step {}, new grid size: {}".format( refnum + 1, gridStorage.size())
dim = 2 grid = Grid.createLinearGrid(dim) gridStorage = grid.getStorage() print "dimensionality: {}".format(dim) # create regular grid, level 3 level = 3 gridGen = grid.createGridGenerator() gridGen.regular(level) print "number of initial grid points: {}".format(gridStorage.size()) # definition of function to interpolate - nonsymmetric(!) f = lambda x0, x1: 16.0 * (x0-1)*x0 * (x1-1)*x1*x1 # create coefficient vector alpha = DataVector(gridStorage.size()) print "length of alpha vector: {}".format(alpha.getSize()) # now refine adaptively 5 times for refnum in range(5): # set function values in alpha for i in xrange(gridStorage.size()): gp = gridStorage.get(i) alpha[i] = f(gp.getCoord(0), gp.getCoord(1)) # hierarchize createOperationHierarchisation(grid).doHierarchisation(alpha) # refine a single grid point each time gridGen.refine(SurplusRefinementFunctor(alpha, 1)) print "refinement step {}, new grid size: {}".format(refnum+1, gridStorage.size())