如何在Matlab中将常数值w.r.t更改为时间?

时间:2015-12-27 10:44:42

标签: variables differential-equations

我在matlab中求解一阶微分方程。

dp/dt=q/c 

其中c值是常数55但q值相对于时间变化,即从0到1秒q = 500和1到2秒q = 0。

我在Matlab中制作了这个程序:

当在t和y之间绘制图形时,它给出直线(线性,直接成比例)。

function dq =myode45function(t,y)

    Q=500

    C=55;

    dq=Q/C;

end

我如何告诉matlab q值正在改变时间。

1 个答案:

答案 0 :(得分:0)

你不是。至少不是如果你想使用ode45,因为步长调节器要求ODE功能非常平滑,并且ODE功能的跳跃与此相反。

使用固定步长方法,您可以使用条件或步进函数来获得效果:

function dq =myode45function(t,y)
    Q=500
    if t>1 and t<2 then Q=0 end
    C=55;
    dq=Q/C;
end

但是,对于可变步长,使用匿名函数分别在跳转之间集成片段,以专门化带参数的通用ODE函数。

或者使用事件强制积分器完全通过跳转点。