我一直在解决一组非常简单的ODE,对于特定情况,它会产生我期望的结果。所需的输出是“人口”的图表,它只是对ODE结果输出的操纵。
问题是我有一些变量 del ,随着时间的推移,它必须慢慢增加(减慢为 del_increment / time_increment<< Omega ^ 2 ,其中Omega设置为1)。我可以愉快地产生我所谓的'静态'情况,我在ode45之外有一个for循环递增del,但这实际上只是一段时间内静态del值的解决方案。
我很难看到我如何在函数中使ODE45增加del值[在max和min之间],因为我有del对时间的微小变化的限制。这将显示一个图,显示零人口的小振荡和逐渐增加到人口= 1,而不是我当前的每个特定 del 值的多个图。
我已经给出了我在下面写的内容,我希望这种解释是有道理的。
del=-10:0.1:10; %start at large minus, with some small increment
Omega=1;
tmax=10; %integration time
for ret=1:length(del)
y=[0 0 1]; % starting conditions
[t,y]=ode45(@(t,y) psfour(t,y,del(ret)),[0 tmax],y);
plot(t,y(:,1)) % plot of one of the solutions
axis([0 max(t) -1 1])
p_11=0.5*(1+y(:,3)); %calculation of the population of an energy level
figure(2)
plot(t,p_11)
axis([0 max(t) 0 1])
pause(0.05) % asthetic pause so I can see results
end
和我的功能
function dydt = react(t,y,del)
dydt = zeros(size(y));
Omega=1;
A = y(1);
B = y(2);
C = y(3);
dydt(1) = del*B;
dydt(2) = -del*A + Omega*C;
dydt(3) = -Omega*B;
% del=del + Omega*t;
end