基于Matlab的复摆混沌行为研究

基于Matlab的复摆混沌行为研究

摘要

自然界中存在无数的无序、非平衡和随机的复杂系统。混沌现象出现于非线性系统中,它揭示了有序与无序的统一,确定性与随机性的统一。混沌运动是非线性动力学系统所特有的复杂运动状态,是一种貌似随机的不规则运动,混沌的发现被誉为继相对论和量子力学后的第三次物理学革命,混沌的研究一直备受学术界的关注。

Matlab是一个适用于科学计算、工程设计、数值分析等领域的各种计算、演算和仿真分析的高性能的优秀数学软件。混沌理论研究的是非线性问题,难以用解析式表达,只能采用数值解法,而Matlab在这方面便可展示其强大的潜能。

本论文利用了Matlab软件研究经典的混沌现象的特征,并且对混沌的特点以及形成过程进行模拟分析研究;并用Matlab模拟了复摆运动行为及混沌现象,对不同周期作出相图及奇怪吸引子,可以看到随着外驱动力的增加,复摆振动逐渐由倍周期分岔走向混沌。

关键词:混沌,Matlab,复摆,倍周期分岔,奇怪吸引子

THE COMPLEX BEHAVIOR OF CHAOTIC PENDULUM

BASED ON MATLAB

ABSTRACT

There are many disorders, non-equilibrium, random complex systems in the nature. Chaos appears in nonlinear systems, it reveals the unity of order and disorder, certainty and randomness of unity. Chaos is a nonlinear dynamic system unique to the complex state of motion, is a seemingly random, irregular motion, chaos, following the discovery of relativity and quantum mechanics known as the third after the revolution in physics, Chaos has always been of academic attention.

Matlab is a suitable for scientific computing, engineering design, numerical analysis of the various fields of computing, calculation and simulation analysis of high-quality mathematical software.Chaos theory study nonlinear system which is difficult to express use analytic style and colud only have numerical solution, and Matlab will demonstrate its strong potential in this respect.

In this thesis, a Matlab software for classical chaos characteristics, and the chaos of the characteristics and formation process of simulation studies; and use Matlab to simulate the pendulum movement behavior and chaotic phenomena, on different cycles to the phase diagram and the strange attractor, As you can see the increase in external driving force, pendulum vibration gradually from period-dou -bling bifurcation to chaos.

KEY WORDS: Chaos, Matlab,compound pendulum,bifurcation,strange attractor

目录

前言 (1)

第一章Matlab基础及应用 (2)

§1.1 Matlab简介 (2)

§1.2 Matlab基础 (3)

§1.2.1 基本运算 (3)

§1.2.2 绘图功能 (4)

§1.2.3 数值分析 (7)

§1.2.4 M文件及程序调试 (8)

§1.3 Matlab的简单应用 (8)

§1.4 本章小结 (13)

第二章混沌行为与特性 (14)

§2.1 混沌理论 (14)

§2.1.1 简单的数学游戏 (14)

§2.1.2 “蝴蝶效应” (15)

§2.2 用Matlab演示混沌的基本性质 (16)

§2.2.1 用Matlab产生标准的混沌信号 (16)

§2.2.2 倍周期分岔——通向混沌之路 (17)

§2.2.3 初值敏感性 (20)

§2.3 本章小结 (21)

第三章用Matlab模拟复摆振动中的混沌行为 (22)

§3.1 复摆运动模型与振动方程 (22)

§3.2 复摆运动状态的模拟研究 (23)

§3.2.1 无驱动力无阻尼的复摆运动 (23)

§3.2.2 无驱动力有阻尼的复摆运动 (25)

§3.2.3 有驱动力有阻尼的复摆运动,受迫运动 (27)

§3.3 本章小结 (34)

结论 (35)

参考文献 (36)

致谢 (37)

前言

自然界中存在无数的无序、非平衡和随机的复杂系统。混沌现象出现于非线性系统中,它揭示了有序与无序的统一,确定性与随机性的统一。混沌现象是指确定性系统中出现的一种类似随机过程的行为。混沌运动是非线性动力学系统所特有的复杂运动状态,是一种貌似随机的不规则运动,混沌的发现被誉为继相对论和量子力学后的第三次物理学革命,混沌的研究一直备受学术界的关注。

