[关闭]
@francisnoopy 2016-11-06T14:56:38.000000Z 字数 1992 阅读 60

Exercise7

problem3.14

简介
Δθ发生变化时时钟摆达到一个转折点,此时Δθ就会消失,每个转折点出现时附近的轨迹会远离。在这些最大值Δθ呈现平稳较快地下降,这意味着两个摆锤运动变得越来越相似,最后差值减小为0
程序

"""

Spyder Editor

This is a temporary script file.

"""
import math
import pylab as pl
class harmonic:
def init(self, q_1,q_2):
self.n_uranium_A1 = [0]
self.n_uranium_B1= [0.2]
self.n_uranium_A2 = [0]
self.n_uranium_B2= [0.201]
self.a=[math.log(abs(0.201-0.2))]
self.t = [0]
self.g=9.8
self.length=1.0
self.dt = 0.04
self.time = [0]
self.nsteps = int(50// 0.04 + 1)
self.q_1 = q_1
self.q_2 = q_2
self.F=20.5
self.D=2/3
def calculate(self):
for i in range(self.nsteps):
self.n_uranium_A1.append(self.n_uranium_A1[i] -\
((self.g/self.length)*math.sin(self.n_uranium_B1[i])+\
self.q_1*self.n_uranium_A1[i]-self.F*math.sin(self.D*self.t[i]))*self.dt)
self.n_uranium_B1.append(self.n_uranium_B1[i] + self.n_uranium_A1[i+1]*self.dt)
if self.n_uranium_B1[i+1]<-math.pi:
self.n_uranium_B1[i+1]=self.n_uranium_B1[i+1]+2*math.pi
if self.n_uranium_B1[i+1]>math.pi:
self.n_uranium_B1[i+1]=self.n_uranium_B1[i+1]-2*math.pi
else:
pass
self.n_uranium_A2.append(self.n_uranium_A2[i] -\
((self.g/self.length)*math.sin(self.n_uranium_B2[i])+\
self.q_2*self.n_uranium_A2[i]-self.F*math.sin(self.D*self.t[i]))*self.dt)
self.n_uranium_B2.append(self.n_uranium_B2[i] + self.n_uranium_A2[i+1]*self.dt)
if self.n_uranium_B2[i+1]<-math.pi:
self.n_uranium_B2[i+1]=self.n_uranium_B2[i+1]+2*math.pi
if self.n_uranium_B2[i+1]>math.pi:
self.n_uranium_B2[i+1]=self.n_uranium_B2[i+1]-2*math.pi
else:
pass
self.t.append(self.t[i] + self.dt)
self.a.append(math.log(abs(self.n_uranium_B2[i+1]-self.n_uranium_B1[i+1])))
def show_results(self):
font = {'family': 'serif',
'color': 'darkred',
'weight': 'normal',
'size': 16,
}
pl.plot(self.t, self.a)
pl.title(' versue time', fontdict = font)
pl.xlabel('time ()')
pl.ylabel('()')
pl.text(self.t[1000], self.a[1000],' = '+str(self.q_2),fontdict = font)
a = harmonic(0.01,0.95)
a.calculate()
a.show_results()
a = harmonic(0.50,0.95)
a.calculate()
a.show_results()
a = harmonic(0.99,0.95)
a.calculate()
a.show_results()

结论
我们可以看到,当Fd为0.5,不同的系统会接近对方。当Fd是9.5,彼此之间的差异就越大。

致谢
感谢许亚伦同学为我的作业提供的代码

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