如何在 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 函数。
或者用事件强制积分器准确通过跳跃点
我正在用 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 函数。
或者用事件强制积分器准确通过跳跃点