sympy:如何简化三角表达式

4

我有一个三角函数表达式

(-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/((cos(2*x) + 4))

我知道这可以简化为

sqrt(3)*3*cos(x) + 7*sin(x)

但是我似乎找不到使用sympy完成它的方法。有没有巧妙的方法可以做到呢?

In [1]: from sympy import *
In [2]: from sympy.abc import x
In [3]: a = (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/((cos(2*x) + 4))
In [4]: b = sqrt(3)*3*cos(x) + 7*sin(x)
In [5]: trigsimp(a-b)
Out[5]: 0
In [6]: trigsimp(a)
Out[6]: (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/(cos(2*x) + 4)
In [7]: a.simplify()
Out[7]: (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/(cos(2*x) + 4)
In [8]: trigsimp(expand_trig(a))
Out[8]: (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/(cos(2*x) + 4)
In [9]: expand_trig(trigsimp(a))
Out[9]: (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/(2*cos(x)**2 + 3)
In [10]: fu(a)
Out[10]: (-14*sin(x)**3 + 35*sin(x) + 6*sqrt(3)*cos(x)**3 + 9*sqrt(3)*cos(x))/(cos(2*x) + 4)
1个回答

3
以下方法可能不太实际,但它展示了有时候将sin/cos表达式转换为复指数形式进行操作是值得尝试的。
a.rewrite(sp.exp).simplify().expand().rewrite(sp.cos).simplify()

7*sin(x) + 3*sqrt(3)*cos(x)


1
这个不起作用,但是对于(7sin(q) - 9sqrt(3)cos(q) - 2cos(3q + pi/6))/(4(2*sin(q)**2 - 5)) = cos(q + pi/6),需要一些技巧。 - pheon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接