用数学函数表示一个函数

3

从函数实现中直接输出数学函数是否可能?

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,可能会找到你喜欢的东西。 - L3viathan
如果你限制函数的类型,例如只允许多项式,那么自己编写代码就相当容易。 - PM 2Ring
我对函数没有任何限制,但是Sympy库似乎可以满足我的需求。显然,我可以构建我的函数并获取数学表示,然后生成我需要运行程序的lambda函数。非常感谢您的帮助! - MPikkle
1个回答

5

就像我之前所说的,如果你想要更复杂的功能,可以使用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”的变量和一个参数,但可以扩展。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接