从 sympy 逆拉普拉斯变换得到更好的答案
Getting a better answer from sympy inverse laplace transform
尝试计算以下几行我得到了一个非常复杂的结果。
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证明了这一点。
有什么方法可以简化这个结果吗?
我尝试了一点这个,我可以找到一个更简单的解决方案的方法是使用类似的东西:
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 函数 returns 是一个大项,后跟 Heaviaside 函数。结果仍然包含许多伽玛函数,我无法将其简化为 Wolfram 返回的表达式。使用 evalf() 将其中一些转换为它们的数值,然后在简化之后你会得到一个类似于 Wolfram 中的表达式,但带有浮点数。
不幸的是,Sympy 的这一部分还不够成熟。我还尝试使用 Maxima,结果与 Wolfram 中的结果非常接近。所以看起来 Wolfram 并没有在那里做任何真正特别的事情。
尝试计算以下几行我得到了一个非常复杂的结果。
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证明了这一点。
有什么方法可以简化这个结果吗?
我尝试了一点这个,我可以找到一个更简单的解决方案的方法是使用类似的东西:
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 函数 returns 是一个大项,后跟 Heaviaside 函数。结果仍然包含许多伽玛函数,我无法将其简化为 Wolfram 返回的表达式。使用 evalf() 将其中一些转换为它们的数值,然后在简化之后你会得到一个类似于 Wolfram 中的表达式,但带有浮点数。
不幸的是,Sympy 的这一部分还不够成熟。我还尝试使用 Maxima,结果与 Wolfram 中的结果非常接近。所以看起来 Wolfram 并没有在那里做任何真正特别的事情。