用数学函数表示函数
问题描述:
是否可以直接从函数实现中输出数学函数?用数学函数表示函数
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)函数上进行。
我真的没有看到这种情况发生,但我很好奇。 感谢您的帮助和建议
答
就像我说的,你可以使用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
并非如此,但是您可能会使用[Sympy](http://docs.sympy.org/latest/modules/functions/index.html) – L3viathan
如果您限制了您的功能,例如仅限于允许多项式,那么你自己做这件事相当容易。 –
我对这个函数没有任何限制,但是Sympy库似乎对我的需求很好。显然,我可以构造函数并获得数学表示,然后生成我需要运行程序的lambda函数。非常感谢您的帮助 ! – MPikkle