大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE稳定放心使用
时滞混沌系统
时滞混沌系统即具有混沌运动的时滞系统。时滞系统是系统中一处或几处的信号传递有时间延迟的系统。所谓混沌是指具有以下特点的一类现象:由确定性产生;具有有界性;具有非周期性;初始条件具有极端敏感性。
时滞系统
在工程中.许多动力系统可由状态变量随时间演化的微分方程来描述。随着混沌研究的不断深入,研究人员发现相当一部分动力系统的状态变量之间存在时间滞后现象,即系统的演化趋势不仅与系统当前的状态相关,而且还与过去某一时刻或若干时刻的状态有关。于是将这类动力学系统通称为时滞动力学系统。
时滞动力学系统已经不能简单的用微分方程描述,其数学模型是时滞微分方程(Delay Differential Equations)。假设具有时滞的连续微分动力系统为:
x ˙ = F ( x , x τ , t ) \dot x=F(x,x_\tau,t) x˙=F(x,xτ,t)
对于上述微分方程,其初始条件要在初始一段时间上给出,一般由定义在 [ − τ , 0 ] [-\tau,0] [−τ,0]的连续可微函数确定,系统在t>0后的行为不仅依赖于初始时刻的状态,而且与 [ − τ , 0 ] [-\tau,0] [−τ,0]时间段的运动有关,因此时滞系统的空间解是无穷维的。与常微分方程比较可知,当 τ = 0 \tau =0 τ=0时,时滞微分方程退化为常微分方程。由于时滞微分方程 τ \tau τ不等于0,使得时滞对系统的动态特性比常微分方程系统的更加复杂,有着更加丰富的动力学行为。
判断依据
如何判断一个时滞系统是否处于混沌运动状态,接下来从常用混沌特性分析方法推广到时滞系统,从下述五个方面来分析判断混沌运动
(1)时间历程图
对时滞微分方程进行数值计算,画出解状态变量随时间t变化的时间历程图,混沌系统随时间变化的图是貌似随机的。
(2)初值敏感性测试图
对初始作微小的扰动,稳定系统的初值扰动不明显;无界系统的初值扰动则会无限放大;而混沌系统的初值微小扰动后的轨道上的点与原轨道上的对应点之间的距离在一段时间内呈指数放大,由于混沌运动的有界性,之后距离就会呈随机振动。
(3)相图
利用数值计算结果,作出相轨迹随时间t面变化轨线。如果在相空间中,出现闭轨线则系统存在周期解;当经过无数个循环,无法获得封闭轨线,则系统可能产生混沌运动,出现吸引子。
(4)功率谱分析
可以通过决定系统长期演化的任一单变量时间序列来研究系统的混沌行为,对其在频域上进行研究。如果出现连续功率谱,则可认为出现混沌。
(5)Lyapnov指数
判断系统是否是混沌的重要的定量方法为是否有正的Lyapunov指数。Lyapunov指数是反映动力学系统特性的一个重要定量指标,它表明了在相空间中系统相邻轨道间收敛或发散(分离)的长期平均指数。对时滞动力系统,其初始条件为连续函数,因此其Lyapunov指数与作为初始条件的连续函数有关。定义在初始时间段的连续函数是不可数的,那么系统的Lyapunov指数的个数也是不可数的。计算时滞动力系统的Lyapunov指数是复杂的工作。在计算过程中,还可能出现奇异情况而使得结果不准确。实际上判断系统是否混沌,只要最大Lyapunov指数大于零就可以作为混沌存在的一个可靠依据。
Mackey-Glass系统
时滞混沌系统系统最典型的一个例子就是Mackey-Glass系统。
x ˙ ( t ) = − b x ( t ) + a x ( t − τ ) 1 + x c ( t − τ ) \dot x(t)=-bx(t)+\frac{ax(t-\tau)}{1+x^c(t-\tau)} x˙(t)=−bx(t)+1+xc(t−τ)ax(t−τ)
其中参数a=0.2,b=0.1,c=10,时滞 $\tau $=16.8时,M-G系统是混沌的,且正的Lyapunov指数个数随时滞的增长而增加,f=300时,正的Lyapunov指数个数接近15。从以上系统说明,时滞混沌系统可以通过极简单结构产生具有极高随机性和不可预测性的时间系列.这正是信息保密安全通信所需要的特征。
实验结果
选取系统参数a=0.2,b=0.1,c=10,时滞 τ \tau τ=23,此时Mackey-Glass系统处于混沌状态。从定性的角度画出系统的时间历程图、初值敏感性测试图和相图。对系统初步判断,然后从定量的角度进行功率谱分析,计算出最大Lyapunov指数来判断Mackey-Glass系统是否处于混沌运动状态。
首先选取初始函数为 x 0 ( t ) = c o s ( t ) , t ϵ [ − τ , 0 ] x_0(t)=cos(t),t\epsilon [-\tau,0] x0(t)=cos(t),tϵ[−τ,0],舍去前面300个暂态点,得到 x 0 ( t ) x_0(t) x0(t) 随时间t的变化波形如图1(左上子图1),图1(右上子图2)为对初始函数加 1 0 − 8 10^{-8} 10−8扰动的 x 1 ( t ) x_1(t) x1(t) 值波形,图1(左下子图3)为它们的差值;图1(右下子图4)为 x ( t − τ ) x(t-\tau) x(t−τ)与 x ( t ) x(t) x(t)两个平面之间的相图。
时滞混沌系统具有极简单结构却复杂的动力学特性。将其引入混沌应用研究,首先分析时滞混沌系统的混沌特性是十分重要。
实验代码
import numpy as np
import matplotlib.pyplot as plt
#绘制三维图像
import mpl_toolkits.mplot3d as p3d
''' 时滞混沌系统Mackey-Glass,Euler(欧拉)公式进行求解,其他方法也可。。。 '''
def Mackey_Glass(x,h,a,b,c,tao,T):
#这里t是迭代周期,公式x(t)中的t是t*h
for t in range(tao,tao+T):
x[t+1]=x[t]+h*(-b*x[t]+a*x[t-tao]/(1+x[t-tao]**c))
return x
def main():
#设定参数
a=0.2
b=0.1
c=10
tao=23
#迭代次数
T=6001
#初值是用连续函数定义的
#迭代步长,应满足tao%h=0,否则存在误差
h=1
#tao转成离散序列索引
tao=int(tao/h)
#前tao+1个数是[-tao,0]的系统初值,后T个数是迭代T次
#dtype默认是int32,要指定dtype
x=np.arange(0,T+tao+1,dtype=np.float64)
x1=np.arange(0,T+tao+1,dtype=np.float64)
x2=np.arange(0,T+tao+1,dtype=np.float64)
#[-tao,0]之间的初始条件
for i in range(tao+1):
x[i]=np.cos(i)
#对原初始函数加10的负8次方扰动,对比结果
x1[i]=np.cos(i)+10**(-8)
x2[i]=np.cos(i)+10**(-8)
#产生时滞混沌序列
x=Mackey_Glass(x,h,a,b,c,tao,T)
x1=Mackey_Glass(x1,h,a,b,c,tao,T)
#结果展示
plt.rcParams['font.sans-serif'] = ['SimHei'] # 中文乱码
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
plt.subplot(221)
#舍去序列中前300个暂态点,这里采用t的值而不是索引
t=np.arange(300,T+tao+1)*h
plt.scatter(t,x[300:],s=1)
plt.title('$x_0(t)=cos(t),t\\in[-\\tau,0]$')
#子图2
plt.subplot(222)
plt.scatter(t,x1[300:],s=1)
plt.title('$x_0(t)=cos(t)+10^{-8},t\\in[-\\tau,0]$')
plt.subplot(223)
plt.scatter(t,x[300:]-x1[300:],s=1)
plt.title('$x_0(t)$与$x_1(t)$的差值')
plt.subplot(224)
plt.plot(x[300:T],x[300+tao:tao+T])
plt.title('x(t)与x(t+tao)的相图')
# #设置子图默认的间距
plt.tight_layout()
#显示图像
plt.show()
if __name__=='__main__':
main()
参考
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187259.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...