使用 MATLAB ODE 套件求解开关系统的 ODE

计算科学 matlab
2021-12-01 18:14:23

我有以下代码要执行:

X= [0;0;0;0];sw= 0;

for k = 1 : n
    if (sw(k) == 0 && X(2,k)> 0.7 ) || (sw(k) == 1 && X(1,k) >0)
        sw(k+1) = 1;
        X(:,k+1) = X(:,k) +h*(A1*X(:,k) + B1*u);
    else
        sw(k+1) =0;
        X(:,k+1) = X(:,k) +h*(A*X(:,k) + B*u);
    end

end

这可以。我想使用内置的 ode 套件解决相同的 ODE。我如何检查swX在每次迭代后查看要求解两个方程中的哪一个。

1个回答

您可以使用 MATLAB ODE 套件的“事件定位”功能将方程组积分为两种状态之一,并在达到状态更改条件时停止积分。然后,您可以在其他状态下重新启动集成并设置事件触发器以在下一次状态更改时停止集成。

http://www.mathworks.com/help/matlab/math/ode-event-location.html