Microcontroller 基于单片机的ODE求解

Microcontroller 基于单片机的ODE求解,microcontroller,differential-equations,ode,Microcontroller,Differential Equations,Ode,我想在微控制器上解决两个一阶ODE。必须每100ms评估一次 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) 我预计误差小于0.001。如何确定在达到该错误率之前应该运行多

我想在微控制器上解决两个一阶ODE。必须每100ms评估一次

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)


我预计误差小于0.001。如何确定在达到该错误率之前应该运行多少次迭代?

我猜
x
y
,以及
x{ref}
y{ref}
x{obs}
y{obs}
都与时间有关。这限制了可以使用的ODE解算器的数量。因此,只有Euler方法和2阶Runge-Kutta方法(我忘了名称)可以在
x(t)
x(t+dT)'),
x(t+2dT)`


这两种方法都可以使用经典的步长控制。也就是说,用欧拉法和RK-II法分别做一步和一步。这两个步骤之间的差异是误差的指标,可用于经典的步长控制。查看数字配方了解更多详细信息。

只有
x
y
与时间相关。其他的都是常量。我会试试RK-2。我不明白的是:我每100毫秒使用计算出的x和y,在那个时候我设置常数x_ref,x_obs。所以每100ms我就把ODE的边界设为x(0)=上一个循环值?然后对dT=0.1运行ODE?当然,这是非常常见的。原则上,龙格-库塔方法迭代工作,并将给定的x(t)映射到x(t+dT)。这一个然后被映射到x(t+2dT),所以…我在
Matlab
中尝试了Euler方法,它给出了足够好的结果。所以我将在微控制器上实现Euler。谢谢你的提示。
y(k+1)=y(k)+f(k,y(k))*dT