我想在微控制器上解决两个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。我如何确定在达到错误率之前我应该运行多少次迭代?
答案 0 :(得分:2)
我猜x
和y
以及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。