Получаване на по-добър отговор от sympy обратна трансформация на Лаплас

Опитвайки се да изчисля следващите редове, получавам наистина сложен резултат.

from sympy import *
s = symbols("s")
t = symbols("t")
h = 1/(s**3 + s**2/5 + s)
inverse_laplace_transform(h,s,t)

Резултатът е следният:

(-(I*exp(-t/10)*sin(3*sqrt(11)*t/10) - exp(-t/10)*cos(3*sqrt(11)*t/10))*gamma(-3*sqrt(11)*I/5)*gamma(-1/10 - 3*sqrt(11)*I/10)/(gamma(9/10 - 3*sqrt(11)*I/10)*gamma(1 - 3*sqrt(11)*I/5)) + (I*exp(-t/10)*sin(3*sqrt(11)*t/10) + exp(-t/10)*cos(3*sqrt(11)*t/10))*gamma(3*sqrt(11)*I/5)*gamma(-1/10 + 3*sqrt(11)*I/10)/(gamma(9/10 + 3*sqrt(11)*I/10)*gamma(1 + 3*sqrt(11)*I/5)) + gamma(1/10 - 3*sqrt(11)*I/10)*gamma(1/10 + 3*sqrt(11)*I/10)/(gamma(11/10 - 3*sqrt(11)*I/10)*gamma(11/10 + 3*sqrt(11)*I/10)))*Heaviside(t)

Отговорът обаче трябва да е по-прост, Wolframalpha го доказва.

Има ли някакъв начин да се опрости този резултат?


person tul1    schedule 10.09.2015    source източник
comment
Като се има предвид, че sympy не е толкова развит като WolframAlpha, така че не е изненадващо, че отговорът му не е толкова прост.   -  person thecircus    schedule 11.09.2015


Отговори (1)


Опитах малко с този и начинът, по който мога да намеря по-просто решение, е да използвам нещо като:

from sympy import *
s = symbols("s")
t = symbols("t", positive=True)
h = 1/(s**3 + s**2/5 + s)
inverse_laplace_transform(h,s,t).evalf().simplify()

Забележете, че дефинирам t като положителна променлива, в противен случай функцията sympy връща голям член, последван от функцията Heaviaside. Резултатът все още съдържа много гама функции, които не можах да редуцирам до израза, върнат от Wolfram. С помощта на evalf() някои от тях се преобразуват в числовата им стойност и след това след опростяване получавате израз, подобен на този в Wolfram, но с плаващи числа.

За съжаление тази част от Sympy не е съвсем зряла. Пробвах и с Maxima и резултатът е доста близък до този на Wolfram. Така че изглежда, че Wolfram не прави нищо наистина специално там.

person jfosoriot    schedule 10.09.2015