2016-12-08 4 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

Вы также можете сделать 'т = sp.Symbol ('т', положительный = True)', если вы не хотите 'Хевисайда (т)'. Положительный также подразумевает реальный. – chthonicdaemon

Смежные вопросы