[关闭]
@newton2ndlaw 2016-04-23T17:18:25.000000Z 字数 2827 阅读 804

Homework 9

张琦 2013301510086


1.摘要

第九次作业

作业L1 3.12
作业L2 3.16 3.21


2.背景介绍

观察非线性摆的混沌现象。


3.正文

3.1.作业L1 3.12题

In constructing the Poincare section in Figure 3.9 we plotted points only at times that were in phase with the drive force; that is, at times , where is an integer. At these values of the driving force passed through zero. However, we could just as easily have chosen to make the plot at times corresponding to a maximum of the drive force, or at times out-of-phase with this force, etc. Construct the Poincare sections for these cases and compare them with Figure 3.9.

根据课本(3.18)的运动方程为:

利用Euler-Cromer方法得到的递推关系:

根据以上递推公式,即可编写程序。本次作业重力加速度选用的是,摆长选取,所有的单位全部使用国际单位制。


3.1.1.最初编写的代码,用于测试程序的基本功能

程序特性附链接

效果图:


与课本上相符。


3.1.2.进一步选出同相的点

程序的特性附链接

效果图:(前面两幅,后面两幅



统一了坐标轴,与课本上结果基本相符,由于初始力的方向选取不同因此与书上FIGURE 3.9对比图像水平翻转了一下(即变为)。


3.1.3.找出相位超前的点

程序的特性附链接

效果图:(选用

仅仅用了106个点,不是特别清楚。


增大点的数量,使用了319个点,结果清晰多了。

与书上FIGURE 3.9对比,发现不同相位的图不一样。。。
缺点:由于时间间隔定为0.01s, 因此只能找出相应时间 附近的点来代替该点,不仅有误差,并且用这种一个个周期找点的方法运算很慢(找300多个点要找几分钟),预计下个版本将优化程序,将时间间隔定为(例如)能被周期数整除的数,这样就能直接输出相应相位的点,而不用一个个去找了。


重大更新优化了程序(更改时间间隔为

程序特性附链接

仍然是找出相位超前的点(使用了3334个点),效果图:

顺便重新画了相位相同的点(使用了3334个点),效果图(比书上的图更加细致):


3.2.作业L2 3.21题

Investigate the bifurcation diagrams found for the pendulum with other values of the drive frequency and damping parameter. Warning: this can easily become an ambitious project!

这个题目重点是在于对数据的分析。先按照书上的数据做出书上的结果,再更改数据来找出其他数据对应的Bifurcation diagram。


3.2.1.先做一个可以找出所需的程序

程序的特性附链接

效果图:

对数据的总结:



已经太混乱了


3.2.1.第一次优化

程序的特性附链接

效果图:(后面有更好看的图)

数据太多了,暂时就不贴出来了,提供链接


3.2.1.第二次优化

程序的特性附链接

效果图:(更好看的图)

数据提供链接

(用时结果i5 4690k用时195.5s,i5 6300U用时291.6s)


3.2.1.算一算别的数据

只给结果,只是修改了一下参数

处的效果图:

处的效果图:

3.2.1.使用Parallel Python进一步优化

为了提高运算效率,使用Parallel Python。可以极大的提高运算效率。结果对比:
i5 4690k原来用时195.5s,优化后用时10.32s。 可见python默认的运算速度极慢,效率极低,无法使用多线程进行运算。但在进行优化后,运算速度大幅度提升。
优化后的程序链接

4.结论

利用python来解决混沌问题是一个很好的选择,也对混沌有了更深刻的理解,发现步长以及初始条件对混沌有着很大的影响。同时经过分析Bifurcation diagram,知道了更多的知识,也进一步对python有了更深刻的理解。

顺便了解了一下cpu的运算速度,了解到python默认的运算效率很低,只能利用单核进行运算,还不能100%利用单个核心。使用pp模块可以使用多核进行运算,可以使所有的核心利用率达到100%,速度提高了几十倍。(不知道为何会提高这么多)

5.致谢

纯属原创,没有参考任何资料。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注