手动积分得到逆拉普拉斯变换

时间:2017-11-01 01:03:27

标签: python scipy integral inverse-transform

我想手动计算逆拉普拉斯变换,而不需要求助于任何库。具体来说,我想计算双边拉普拉斯逆变换。我想检查一下我的理解并手动尝试以下操作,但无法匹配答案。我哪里错了?

我想计算1 /(s-a)的laplace变换。我知道答案是 at 。我的尝试:

a = 2
t = 0.5
f = lambda s: 1/(s-a)
def g(u):
    gammah=1
    s = complex(real=gammah,imag=u)
    return (f(s)).real*np.cos(s.imag*t) * 2*np.exp(s.real*t)/pi

import spicy as sp
import numpy as np

sp.integrate(g,0,np.inf,limit=10000)

给了我-0.9999999

但我知道答案是exp = 2.71 ......

1 个答案:

答案 0 :(得分:1)

主要错误是数学错误。正如Wikipedia所说,

  

沿复平面中的垂直线Re(s)=γ进行积分,使得γ大于F(s)的所有奇点的实部

函数F(s)= 1 /(s-a)在a处具有奇点,在您的示例中为2。所以γ需要大于2.例如,当γ= 3时,quad的输出是

(2.718278877362764, 2.911191228083254e-06)

正如所料。通过,您的import spicy等不可能正常工作,正确的导入语法将是

from scipy.integrate import quad
# ....
quad(g, 0, np.inf, limit=10000)