python - 如何使用python求解现实生活中的差分方程

标签 python python-3.5 difference-equations

我想用 python 求解差分方程。

y = x(n - 1) - (0.5(x(n-2) + x(n))

x 这里是一长串值。我想使用 Plotly 绘制关于另一个时间序列数组 ty 。我可以用 t 绘制 x,但我无法生成过滤后的信号 y。我试过下面的代码,但似乎遗漏了一些东西。我没有得到想要的输出。

from scipy import signal
from plotly.offline import plot, iplot
x = array(...)
t = array(...) # x and t are big arrays 
b = [-0.5, 1, -0.5]
a = 0
y = signal.lfilter(b, a, x, axis=-1, zi=None) 
iplot([{"x": t, "y": y}])

然而,输出是这样的。

>>>y
>>> array([-inf, ...,  nan])

因此,我得到一个空白图表。

更新 x 和 t 的示例(每个 9 个值):

x = [3.1137561664814495,
 -1.4589810840917137,
 -0.12631870857936914,
 -1.2695030212226599,
 2.7600637824592158,
 -1.7810937909691049,
 0.050527483431747656,
 0.27158522344564368,
 0.48001109260160274]

t = [0.0035589523041146265,
 0.011991765409288035,
 0.020505576424579175,
 0.028935389041247817,
 0.037447199517441021,
 0.045880011487565042,
 0.054462819797731044,
 0.062835632533346342,
 0.071347441874490158]

最佳答案

看来您的问题是定义a = 0。运行您的示例时,您会收到来自 SciPy 的以下警告:

/usr/local/lib/python2.7/site-packages/scipy/signal/signaltools.py:1353: RuntimeWarning:

divide by zero encountered in true_divide

[-inf  inf  nan  nan  nan  inf -inf  nan  nan]

此除以零由值 a 定义。如果您查看 scipy.signal.lfilter 的文档, 它指出了以下几点:

a : array_like The denominator coefficient vector in a 1-D sequence. If a[0] is not 1, then both a and b are normalized by a[0].

如果您将 a = 0 更改为 a = 1,您应该会得到您想要的输出,尽管考虑到您可能希望通过 a 应用数据规范化不同的因素。

关于python - 如何使用python求解现实生活中的差分方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45258877/

相关文章:

python - 计算 python 数组中每个设定间隔的百分位数

ipython - 我在 Windows 上使用 jupyter notebook,ipython 3。每当我启动我的 python 3 时,我都会收到 "Kernel Dead"消息

python - IndexError尝试在python中数值求解差分方程

performance - numpy:评估矩阵中的函数,使用前一个数组作为计算下一个数组的参数

python - 当 docker-compose 不在同一文件夹中时启动 gunicorn

python - 超弦 InterviewStreet : Python

python - 神经网络训练后如何提取图像特征?

python - 一个非常简单的python异步应用程序

c# - python 3.5 中的 async/await 关键字是否受 C# 中的 async/await 启发?

r - 如何在 data.table 中编写累积计算