Python sympy:如何简化trig表达式

Python sympy:如何简化trig表达式,python,sympy,Python,Sympy,我有一个三角表达式 (-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 +

我有一个三角表达式

(-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)

下面可能不是一个实用的方法,但是,它表明,有时在复杂的指数版本中操纵sin/cos表达式可能值得一试

a.rewrite(sp.exp).simplify().expand().rewrite(sp.cos).simplify()
7*sin(x)+3*sqrt(3)*cos(x)


然而,对于(7*sin(q)-9*sqrt(3)*cos(q)-2*cos(3*q+pi/6))/(4*(2*sin(q)**2-5))=cos(q+pi/6),这是行不通的。我相信这需要一些艺术。