滑模系统的相图

本文介绍了滑模系统的一组仿真代码,包括系统方程和相图生成。通过MATLAB实现,展示了如何计算速度、绘制向量场、状态轨迹以及特征向量,以可视化不稳定系统的动态行为。
摘要由CSDN通过智能技术生成

滑模系统
x ˙ 1 = x 2 , x ˙ 2 = u , u = { − 2 x 1 + 2 x 2 , if  x 1 ⋅ s > 0 , − x 1 − 2.5 x 2 , if  x 1 ⋅ s ≤ 0 , s = x 1 + x 2 . \begin{align*} \dot{x}_1 &= x_2, \\ \dot{x}_2 &= u, \\ u &= \begin{cases} -2x_1 + 2x_2, & \text{if } x_1 \cdot s > 0, \\ -x_1 - 2.5x_2, & \text{if } x_1 \cdot s \leq 0, \end{cases} \\ s &= x_1 + x_2. \end{align*} x˙1x˙2us=x2,=u,={2x1+2x2,x12.5x2,if x1s>0,if x1s0,=x1+x2.


代码是Gpt写的

仿真代码

系统方程

function x_dot = sliding_mode_system1(t, x)
    s = x(1) + x(2);
    if x(1) * s > 0
        u = -2 * x(1) + 2 * x(2);
    else
        u = -x(1) - 2.5 * x(2);
    end
    x_dot = [x(2); u];
end

相图代码

% 不稳定系统的矩阵
systemMat = [0, 1; -1, -2.5];

% 计算系统矩阵的特征值和特征向量
[eigenVectors, LambdaMat] = eig(systemMat);
eigenValues = diag(LambdaMat);
% 时间跨度
tspan = [0 20]; 

% 定义网格
[x1, x2] = meshgrid(-10:0.5:10, -10:0.5:10);

% 计算每个网格点的速度
u = zeros(size(x1));
v = zeros(size(x2));
for i = 1:numel(x1)
    Y = sliding_mode_system1([], [x1(i); x2(i)]);  
    u(i) = Y(1);
    v(i) = Y(2);
end

% 创建画布
figure;

% 绘制归一化的向量场
quiver(x1, x2, u./sqrt(u.^2+v.^2), v./sqrt(u.^2+v.^2), 'AutoScaleFactor', 0.5);

% 绘制x1和x2轴
hold on;
line([-10, 10], [0, 0], 'Color', 'k', 'LineWidth', 1.5); % x1轴
line([0, 0], [-10, 10], 'Color', 'k', 'LineWidth', 1.5); % x2轴

% 绘制滑模面:s = x1 + x2 = 0 并标注表达式
x = -10:0.1:10;
y = -x;
sliding_surface = plot(x, y, 'r', 'LineWidth', 2.5);
text(-9, 9, 's = x_1 + x_2 = 0', 'Color', 'r', 'FontSize', 12); % 调整标记位置和字体大小

% 定义几个不同的初始条件
initial_conditions = [-5 -5; 0 -1; 7 7; -7 -7; 7 -2];

% 为每个初始条件画出状态轨迹
for i = 1:size(initial_conditions, 1)
    [t, traj] = ode45(@sliding_mode_system1, tspan, initial_conditions(i, :));
    plot(traj(:,1), traj(:,2));
    
    % 使用实心圆点标记初始点
    plot(initial_conditions(i, 1), initial_conditions(i, 2), 'o', 'MarkerEdgeColor','green', 'MarkerFaceColor', 'green', 'MarkerSize', 4);
end

% 绘制特征向量所在的直线(两端延长)并标注特征值
for i = 1:2
    ev = eigenVectors(:, i); % 第i个特征向量
    % 特征向量延长线的起点和终点
    points = [-10*ev'; 10*ev'];
    % 绘制特征向量延长线
    line(points(:,1), points(:,2), 'Color', 'b', 'LineWidth', 2, 'LineStyle', '--');
    % 特征值标注
    lambda_str = ['\lambda = ', num2str(eigenValues(i), '%.2f')];
    text(points(2,1), points(2,2), lambda_str, 'Color', 'b', 'FontSize', 14);
end

% 格式化图形
xlabel('x_1');
ylabel('x_2');
title('滑模系统的相图');
axis equal;
grid on;
hold off;

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值