2016-12-08 15 views
5

Tôi đang gặp một số sự cố khi tính toán biến đổi nghịch đảo của một biểu thức sử dụng sympy. Trong MATLAB và trong cuốn sách tôi đang làm việc từ biểu thức s/(s^2 + w^2) biến đổi thành cos (wt).Tính toán Sympy biến đổi Laplace nghịch đảo

Khi tôi cố gắng để làm điều này bằng sympy như vậy:

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

Tôi nhận được rằng

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 

Tôi đang làm gì sai?

Trả lời

6

Sympy giả định rằng w có giá trị phức tạp. Cách tiếp cận đơn giản hơn là cung cấp tùy chọn real=True trong định nghĩa của biểu tượng.

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

Bạn cũng có thể làm 't = sp.Symbol ('t', tích cực = True)' nếu bạn không muốn 'Heaviside (t) '. Tích cực cũng ngụ ý thực sự. – chthonicdaemon

Các vấn đề liên quan