APP下载

基于云平台的Lorenz混沌数值模拟实验

2020-03-11黄六霞程敏熙林奇川

物理实验 2020年2期
关键词:模拟计算模拟实验初值

黄六霞,程敏熙,林奇川

(华南师范大学 物理与电信工程学院,广东 广州 510006)

“计算机数值模拟实验”是高校近代物理实验课程的重要模块[1]. 实验要求学生在实验室使用安装有C语言的运行程序、配置有相应的运行环境的计算机进行单机实验. 鉴于C语言语法较复杂、实验环境不易维护、实验场所固定等问题,本文将云平台与教学需要相结合,采用语法简明、易于上手的Python语言实现数值模拟,在平台上设置交互(输入参量、输出图像),实现线上修改、编辑和运行代码的功能,用任意移动终端通过浏览器就能访问云平台,学习数值模拟和绘制实验图像,不受时空和设备的局限,增强学习的自主性,减少人力物力的耗费.

云计算平台提供了安全、快速、便捷、数据存储和网络计算的服务模式,用户无需硬件设备投入和技术管理人员,无需购买单机版软件,只需按月支付一定的服务费,即可通过互联网以按需、易扩展的方式获得系统平台或程序软件等资源,并能通过云计算平台开发实验数据处理、数值模拟计算、资源存储等功能[2].

本文以Lorenz混沌模型为例,在云平台上实现模拟计算和绘制图形,观察混沌状态.

1 实验原理及实现条件

1.1 Python语言及Bokeh作图库

Python语言是一种计算机程序设计语言,作为可解释性语言,具有易学、易读、易维护的特点[3],语法简洁高效,自带丰富的第3方库和各种模块,包含解决各种问题的类库,在数据分析以及数据可视化上有突出表现,只需要很少的代码量就可以实现强大的功能.

Bokeh是一款功能强大的数据可视化库,支持绘制散点图、折线图、柱状图等二维图形,支持现代化Web浏览器,可以快速创建交互式的绘图,提供优雅简洁的图形风格. 本文调用Bokeh库实现数据可视化,展示Lorenz混沌状态.

1.2 Lorenz混沌模型简介

1)Lorenz混沌吸引子

以混沌吸引子的x-z“状态空间(相空间)”图像为例,图像形似蝴蝶的翅膀,以2个环形嵌套,每个环形之外有无穷多层,左右环形之间是连通的回线,所有点的轨迹都不会离开曲面而是螺旋地趋近于中心,称之为“奇异吸引子”. 洛伦兹方程解的代表点表现出的状态为点由外向内绕若干圈转到中心附近后, 将“随机”地跳到另一环套上继续向内绕, 再突然跳回原来的环套. 相轨道虽然不会冒出环套的边界,却不会自相重复,显示出无序性. 总之,奇异吸引子是系统总体稳定性与局部不稳定性共同作用的产物[4].

2) 蝴蝶效应(初值敏感性)

气象学家洛伦兹计算气象模型时,在试图探究方程解随时间变化的长期行为过程中,偶然间发现了如果初值相差微小,得到的结果只有一小段与之前重复,随后会发生越来越大的偏差,这不是计算机的故障,是方程对初值高度敏感的表现. 随后在一场报告中称这种现象为“蝴蝶效应”,意思是:在南半球巴西的1只蝴蝶煽动翅膀,一段时间后有可能在美国德克萨斯引发一场龙卷风. 这印证了尽管气象变化多端,但遵循经典力学规律,也就是说只要设定必要的初始数据,便可以通过计算揭示出气象规律,让天气或者气象具有可预报性[5].

3)倍周期运动

在Lorenz混沌系统中,尽管方程反映的是非线性的混沌系统,但是实验表明,在某些条件下,会得到周期性的相空间轨迹.

1.3 Lorenz吸引子的模拟计算

动力学理论用确定的微分方程或离散变量的映射来建立模型,在一定条件下会出现随机性状态. 当系统处于既不是完全确定的,又不是完全随机的形态,表观的随机性中又蕴含着规律和有序时[4],称之为“混沌态”(Chaos),混沌态有非线性、初值敏感性、奇怪吸引子、分岔等现象. Lorenz混沌系统是美国气象学家洛伦兹(Lorenz)提出的第1个表现奇异吸引子的动力学系统. 他定义了三维的常微分方程组,微分方程组描述为

其中,r(t)=r0+r1cos (ωt),其他参量取值为:a=10.0,b=8/3,ω=7.62. 采用四阶龙格-库塔(Runge-Kutta)法求解方程组即可.

xinc1=f(x,y,z,t)dt

xn+1=xn+(xinc1+2*xinc2+2*xinc3+xinc4)/6,

其中,xn为第n个迭代点,dt为时间步长,固定步长值为0.001,根据上式,从初始值x(t=0)=x0,y(t=0)=y0,z(t=0)=z0开始,可以计算各个时间的x,y和z的值.

2 程序编程与数值模拟

2.1 程序编码展示

1)编码计算微分方程的部分代码如下:

def fun X (x, y, z):

f=(a*y - a*x)*dt

return f

def fun Y(x, y, z, r):

f=(r*x-y-x*z)*dt

return f

f=(x*y-b*z)*dt

return f

x, y, z, T = [],[],[],[]

for i in range(DisplayAfter):

t=dt*i + t0

r=r0 + r1*(math. cos(w*t))

xinc1=funX(x0,y0,z0)

yinc1=funY(x0,y0,z0,r)

