【问题标题】:Numerical Laplace transform python数值拉普拉斯变换python
【发布时间】:2016-11-13 22:45:55
【问题描述】:

我在两个 numpy 数组中有一个时间序列的实验数据 x = x(t),x 表示可观察的,t 表示观察的时间值。是否有一个 numpy 函数或可以评估时间序列的拉普拉斯变换的方法?提前谢谢你。

【问题讨论】:

  • 拉普拉斯变换是(不正确的)积分,因此您可以尝试多种数值积分方法。这完全取决于您在时间变量中拥有的值(常规网格,一些随机值,...?)。请在您的问题中提供更多详细信息,如果可能的话,包括您的数据样本。
  • 我有一个规则网格,在空间和时间上等间距点(x-t 平原)。我想对选定的 x 位置时间序列进行拉普拉斯变换。这种时间序列的一小部分具有X = [16.8024 16.8241 16.8847 16.9335 16.9139 17.043317.9139 17.043317.334017.2464 17.3340 17.0464 17.34017.2464 17.3340 17.0464 17.3340 17.4839]而T = [200.0496 200.1925 200.3354 200.4783 200.6212 200.7641 200.9071 201.0500 201.200.9071 201.0500 201.200.9071 201.0500 201.2929 201.358]希望有助于 span>

标签: python numpy transform


【解决方案1】:

我认为您应该将 f(x) 的拉普拉斯变换视为 Gamma(x)f(x)e^(bx) 的傅立叶变换,其中 Gamma 是一个阶跃函数,用于删除积分和 e^(bx) 构成复指数的实部。 有一种众所周知的傅立叶变换算法,称为“快速傅立叶变换”(FFT),您可以在 Python 和 Matlab 网站上找到很多关于它的教程。

这里我给你一个简短的代码来计算阶跃函数的傅里叶变换,例如 y = 0 对于 |x| > 1 y = 1 对于 |x|

对其傅里叶变换可以通过 sin(pix) / (pix) 进行分析计算。

import matplotlib.pyplot as plt
import scipy
from scipy.fftpack import fftshift
import numpy as np

x = np.arange(-3, 3, 0.01)
y = np.zeros(len(x))
y[150:450] = 1
plt.plot(x, y) # plot of the step function

yShift = fftshift(y) # shift of the step function
Fourier = scipy.fft(yShift) # Fourier transform of y implementing the FFT
Fourier = fftshift(Fourier) # inverse shift of the Fourier Transform
plt.plot(Fourier) # plot of the Fourier transform

请注意,在应用快速傅里叶变换之前和之后,您必须使用 fftshift 命令将绘图的左侧移动到右侧,反之亦然。 这不是您问题的完整答案,但我相信这是一个好的开始。

【讨论】:

  • 您能否提供一些有关如何在数值上处理 Gamma(x) 和 exp(bx) 的详细信息或参考资料?谢谢你的回答
  • 我相信你的函数已经从 t = 0 开始。如果 x 是一个 python 数组,那么 xLeftSide = np.zeros(len(x)) x = np.append(xLeftSide, x) 将生成一个比前一个长两倍的数组,其中 t = 0 之前的所有值都为零,而 t = 0 之后的所有值都是你的函数。这就是我管理所谓的“Gamma(x)”的方式。关于指数,我会说“b”参数是拉普拉斯变换中复参数的虚部,它通常用于避免积分中的发散,应该不用多说。
【解决方案2】:

您可以使用梯形法则来数值计算拉普拉斯变换的积分。描述此方法的一篇论文是Edward H. Hellen: Padé –Laplace analysis of signal averaged voltage decays obtained from a simple circuit(公式 2)

注意事项:

1) “只要最后一个数据点的数据接近于零,求和就近似于公式 1 [in the article] 中的积分。”

2) “p0 的一个好的选择是它所花费的时间的倒数 数据衰减到其初始值的 1/2。”

3)由于您的数据间隔不均,我将首先对数据使用插值(来自 scipy import interpolate)。 Trepozoidal 规则需要等间距的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2016-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多