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

问题描述 投票:0回答:1

我有一个ODE 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时触发事件。

我怎样才能做到这一点?

matlab events differential-equations
1个回答
1
投票

指定value,isterminal和direction的向量。

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

请注意,您可以使用direction = [],它的功能与提供direction = zeros(1,length(value))相同。

© www.soinside.com 2019 - 2024. All rights reserved.