我在excel电子表格中得到了这些数据。所以导入之后,我只需要做velocity = cumtrapz(t,y),然后做position = cumtrapz(velocity)
发布于 2014-04-25 11:02:10
如果汽车在距离为零时从零开始,那是正确的。否则,你也需要有初始速度。请注意,这里真正要做的是通过将a = f(t) = dv/dt标识为ds/dt来求解方程v和进一步的ds/dt。你可以通过求解一个常微分方程组来做到这一点:
a = dv/dt
v = ds/dt这可以用几种方式来完成。如与欧拉前进。
v'(t) = (v(t+h)-v(t))/h
<=> v(t+h) = hv'(t)+v(t)其中给出了导数,这意味着a = a(t)。迭代是用初始条件v(0)初始化的,必须给出初始条件。
当您知道v之后,就转到s。
s'(t) = (s(t+h)-s(t))/h
<=> s(t+h) = hs'(t)+s(t)其中必须知道初始条件s(0)。如果v(0) = s(0) = 0.欧拉正演算法是一种O(h)算法,但了解求解微分方程的技巧,一步一步地进行变换s'(t) = v(t)也是可能的。现在,任何runge方法都可供您使用。你所用的方法,累积量,实际上是一个O(h^2)方法。这比堆栈溢出中的自定义更多一些理论,但希望它会有所帮助。二阶边值问题也有一种矩阵解,称为有限差分法,但该方法略为超前。要进一步阅读,请先从
equations
https://stackoverflow.com/questions/23283548
复制相似问题