2017-05-02 2 views
3

Ich habe einen trigonometrischen Ausdrucksympy: Wie trig Ausdruck zu vereinfachen

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

, die ich kenne

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

zu

vereinfacht, aber ich kann nicht einen Weg zu finden, scheint es zu tun sympy verwenden. Gibt es einen cleveren Weg?

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) 

Antwort

2

Das folgende ist wahrscheinlich nicht ein praktischer Ansatz, aber es zeigt, dass manchmal kann es mit Manipulation sin experimentiert wert sein/cos-Ausdrücke in ihrer komplexen exponentiellen Version.

a.rewrite(sp.exp).simplify().expand().rewrite(sp.cos).simplify() 

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

+1

dass nicht jedoch für (7 * sin (q) funktioniert - 9 * sqrt (3) * cos (q) - 2 * cos (3 * q + pi/6))/(4 * (2 * sin (q) ** 2 - 5)) = cos (q + pi/6). Das braucht etwas Kunst, glaube ich. – pheon