gpt4 book ai didi

wolfram-mathematica - 从表达式中获取所有叶子

转载 作者:行者123 更新时间:2023-12-04 08:02:39 27 4
gpt4 key购买 nike

我想得到一个 List (理想情况下是一组 - 丢弃重复 - 但假设没有直接的方法可以做到这一点,我将只使用 Union )来自给定表达式的叶子。

例如,表达式

ArcTan[(-1 + 2*x)/Sqrt[3]]/Sqrt[3]

有一个 LeafCount共 18 个:
  • -1 (3)
  • 2 (3)
  • 3 (2)
  • x
  • ArcTan
  • 加号
  • 电源 (2)
  • 理性(2)
  • 次(3)

  • 所以我想要类似的东西
    {-1, 2, 3, x, ArcTan, Plus, Power, Rational, Times}

    其实,我真的只是想要这样的功能
    {ArcTan, Plus, Power, Rational, Times}

    将是理想的 - 但是当我拥有它们时,大概有一些不太困难的方法来过滤它们。

    我有一些运气
    H[s_] := If[LeafCount[s] == 1, s, Head[s]]
    H /@ Level[expr, 1, Heads -> True]
    H /@ Level[expr, 2, Heads -> True]
    (* ... *)

    但我觉得必须有更好的方法。

    最佳答案

    您可以使用 Cases为了这:

    In[176]:= 
    Cases[ArcTan[(-1 + 2*x)/Sqrt[3]]/Sqrt[3], h_[___] :> h,
    {0,Infinity}] // DeleteDuplicates

    Out[176]= {Rational, Power, Times, Plus, ArcTan}

    关于wolfram-mathematica - 从表达式中获取所有叶子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7113805/

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