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

How to change constant value w.r.t to time in Matlab?

我正在用 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 值在 w.r.t 时间变化。

你不知道。至少如果你想使用 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 函数。

或者用事件强制积分器准确通过跳跃点