如何用matlab画这样一个分段的微分方程图像呢?

如图,怎么利用matlab画出这个分段微分方程的关于x和x点(x导)的坐标系图?

img

这个问题的关键在于,如何处理碰撞时速度状态量的突变问题,两种解决思路:

  1. 一是使用ode45等系统自带的微分方程数值解法,需要设置事件event来处理碰撞问题;
  2. 二是自己编程用欧拉法等数值解法来求解这个微分方程,在程序中直接处理碰撞问题。

注意碰撞时应该是 dx = -0.99*dx ,即碰撞后速度方向会发生变化。

第2种方法的代码如下:

clear
clc

x0 = [0;0];
ts = 0.01;
T = 0:ts:10;
x = x0;

for ii = 1:length(T)
    t = T(ii);
    dx(1,1) = x(2);
    w = 1;
    dx(2,1) = 0.1*sin(w*t) + 0.1*x(2) - 0.25*x(1)^3 + 0.5*x(1);

    x = x + dx*ts;   % 欧拉法解微分方程
    
    %% 碰撞处理
    
    if x(1) <= -0.6

        x(1) = -0.6;
        x(2) = -0.99*x(2);
        
    elseif x(1) >= 0.5
        
        x(1) = 0.5;
        x(2) = -0.99*x(2); 
        
    end
    
    X(:,ii) = x;
    
end

%% 相图
figure
plot(X(1,:),X(2,:))
xlim([-0.8 0.8])
xlabel('x')
ylabel('dx')    

相图为:

img

参考:

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632