'generates, plots and saves function values ``func(y)``,
where ``y`` is \'close\' to `x` (see `__init__()`). The data are stored in
the ``res`` attribute and the class instance is saved in a file
with (the weired) name ``str(func)``.
Parameters
`repetitions`
for each point, only for noisy functions is >1 useful. For
``repetitions==0`` only already generated data are plotted.
`locations`
coordinated wise deviations from the middle point given in `__init__`'

def do(self, repetitions=1, locations=np.arange((-0.5), 0.6, 0.2), plot=True):

    if (not repetitions):
        self.plot()
        return
    res = self.res
    for i in range(len(self.basis)):
        if (i not in res):
            res[i] = {}
        for dx in locations:
            xx = (self.x + (dx * self.basis[i]))
            xkey = dx
            if (xkey not in res[i]):
                res[i][xkey] = []
            n = repetitions
            while (n > 0):
                n -= 1
                res[i][xkey].append(self.func(xx, *self.args))
                if plot:
                    self.plot()
                self.save()
    return self
