lambdify:允许用户定义函数中变量名的灵活性有限

时间:2016-07-06 17:21:12

标签: python sympy

我知道如何使用sympy.utilities.lambdify将用户定义的函数解析为lambdas,如下所示:

f = lambdify(('x',), 'x**2 - 4*x')

我知道我可以使用

来接受t的功能
f = lambdify(('t',), 't**2 - 4*t')

但我如何做到这一点,以便lambdify't'视为字符串中的'x',以便将't**2 - 4*t'视为与'x**2 - 4*x'相同?请注意,我不是在寻找两个变量xt的函数,而是一个可以解析任一个字母(但不能同时解析两个!)的函数的函数,根据哪个变量显示在解析的字符串。另请注意,混合字母仍然无效,'t**2 - 4*x'应该更喜欢t并忽略x

1 个答案:

答案 0 :(得分:3)

我建议首先使用sympify将字符串转换为SymPy表达式。

然后,您可以使用free_symbols从表达式中获取变量,例如

In [1]: (t**2 - 4*t).free_symbols
Out[1]: set([t])