Extension to many independent variables

  • We would like arbitrary functions of arbitrary parameters and independent variables:
    f = StringFunction_v5('A*sin(x)*exp(-b*t)', A=0.1, b=1,
                          independent_variables=('x','t'))
    print f(1.5, 0.01)  # x=1.5, t=0.01
    

  • Idea: add functionality in subclass
    class StringFunction_v5(StringFunction_v4):
        def __init__(self, expression, **kwargs):
            StringFunction_v4.__init__(self, expression, **kwargs)
            self._var = tuple(kwargs.get('independent_variables',
                              'x'))
            try:    del self._prms['independent_variables']
            except: pass
            
        def __call__(self, *args):
            for name, value in zip(self._var, args):
                self._prms[name] = value  # add indep. variable
            return eval(self._f_compiled, 
                        self._globals, self._prms)
    

    previousnexttable of contents