weixin_45783933 2023-04-15 19:07 采纳率: 50%
浏览 79
已结题

matlab混沌仿真

matlab混沌分岔图和李普亚诺夫指数图仿真不出
方程如下

img


其中a=1,b=3,能用matlab仿真出来吗

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-04-15 19:27
    关注

    这个项目如果按照5000的仿真时间,和0.001的步长来运行的话,会很耗时,等很久,这个要根据你的需求自己调整,电脑配置高的,可能会好一些。我把仿真时间缩短到100,步长增加到0.02,运行结果如下:

    img

    img

    以下是使用MATLAB对给定的混沌系统进行仿真,并绘制分岔图和Lyapunov指数图的代码:

    % 清空MATLAB工作区
    clear all;
    clc;
    
    % 定义系统参数
    a = 1;
    b = 3;
    
    % 定义初始条件和仿真步长
    x(1) = 0.1;
    y(1) = 0.1;
    step_size = 0.02;
    
    % 定义仿真时间
    t_end = 100;
    
    % 初始化Lyapunov指数和扰动向量
    lyapunov = 0;
    delta = 0.0001*[1;0];
    
    % 创建一个空的figure对象
    figure;
    
    % 循环仿真系统
    for t = 1:t_end
        % 计算下一个时间步的状态
        x(t+1) = a * (sin(pi * y(t)) + b) * x(t) * (1 - x(t));
        y(t+1) = a * (sin(pi * x(t+1)) + b) * y(t) * (1 - y(t));
        % 计算Lyapunov指数
        f_x = a * (sin(pi * y(t)) + b) * (1 - 2 * x(t));
        f_y = a * pi * cos(pi * x(t+1));
        df = [f_x, f_y; a * pi * cos(pi * y(t)), (1 - 2 * y(t))];
        delta = df * delta;
        lyapunov = lyapunov + log(norm(delta));
        % 绘制Lyapunov图
        hold on;
        plot(t, lyapunov/t, '.', 'MarkerSize', 1);
    end
    xlabel('时间步');
    ylabel('Lyapunov指数');
    title('Lyapunov指数图');
    % 绘制分岔图
    figure;
    hold on;
    for b = 2.8:0.02:4
        x(1) = 0.1;
        for i = 1:100
            x(2) = a * (sin(pi * y(1)) + b) * x(1) * (1 - x(1));
            x(1) = x(2);
        end
        for i = 1:30
            x(2) = a * (sin(pi * y(1)) + b) * x(1) * (1 - x(1));
            plot(b, x(2), '.', 'MarkerSize', 1);
            x(1) = x(2);
        end
    end
    xlabel('b');
    ylabel('x');
    title('分岔图');
    

    该代码将生成两个图像,一个是分岔图,一个是Lyapunov指数图。分岔图用于可视化系统的非线性动态行为,而Lyapunov指数图用于评估系统的混沌性质。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 4月23日
  • 创建了问题 4月15日