在同情中将trig操作计数为fu()的measure()函数

时间:2015-04-02 18:38:52

标签: trigonometry sympy

如何计算表达式中的trig操作数?

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

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

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

1 个答案:

答案 0 :(得分:0)

以下是获取 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都会注册。