引用一下matlab论坛里大神的回答:
总得来说:二者算法相似,只不过ode45比ode23精度要高一点,其它没什么差别。
具体ode是Matlab专门用于解微分方程的功能函数;solver有变步长(variable-step)和定步长(fixed-step)两种类型,不同类型有着不同的求解器。ode45求解器属于变步长的一种,采用Runge-Kutta算法;和他采用相同算法的变步长求解器还有ode23。ode45表示采用四阶,五阶runge-kutta单步算法,截断误差为(Δx)3。解决的是Nonstiff(非刚性)的常微分方程.是解决数值解问题的首选方法,若长时间没结果,应该就是刚性的,换用ode23来解。
ode23 是 Bogacki 和 Shampine 的显式 Runge-Kutta (2,3) 对的实现。在容差较宽松且刚度适中的情况下,它可能比 ode45 更加有效。ode23 是单步求解器,是求解非刚性微分方程的低阶方法。(在数学中,刚性方程是指一个微分方程,其数值分析的解只有在时间间隔很小时才会稳定,只要时间间隔略大,其解就会不稳定。目前很难去精确地去定义哪些微分方程是刚性方程,但是大体的想法是:这个方程的解包含有快速变化的部分。)
参考其中ode23和ode45的对比网页链接