复摆运动是大学物理中基本的力学模型之一,在教学中通常只考虑其简谐振动的情况,内容比较单一,没有太多的研究空间。实际上,当复摆在驱动力矩及阻尼力矩的作用下,将出现复杂的非线性运动,而且在一定的条件下可通过倍周期分岔逐渐进入到混沌运动状态。如果将复摆的这些非线性振动特性利用计算机模拟出来,不仅可以加深我们对复摆运动规律的认识,给我们提供一个宽阔的研究空间,而且还有助于我们了解物理学的发展前沿,开阔我们的视野。

Matlab是集数值运算、符号运算、数据可视化、数据图文字统一处理、系统动态仿真等功能于一体的数学软件,具有很高的编程效率,在线性代数、矩阵分析、数值计算及优化、系统动力学、建模与仿真等领域中得到广泛应用。混沌理论研究的是非线性问题,难以用解析式表达,只能采用数值解法,而Matlab在这方面便可展示其强大的潜能。

本论文第一章对Matlab进行了简单介绍,并且详细介绍了Matlab的基本功能及在物理中的简单应用,第二章从简单的数学游戏和“蝴蝶效应”入手,说明了混沌运动主要特征及性质,并且用Matlab来演示其特性。第三章从复摆的运动方程出发,利用计算机进行数值求解,研究复摆从周期运动转化为混沌运动的过程。

第一章Matlab基础及应用

§1.1 Matlab简介

Matlab(Matrix Laboratory)是美国MathWorks公司开发的一套高性能的数值分析和计算软件,用于概念设计,算法开发,建模仿真,实时实现的理想的集成环境,是目前最好的科学计算类软件之一。

Matlab将矩阵运算、数值分析、图形处理、编程技术结合在一起,为用户提供了一个强有力的科学及工程问题的分析计算和程序设计工具,它还提供了专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能,是具有全部语言功能和特征的新一代软件开发平台[1]。

在欧美等国家的高校,Matlab已成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具,成为攻读学位的本科、硕士、博士生必须掌握的基本技能。在设计研究单位和工业开发部门,Matlab被广泛的应用于研究和解决各种具体问题。在中国,Matlab也已日益受到重视,短时间内就将盛行起来,因为无论哪个学科或工程领域都可以从Matlab中找到合适的功能。

1983年美国Mathworks公司首次推出Matlab (Matrix Laboratory),之后其功能不断扩充,版本不断升级,1993年推出4.0版,95年4.2版,97年5.0版,99年5.3版,5.X版无论是界面还是内容都有长足的进展,其帮助信息采用超文本格式和PDF格式,可以方便的浏览。至2001年6月推出6.1版,2002年6月推出6.5版,继而推出6.5.1版、7.0版、7.1版、7.3(Matlab 2006b)版,最新版本为7.4(R2007a)版[1]。

Matlab的主界面是一个高度集成的工作环境[1],有4个不同职责分工的窗口[3]。它们分别是命令窗口(CommandWindow)、历史命令窗口(CommandHistory)、当前目录窗口(CurrentDirectory)和工作空间窗口(Workspace)。除此之外,Matlab6.5之后的版本还添加了开始按钮(Start)。

菜单栏和工具栏在组成方式和内容上与一般应用软件基本相同或相似。Matlab 6.5的界面是一个web浏览器形式的工作环境,如图1-1所示。

图1-1 Matlab 6.5的界面

§1.2 Matlab基础

§1.2.1 基本运算

Matlab能识别一般常用的加(+)、减(-)、乘(*)、除(/)、幂次(^)等数学运算符号[2],因此在Matlab下进行基本运算,在Matlab命令窗口(Command Window)内提示符(>>)之后输入表达式,并按下Enter键即可。例如:>>(5*2+3.5)/5

>>ans =

2.7000

说明:

1、若不想让Matlab每次都显示运算结果,只需在表达式最后加上分号(;)即可。

