用数学函数表示函数

用数学函数表示函数

问题描述:

是否可以直接从函数实现中输出数学函数?用数学函数表示函数

class MyFunction: 
    def __init__(self, func): 
     self.func = func 
    def math_representation(self): 
     # returns a string representation of self.func 

f = lambda x: 3*x**2 
myFunc = MyFunction(f) 
print(myFunc.math_reprentation()) #prints something like 3*x**2 

当然,以表示作为参数构造对象是可能的,并且是一个简单的解决方案。但是这个想法是生成这种表示。 我也可以用代表数学运算的对象来构建函数,但想法是在常规(lambda)函数上进行。

我真的没有看到这种情况发生,但我很好奇。 感谢您的帮助和建议

+5

并非如此,但是您可能会使用[Sympy](http://docs.sympy.org/latest/modules/functions/index.html) – L3viathan

+0

如果您限制了您的功能,例如仅限于允许多项式,那么你自己做这件事相当容易。 –

+0

我对这个函数没有任何限制,但是Sympy库似乎对我的需求很好。显然,我可以构造函数并获得数学表示,然后生成我需要运行程序的lambda函数。非常感谢您的帮助 ! – MPikkle

就像我说的,你可以使用SymPy,如果你想这是比较复杂的,但对于简单的功能(和值得信赖的输入),你可以做这样的事情:

class MathFunction(object): 
    def __init__(self, code): 
     self.code = code 
     self._func = eval("lambda x: " + code) 
    def __call__(self, arg): 
     return self._func(arg) 
    def __repr__(self): 
     return "f(x) = " + self.code 

您可以使用它像这样:

>>> sq = MathFunction("x**2") 
>>> sq 
f(x) = x**2 
>>> sq(7) 
49 

这是一个有点限制,当然(仅使用一个名为“X”的变量,只有一个参数),但它可以,当然,扩大。

+0

我不太喜欢这个确切的解决方案,但SymPy库很好!非常感谢你。 – MPikkle