我一直在使用sympy做导数,但我不知道如何正确书写代码。我查阅了很多资料,但是没有一条解决方案是让我能理解的。例如,如果我要通过计算对x ** 5 + y ** 2 + z ** 4 = 8xyz
进行微分,该怎么做呢?z是一个符号,还是像常规导数中那样是一个函数?谢谢。
我一直在使用sympy做导数,但我不知道如何正确书写代码。我查阅了很多资料,但是没有一条解决方案是让我能理解的。例如,如果我要通过计算对x ** 5 + y ** 2 + z ** 4 = 8xyz
进行微分,该怎么做呢?z是一个符号,还是像常规导数中那样是一个函数?谢谢。
对于两个变量,你可以使用idiff
。
在你的情况下,最简单的方法是将x
和y
设置为关于z
的函数,例如
x = Function('x')(z)
y = Function('y')(z)
然后正常的diff(expr, z)
将会正确地求导。
z
求导。 - asmeurer你在评论中提到了使用idiff,这里是相应的代码,供想要了解的人参考:
from sympy import symbols, idiff, simplify
x, y, z = symbols('x y z')
ex = x**5 + y**2 + z**4 - 8*x*y*z
ex_d = simplify(idiff(ex,(x,y),z))
display(ex_d)
在 idiff(ex,(x,y),z)
中,(x,y)
是独立变量,而 z
是求导的自变量。