我正在寻找在满足特定条件时终止 MATLAB ode 的方法。我在本主题MatLab ODE 启动/停止条件中找到了答案 ,其中讨论了“事件”的使用。然而,这适用于 ode45,当我尝试将“事件”与 ode15i 一起使用时,它根本不起作用,并且 MATLAB 显示错误。
我试图通过简单的例子来学习这一点,并求解一个简单的微分方程组,如下所示。
dx/dt = 5x + 3y;dy/dt = x + 7y;我使用 ode45 解决了它们,并尝试使用 ode15i 执行相同的操作,但它不起作用。下面给出的是我的代码。
与 ode45
function start_stop_test_ode45
y0 = [5;1];
tv = linspace(0,2,100);
options = odeset('Events',@events);
f = @(t,y) [5*y(1) + 3*y(2);y(1) + 7*y(2)];
[t,Y] = ode45(f,tv,y0,options);
xNI = Y(:,1);
yNI = Y(:,2);
xCF = 3*exp(4*t) + 2*exp(8*t);
yCF = -1*exp(4*t) + 2*exp(8*t);
% Here we plot all the graphs
figure(1)
plot(t,xNI,'--k',t,xCF,'r','Linewidth',1.75)
xlabel('t (s)')
ylabel('x') …Run Code Online (Sandbox Code Playgroud)