2017-01-30 28 views
1

我有一個表達這樣的Sympy計算:如何使用python簡化三角函數表達式?

-1.0*pi*(-1.0*sin(1.0*t) - 0.025*cos(1.0*t) + 4.0*cos(2.0*t)) 

然後我嘗試了很多的提供表達的簡化選擇,但他們沒有工作太多。

當我使用expand_trig(),它返回:

pi*(1.0*sin(1.0*t) + 0.025*cos(1.0*t) - 4.0*cos(2.0*t)) 

但是當我使用數學,它返回:

-25.0542 Cos t + 3.14159 Sin t 

我怎樣才能達到使用Python數學一樣的結果?如果我想更加簡化Mathematica給出的表達式,我該怎麼做?

+2

是什麼讓你覺得你的表情可以簡化?你有沒有試圖在你的問題中繪製三個函數?雖然前兩者是相同的,但Mathematica的是一個完全不同的功能。 – zelanix

+0

好吧,你是對的。 Mathematica給了我這個真的很奇怪。但是,順便說一句,你能告訴我如何使用python來簡化這個簡單表達式:sympy.simplify(math.pi *(1.0 * sympy.sin(1.0 * t)+ 0.025 * sympy.cos(1.0 * t)))。對我而言,我們可以將它們組合成一個表達。但我找不到路。這兩個表達式總是分開的。謝謝! – hyoukai

+0

你是對的 - 但我不知道如何在Python中做到這一點。 – zelanix

回答

4

SymPy可以擴展cos(2*t)術語,但它不能用浮點係數識別它。 expand_trig(cos(2*t))作品(它給2*cos(t)**2 - 1)。我還推薦使用cos(t)而不是cos(1.0*t),因爲SymPy會將它們視爲不同(例如,cos(t) - cos(1.0*t)不會簡化爲0)。我也推薦使用sympy.pi,因爲它是符號性的並且可以象徵性地簡化(例如,sin(sympy.pi)給出0; sin(math.pi)不)。

正如其他人所指出的那樣,您聲稱由Mathematica返回的表達式並不等同,因爲一個簡單的圖將顯示。