一维Logistic系统分岔图matlab实现

Logistic系统被广泛应用在各个领域中,如生态学、物理学和社会科学等,也被用于密码学和数据加密中。在工业和商业中,混沌Logistic系统也被用于数据编码和保密通信。Logistic系统是一种非常简单的二次多项式形式的映射。

混沌Logistic系统指的是一类基于混沌现象的数学模型,它可以用来模拟和描述一些系统中出现的复杂动态行为,如自然界中的天气系统和生物体的生命活动等。在Logistic系统中,混沌模型通过迭代计算去逼近某个“平衡点”,这种平衡点也称为混沌吸引子。

混沌Logistic系统的基本方程式如下:

x n + 1 = r x n ( 1 − x n ) x_{n+1} = rx_n(1-x_n) xn+1=rxn(1xn)

其中, x n x_n xn表示系统在第 n n n次迭代后达到的状态, r r r为混沌参数,可以通过改变 r r r的取值来产生不同的混沌行为。该方程式能够产生丰富的动态行为,如周期、混沌和吸引子等。

混沌Logistic系统被广泛应用在各个领域中,如生态学、物理学和社会科学等,也被用于密码学和数据加密中。在工业和商业中,混沌Logistic系统也被用于数据编码和保密通信。

clear
clc
close all
%分岔图
%离散系统

%% 1Logistic系统
%% 1.1Logistic系统 两个典型的a,进行迭代的效果
d=0.004;
x=d:d:1-d;
Nx=length(x);
BF=zeros(1,Nx);
a1=2.1;
a_k1=a1;%第一个a=2.1
a2=3.3;
a_k2=a2;%第二个a=3.3
x1=x;
x2=x;
%在系统中迭代50次
for m=1:50
    %把结果绘图
    f1=figure(1);
    set(f1,'Color',[1,1,1])
    clf
    subplot(1,2,1)
    plot(a1*ones(size(x1)),x1,'.')
    ylim([0,1])
    text(a1-0.8,0.5,['a1=',num2str(a1)])
    text(a1-0.8,0.4,['迭代次数',num2str(m)])
    subplot(1,2,2)
    plot(a2*ones(size(x1)),x2,'.')
    ylim([0,1])
    text(a2-0.8,0.5,['a2=',num2str(a2)])
    text(a2-0.8,0.4,['迭代次数',num2str(m)])
    pause(0.1)
    %更新下一次迭代
    x1=Logistic(x1,a_k1);
    x2=Logistic(x2,a_k2);
end

%% 1.2 不同a,绘制分岔图
%初始种群采用均匀分布
d=0.005;
x=d:d:1-d;
a=0:0.004:4;%把a采集的足够密,就可以绘制随参数a变化的分岔图

Nx=length(x);
Na=length(a);
BF=zeros(Na,Nx);%初始化最终储存的矩阵

for k=1:Na
    a_k=a(k);
    x1=x;
    %在系统中迭代200次
    for m=1:200
        x1=Logistic(x1,a_k);
    end
    %把结果保存
    BF(k,:)=x1;
end

%画图
figure()
hold on
for k=1:Na
    a_k=a(k);
    plot(a_k*ones(1,Nx),BF(k,:),...
        'LineStyle','none','Marker','.','MarkerFaceColor','k','MarkerEdgeColor','k',...
        'MarkerSize',1)
end
hold off
xlabel('a')

%% 1.3 不同a 动图,把上面那个分岔图的过程展示出来
d=0.005;
x=d:d:1-d;
a=0:0.004:4;

Nx=length(x);
Na=length(a);
BF=ones(Na,1)*x;
BFx=a'*ones(1,Nx);
%在系统中迭代100次
for m=1:90
	%绘制图片
    f3=figure(3);
    clf
    scatter(BFx(:),BF(:),0.5,'k','MarkerEdgeAlpha',0.5)
    text(0.7,0.6,['迭代次数',num2str(m)])
    xlabel('a')
    ylabel('x')
    set(f3,'Color',[1,1,1])
    pause(0.1)
    
	%迭代更新
    for k=1:Na
        a_k=a(k);
        x1=BF(k,:);
        x1=Logistic(x1,a_k);
        %把结果保存
        BF(k,:)=x1;
    end
end

%% 1.4 不同a上颜色
d=0.002;
x=d:d:1-d;
a=0:0.002:4;
Nx=length(x);
Na=length(a);
BF=zeros(Na,Nx);

for k=1:Na
    a_k=a(k);
    x1=x;
    %在系统中迭代250次
    for m=1:250
        x1=Logistic(x1,a_k);
    end
    %把结果保存
    BF(k,:)=x1;
end
%上颜色
BF_C=zeros(size(BF));
for k=1:Na
    BF_k=BF(k,:);
    [N,~,bin] = histcounts(BF_k,[0:0.01:1]);%统计每个小区间,点的数量,作为颜色
    BF_C(k,:)=N(bin);%记录各个点的颜色
end
BFy=BF;
BFx=a'*ones(1,Nx);
figure()
scatter(BFx(:),BFy(:),0.5,BF_C(:),'MarkerEdgeAlpha',0.5)
caxis([0,20])
colormap(jet)
ylim([0,1]);
xlim([2,4]);
xlabel('\lambda' )
ylabel('r')
% set(gca,'XLim',[-1 1])  		% X轴显示范围
set(gca,'YTick',[0:0.2:1]) 	% 设置坐标刻度
set(gca,'XTick',[2:0.4:4]) 	% 设置坐标刻度
%% 后置函数
function x2=Logistic(x1,a)
%Logistic系统
%x(n+1)=a*(1-x(n))*x(n)
x2=a*(1-x1).*x1;
end

在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只佳佳怪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值