在循环中运行ODE45以测试多个初始条件

时间:2017-03-12 21:44:32

标签: matlab ode

我有一个ODE系统,我试图用ODE45解决。

我有大约80个我想测试的初始条件。 我的想法是,我希望在每次迭代后得到因变量的最终值。

事实上,每当初始条件发生变化时,ODE45就会给出不同大小的矩阵,我想为每次迭代生成一个新的矩阵,但网上的每个人都说这是一个真的坏主意。

所以我需要使用单元格数组,但我不太确定我需要怎么做。

为了澄清,我基本上试图通过多次运行ODE45来绘制最终值(在域的末尾)与初始条件。

谢谢!

编辑,这是我目前的设置:

y0=0.02;
z0=0;
T0=[450:0.25:470];
initialconditions=[y0 T0];
[zsol, DVsol]=ode45(@ccDEdef,domain,initialconditions(1:N));

我只是手动更改N的值以更改初始条件T0

我想要一些类似的东西:

for k=1:length(initialconditions)
[zsolN, DVsolN]=ode45(@ccDEdef,domain,initialconditions(1:k));
end

然后,在DVsol中提取最终数字并将其与T0进行对比,这对我来说应该是微不足道的。

1 个答案:

答案 0 :(得分:0)

你可以使用matlab spmd(这意味着相同的程序多个数据)

这是一个例子:

 parpool(N) %N is your desired number of initial conditions
 spmd
   q=your_function(your_inputs(labindex)); %labindex is index of your initial condition
 end

您应该安装并行计算工具箱。

检索数据,您可以使用此语句":

  q{1} % result of your first initial condition 
  q{2}
  q{your_desired_labindex}
相关问题