整合 Python 中的值列表

Integrating a list of values in Python

我有一个数据列表,代表加速度。为简单起见,假设此列表为:

X = [1, 2, 3, 4, 5]

我想对该列表中的每个值进行两次积分(双重积分),以便检索有关位置的信息。

小提示:位置、速度、加速度是相关的。您可以通过两次求导来找到加速度。或者,如果你从加速度开始,你可以进行两次积分。

我无法真正更改正在使用的数据。我将浮点值存储在来自我的加速度计的列表中。我也明白,通常,积分需要定义一个函数,通常是一个可以在一个区间内积分的变量。

我试过使用库:

import scipy.integrate as integrate 

并尝试使用 .quad 方法,但出现错误。

我希望得到任何有用的提示、想法或资源链接。

Github repo

使用.cumtrapz方法。 cumtrapz(X)用单位间距的梯形法计算X的近似累积积分

import scipy.integrate as it
X = [1, 2, 3, 4, 5]
velocity = it.cumtrapz(X,initial=0)
location = it.cumtrapz(velocity,initial=0)
print 'velocity: ', velocity
print 'location: ', location

输出:

velocity:  [  0.    1.5   4.    7.5  12. ]
location:  [  0.     0.75   3.5    9.25  19.  ]

注意如果你有时间向量t对应加速度向量,你需要使用cumtrapz(X,t)Here 是方法 cumtrapz.

的参考

你只需要在一个简单的 for 循环中求和。

dv = a*dt

dx = 0.5*a*dt^2

注意 - 我写了这段代码 w/o 检查它,所以可能有一些语法错误

v = [0]  # or whatever you initial velocity is
x = [0]  # or whatever you initial location is
dt = 1.0 # or your time interval

for a in [1, 2, 3, 4, 5]:
    v.append(v[-1] + a*dt)
    x.append(x[-1] + 0.5*a*dt**2)
print(v)
print(x)