Exemple #1
0
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
Exemple #2
0
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()
Exemple #3
0
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
Exemple #4
0
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())