2015-05-30 30 views

回答

1

完整的 「福」 方法嘗試變換多種不同的組合中找到 「最好」 的結果。

Fu-routines中使用的單個轉換可用於執行目標轉換。您必須閱讀文檔,瞭解什麼不同的功能做的,只是通過FU字典的功能運行標識TR8爲你的主力位置:

>>> for f in FU.keys(): 
    ... print f,FU[f](sin(var('x'))**2) 
    ... 
8<--- 
    TR8 -cos(2*x)/2 + 1/2 
    TR1 sin(x)**2 
8<--- 
+0

是啊,我注意到在以前的答案類似這個功能題。我關心這個問題,因爲由於這種限制,manualintegrate函數無法集成很多trig函數。 – Kattern

1

這裏是得到這份工作做了愚蠢的辦法。

trigsimp((sin(x)**2).rewrite(tan))

回報: -cos(2*x)/2 + 1/2

也適用於

trigsimp((sin(x)**3).rewrite(tan))

回報 3*sin(x)/4 - sin(3*x)/4

而不是作品

trigsimp((sin(x)**2*cos(x)).rewrite(tan))

retruns 4*(-tan(x/2)**2 + 1)*cos(x/2)**6*tan(x/2)**2

2

在處理類似的問題,減少的順序sin(x)** 6,我注意到sympy可以通過使用,重寫,展開,然後重寫來減少sin(x)** n的順序,n = 2,3,4,5,...通過簡化,如下所示:

expr = sin(x)**6 
expr.rewrite(sin, exp).expand().rewrite(exp, sin).simplify() 

此返回:

-15*cos(2*x)/32 + 3*cos(4*x)/16 - cos(6*x)/32 + 5/16 

適用於與Mathematica將執行的操作類似的每種功能。

另一方面,如果你想減少sin(x)** 2 * cos(x)一個類似的策略。在這種情況下,你不得不重新改寫COS和罪exp和以前一樣擴大重寫和簡化再爲:

(sin(x)**2*cos(x)).rewrite(sin, exp).rewrite(cos, exp).expand().rewrite(exp, sin).simplify() 

返回:

cos(x)/4 - cos(3*x)/4 
+0

看起來像一個很好的解決方案。無法運行全新安裝的Sympy,這是最新版本中的一個可能的錯誤。 – Kattern

+0

我犯了一個小錯字,現在更正了,你可以再次檢查它 – jfosoriot

+0

我也使用最後一個版本 – jfosoriot

相關問題