同情的链条规则

时间:2016-01-14 09:45:25

标签: python sympy calculus derivative

我正在尝试使用SymPy进行一些基本练习。我想象征一个关于极坐标中半径参数的直角坐标函数的二阶导数。

我想要一个很好的链式规则符号表达式,它可以计算出它可以做什么,并留下未经评估的无法进一步简化的内容。

from sympy import *
init_session()
x, y, r, t = symbols('x y r t') # r (radius), t (angle theta)
f, g = symbols('f g', cls=Function)
g = f(x,y)
x = r * cos(t)
y = r* sin(t)
Derivative(g,r, 2).doit()

此代码产生0。有没有办法获得答案的符号表示,而不是0?

1 个答案:

答案 0 :(得分:2)

简答: 你的命令不正常。

答案很长:

x, y, r, t = symbols('x y r t') # r (radius), t (angle theta)
f, g = symbols('f g', cls=Function)
g = f(x,y)

现在x,y是符号,f是一个函数,g是一个应用函数,即符号x,y应用于f {{1} }。

f(x,y)

现在,您将x = r * cos(t) y = r* sin(t) x重新定义为yr的表达式。这丝毫不影响t

g

现在你派生Derivative(g,r, 2).doit() wrt g。由于r仍然是通过初始符号g定义的,因此它不依赖于x,y,因此导数为零。

要达到你想要的效果,请使用:

r

我还删除了所有不必要的符号定义。