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

如何在SymPy中获取变量的微分形式而非对t的导数?

SymPy 简化微分表达式:保留 dx/dy 形式而非含 dt 的导数

问题场景

使用SymPy对依赖于t的函数x(t)、y(t)求导时,sympy.diff会返回带dt的导数形式(如dx(t)/dt),但我们需要得到dx、dy这类微分形式(如xdy + ydx)。

解决方法:替换导数项

通过定义dx、dy作为符号,将求导结果中的diff(x, t)和diff(y, t)替换为对应的微分符号即可。完整代码如下:

from sympy import Function, diff, simplify, symbols

# 定义变量和函数
t = symbols('t')
x = Function('x', real=True)(t)
y = Function('y', real=True)(t)

# 计算原表达式的导数
original_diff = simplify(diff(x * y, t))

# 定义微分符号并替换
dx, dy = symbols('dx dy')
target_expr = original_diff.subs({diff(x, t): dx, diff(y, t): dy})

print(target_expr)

运行后输出:

x(t)*dy + y(t)*dx

如果需要去掉函数括号(即显示xdy + ydx),可以进一步替换函数符号:

# 替换x(t)为x,y(t)为y
x_sym, y_sym = symbols('x y')
final_expr = target_expr.subs({x: x_sym, y: y_sym})
print(final_expr)

输出结果:

x*dy + y*dx

说明

这种替换方法通用性强,即使原始表达式更复杂,只需按同样逻辑添加对应的替换规则(如diff(z, t): dz)即可得到目标形式。

内容的提问来源于stack exchange,提问作者Naas van Rooyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 04:05:21