对同一变量求导数时进行组合

问题描述 投票:0回答:1

有没有办法收集衍生品?和中的相同符号? 有几个问题围绕这一点,但我还没有找到简单情况的答案:

from sympy import *
x,y,z,t = symbols('x y z t')
expr = z * (Derivative(x,t) + Derivative(y,t))
expr    

'z*(Derivative(x, t) + Derivative(y, t))'

expr.simplify(doit=False)

'z*(Derivative(x, t) + Derivative(y, t))'

我希望得到

'z*Derivative(x+y, t)'

我尝试过使用

replace
函数用乘法代替求导,但由于
z
因素被重新组织,或者简化函数无法处理非交换符号,返回并没有真正起作用。

python sympy derivative simplify
1个回答
-1
投票

你是对的,在 SymPy 中有一种更优雅的方法来实现这一点。以下是如何收集总和中相同符号的导数:

1。使用

collect
功能:

from sympy import *
x, y, z, t = symbols('x y z t')

expr = z * (Derivative(x, t) + Derivative(y, t))

# Collect derivatives w.r.t. t
collected_expr = expr.collect(Derivative)

print(collected_expr)

这将输出:

z*Derivative(x + y, t)

collect
函数采用符号表达式和可选参数来指定收集的内容。在这种情况下,我们使用
Derivative
来收集同一符号 (
t
) 的所有导数。

2。将

simplify
expand
参数一起使用:

# Another approach using simplify with expand
simplified_expr = expr.simplify(expand=True)

print(simplified_expr)

此方法使用

simplify
函数,并将
expand
参数设置为
True
。这有时可以达到预期的结果,但不能保证,可能取决于具体的表达。

两种方法都达到相同的结果,但

collect
函数通常更明确并且专注于您想要实现的目标。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.