2016-12-08 54 views
5

我在使用sympy計算符號表達式的逆拉普拉斯變換時遇到了一些麻煩。在matlab和我正在從表達式s /(s^2 + w^2)轉化爲cos(wt)的書中。Sympy計算逆拉普拉斯變換

當我試圖做到這一點使用sympy像這樣:

expression = s/(s**2+w**2) 
Answer = sympy.inverse_laplace_transform(expression, s, t) 

我得到

Answer = (-I*exp(2*t*im(w))*sin(t*re(w)) + exp(2*t*im(w))*cos(t*re(w)) + I*sin(t*re(w)) + cos(t*re(w)))*exp(-t*im(w))*Heaviside(t)/2 

我在做什麼錯?

回答

6

Sympy認爲w是複數值。更簡單的方法是在符號的定義中提供選項real=True

s, t = sp.symbols('s, t') 
w = sp.symbols('w', real = True) 
expression = s/(s**2+w**2) 

sympy.inverse_laplace_transform(expression, s, t) 

cos(t*w)*Heaviside(t)

+5

你也可以做'T = sp.Symbol( 'T',正值=真)'如果你不希望'亥(T)'。積極也意味着真實。 – chthonicdaemon