在语文教学活动中,学生的阅读能力以及写作能力的培养一直是教师所头疼的问题。当今学生在阅读语文经典文章时,无法找到作者的主体情感,从而与作者产生不了思想共鸣,更了解不到其中的内涵。除此之外,学生在写作时总是无从下笔。教师利用读写结合的教学方式帮助学生在阅读时积累词句,逐渐转化为自己的语言,巧妙地运用到写作当中去,以此提高学生的写作兴趣,储备知识,为学生综合性发展奠定了坚实基础。

zinc1=funZ(x0,y0,z0)

xinc2=funX(x0+xinc1/2,y0+yinc1/2,z0+zinc1/2)

yinc2=funY(x0+xinc1/2,y0+yinc1/2,z0+zinc1/2,r)

zinc2=funZ(x0+ xinc1/2,y0+yinc1/2,z0+zinc1/2)

xinc3=funX(x0+xinc2/2,y0+yinc2/2,z0+zinc2/2)

yinc3=funY(x0+xinc2/2,y0+yinc2/2,z0+zinc2/2,r)

zinc3=funZ(x0+ xinc2/2,y0+yinc2/2,z0+zinc2/2)

xinc4=funX(x0+xinc3,y0+yinc3,z0+zinc3)

yinc4=funY(x0+xinc3,y0+yinc3,z0+zinc3,r)

zinc4=funZ(x0+xinc3,y0+yinc3,z0+zinc3)

x1=x0+(xinc1+2*xinc2+2*xinc3+xinc4)/6

y1=y0+(yinc1+2*yinc2+2*yinc3+yinc4)/6

z1=z0+(zinc1+2*zinc2+2*zinc3+zinc4)/6

此部分实现了洛伦兹微分方程的求解,即求解出x,y,z的值.

2) 实现数据可视化的部分代码如下:

p=figure(title="x-t图(初值x=y=1.z=1.001)",x_axis_label=′x′,y_axis_label=′y′)

p.line(x, z, line_width=1)

show(p)

此部分代码调用Bokeh方法,将之前计算的结果转化成为图像,实现平台上数据的可视化.

2.2 Lorenz混沌吸引子

学生浏览平台界面,在界面分别输入x=1,y=1,z=1,r0=26.5,r1=0等各项参量,点击提交获取z-x图,即可获得Lorenz混沌吸引子图像(图1).

图1 Lorenz系统的混沌吸引子

2.3 混沌系统对初值的敏感性

平台上设定不同初值得到不同图像,即在输入框中输入初值时改变z的初值(从1改为1.001,其他条件不变),分别提交获取不同的图像(x-t图、y-x图、z-y图、z-x图),如图2所示.

(a)x-t图(x=y=z=1)

(b)x-t图(x=y=1,z=1.001)

(c)y-x图(x=y=z=1)

(d)y-x图(x=y=1,z=1.001)

(e)z-y图(x=y=z=1)

(f)z-y图(x=y=1,z=1.001)

(g)z-x图(x=y=z=1)

(i)z-x图(x=y=1,z=1.001)

2.4 混沌系统的倍周期运动

Lorenz混沌系统的倍周期运动是系统在一定条件下处于的稳定状态,迭代一定次数之后相轨道成为稳定的1条轨道或者几条轨道. 当输入的参量r1值从0增大至5,r0=26.5时,系统在经过较长时间(DisplayAfter=50 000)迭代后的状态会形成稳定的单周期,也可以获得稳态的双周期(r0=27.5)、4周期(r0=27.9)、64周期(r0=27.987). 在平台上输入相应参量并点击“倍周期”的按钮得到图3,即可验证混沌系统的倍周期运动.

此外,云平台的交互界面中设置了“源代码”按钮,实现线上获取代码资源的功能,以供学习者参考.

(a)单周期

(b)双周期

(c)4周期

(d)64周期

3 云平台进行数值模拟实验的优势

云平台实现了线上交互、线上编程2大功能(如图4所示). “交互界面”可以直接观察混沌现象,“线上编程”提供了编程实现数值模拟的线上环境,用户可以通过平台在线上编辑、修改、运行代码,达到数值模拟实验的目的和效果.

图4 线上编程界面

如表1所示,与传统单机编程实现数值模拟相比,在教学中利用云平台进行数值模拟实验具有较强的优越性. 在实现条件上,本实验系统在云平台只需每月支付一定的云服务费,无需单独配置运行环境,减少教师对机房设备维护和配置的时间;不局限于在计算机上操作、不受时间地域的限制,用户联网访问平台即能达到数值模拟实验的目的,完成实验要求,扩宽了实验的地域时间范围;用户通过线上操作,方便保存和分享实验结果.

表1 单机实现数值模拟与云平台的差异

4 结束语

运用Python语言编程实现在云平台上的混沌现象的数值模拟,程序简单、容易理解,有助于调动学习者学习的积极性. 区别于在单机上运行C语言的数值模拟方法,云平台上的操作更简单,维护更方便. 从单机操作转变成为线上交互,把实验室搬到移动终端,实现基于云平台的数值模拟计算实验的移动学习.

猜你喜欢

模拟计算模拟实验初值
R1234ze PVTx热物性模拟计算
平流层飞艇上升段轨迹优化的初值选取方法
模拟实验在中职学校会计教育中的重要性研究
民用飞机APU舱门蒙皮结构对排液的影响分析
计算模拟在化工原理精馏实验教学中的运用
美国三季度GDP初值创两年最高
高中地理模拟实验的开发步骤及原则
云南中医学院临床技能综合模拟实验教学中心简介