我正在尝试使用sympy象征性地求解函数,然后输入值并以数字方式求解。我只能使用一个变量来完成此操作,但无法弄清楚如何使用多个变量。这是我到目前为止所拥有的。
v,v0,a,t = sp.var('v v0 a t')
args = [v0,a,t]
arg_vals = [1,-9.81,2]
def get_function():
v = v0 + a*t
return v
def get_derivative(fun,var):
derivative = sp.diff(fun,var)
return derivative
def get_integral(fun,var):
integral = sp.integrate(fun,var)
return integral
def eval_function(fun, args, arg_vals):
i=0
for i in range(len(arg_vals)):
args[i] = arg_vals[i]
return fun.evalf(subs={args})
v = get_function()
a = get_derivative(v,t)
x = get_integral(v,t)
x_eval = eval_function(v,args,arg_vals)
代码运行良好,直到命中eval_function返回fun.evalf(subs = {args})。然后我得到
>>>TypeError: unhashable type: 'list'
一段时间以来,我一直在试图弄清楚这一点,并且猜测有人可以花几秒钟的时间告诉我我很傻。谢谢您的帮助!
(使用anaconda,spyder,python 3)