《非线性动力学之一瞥Lorenz系统.doc》由会员分享,可在线阅读,更多相关《非线性动力学之一瞥Lorenz系统.doc(16页珍藏版)》请在三一办公上搜索。
1、0 前言线性系统是状态变量和输出变量对于所有可能的输入变量和初始状态都满足叠加原理的系统;非线性系统就是这些量不满足叠加原理的系统。非线性系统在日常生活和自然界中不胜枚举,也远远多于线性系统。非线性动力学是研究非线性系统的各种运动状态的定性和定量变化规律,尤其是系统的长时期行为。研究的对象主要有分叉、混沌和孤立子等。洛伦兹方程是美国气象学家洛伦兹在模拟天气这一非周期性现象时确定,这个方程的三个变量分别模拟温度、湿度和压力。可以得出结论,初期微小的差异随着时间推移差异会越来越大,洛伦兹基于此提出长期的天气预报是不可能的。这也被视为研究非线性混沌理论的开始,所以洛伦兹系统在研究非线性系统中具有举足
2、轻重的地位。本文借助洛伦兹系统对非线性进展简单的介绍。洛伦兹方程如下。方程中,、和都为实参数。实参不同,系统的奇点与数目也是不同的。1 奇点和稳定性1.1 奇点洛伦兹系统含有三个实参数,当参数变化,奇点的数目可能不同。首先,一定是系统的奇点。时,当时,系统仅有一个奇点;当时,系统还有另外两个奇点。下面仅解时的两个非原点奇点。令方程第一式得,第三式可得,将两式代入第二式得即,。1.2 奇点稳定性判别下面根据Liapunov稳定性判别方法,找出系统在原点处大围渐进稳定的条件,取Liapunov函数。考虑,的情况。如此有将洛伦兹方程代入上式,可得变换为二次型,系数矩阵为,如此系数矩阵负定的条件是。所
3、以该系统是大围渐进稳定的条件是,前提是,。Liapunov函数V总是存在的,只要构造出适宜的Liapunov函数,就可以通过Liapunov稳定性定理直接判断奇点的稳定性,而不需要求解非线性方程组。有的Liapunov函数不易构造,如此可以通过奇点处导算子的特征值来判断:假如所有的特征值实部都小于0,如此方程组在该奇点是局部渐进稳定的;假如特征值实部至少有一个为正,该奇点是不稳定的。仍以洛伦兹系统为例,求出导算子的特征值。特征矩阵的行列式特征方程为特征值显然,当,时,要使方程在原点处渐进稳定,必须小于0,因此两边同时平方可得因此显然使得系统在奇点渐进稳定。导算子的特征根的实部都不为0,它的Li
4、apunov稳定性可由特征值实部来判定;假如导算子的特征根实部有0存在,显然不能通过Liapunov定理判断,可以借助中心流形定理判断。特征根中,零实部特征根对应的特征向量构成的子空间比拟特殊,从这个解子空间出发的轨线是周期轨。前面计算得到,特征值中,可以使,此时,即三个特征值分别为特征向量分别为洛伦兹系统方程组不是标准形式,先将其化为标准形式,令即由洛伦兹方程中因此因为标准形为因此代入前一式可得假如只判断奇点的稳定性,只需计算其中心流形代入变换后的方程组下面用近似的方法求中心流形,即分别将和表示成幂级数的形式由条件可以使幂级数化为代入第一式可得展开可得比拟和的系数可得因此且得因此因此中心流上
5、的解满足因此1:时,当时;时,当时。因此时,奇点是稳定的。2:时,当时,远离原点;时,当时,远离原点。因此时,奇点是不稳定的。图 1.1 Lorenz系统中心流形2 分叉2.1 概念分叉是指在含有参数的系统中,参数值连续地变化到某一值时系统的定性或定量行为发生了质的变化。这种变化包括奇点的数目和稳定性变化、闭轨数目的变化以与同宿轨、异宿轨的出现或消失。2.2 洛伦兹系统的奇点分叉通过前面的讨论可以发现,洛伦兹系统随参数的变化奇点的数目和奇点稳定性将发生改变,这就是奇点分叉的实例。1奇点数目的改变: 前面计算奇点数目时发现,奇点的数目与无关,而与和有关。假如,时有三个奇点和;时就有一个奇点。假如
6、,恰与之相反。假如,也只能有一个奇点。2奇点稳定性的变化因为有三个参数,奇点不唯一且变化,所以讨论起来比拟麻烦。下面以奇点为例分析。特征值为显然,从负变为正时,从正变为负,奇点一定从不稳定变为稳定。但是时,出现了零特征根的情形,在这一点是否稳定需要通过中心流形来判断,方法同前面讨论时的一样。3hopf分叉Hopf分叉是指导算子的特征值沿复平面的上方或下方即不是通过实轴穿过虚轴。下面试讨论洛伦兹系统在处的Hopf分叉。对于,显然是实数,变化经过实轴穿过虚轴,显然不是Hopf分叉。只有和有可能不经过实轴。不经过实轴时,实部的变化与有关。令,得,时实部大于0。图 2.1 的正负分情况讨论如图 2.1
7、:时,要求时,要求时,因此不存在Hopf分叉。图 2.2 分叉类型3 混沌吸引子用数值方法计算出的lorenz吸引子图 3.1 ,图 3.2 和红色,图 3.2 ,红色和黄色,C语言代码#include stdafx.h#include stdafx.h#define N 4001void main()double sigma,mu,beta,delta;double xN,yN,zN;int i;sigma=10;mu=28;beta=8/3;delta=0.01;x0=1;y0=0;z0=0;for(i=1;i=N-1;i+)xi=xi-1+delta*sigma*(-xi-1+yi-1);yi=yi-1+delta*(-xi-1*zi-1-yi-1+mu*xi-1);zi=zi-1+delta*(xi-1*yi-1-beta*zi-1);FILE*out=fopen(lorenz.csv,w);for(i=0;i=N-1;i+) fprintf(out,%f,xi);fprintf(out,n);for(i=0;i=N-1;i+) fprintf(out,%f,yi);fprintf(out,n);for(i=0;i=N-1;i+) fprintf(out,%f,zi);fprintf(out,n);fclose(out);