You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SymPy求拉普拉斯逆变换如何移除结果中的Heaviside(t)项

解决方法

Sympy返回结果自带Heaviside(t)(单位阶跃函数)的原因是,拉普拉斯逆变换默认在整个实数域生效:t<0时结果为0,t≥0时才为表达式的计算值。如果你只需要t≥0场景下的解析结果,可以用以下两种方案处理:

方案1:定义t为正实数(推荐)

在声明符号变量t时,添加实域、正数的属性约束,此时Sympy会自动判定Heaviside(t)=1,输出结果时不会携带阶跃项。
修改后的代码如下:

import sympy
sympy.init_printing()

# 修改t的定义,添加属性约束
s = sympy.symbols('s')
t = sympy.symbols('t', real=True, positive=True)

X = (s*(s+1))/((s+2)*(s+3)*(s+4))

parfrac = sympy.apart(X, full=True).doit()

def invL(parfrac):
    return sympy.inverse_laplace_transform(parfrac, s, t)

print('x(t) = ', invL(X))

运行后输出结果为:x(t) = (exp(2*t) - 6*exp(t) + 6)*exp(-4*t),自动消除了阶跃项。

方案2:手动替换阶跃项

如果你不想修改符号变量的定义,也可以对返回结果做直接替换:

result = invL(X)
result = result.subs(sympy.Heaviside(t), 1)
print('x(t) = ', result)

就能得到不带Heaviside(t)的结果。

内容的提问来源于stack exchange,提问作者madmor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:15:02