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

时间:2013-09-27 11:53:46

标签: python 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替换u(t)然后去掉额外的替换\ xi_1

⎞│
⎟│
⎠│ξ₁=U

为了澄清,我想要这个输出:

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

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

1 个答案:

答案 0 :(得分:1)

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)

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