代码之家  ›  专栏  ›  技术社区  ›  sam_rox

在Matlab ODE中使用事件内部的两个条件

  •  0
  • sam_rox  · 技术社区  · 6 年前

    我有一首颂歌 Event

    options = odeset('RelTol',1e-11,'Events',@eventfunction);
        [time,values] = ode45(@Eq,time,x0,options);
    
    function [value, isterminal,direction]=eventfunction(~,y)
    value=y(1)+y(2)-1;
    isterminal=1;
    direction=0;
    end  
    

    我想在里面改变这个条件 eventfunction 以便在以下情况下触发事件 y(1)+y(2) 低于1或超过10^5。

    我怎样才能做到这一点?

    1 回复  |  直到 6 年前
        1
  •  1
  •   dweth    6 年前

    为value、isterminal和direction指定向量。

    value = [y(1)+y(2)-1, y(1)+y(2)-1e5];
    isterminal = [1, 1];
    direction = [0, 0];
    

    请注意,可以使用方向=[],其功能与提供方向=零(1,长度(值))相同。