[关闭]
@flyboy1995 2016-11-14T15:39:39.000000Z 字数 1414 阅读 37

第八次作业


作业3.20


摘要

画出bifurcation图像,估算Feigenbaum系数。


背景

题目原文:
3.20:Calculate the bifurcation diagram for the pendulum in the vicinity of Fd=1.35 to 1.5. Make a magnified plot of the diagram and obtain an estimate oof the Feigenbaum parameter.


正文

  1. import pylab as pl
  2. import math
  3. class chaotic_pendulums :
  4. def __init__(self,i=0,initial_theta=0.2,time_step=0.04,total_time=200.0,length=9.8,\
  5. g=9.8, initial_omega=0,q=0.5,Fd=1.35,omegaD=2.0/3.0,df=0.001):
  6. self.theta=[initial_theta]
  7. self.t=[0]
  8. self.omega=[initial_omega]
  9. self.dt=2*math.pi/1000.0*omegaD
  10. self.time=total_time
  11. self.g=g
  12. self.l=length
  13. self.q=q
  14. self.omegaD=omegaD
  15. self.a=[0]
  16. self.b=[0]
  17. self.Fd=[Fd]
  18. self.dF=df
  19. def pendulums(self):
  20. while (self.Fd[-1]<=1.5):
  21. _time=0
  22. while(_time<self.time):
  23. self.omega.append(self.omega[-1]-((self.g/self.l)*math.sin(self.theta[-1])+\
  24. self.q*self.omega[-1]-self.Fd[-1]*math.sin(self.omegaD*self.t[-1]))*self.dt)
  25. self.theta.append(self.theta[-1]+self.omega[-1]*self.dt)
  26. self.t.append(_time)
  27. _time += self.dt
  28. if(self.theta[-1]>=math.pi):
  29. self.theta[-1]=self.theta[-1]-2*math.pi
  30. if(self.theta[-1]<=-math.pi):
  31. self.theta[-1]=self.theta[-1]+2*math.pi
  32. if(self.t[-1]%(2*math.pi/self.omegaD)<0.002 and self.t[-1]/(2*math.pi/self.omegaD)>15.0):
  33. self.b.append(self.theta[-1])
  34. self.Fd.append(self.Fd[-1])
  35. self.Fd[-1]+=self.dF
  36. def show_result(self):
  37. pl.plot(self.Fd,self.b,'.')
  38. pl.xlabel('Fd')
  39. pl.ylabel('angle($radians$)')
  40. pl.xlim(1.35,1.50)
  41. pl.ylim(1.0,3.0)
  42. pl.show()
  43. a =chaotic_pendulums()
  44. a.pendulums()
  45. a.show_result()

结论

此处输入图片的描述
此处输入图片的描述
此处输入图片的描述
此处输入图片的描述

致谢

感谢秦大粤同学和徐秋豪同学。

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