2、可用符号(%)对Matlab程序命令进行注释,百分号之后的文字被忽略不执行,但它的使用可提高Matlab程序的可读性。

3、Matlab可同时执行以逗号(,)或分号(;)隔开的数个表达式。

4、若一个数学运算式太长,可用三个(...)将其延伸到下一行。

Matlab是一个科学计算软件,因此它可以支持许多数学函数。如表1-1:

表1-1常用的数学函数

命令说明

abs(x) x的绝对值

sin(x) x的正弦值

exp(x) 自然指数x e

log(x) 自然对数ln x

sqrt(x) x的开平方

x.^2 x的开方

§1.2.2 绘图功能

Matlab的plot是最基本的绘图命令,可以对一组x坐标及相应的y坐标,进行描点绘图。

1、基本绘图命令:

plot(x,y, '*b') %绘出的图形数据点均用*做蓝标记

title('my first plot') %绘出的图形名称

xlabel('x'), ylabel('y') %绘出的图形x,y轴名称

gtext('x'), gtext('y') %对曲线名称进行标注

表1-2 plot命令的曲线颜色选项参考表

标识符Y m C r g b w k

颜色黄品红青红绿蓝白黑

表1-3 plot命令的曲线符号、格式参考表

标识符. o ×+ - * :--

线点型点圆圈×号+号实线*线虚线长划线

2、多条曲线的绘制:

(1)plot(t,[y:y1]) %绘出两个具有相同自变量的图形

(2)plot(t,y1,'b'), hold on,plot(t,y2,'r') %绘出两种不同颜色的图形

(3)plotyy (t,y1,t,y2) %绘出两条刻度不同的y轴[1]

3、绘制三维空间曲线

程序命令:plot3(x,y,z),例如:

>>z=0:0.1:4*pi;x=cos(z);y=sin(z);plot3(x,y,z)

图1-2用plot3命令画出的三维空间曲线

4、在一个窗口产生多个图形,可在plot命令之前加上subplot

程序命令:subplot(m,n,p),表示将窗口划分为m×n个区域,而下一个命令plot命令则会绘图与第p个区域,其中p的算法从左向右,一行一行算起,例如:

>>x=0:0.1:4*pi;

>>subplot(2,2,1);plot(x,sin(x));%一个窗口产生4个图,此为左上角图

>>subplot(2,2,2);plot(x,cos(x));% 此为右上角图

>>subplot(2,2,3);plot(x,sin(x).*exp(-x/5));% 此为左下角图

>>subplot(2,2,4);plot(x,x.^2);% 此为右下角图

图1-3 用subplot命令在一个窗口绘出四个图形

5、改变图轴长宽比的命令,一般图轴长宽比的默认值为窗口的窗口比例,但我们可在axis命令之后加上不同的字符串来控制[2],例如:

>>t=0:0.1:2*pi;

>>x=3*cos(t);

>>y=sin(t);

>>subplot(2,2,1);plot(x,y);axis normal

>>subplot(2,2,2);plot(x,y);axis square

>>subplot(2,2,3);plot(x,y);axis equal

>>subplot(2,2,4);plot(x,y);axis equal tight

图1-4 在axis命令后加不同的字符串控制

表1-4中是一些改变目前图轴长宽比的命令,这些命令必须在plot之后调用才能发挥作用。

表1-4 改变图轴长宽比例的命令

命令说明

axis normal 使用默认长宽比(等于图形长宽比)

axis square 长宽比例为1

axis equal 长宽比例不变,但两轴刻度一致

axis equal tight 两轴刻度比例一致,且图轴紧贴图形

axis image 两轴刻度比例一致(适用于图像显示)

6、要画出网格线或画出图轴外围的方形,可用grid与box命令。

表1-5 grid和box命令

命令说明

grid on 画出网格线

grid off 取消网格线

box on 画出图轴外围的方形

Box off 画出图轴外围的方形

§1.2.3 数值分析

Matlab可以用于解代数方程、微积分、复合导数、积分、二重积分、有理函数、微分方程、泰勒级数展开、寻优等等,可求得解析符号解。

