ode-function matlab中的时间相关参数

时间:2014-07-23 14:37:18

标签: matlab ode

我想解决一个带有时间依赖参数的颂歌。 如果cAt,则>=10应为10000;如果值为<=11,则cA应为cBfunction dcB = myode(t,y) cB=y(1,:); if t>=10 && t<=11 cA=10000 else cA=0 end dcB=(cA-cB)*100/1750; [t,y]=ode45(@myode,[tdown tup],0); 然后在微分方程中用于计算cA {1}}。 见代码:

tup

出现了陷阱问题:

  • 如果我打印cB它在指定时间没有正确的值。
  • 如果tup是例如20 cB有值,如果{{1}}是例如100 {{1}}为零。

1 个答案:

答案 0 :(得分:0)

正如霍克勒所说,我根据这个答案解决了问题:link

function dcB = myode(t,y,cA)
cB=y(1,:);
dcB=(cA-cB)*100/1750;

并用

解决
yO=0;

% t=0 till t=10
cA=0;
tspan=[0 10];
[T,Y]=ode45(@(t,y)myode(t,y,cA),tspan,yO,cA);

% t=10 till t=11
cA=10000;
tspan=[0 1];
[t,y]=ode45(@(t,y)myode(t,y,cA),tspan+T(end),Y(end,:));
T = [T;t(2:end)];
Y = [Y;y(2:end,:)];

% t=11 till t=100
cA=0;
tspan=[0 89];
[t,y]=ode45(@(t,y)myode(t,y,cA),tspan+T(end),Y(end,:));
T = [T;t(2:end)];
Y = [Y;y(2:end,:)];

plot(T,Y);