gpt4 book ai didi

wolfram-mathematica - 防止在衍生输出中重新排序?

转载 作者:行者123 更新时间:2023-12-04 08:01:35 29 4
gpt4 key购买 nike

recent post on the Wolfram Blog提供了以下函数以更传统的方式格式化导数。

pdConv[f_] := 
TraditionalForm[
f /. Derivative[inds__][g_][vars__] :>
Apply[Defer[D[g[vars], ##]] &,
Transpose[{{vars}, {inds}}] /. {{var_, 0} :>
Sequence[], {var_, 1} :> {var}}]
]

使用示例, Dt[d[x, a]] // pdConv给出:

enter image description here

在不破坏 pdConv 的通用能力的情况下,有人可以更改它以保持给定的变量顺序,从而产生如下所示的输出吗? (当然这纯粹是出于审美原因,使人类更容易遵循推导)

enter image description here

我怀疑这将很难实现---除非有人知道一个神奇的 Global可以在 Block 中暂时覆盖的选项.

对于它的值(value),这些SO问题可能是相关的:
  • Preventing "Plus" from rearranging things
  • controlling order of variables in an expression
  • 最佳答案

    可能有一种更简洁的方法来做 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]}]]

    这里,额外的参数 vvf 中的变量列表按照您希望偏导数出现的顺序。要使用此功能,您可以执行以下操作
    pdConv[Dt[d[x, c]], {x, c}]

    equations in right order

    基本上这个解决方案的作用是临时替换变量列表 vv使用按正确字典顺序排列的虚拟变量列表,应用转换,然后将虚拟变量替换为原始变量,同时通过将转换后的表达式包装在 HoldForm 中保留所需的顺序.

    关于wolfram-mathematica - 防止在衍生输出中重新排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8624341/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com