Python Sympy 打印差异化的用户定义复合函数;如何切换替换

标签 python sympy

我想摆脱 sympy 在区分用户定义的复合函数时所做的额外替换。代码是

t = Symbol('t')
u = Function('u')
f = Function('f')
U = Symbol('U')

pprint(diff(f(u(t),t),t))

输出是:

d                d        ⎛ d           ⎞│       
──(f(u(t), t)) + ──(u(t))⋅⎜───(f(ξ₁, t))⎟│       
dt               dt       ⎝dξ₁          ⎠│ξ₁=u(t)

我猜它这样做是因为你无法区分 w.r.t u(t),所以这没关系。接下来我要做的是用另一个变量替换 u(t) 说 U 然后去掉额外的替换\xi_1

⎞│
⎟│
⎠│ξ₁=U

澄清一下,我想要这个输出:

d             d     ⎛d          ⎞
──(f(U, t)) + ──(U)⋅⎜──(f(U, t))⎟
dt            dt    ⎝dU         ⎠

原因是;当我像这样展开复合函数时,额外的替换会使输出变得不可读。有谁知道如何做到这一点?当然欢迎任何其他解决方案。

最佳答案

替换是用subs 完成的。如果某些内容未被评估,您可以使用 doit 方法强制执行。

>>> diff(f(u(t),t),t).subs(u(t),U)
Derivative(U,t)∗Subs(Derivative(f(xi1,t),xi1),(xi1,),(U,))+Derivative(f(U,t),t)

>>> _.doit()
Derivative(f(U,t),t)

查看教程!它很好地呈现了所有这些想法。

关于Python Sympy 打印差异化的用户定义复合函数;如何切换替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19050103/

相关文章:

python - 分块处理大文件

python - 我将自定义语言添加到我的语言列表中

python - on_delete ='CASCADE' 好像没有效果

python - 如何从 ctypes 数组中获取 ctypes 类型对象

python - 如何在 Google OR-Tools 中设置每条路线的最小位置?

Python3 - 同情 : expand products of trig functions

python - 将 Union 对象转换为间隔列表

python - 指数衰减的 Sympy 傅里叶变换

plot - 清理 tan(x) 的图

python - Sympy 中的尴尬替换