1、求方程:432

379230

x x x

++-=的全部根。

>>p=[3,7,9,0,-23]; %建立多项式系数向量

>>x=roots(p) %求根

>> x =

-1.8857

-0.7604 + 1.7916i

-0.7604 - 1.7916i

1.0732

2、求积分:1

log(1) x x dx

+

?

>>quad('x.*log(1+x) ',0,1)

>>ans =

0.2500

3、用Matlab的ODE命令求解常微分方程,Matlab解常微分方程组的能力很强而且很方便,对于我们在普通物理学中遇到的大多数动力学方程都可以用命ode45求解[3]。

Matlab只能解一阶的常微分方程组,高阶的常微分方程需要转化成一阶方程组才能求解。对于二阶常微分方程(,,,)0

F x x x t=,首先需要化成显式形式(,,)

x f x x t

=,然后令(1)

y x

=,(2)

y x

=,则二阶常微分方程化为两个一阶常微分方程组成的方程组,从而使问题得到解决。

(1)(2)(2)((1),(2),)dy y dt dy f y y t dt == (1-1)

下一节我们将举例说明如何用命令ode45求解常微分方程。

§1.2.4 M 文件及程序调试

由Matlab 语句构成的程序文件称为M 文件,它以m 作为文件的扩展名。M 文件可分为两种:一种是主程序文件(Script File),是由用户为解决特定的问题而编制的;另一种是子程序文件(Function File),它必须由其它M 文件来调用,函数文件往往具有一定的通用性,并且可以进行递归调用。

1、主程序文件的格式特征如下:

(1)用clear ,close all 等语句开始,清除工作空间原有的变量和图形,以避免其它以执行程序残留数据对本程序的影响;

(2)如果文件中有全局变量,即在子程序中与主程序的变量,应在程序的起始部分注明;

(3)整个程序应按Matlab 标示符的要求起文件名,并加上后缀m 。

2、子程序文件的格式特征如下:

(1)由Function 起头,后跟的函数名必须与文件名相同;

(2)由输入输出变量,可进行变量传递;

(3)除非用global 声明,程序中的变量均为局部变量,运行后不保存在工作空间中。

§1.3 Matlab 的简单应用

本章用Matlab 辅助普通物理学学习的几个简单的例子,意在引导读者对Matlab 的功能特点及语句编程作一些简单的了解。

1、等量异号点电荷的电势分布

这个例子将介绍二维网格和三维曲面绘图的语句,物理情景是Oxy 平面上在2x =, 0y =处有一正电荷,2x =-,0y =处有一负电荷,根据公式04q

U r πε=计算两点电荷电场中电势的分布,2200()()r x x y y =-+-。

在命令窗口中输入:(lt22.m)

[x,y]=meshgrid(-5:0.2:5,-4:0.2:4); %建立数据网格

z=1./sqrt((x-2).^2+y.^2+0.01)-1./sqrt((x+2).^2+y.^2+0.01);%表示电势的表达式

mesh(x,y,z) %三维曲面绘图

运行结果如图1-5所示。

选定一系列的x和y后,就组成了平面上的网格点,再计算对应每一点上的z值。-5:0.2:5,-4:0.2:4分别是选取横坐标与纵坐标的一系列数值,meshgrid是生成数据网格的命令,[x,y]是xy平面上的坐标网格点。

z=1./sqrt((x-2).^2+y.^2+0.01)-1./sqrt((x+2).^2+y.^2+0.01) 是场点(x,y)的电势,其中sqrt()是Matlab默认的函数:求变量的平方根。当场点即在电荷处时,会出现分母为零的情况,因此在r里加了一个小量0.01,这样既可以完成计算,又不会对结果的正确性造成太大影响。

图1-5 等量异号点电荷的电势分布

另外需要注意的是表达式中的“./”、“.^”是对数组运算的算符,含义与数值运算中的“/”、“^”相同,不同之处是后者只对单个数值变量进行运算,而前者对整个数组变量中的所有元素同时进行运算。

