错误:无法使用sympy获得反拉普拉斯变换表达式

2024-09-30 10:41:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试用sympy计算以下传递函数wlt的逆拉普拉斯变换:

                             -2⋅s         
         (1.0e-8⋅s + 0.02)⋅ℯ             
────────────────────────────────────────
  ⎛         2                           ⎞
s⋅⎝1.0e-11⋅s  + 2.0000003e-5⋅s + 0.00177⎠

使用下一个表达式:

wtl_t = sp.inverse_laplace_transform(wtl, s, t, noconds=True)

在哪里

s = sp.symbols('s')
t = sp.symbols('t', positive=True)

但当我运行代码时,会出现以下错误:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/polyutils.py", line 211, in _parallel_dict_from_expr_if_gens
    monom[indices[base]] = exp
KeyError: RisingFactorial(_t + 1, 1.0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/partfrac.py", line 81, in apart
    (P, Q), opt = parallel_poly_from_expr((P, Q), x, **options)
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/polytools.py", line 4340, in parallel_poly_from_expr
    return _parallel_poly_from_expr(exprs, opt)
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/polytools.py", line 4393, in _parallel_poly_from_expr
    reps, opt = _parallel_dict_from_expr(exprs, opt)
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/polyutils.py", line 332, in _parallel_dict_from_expr
    reps, gens = _parallel_dict_from_expr_if_gens(exprs, opt)
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/polyutils.py", line 216, in _parallel_dict_from_expr_if_gens
    raise PolynomialError("%s contains an element of "
sympy.polys.polyerrors.PolynomialError: RisingFactorial(_t + 1, 1.0) contains an element of the set of generators.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/mnt/hgfs/FACULTAD/3er año/SDC/S&C_withPython/SDC_ex/GTP2_ex3.py", line 62, in <module>
    wtl_t = sp.inverse_laplace_transform(wtl, s, t, noconds=True)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 1341, in inverse_laplace_transform
    return InverseLaplaceTransform(F, s, t, plane).doit(**hints)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 130, in doit
    return self._compute_transform(self.function,
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 1287, in _compute_transform
    return _inverse_laplace_transform(F, s, t, self.fundamental_plane, **hints)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 218, in wrapper
    res = func(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 1213, in _inverse_laplace_transform
    f, cond = inverse_mellin_transform(F, s, exp(-t), (None, oo),
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 908, in inverse_mellin_transform
    return InverseMellinTransform(F, s, x, strip[0], strip[1]).doit(**hints)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 130, in doit
    return self._compute_transform(self.function,
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 846, in _compute_transform
    return _inverse_mellin_transform(F, s, x, strip, **hints)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 218, in wrapper
    res = func(*args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/sympy/integrals/transforms.py", line 773, in _inverse_mellin_transform
    h = hyperexpand(G)
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 2513, in hyperexpand
    return f.replace(hyper, do_replace).replace(meijerg, do_meijer)
  File "/usr/local/lib/python3.9/dist-packages/sympy/core/basic.py", line 1497, in replace
    rv = walk(self, rec_replace)
  File "/usr/local/lib/python3.9/dist-packages/sympy/core/basic.py", line 1481, in walk
    rv = F(rv)
  File "/usr/local/lib/python3.9/dist-packages/sympy/core/basic.py", line 1490, in rec_replace
    v = _value(expr, result)
  File "/usr/local/lib/python3.9/dist-packages/sympy/core/basic.py", line 1419, in <lambda>
    _value = lambda expr, result: value(*expr.args)
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 2509, in do_meijer
    r = _meijergexpand(G_Function(ap[0], ap[1], bq[0], bq[1]), z,
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 2394, in _meijergexpand
    slater2, cond2 = do_slater(tr(func.bm), tr(func.an), tr(func.bq), tr(func.ap),
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 2320, in do_slater
    hyp = _hyperexpand(Hyper_Function(nap, nbq), harg, ops,
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 2061, in _hyperexpand
    formula = try_lerchphi(func)
  File "/usr/local/lib/python3.9/dist-packages/sympy/simplify/hyperexpand.py", line 1799, in try_lerchphi
    part = apart(numer/denom, t)
  File "/usr/local/lib/python3.9/dist-packages/sympy/utilities/decorator.py", line 34, in threaded_func
    return func(expr, *args, **kwargs)
  File "/usr/local/lib/python3.9/dist-packages/sympy/polys/partfrac.py", line 84, in apart
    raise PolynomialError(msg)
sympy.polys.polyerrors.PolynomialError: RisingFactorial(_t + 1, 1.0) contains an element of the set of generators.

我还尝试了部分分数和TF的因式分解,但什么也没发生


Tags: inpylibpackagesusrlocaldistline
1条回答
网友
1楼 · 发布于 2024-09-30 10:41:06

我不知道你的情况有什么问题,但不妨试试:

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

invL(wtl)

您还需要将t定义为实:

t = sympy.Symbol('t', real=True)

相关问题 更多 >

    热门问题