前置准备
导入 sympy 库:
import sympy as sp
定义符号变量 s 和 t :
t,s=sp.symbols("t s")
正变换
自定义一个函数来调用:
def Laplace_transform(func,t,s):
return sp.laplace_transform(func,t,s)[0]
其中 [0] 代表只返回结果,不返回收敛域;
func 就是要变换的 f(t) 。直接 print 这个自定义函数即可查看结果
逆变换
同样的,自定义一个函数来调用:
def Inverse_Laplace_transform(func,s,t):
return sp.inverse_laplace_transform(func,s,t)
注意这次不能带 [0] 。
其中 func 就是要变换的 F(s) 。直接 print 这个自定义函数即可查看结果
关于函数输入
注意不能混用 math 和 sympy 的函数!
比如指数要用 sp.exp(-t),不能用 math.exp(-t)。对于其他的平方、除法等运算,正常输入即可。
完整示例
我们求下面两个函数的拉普拉斯变换和逆变换:
f(t)=\dfrac{sin(kt)}{t}F(s)=\dfrac{s}{(s^2 -1)^2}代码如下:
import sympy as sp
def Laplace_transform(func,t,s):
return sp.laplace_transform(func,t,s)[0]
def Inverse_Laplace_transform(func,s,t):
return sp.inverse_laplace_transform(func,s,t)
# 定义符号,k也是符号,因为没有指定具体值
t,s=sp.symbols("t s")
k=sp.symbols("k",positive=True)
# 求 f(t)=sin(kt)/t 的拉普拉斯变换
func_t=sp.sin(k*t)/t
func_s=Laplace_transform(func_t,t,s)
print(f"F(s) = {func_s}") # 结果: atan(k/s)
# 求 F(s)=s/(s^2-1)^2 的逆拉普拉斯变换
func_s=s/((s**2-1)**2)
func_t=Inverse_Laplace_transform(func_s,s,t)
print(f"f(t) = {func_t}") # 结果: t*sinh(t)/2
运行后得到结果:

是正确的。