【问题标题】:Counting trig ops as measure() function to fu() in sympy在 sympy 中将触发操作计数为 fu() 的 measure() 函数
【发布时间】:2015-04-02 18:38:51
【问题描述】:

如何计算表达式中的三角运算次数?

我有一个 a*sin(x)+b*cos(x) 形式的表达式,我希望 sympy 将其转换为 c*sin(x+phi)

@asmeurer 在an earlier question about simplifying trig expressions 中发表评论建议可以调整 fu() 算法以最小化任意度量。

我怀疑如果我将 measure 设置为表达式中触发操作的数量,我可以减少我的表达式。

【问题讨论】:

    标签: trigonometry sympy


    【解决方案1】:

    以下是获取set函数的方法:

    >>> from sympy.functions.elementary.trigonometric import TrigonometricFunction
    >>> eq=a*sin(x)+b*cos(x)
    >>> len(eq.atoms(TrigonometricFunction))
    2
    

    如果您想要此类函数发生的实际次数(多次计算同一函数),您可以尝试自定义函数,例如 sympy.core.exprtools 中的 preorder_traversal,每次遇到 TrigonometricFunction 时进行注册。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      相关资源
      最近更新 更多