mesh是三维网格作图命令,mesh(x,y,z)画出了每一个格点(x, y)上对应的z值(电势)。

2、光栅衍射[3]

光栅衍射的公式为:

22022sin sin sin sin (sin )sin sin sin a d I N I d a ππθθλλθππθθλλ???? ? ?????=????? ? ?????

(1-2) 其中22sin x

x D θ=+,x 为观察屏上点坐标,D 为观察屏到光栅的垂直距

离,a 为光栅各缝的宽度,d 为光栅常数,d a b =+,b 是相邻狭缝的间距;N 是光栅上狭缝的数目;λ是光波波长;0I 为常量。 令sin a παθλ=,sin d πβθλ

=,01I =,光栅衍射公式可化为 2222sin sin sin N I αβαβ=? (1-3)

采取国际单位制,并赋给公式中的各个物理量合理的数值,仿照双缝干涉的示例,编写Matlab 程序如下:(gs.m)

a=0.01e-3;b=0.04e-3;d=a+b;D=1; N=8; %为光栅各个参数赋值

lamda=600e-9; %光的波长

x=-0.2:0.0003:0.2;y=-1:0.03:1; %屏上观察平面的大小

[X,Y]=meshgrid(x,y); %组成数据网格

sinsita=X./(D^2+X.^2).^0.5; %计算sin(θ)

arfa=pi*a*sinsita./lamda; %计算α

beita=pi*d*sinsita./lamda; %计算β

I=(sin(arfa).^2./(arfa.^2)).*...

(sin(N.*beita).^2./(sin(beita).^2)); %相对光强分布

figure; %开辟图形窗口

plot(x,I); %画光强与观察点位置关系图

figure;view(0,90); %新开图形窗口并在xy 平面内观察

hold on

colormap(gray); %选择灰度色图

mesh(X,Y,I); %绘制衍射图样

运行结果如图1-6(a)和图1-6(b)所示:

图1-6(a) 光强与位置的关系图1-6(b) 光栅衍射的模拟图样

3、质点在万有引力作用下的运动

以万有引力的固定不动的施力质点

m所在位置为坐标原点O, 建立直

角坐标系Oxy,质点的运动微分方程为0

3

Gmm

mr r

r

=-,分量方程为:

00

2222

2222

()()

Gm Gm

x y

x y

x y x y

x y x y

=-=-

++

++

,(1-4)这两个方程都是二阶常微分方程,定义解矢量为y,令

(1)(2)(3)(4)

y x y x y y y y

====

,,,(1-5)可将方程组(1-4)化为:

()

()

3

222

3

222

(1)

(1)(2)

(2)

(1)(3)

(3)

(3)(4)

(4)

(1)(3)

Gm y

dy dy

y

dt dt y y

Gm y

dy dy

y

dt dt y y

?

==-

+

?

==-

+

(1-6)

(1)编写微分方程组函数文件yxlcfun.m:

function ydot=yxlcfun(t,y,flag,p) %函数首行,p为参量Gm0

ydot=[y(2); p*y(1)/sqrt(y(1).^2+y(3).^2).^3;

y(4); p*y(3)/sqrt(y(1).^2+y(3).^2).^3]; %建立微分方程组

(2)解微分方程的主程序yxlc.m:

p=-1; %取Gm0=1

y0=[-10 0.2 6 0.2;-25 0.5 5 0;-25 0.8 6 0]; %三组不同初始条件

plot(0,0, '*r') %画出O点

for i=1:3 %分别以不同初始条件解3次方程

[t,y]=ode45('yxlcfun',[0:0.1:300],y0(i,:),[ ],p);

hold on

axis([-25 25 -20 20]); %指定坐标范围

comet(y(:,1),y(:,3)) %绘出质点运动轨迹(x,y)

end %结束循环

解出的结果如图1-7所示:

图1-7 万有引力场中质点运动轨迹

由上面例子,我们初步了解了Matlab解常微分方程的一般过程,首先是建立微分方程函数文件,文件的格式如下:

fuction ydot=filename(t,y,p1,p2) %t,y是积分区间和解矩阵p1,p2是参数ydot=[关于t,y的表达式]; %ydot表示dy/dt

