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(T),比如U,然后去掉额外的替换xi_1
⎞│
⎟│
⎠│ξ₁=U
为澄清起见,我需要以下输出:
d d ⎛d ⎞
──(f(U, t)) + ──(U)⋅⎜──(f(U, t))⎟
dt dt ⎝dU ⎠
原因是,当I Taylor展开这样的复合函数时,多余的替换会使输出不可读。有人知道怎么做吗?当然,欢迎任何其他解决方案。
解决方案
替换为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)
查看教程!它把所有这些想法都很好地呈现了出来。
相关文章