【发布时间】:2014-07-20 13:05:26
【问题描述】:
这是创建微分方程组的函数trial2:
function xdot=trial2(t,x)
delta=0.1045;epsilon=0.0048685;
xdot=[x(2);(-delta-epsilon*cos(t))*x(1)-0.7*delta*abs(x(1))];
然后,我尝试使用ode45 解决这个问题:
[t,x]=ode45('trial2',[0 10000000],[0;1]);
plot(t,x(:,1),'r');
但是,这大约需要 15 分钟。所以我试图通过创建一个 mex 文件来改善运行时间。我找到了一个ode45 mex 等效函数ode45eq.c。然后,我尝试通过以下方式解决:
mex ode45eq.c;
[t,x]=ode45eq('trial2',[0 10000000],[0;1]);
plot(t,x(:,1),'r');
但这似乎运行得更慢。可能是什么原因?如何将运行时间缩短到 2-3 分钟?我必须执行很多这些计算。另外,是否值得创建一个独立的 C++ 文件来更快地解决问题?
另外,我在具有 8 GB RAM 的 Intel i5 处理器 64 位系统上运行它。如果我换用更好的处理器,比如 16 GB RAM,你认为我能获得多少速度提升?
【问题讨论】:
-
关于更多内存/更好cpu的想法。内存使用率非常低,这无济于事。求解器主要在单个内核上运行,因此并行运行多个实例可能是另一种选择?更好的 CPU 会有所帮助,但请记住,只使用一个内核。根据您当前的 CPU,它可能不值得升级。
标签: performance matlab mex