在SymPy中的某个点评估函数

时间:2013-03-18 13:49:21

标签: python sympy

我正在尝试编写各种优化方法,作为一种修改方式。我希望能够使用SymPy在给定点评估具有任意数量变量的函数,其中点的坐标存储在数组中。

例如,我想在f(x,y) = 3*x**2 - 2*x*y + y**2 + 4*x + 3*y点评估b = [1,2]。但我真的很喜欢这样做的一般方法,它可以处理一个包含任意数量变量的函数和一个适当的长度数组作为要评估的点,因此sympy.evalf(f, subs = {foo})并不是非常有用。 / p>

2 个答案:

答案 0 :(得分:4)

您正在使用SymPy表达式树,而不是函数。在任何表达式上你都可以做到:

>>> vars = sorted(expression.free_symbols)
>>> evaluated = expression.subs(*zip(vars, your_values))

答案 1 :(得分:1)

我也希望这样做更容易,但这是一个很好的解决方法:

如果您知道符号名称('x''y',例如),则可以使用dict动态创建zip

fvars = sympy.symbols('x, y') #these probably already exist, use: fvars = [x,y]

b = [1,2]
sympy.evalf(f, subs = dict(zip(fvars,b)))