【问题标题】:Sympy can't find inverse laplace transform of a sum of easy termsSympy 找不到简单项之和的拉普拉斯逆变换
【发布时间】:2023-03-30 11:49:01
【问题描述】:

我正在计算一个表达式的拉普拉斯逆变换,它是要反转的相对基本项的总和:

>>> t = symbols('t', positive=True)
>>> s = symbols('s')
>>> inverse_laplace_transform(1 - 9/(s + 2) + 5/(s+1) - 1/(s+1)**2, s, t)

它似乎能够计算每个人的罚款:

>>> inverse_laplace_transform(-1/(s+1)**2, s, t)
-t*exp(-t)
>>> inverse_laplace_transform(5/(s-1), s, t)
5*exp(t)
>>> inverse_laplace_transform(9/(s+2), s, t)
9*exp(-2*t)
>>> inverse_laplace_transform(1, s, t)
InverseLaplaceTransform(1, s, t, _None)

然而,当我对这些求和时,我得到一个很长的错误,说它找不到多项式

inverse_laplace_transform(1 - 9/(s + 2) + 5/(s+1) - 1/(s+1)**2, s, t) sympy.polys.polyerrors.PolynomialDivisionFailed:在除法 [EX(-1728*3**(1/3)(9 + sqrt(93))* 时无法降低多项式除法算法中的度数(1/3)*(27 + 3*sqrt(93))**(2/3) + 1728*3**(5/6)I(9 + sqrt(93)) **(1/3)*(27 + 3*sqrt(93))**(2/3))] by [EX(1)]。 当无法在系数域中检测到零时,可能会发生这种情况。计算领域是EX。 您可能想要使用不同的简化算法。 请注意,通常无法保证在此域中检测到零。

有谁知道为什么 sympy 不能对各部分的总和执行此操作,而它可以分别对每个部分执行此操作?

【问题讨论】:

    标签: python sympy


    【解决方案1】:

    可能是较新版本中的错误。 SymPy 1.0 过去工作得很好:

    >>> inverse_laplace_transform(1 - 9/(s + 2) + 5/(s+1) - 1/(s+1)**2, s, t)
    -t*exp(-t) + InverseLaplaceTransform(1, s, t, _None) + 5*exp(-t) - 9*exp(-2*t)
    

    【讨论】:

    • 我使用的是 1.1.1 版,我得到了与问题相同的错误。我使用问题中所述的st 的定义,然后我从这里复制你的表达,但没有bueno。
    • @Reti43 也许我已经过时了 :P 我在上面,现在正在检查
    • @Reti43 好吧,看起来新版本有问题,因为旧版本给出了正确的结果
    • 嗯,奇怪的是旧版本有效,因为我也在使用版本 1.1.1 我在回购中打开了一个问题,并得到回复说它可能不必要地合并分数而不是做在小方面使用查找表的更简单方法。 github.com/sympy/sympy/issues/13491
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    相关资源
    最近更新 更多