runge kutta 与传感器数据的集成
runga kutta integration with sensor data
对 Runga Kutta (RK2) 的数值积分有疑问。假设我有提供 x、y 位置和速度的传感器数据。根据当前的车辆状态,我需要找出车辆在特定时间的位置。
使用简单的欧拉方法我可以做这样的事情
x(1) = 10;
y(1) = 5;
xdot = 2;
ydot = 1;
dt = 0.1
for i = 1:100
x(i+1) = x(i) + dt*xdot
y(i+1) = y(i) + dt*ydot
t(i+1) = t(i) + dt
if(t(i+1) >= 5)
break
end
但是我读到欧拉在数值上不稳定,最好使用基于 RK 的方法。所以我正在看 RK4 implementation but I'm confused about how the time interval is being split. So for a RK2 method I conceptually understand its trying to do this.
所以我的问题是:如何为我的应用程序实现这样的功能?我唯一能想到的是,如果我有 10Hz 数据 运行 1 Hz 的计算并使用第 1、5 和 10 帧来计算 RK2 系数。我这样做正确吗?
RK不适合这个问题;您描述的问题只是在离散样本上集成 x'(t)。如果您的时间步长间隔均匀,并且您希望车辆的路径相对于采样率相当平滑,Adams-Moulton 方法会很好地工作(这是@LutzL 提到的多步法的示例;参见 https://en.wikipedia.org/wiki/Linear_multistep_method).如果您想预测车辆在下一个时间步的位置,您可能需要使用 Adams-Bashforth 多步法。
或者,您可以简单地选择梯形法则或辛普森法则,它们都比欧拉法则高阶。
对 Runga Kutta (RK2) 的数值积分有疑问。假设我有提供 x、y 位置和速度的传感器数据。根据当前的车辆状态,我需要找出车辆在特定时间的位置。
使用简单的欧拉方法我可以做这样的事情
x(1) = 10;
y(1) = 5;
xdot = 2;
ydot = 1;
dt = 0.1
for i = 1:100
x(i+1) = x(i) + dt*xdot
y(i+1) = y(i) + dt*ydot
t(i+1) = t(i) + dt
if(t(i+1) >= 5)
break
end
但是我读到欧拉在数值上不稳定,最好使用基于 RK 的方法。所以我正在看 RK4 implementation but I'm confused about how the time interval is being split. So for a RK2 method I conceptually understand its trying to do this.
所以我的问题是:如何为我的应用程序实现这样的功能?我唯一能想到的是,如果我有 10Hz 数据 运行 1 Hz 的计算并使用第 1、5 和 10 帧来计算 RK2 系数。我这样做正确吗?
RK不适合这个问题;您描述的问题只是在离散样本上集成 x'(t)。如果您的时间步长间隔均匀,并且您希望车辆的路径相对于采样率相当平滑,Adams-Moulton 方法会很好地工作(这是@LutzL 提到的多步法的示例;参见 https://en.wikipedia.org/wiki/Linear_multistep_method).如果您想预测车辆在下一个时间步的位置,您可能需要使用 Adams-Bashforth 多步法。 或者,您可以简单地选择梯形法则或辛普森法则,它们都比欧拉法则高阶。