我在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值正在改变时间。
答案 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函数。
或者使用事件强制积分器完全通过跳转点。