我有一个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进行对比,这对我来说应该是微不足道的。
答案 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}