下面介绍ode45命令的用法,ode45的一般调用格式为:

[T,Y]=ode45('fun',tspan,y0,options,p1,p2,…)

其中含义如下表:

表1-6 ode45命令含义

Fun 求解的微分方程函数名

Tspan 单调递增(减)的积分区间[t0:tstep:tfinal]

y0 初始条件矢量

Options 用odeset建立的优化选项,一般用默认值,

为空矢量“[ ]”

p1,p2 传递给fun函数的参数

T,Y T是输出的时间列矢量,矩阵Y的每一个

列矢量是解的一个分量

各个项在命令中的位置和顺序不能颠倒,否则程序就会出错。

§1.4 本章小结

本章首先对Matlab进行了简单介绍,介绍了Matlab的发展及应用前景,然后详细介绍了基本运算功能,基本绘图功能,数值分析功能,并且简单介绍了M文件的编写及Matlab的程序调试。

由于Matlab是集数值运算、符号运算、数据可视化、数据图文字统一处理、系统动态仿真等功能于一体的数学软件,所以为了加深对Matlab的基本功能的理解,在本章第三节我们列举了几个简单的应用。

例1等量异号点电荷的电势分布,应用了Matlab三维网格作图命令mesh(x,y,z)和基本函数数值运算功能。

例2光栅衍射,应用了Matlab的基本运算功能,基本绘图功能,数值分析功能。

例3质点在万有引力作用下的运动,应用了Matlab的基本运算功能,基本绘图功能,在一个窗口下绘制多条图形,并且利用Matlab的ode45命令求解常微分方程,最后总结了Matlab的ode45命令解常微分方程的一般过程。

第二章 混沌行为与特性

§2.1 混沌理论

在现代物理的研究中,混沌理论的建立可能称得上是最重要的成就之一。混沌的发现被誉为继相对论和量子力学后的第三次物理学革命,混沌的研究一直备受学术界的关注。经典物理的确定论和近代量子物理的随机论,虽然都非常成功地解决了许多自然现象,但是这两种理论之间似乎存在着对立的矛盾,只适宜于不同的领域。在宏观领域似乎只应用经典物理理论,而在微观领域中更多是使用量子力学、统计物理的随机性理论。

按照确定性理论,物体运动以后在任何时间状态只是一个点,而按照随机性理论,物体的状态不是点,而是由点组成的点云,点云的密度就表示物体出现这种状态的概率大小。随着物理理论的深人研究,人们发现在传统的确定性理论领域中,一定的条件下也可以出现一定的随机性现象。这种随机性又不同于传统的随机性理论研究的随机性问题,因为它又有一定的确定性。这种现象的发现和解决从而诞生了混沌理论。

在经典物理中,物体的状态变化规律都是用非线性方程来描述的,只要给出一定初始条件,就可以解出这个非线性方程的解,事实上,如果对这些非线性方程进一步研究,就会发现,初始条件的变化,可以使这些本来是确定性的解出现随机性。

§2.1.1 简单的数学游戏

(1)令12n n X X +=,如果是利用二进制,按Modell (去掉整数,只留小数的操作)进行迭代[21],我们来看看其结果如何。

取0X = 0. 1000100100111001

1X =0.000100100111001

2X =0.00100100111001

3X =0.0100100111001

……

16X =0

也就是说,其结果最终趋向于零,或者说是趋向于一个点,一般我们把

这个点叫“汇”。而如果取0X '=0.1000100100111001100010010011100110

001……如此循环下去,我们就会发现,其结果应该有16种稳定的点,我们叫“稳定极限环”。

0X 和0X '虽然在数学上可以说是非常接近,只存在微小的不同,但是其

计算的结果却完全不同。这就说明,微小的初始条件的变化,可能引起不同的结果,这就是初始条件的敏感性。

(2)令1(1)n n n X X X λ+=-。[0,1]n X ∈

如果取λ=2,0X =0.2,则1X =0.32,2X =0.4352,3X =0.4912092,4X =0.49 999996,……n X =0.5,也就是其结果最终趋向于点X =0. 50。

