在特定的微分方程求解过程中,比如碰撞、车辆刹车,这种特殊运动时间简单的时序求解不够完善,故需要用到一个ode求解器的事件(Event)属性
首先假定一个微分方程
dy1=y2
dy2=y1+1
其中y1...不能超过4
求解改微分方程
event时间定义:
function [value,isterminal,direction] = events1(t,y)
value = y(1)-4;
isterminal...在不知道结果时间的时候是需要先设定一个比较大的时间范围计算的
但是并不需要将整个范围的结果都算出来再插值
这个时候可以设定触发事件函数在一定条件下停止计算
用odeset可以为ode45求解器设定触发事件的函数...=1; %设为1时会,触发时间会停止求解器,设0时触发不影响工作
direction=1; %触发方向设1时是上升触发,设-1是下降触发,设0是双向触发
end
op=odeset('Events...',@eventfun);
[T,X,Tend,Xend,evennum]=ode45(@fun,[0,15],[0 0],op);
这样到达100米时,求解器就停住了,ode45多返回了Tend,Xend