使用Sympy计算反拉普拉斯变换

8

我遇到了一些困难,无法使用sympy计算符号表达式的拉普拉斯反变换。在matlab和我正在使用的书中,表达式s/(s^2 + w^2)转化为cos(wt)。

当我尝试像这样使用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

我做错了什么?

1个回答

9
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)


8
如果您不想要Heaviside(t),您还可以这样做:t = sp.Symbol('t', positive=True)。其中的“positive”也意味着是实数。 - chthonicdaemon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接