如果取λ=3.3,0X =0.4,则1X =0.792,……8X =0.48016405,9X =0.823701 565。

如果继续迭代下去,其结果仍然是在8X 和9X 上循环,这就是说,其迭代的结果可能是两个,我们就叫“分岔”,像这样有两个结果的就叫“二周期”。

如果取λ=3.53,0X =0.2,则1X =0. 5648,……13X =0.507521713,14X =0.8 8230286,15X = 0.366578214, 16X =0.819661059。如果继续迭代下去,就是进行这四数字的循环,像这样的结果就叫“四周期”。

如果取λ=3. 9,那么我们就会发现其结果是无周期的,或者说是有无数的点,也就是进人完全随机状态,我们就叫“混沌”(chaos )。

§2.1.2 “蝴蝶效应”

美国的著名气象学家Edward Lorenz 从旋转的木桶实验[21],总结出包括12个方程的方程组,建立了一个仿真的气象模型,他认为尽管气象变化万千,但总是遵循经典的物理定律,只要知道一定的初始条件,那么利用这些方程总是可以把结果算出来的。这就是说按照传统的确定性理论,他就可以确定将来的气象变化的规律和任何时间的气象状态。这里需要说明的是,一般传统的科学家都认为,任何量的测量和获得都不可能是完全精确的,都有一定的近似,所以在进行计算的时候一般都采用一定的近似。因为他们认为,极小的影响和变化、差别是可以忽略不计的,事物运动之中都具有一定的收敛性,极小的差别不会引起大的影响。

Lorenz 在利用计算机进行计算的时候,一次,为了省时,他就把上次计算打印结果当作初始值输人了,然而,当他一小时以后回来的时候突然发现其结果却偏差极大。开始他以为是计算机出了问题,后来经过仔细的研究,

发现是由于初始值的微小差别导致其结果的极大偏差。因为那时候的计算机还很简单,存储只是6位,但是打印出来的只是3位,例如输入0. 532001,只能打印出来0.532,当时他认为这是极小差别,不会引起大的变化。但他的方程对这些微小的不同却是极其敏感的,他把这种现象叫作“蝴蝶效应”。意思就是:巴西的蝴蝶抖动一下翅膀,就可能在德克萨斯引起一场风暴。

蝴蝶效应说明了初始条件的重要性,也说明了科学的严谨。任何随意的忽略,都可能导致严重的后果。也正由此导致后来“混沌”理论的诞生。

§2.2 用Matlab 演示混沌的基本性质

在自然界中,绝大部分运动都是混沌运动,规则运动只在局部的范围和较短的时间内存在。从简单的数学游戏入手,我们了解了混沌运动的产生,通过对“蝴蝶效应”的介绍,我们了解了混沌运动的主要特征及性质。在各种软件中,Matlab 是非常适合混沌的演示和仿真实验的。本节将对如何使用Matlab 来演示混沌运动特征及性质进行研究。

§2.2.1 用Matlab 产生标准的混沌信号

1963年,美国气象学家洛伦兹在《大气科学杂志》上发表了著名的论文《确定性的非周期流》,文中指出:三阶非线性自治系统中可能会出现混沌解

[12]。洛伦兹提出了一个简化的天气预报模型,这就是著名的洛伦兹方程组:

()()x a y x y b z x y z xy cz =-??=--??=-?

(2-1)

这个简化模型是一个完全确定的方程组。然而,当方程组的三个参数取某些值时(比较常用的是a =10,b =28,c =8/3),方程组出现了混沌解。这是在耗散系统中,一个确定的方程能导出混沌解的第一个实例,它标志着混沌学的涎生。

在Matlab 中,可以用如下程序lorenz.m 产生洛沦兹信号,在对混沌信号的演示和处理中,洛沦兹信号是最常用到的标准混沌信号。混沌系统存在混沌吸引子,洛沦兹吸引子就是著名的蝶形图。如图2-1所示。

(1)洛伦兹函数程序:

function dy=lorenz(t,y)

相关文档
最新文档