python - sympy 中的链式法则

标签 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?

最佳答案

简答: 你的命令有问题。

长答案:

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(x,y) 应用于 f

x = r * cos(t)
y = r* sin(t)

现在您将xy 重新定义为rt 的表达式。这对 g 没有丝毫影响!

Derivative(g,r, 2).doit()

现在你从 g 派生 r。由于 g 仍然通过初始符号 x,y 定义,它不依赖于 r,因此导数为零。

要实现您想要的效果,请使用:

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

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

关于python - sympy 中的链式法则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34786224/

相关文章:

python - 如何调试导致连接被拒绝或连接超时的原因?

python-2.7 - 用 sympy 计算符号特征值

python - 在 ipython 中 latex 打印继承的 sympy 类时行为不一致

c++ - 复合辛普森规则无限输出

python - 如何获取字符串末尾的总位数

python - 使用 CNTK 实现 CRNN 的问题

javascript - 如何使用node.js创建一个计算图形曲线下面积的函数?

python - scipy.optimize 的最小化函数到底是如何工作的?

python - tkinter中的输入错误

python - 用sympy缓慢替换符号矩阵