如何解决评估python上定义的派生
我是python的新手,我想创建一个函数,该函数返回函数的导数,并且可以对它进行数值计算,例如
def func(x,y,z):
x = sympy.Symbol('x')
y = sympy.Symbol('y')
z = sympy.Symbol('z');
ff1 = sympy.sin(x * y * z)
ff2 = sympy.Derivative(ff1,x)
return ff2
func(1,2,3)
此定义无效,该怎么办?
谢谢
解决方法
要使用sympy
象征性地求导数,请使用diff
函数或在doit
对象上调用Derivative
方法:
评估派生对象:
def func(x,y,z):
xs,ys,zs = sympy.symbols('x y z')
ff1 = sympy.sin(xs * ys * zs)
ff2 = sympy.Derivative(ff1,xs)
return ff2
my_derivative = func(1,2,3)
my_derivative.doit()
或直接区分:
def func2(x,zs = sympy.symbols('x y z')
ff1 = sympy.sin(xs * ys * zs)
ff2 = sympy.diff(ff1,xs)
return ff2
func2(1,3)
两者均给出正确的结果:
# Out: y*z*cos(x*y*z)
如果要获得导数的结果,则必须对其进行评估:
def func_eval(x,xs)
der_eval = ff2.evalf(subs={xs: 1,ys: 2,zs: 3})
return der_eval
func_eval(1,3)
# Out: 5.7610217199022
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。