You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并同一变量的导数?Sympy化简问题求助

合并SymPy中同一变量的求和式导数

要将多个对同一变量的导数求和式合并为对变量和的导数,可以通过模式匹配替换实现,以下是针对你场景的具体解法:

基础场景解法(两个导数相加)

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

# 匹配对t求导的两个导数相加的模式,替换为对变量和的导数
expr = expr.replace(Derivative(a, t) + Derivative(b, t), Derivative(a + b, t))
print(expr)
# 输出:z*Derivative(x + y, t)

通用场景解法(任意多个导数相加)

如果需要处理3个及以上对t的导数相加的情况,可以用更灵活的lambda匹配逻辑:

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

# 匹配所有由对t求导的Derivative组成的Add项,替换为对所有变量和的导数
expr = expr.replace(
    lambda e: isinstance(e, Add) and all(isinstance(arg, Derivative) and arg.variables == (t,) for arg in e.args),
    lambda e: Derivative(Add(*[arg.expr for arg in e.args]), t)
)
print(expr)
# 输出:z*Derivative(x + y + z, t)

说明

SymPy默认的simplify等函数不会自动触发这种合并,因为它属于导数线性性质的手动应用。通过自定义模式匹配,可以精准定位并替换符合条件的导数求和结构,不受外层因子(比如示例中的z)影响。

内容的提问来源于stack exchange,提问作者JuanPi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:04:52