tel*_*f14 5 wolfram-mathematica typesetting differentiation
最近一篇关于Wolfram博客的文章提供了以下函数,以更传统的方式格式化衍生品.
pdConv[f_] :=
TraditionalForm[
f /. Derivative[inds__][g_][vars__] :>
Apply[Defer[D[g[vars], ##]] &,
Transpose[{{vars}, {inds}}] /. {{var_, 0} :>
Sequence[], {var_, 1} :> {var}}]
]
Run Code Online (Sandbox Code Playgroud)
一个示例用途,Dt[d[x, a]] // pdConv
给出:
如果不打破一般功能pdConv
,有人可以改变它来维持给定的变量顺序,产生如下所示的输出吗?(当然这纯粹是出于个人原因,使得人类可以更容易地进行推导)
我怀疑这将是非常重要的 - 除非有人知道一个Global
可以暂时覆盖的魔法选项Block
.
对于它的价值,这些SO问题可能是相关的:
可能有一种更干净的方法来执行 s,但如果纯粹出于演示目的,您可以执行类似的操作
pdConv[f_, vv_] :=
Module[{v},
(HoldForm[
Evaluate@
TraditionalForm[((f /. Thread[vv -> #]) /.
Derivative[inds__][g_][vars__] :>
Apply[Defer[D[g[vars], ##]] &,
Transpose[{{vars}, {inds}}] /. {{var_, 0} :>
Sequence[], {var_, 1} :> {var}}])]] /.
Thread[# -> vv]) &@ Table[Unique[v], {Length[vv]}]]
Run Code Online (Sandbox Code Playgroud)
此处,额外参数是按您希望偏导数出现的顺序排列vv
的变量列表。f
要使用此功能,您需要执行类似的操作
pdConv[Dt[d[x, c]], {x, c}]
Run Code Online (Sandbox Code Playgroud)
基本上,该解决方案的作用是将变量列表临时替换vv
为按正确字典顺序排列的虚拟变量列表,应用转换,然后用原始变量替换虚拟变量,同时通过包装转换后的内容来保留所需的顺序中的表达式HoldForm
.