我有一个 ODE 函数,我试图用不同的参数多次求解。这是功能
function xdot=SB(t,x)
global ps f R0
S=.0725 ;
rhoL=998;
vL =1.0e-3;
c = 1481;
pvtinf=0 ;
pinf0=1.01e5;
k =7/5;
xdot(1,1)=x(2);
xdot(2,1)=((-0.5*x(2)^2)*(3-x(2)/(c))+(1+(1-3*k)*x(2)/c)*((pinf0-pvtinf)/rhoL+2*S/(rhoL*R0))*(R0/x(1))^(3*k)-2*S/(rhoL*x(1))-4*vL*x(2)/(rhoL*x(1))-(1+x(2)/c)*(pinf0-pvtinf+ps*sin(2*pi*f*t))/rhoL-ps*x(1)*cos(2*pi*f*t)*2*pi*f/(rhoL*c))/((1-x(2)/c)*x(1)+4*vL/(rhoL*c));
这是我用来通过更改函数中的变量来多次求解的求解器。
clc;clear;
global ps f R0
R=[1 2 3 4 5 6 7].*1e-6;
options= odeset('RelTol',1e-12,'AbsTol',1e-13);
f=2e6;
ps=100e3;
for i=1:length(R)
R0=R(i);
[t{i},x{i}]=ode45(@SB,(0:0.01/f:5/f),[R0 0],options);
end
figure()
for i=1:length(R)
plot(t{i},x{i}(:,1))
hold on
end
hold off
grid on
在这种情况下,我正在更新 R0。在其他情况下,我正在更新 f 或 ps (全局变量)。我正在尝试使用 PARFOR 来加快速度,但是在使用 PARFOR 时我找不到将这些全局变量传递给函数的方法。
提示 ?