通过数学函数表示函数

时间:2016-05-14 17:07:38

标签: python math

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

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)函数上进行。

我真的没有办法让这种情况发生,但我很好奇。 感谢您的任何帮助和建议

1 个答案:

答案 0 :(得分: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"的变量,只有一个参数),但它当然可以扩展。