[关闭]
@zy-0815 2016-11-13T17:32:39.000000Z 字数 1451 阅读 949

计算物理第八次作业Problem3.18


摘要

上次作业是研究微小变量对混沌系统的影响,而Problem3.18是研究连续改变时对混沌现象的影响。

背景

由书可知,周期加倍时:
image_1b1f97gah12r0151c1ki3q8f16fu9.png-171.5kB
而Bifurcation diagram(分岔图)为:
image_1b1f9afuh1lpietg1trjgftjr3m.png-77.1kB
过渡点为


Feigenbaum :

正文

程序为:

  1. import pylab as pl
  2. import math
  3. class Simple_Pendulum :
  4. def __init__(self,i=0,initial_theta=0.2,time_step=0.04,total_time=50000,length=9.8,\
  5. g=9.8, initial_omega=0,q=0.5,Fd=1.2,omegaD=0.66667):
  6. self.theta=[initial_theta]
  7. self.theta0=[initial_theta]
  8. self.t=[0]
  9. self.omega=[initial_omega]
  10. self.dt=time_step
  11. self.time=total_time
  12. self.g=g
  13. self.l=length
  14. self.q=q
  15. self.Fd=Fd
  16. self.omegaD=omegaD
  17. self.a=[0]
  18. self.b=[0]
  19. def run(self):
  20. _time=0
  21. while(_time<self.time):
  22. self.omega.append(self.omega[-1]-((self.g/self.l)*math.sin(self.theta[-1])+\
  23. self.q*self.omega[-1]-self.Fd*math.sin(self.omegaD*self.t[-1]))*self.dt)
  24. self.theta.append(self.theta[-1]+self.omega[-1]*self.dt)
  25. self.t.append(_time)
  26. _time += self.dt
  27. if(self.theta[-1]>=math.pi):
  28. self.theta[-1]=self.theta[-1]-2*math.pi
  29. if(self.theta[-1]<=-math.pi):
  30. self.theta[-1]=self.theta[-1]+2*math.pi
  31. if((self.t[-1])%(2*math.pi/self.omegaD)<0.01 ):
  32. self.a.append(self.omega[-1])
  33. self.b.append(self.theta[-1])
  34. def show_results(self):
  35. pl.plot(self.b,self.a,'.',label='$F_{D}$=1.2')
  36. pl.xlabel('$\\theta$(rad)')
  37. pl.ylabel('$\omega$(rad)')
  38. pl.legend()
  39. pl.title('$\omega$ versus $\\theta$ ' )
  40. pl.show()
  41. a = Simple_Pendulum()
  42. a.run()
  43. a.show_results()

运行结果为:
image_1b1fakdju46ca2oou570l19qt9.png-18.1kB
当然可以改变的值,如时:
image_1b1fauh991l221u102i115betuam.png-10.9kB
时:
image_1b1fb2v6oscf1f6g1dnob1qa531g.png-11.1kB

结论

混沌效应只在特殊值附近出现。

备注

不知是否是电脑原因,安装Vpython时总是失败,因此没有及时作出程序,实在是失误。

致谢

感谢宗玥同学的耐心帮助。

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