我目前正在尝试使用 parfor 扫描一系列由 ode45 求解的微分方程的初始条件。该代码使用两个嵌套的 for 循环可以正常工作,但我希望 parfor 可以使该过程更高效。不幸的是,我遇到了一个问题,即求解器能够求解矩阵中表示一系列变量的初始条件的组合之一,但其他组合的初始值似乎都设置为 0,而不是指定的值由初始条件。这可能与我需要创建一个零矩阵('P')的事实有关,结果将被写入,可能会覆盖初始条件(?)任何帮助将不胜感激。
谢谢,凯尔
function help(C, R)
A = 0.01;
B = 0.00;
C = [0.001,0.01];
D = 0.00;
R = [1e-10,1e-9];
[CGrid,RGrid] = meshgrid(C,R);
parfor ij = 1 : numel(CGrid)
c2 = [A; B; CGrid(ij); D; RGrid(ij)];
[t,c] = ode45('ode_sys',[0:1:300],c2);
for k=1:length([0:1:300])
for l=1:length(c2)
if c(k,l)<0
c(k,l)=0;
end
end
end
P = zeros(301,5,numel(R),numel(C));
temp = zeros(301,5);
temp(:,1) = c(:,1);
temp(:,2) = c(:,2);
temp(:,3) = c(:,3);
temp(:,4) = c(:,4);
temp(:,5) = c(:,5);
P(:,:,ij)=temp;
parsave('data.mat', P);
end
end