是否有可能从matlab提高ODE解算器的速度?(ode45 ode15s等)

是否有可能从matlab提高ODE解算器的速度?(ode45 ode15s等),matlab,ode,Matlab,Ode,我用matlab中的ode45和ode15s编写了一个求解系统的代码。我想知道是否可以在脚本中使用多核(或并行代码)来提高代码的速度 有人试过这个吗 谢谢不,你不能 所有的数值积分器,ode45和朋友们都使用某种形式的迭代格式来求解用户实现的(耦合的)非线性(偏)微分方程 ode45/15s/.迭代格式中的每个新步骤(用于计算系统的新状态)都依赖于前一步骤(系统的旧状态),因此,这些数值积分器无法有效地并行化 唯一可能产生重大影响的加速是优化微分方程的实现 根据我的经验,在MATLAB中为ODE

我用matlab中的ode45和ode15s编写了一个求解系统的代码。我想知道是否可以在脚本中使用多核(或并行代码)来提高代码的速度

有人试过这个吗

谢谢

不,你不能

所有的数值积分器,
ode45
和朋友们都使用某种形式的迭代格式来求解用户实现的(耦合的)非线性(偏)微分方程

ode45/15s/.
迭代格式中的每个新步骤(用于计算系统的新状态)都依赖于前一步骤(系统的旧状态),因此,这些数值积分器无法有效地并行化


唯一可能产生重大影响的加速是优化微分方程的实现

根据我的经验,在MATLAB中为ODE套件解算器使用多个核的唯一方法是使用“parfor循环”同时启动多个计算,您的单个计算不会更快,但您可以使用不同的参数启动多个核,并在长时间等待后获得多个解。因此,如果您需要多次启动ODE,可能会加快您的工作

为了加速一个ODE功能,使用RelTol和AbsTol设置(将时间从秒更改为小时)也是一个好主意,使用Jpattern选项也非常有用(我的几乎三对角模式使其运行速度提高了一倍)。如果你的微分方程很简单,可以先编译它,或者至少矢量化(我曾经用Java编写过一些代码,然后让MATLAB使用编译过的.class文件)。显然,解向量的长度起着重要的作用,所以不要让它超过几行