混沌系统在图像加密中的应用(一维离散logistic混沌映射)
一、logistic混沌映射
Logistic混沌映射,也叫虫口模型,表达式简单且性能优良,是最常用的混淹映射之一,表达式如下:
x
n
+
1
=
f
(
x
n
)
=
μ
⋅
x
n
⋅
(
1
−
x
n
)
0
<
x
n
<
1
,
n
=
1
,
2
,
⋯
{{x}_{n+1}}=f\left( {{x}_{n}} \right)=\mu \cdot {{x}_{n}}\cdot \left( 1-{{x}_{n}} \right) \\ 0<{{x}_{n}}<1,n=1,2,\cdots \\
xn+1=f(xn)=μ⋅xn⋅(1−xn)0<xn<1,n=1,2,⋯
其中
[
x
n
∈
(
0
,
1
)
]
,
[
x
n
+
1
∈
(
0
,
1
)
]
[{{x}_{n}}\in (0,1)],[{{x}_{n+1}}\in (0,1)]
[xn∈(0,1)],[xn+1∈(0,1)]
当
[
3.57
≤
μ
≤
4
]
[3.57\le \mu \le 4]
[3.57≤μ≤4]
系统进入混沌状态。
二、logistic特性分析
1.时序图
通过N次迭代方程,描绘出每一步的轨迹,称之为时序图,这里我们迭代公式1000次,当μ=3.5时,Logistic混沌映射时序图如下,时序图并不是乱序的,因此不是混沌状态。
当μ=3.8时,Logistic混沌映射时序图如下,时序图是乱序的,因此是混沌状态。
2.分插图
混沌系统的分岔图(Bifurcation diagram)是一种用于可视化系统演化过程中的稳定性和周期性的工具。在混沌系统中,微小的参数变化可能会导致系统的行为发生显著变化,从而产生分岔现象。
混沌系统的分岔图通常使用系统参数作为横坐标,而系统状态、稳定点或周期轨道的值作为纵坐标。通过系统参数的逐步改变,我们可以观察到纵坐标上的分岔现象。每一个参数值对应一个系统状态,而分岔图显示了这些状态的演化。
在Logistic分岔图中,我们会看到分岔形成。当参数μ处于[3.57,4]这个范围内时,系统状态突然分叉,导致系统同时存在多个稳定状态或周期状态。这些分支以分岔的方式延伸,形成了分岔图上的特征结构。
分岔图可以提供对混沌系统行为的直观理解。它展示了系统状态随参数变化而发生的相变现象,包括稳定状态、周期状态和混沌状态。通过观察分岔图,我们可以研究系统的动力学行为,如周期倍增、周期减半和混沌吸引子的特征。
3.李亚普洛夫指数图
李亚普洛夫指数和分岔图是对应的,当分岔图出现混沌时,李亚普洛夫指数会大于0,当分岔图没出现混沌时,李亚普洛夫指数会小于0。李亚普洛夫指数通常用 λ 表示。一个动力系统可能存在多个李亚普洛夫指数,每个指数对应系统在不同方向上的指数增长或指数衰减。
李亚普洛夫指数可以用于判断一个动力系统的混沌特性。如果系统的至少一个李亚普洛夫指数大于零,那么系统就是混沌的。此外,李亚普洛夫指数还可以用于测量系统的敏感性依赖性,即初始条件的微小变化可能会导致系统演化出完全不同的轨道。
求解一维离散混沌映射的李亚普洛夫指数需要使用以下公式:
李亚普洛夫指数 (λ) = lim (n → ∞) [1/n * Σ log(|f’(x_i)|)]
其中,
λ 是李亚普洛夫指数。
n 表示迭代次数,将其趋近于无穷以获得准确结果。
f’(x_i) 是混沌映射函数在点 x_i 处的导数值。
Σ 表示求和符号,对所有 i 进行求和。
log 表示以自然对数为底的对数函数。
对于Logistic混沌映射,我们需要按照以下步骤计算李亚普洛夫指数:
(1)初始化初始条件 x_0。
(2)迭代计算混沌映射函数的值 f(x_i) 并记录每一次的值。
(3)计算导数值 f’(x_i)。
(4)对于每一次迭代记录的 f’(x_i) 值,计算 log(|f’(x_i)|)。
(5)将所有 log(|f’(x_i)|) 的值进行累加求和。
(6)将累加求和的值除以迭代次数 n。
得到的结果即为李亚普洛夫指数 (λ)。可以看出,当我们n=1000次时,μ处于[3.57,4]这个范围内时,λ是大于0的。
三、python代码
这里我给出logistic相图的python代码
import matplotlib.pyplot as plt
def logistic(x,n):
for i in range(n):
x1 = u*x*(1-x)
x = x1
listx.append(x)
listt.append(i)
if __name__ == '__main__':
listx = []
listt = []
u = 3.8 # 系统参数
logistic(0.1, 1000)
fig1 = plt.figure()
plt.scatter(listt, listx, c="b", s=0.75)
plt.grid()
plt.xlabel(r'$t$')
plt.ylabel(r'$x$')
plt.show()
1维混沌映射 logistic LE指数图代码链接:
https://download.csdn.net/download/weixin_42207434/88270027?spm=1001.2014.3001.5501
1维混沌映射logistic分岔图python代码链接
https://download.csdn.net/download/weixin_42207434/88270002?spm=1001.2014.3001.5501