Logistic-tent混沌映射原理
代码实现
clc;clear all;close all
axis([0,1,0,1]);
x0=0.1;t=800;M=850;
r=0:0.005:1;
[m,n]=size(r);
hold on
for i=1:n
if x0<0.5
x(1)=mod(r(i)*x0*(1-x0)+(4-r(i))*x0/2,1);
else
x(1)=mod(r(i)*x0*(1-x0)+(4-r(i))*(1-x0)/2,1);
end
for j =2:M
if x(j-1)<0.5
x(j)=mod(r(i)*x(j-1)*(1-x(j-1))+(4-r(i))*x(j-1)/2,1);
else
x(j)=mod(r(i)*x(j-1)*(1-x(j-1))+(4-r(i))*(1-x(j-1))/2,1);
end
end
plot(r(i),x,'b.','Markersize',2);
xlabel('r');ylabel('x(i)');
end
Logistic-tent混沌映射结果
可以看出非常均匀,映射效果极佳。
(1)当r=0.3,x(1)=rand时:
x(1)=rand;
r=0.3;
for j=2:5000
if x(j-1)<0.5
x(j)=mod(r*x(j-1)*(1-x(j-1))+(4-r)*x(j-1)/2,1);
else
x(j)=mod(r*x(j-1)*(1-x(j-1))+(4-r)*(1-x(j-1))/2,1);
end
end
figure
plot(x,'.')
xlabel('维度')
ylabel('混沌值')
figure
hist(x)
xlabel('混沌值')
ylabel('频数')
(2)当r=0.1,x(1)=rand时:
x(1)=rand;
r=0.1;
for j=2:5000
if x(j-1)<0.5
x(j)=mod(r*x(j-1)*(1-x(j-1))+(4-r)*x(j-1)/2,1);
else
x(j)=mod(r*x(j-1)*(1-x(j-1))+(4-r)*(1-x(j-1))/2,1);
end
end
figure
plot(x,'.')
xlabel('维度')
ylabel('混沌值')
figure
hist(x)
xlabel('混沌值')
ylabel('频数')
由此可以看出Logistic-tent混沌映射值分布在[0,1]之间十分均匀,映射效果极佳。