在微控制器上解决ODE问题

时间:2013-03-09 22:56:29

标签: microcontroller differential-equations ode

我想在微控制器上解决两个ODE第一顺序。它必须每100毫秒进行一次评估

x'=-k_{1}\cdot (x-x_{ref})\cdot e^{-b\cdot ((x-x_{obs})^{2}+(y-y_{obs})^{2})}
y'=-k_{1}\cdot (y-y_{ref})\cdot e^{-b\cdot ((x-x_{obs})^{2}+(y-y_{obs})^{2})}

基本上我想过使用euler整合(Runge-Kute I)

y(k+1)=y(k)+f(k,y(k))*dT

我希望错误是< 0.001。我如何确定在达到错误率之前我应该​​运行多少次迭代?

1 个答案:

答案 0 :(得分:2)

我猜xy以及x_{ref}y_{ref}x_{obs}y_{obs}都是时间相关的。这限制了您可以使用的ODE求解器的数量。所以它只能是Euler方法和2阶Runge-Kutta方法(我忘了名字),它只在时间点x(t)评估你的rhs,x(t+dT)´, x(t) + 2DT)`,...

您可以使用这两种方法使用经典步长控制。那就是你用Euler方法做一步,用RK-II方法做一步。这两个步骤之间的差异是错误的指示器,可用于经典步长控制。有关更多详细信息,请查看Numerical Recipes。