隐式微分Sympy

5

我一直在使用sympy做导数,但我不知道如何正确书写代码。我查阅了很多资料,但是没有一条解决方案是让我能理解的。例如,如果我要通过计算对x ** 5 + y ** 2 + z ** 4 = 8xyz进行微分,该怎么做呢?z是一个符号,还是像常规导数中那样是一个函数?谢谢。


1
你是在求导数还是尝试积分?你的问题不够清晰。你应该明确指定你想要哪个导数,关于哪个变量或者你想如何积分表达式,你的积分区间是什么。 - Cleb
哦,对不起那个打字错误。我正在尝试相对于z进行区分。 - MANA624
2个回答

9

对于两个变量,你可以使用idiff

在你的情况下,最简单的方法是将xy设置为关于z的函数,例如

x = Function('x')(z)
y = Function('y')(z)

然后正常的diff(expr, z)将会正确地求导。


阅读了一些文档后,我使用了idiff使其正常工作,但不太确定您所说的关于使用普通diff并将x和y设置为函数。我总是得到奇怪的结果。z难道不应该是x或y的函数,具体取决于您对哪个变量进行微分吗? - MANA624
当然。你在问题中说你正在对z求导。 - asmeurer

1

你在评论中提到了使用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)

enter image description here

idiff(ex,(x,y),z) 中,(x,y) 是独立变量,而 z 是求导的自变量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接