尝试计算以下几行,我得到了一个非常复杂的结果。
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 函数将返回一个大项,后跟 Heaviaside 函数。结果仍然包含许多 gamma 函数,我无法将它们简化为 Wolfram 返回的表达式。使用 evalf() 将其中一些转换为数值,然后经过简化后,您会得到一个类似于 Wolfram 中的表达式,但具有 float 。
不幸的是 Sympy 的这一部分还不太成熟。我也尝试过 Maxima,结果与 Wolfram 的结果非常接近。所以看起来 Wolfram 在那里并没有做任何特别的事情。
关于python - 从 sympy 拉普拉斯逆变换获得更好的答案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491914/