homework_11   计算程序
计算程序1
import mathG=4*math.pi**2m1=1m2=100dt=0.001end_t=20t=[0]x_1=[10]v_x_1=[0]y_1=[0]v_y_1=[(4.0*math.pi**2*10/(10.1**2))**0.5]r_1=[]theta_1=[]x_2=[-0.1]v_x_2=[0]y_2=[0]v_y_2=[-(0.1*4*math.pi**2/(10.1**2))**0.5]r_2=[]theta_2=[]r=[]n_i=[]n_j=[]for i in range(int(end_t/dt)):      r_1.append((x_1[i]**2+y_1[i]**2)**0.5)      if y_1[i]<0:         theta_1.append(2*math.pi-math.acos(x_1[i]/(x_1[i]**2+y_1[i]**2)**0.5))      else:         theta_1.append(math.acos(x_1[i]/(x_1[i]**2+y_1[i]**2)**0.5))      r_2.append((x_2[i]**2+y_2[i]**2)**0.5)      if y_2[i]<0:         theta_2.append(2*math.pi-math.acos(x_2[i]/(x_2[i]**2+y_2[i]**2)**0.5))      else:         theta_2.append(math.acos(x_2[i]/(x_2[i]**2+y_2[i]**2)**0.5))      #print theta_1[i]      #print theta_2[i]      r.append((r_1[i]**2+r_2[i]**2-2*math.cos(theta_1[i]-theta_2[i])*r_1[i]*r_2[i])**0.5)      #print r[-1]      n_i.append((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))/((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)      n_j.append((r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))/((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)      print n_j[i]      v_x_1.append(v_x_1[i]+(G*m2/r[i]**2)*n_i[i]*dt)      x_1.append(x_1[i]+v_x_1[i+1]*dt)      v_y_1.append(v_y_1[i]+(G*m2/r[i]**2)*n_j[i]*dt)      y_1.append(y_1[i]+v_y_1[i+1]*dt)      v_x_2.append(v_x_2[i]-(G*m1/r[i]**2)*n_i[i]*dt)      x_2.append(x_2[i]+v_x_2[i+1]*dt)      v_y_2.append(v_y_2[i]-(G*m1/r[i]**2)*n_j[i]*dt)      y_2.append(y_2[i]+v_y_2[i+1]*dt)      t.append(t[i]+dt)import matplotlib.pyplot as pltimport numpy as npplt.plot(x_1,y_1,'--' ,label='star_1,$r(2,0),v(0,4/3 \pi-0.1,m_1=1$')plt.plot(x_2,y_2,'--',label='star_2,$r(-1,0),v(0,-2/3 \pi+0.1,m_2=2$')plt.title(u'the orbit of star',fontsize=14)plt.xlabel(u'x/AU',fontsize=14)plt.ylabel(u'y/AU',fontsize=14)plt.legend(fontsize=12,loc='best')plt.show()
程序2
import mathG=4*math.pi**2m1=1m2=1m3=1dt=0.001end_t=12t=[0]x_1=[0]v_x_1=[-((4*3**0.5*math.pi**2)/3.0)**0.5]y_1=[1]v_y_1=[0]r_1=[]theta_1=[]x_2=[-3**0.5/2.0]v_x_2=[0.5*((4*3**0.5*math.pi**2)/3.0)**0.5]y_2=[-1/2.0]v_y_2=[-(3**0.5/2.0)*((4*3**0.5*math.pi**2)/3.0)**0.5]r_2=[]theta_2=[]x_3=[3.0**0.5/2]v_x_3=[0.5*((4*3**0.5*math.pi**2)/3.0)**0.5]y_3=[-1.0/2]v_y_3=[3**0.5/2*((4*3**0.5*math.pi**2)/3.0)**0.5]r_3=[]theta_3=[]r12=[]r13=[]r23=[]n12_i=[]n13_i=[]n23_i=[]n12_j=[]n13_j=[]n23_j=[]for i in range(int(end_t/dt)):      '''       r_1.append((x_1[i]**2+y_1[i]**2)**0.5)      if y_1[i]<0:         theta_1.append(2*math.pi-math.acos(x_1[i]/(x_1[i]**2+y_1[i]**2)**0.5))      else:         theta_1.append(math.acos(x_1[i]/(x_1[i]**2+y_1[i]**2)**0.5))      r_2.append((x_2[i]**2+y_2[i]**2)**0.5)      if y_2[i]<0:         theta_2.append(2*math.pi-math.acos(x_2[i]/(x_2[i]**2+y_2[i]**2)**0.5))      else:         theta_2.append(math.acos(x_2[i]/(x_2[i]**2+y_2[i]**2)**0.5))      r_3.append((x_3[i]**2+y_3[i]**2)**0.5)      if y_1[i]<0:         theta_3.append(2*math.pi-math.acos(x_3[i]/(x_3[i]**2+y_3[i]**2)**0.5))      else:         theta_3.append(math.acos(x_3[i]/(x_3[i]**2+y_3[i]**2)**0.5))      #print theta_3[i]      #print theta_2[i]      r12.append((r_1[i]**2+r_2[i]**2-2*math.cos(theta_1[i]-theta_2[i])*r_1[i]*r_2[i])**0.5)      r13.append((r_1[i]**2+r_3[i]**2-2*math.cos(theta_1[i]-theta_3[i])*r_1[i]*r_3[i])**0.5)      r23.append((r_3[i]**2+r_2[i]**2-2*math.cos(theta_3[i]-theta_2[i])*r_3[i]*r_2[i])**0.5)      print r_1[-1]      n12_i.append((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))/((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)      n13_i.append((r_3[i]*math.cos(theta_3[i])-r_1[i]*math.cos(theta_1[i]))/((r_3[i]*math.cos(theta_3[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_3[i]*math.sin(theta_3[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)            n23_i.append((r_2[i]*math.cos(theta_2[i])-r_3[i]*math.cos(theta_3[i]))/((r_2[i]*math.cos(theta_2[i])-r_3[i]*math.cos(theta_3[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_3[i]*math.sin(theta_3[i]))**2)**0.5)      n12_j.append((r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))/((r_2[i]*math.cos(theta_2[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)      n13_j.append((r_3[i]*math.sin(theta_3[i])-r_1[i]*math.sin(theta_1[i]))/((r_3[i]*math.cos(theta_3[i])-r_1[i]*math.cos(theta_1[i]))**2+(r_3[i]*math.sin(theta_3[i])-r_1[i]*math.sin(theta_1[i]))**2)**0.5)        n23_j.append((r_2[i]*math.sin(theta_2[i])-r_3[i]*math.sin(theta_3[i]))/((r_2[i]*math.cos(theta_2[i])-r_3[i]*math.cos(theta_3[i]))**2+(r_2[i]*math.sin(theta_2[i])-r_3[i]*math.sin(theta_3[i]))**2)**0.5)          #print n_j[i]      v_x_1.append(v_x_1[i]+(G*m2/r12[i]**2)*n12_i[i]*dt+(G*m3/r13[i]**2)*n13_i[i]*dt)      x_1.append(x_1[i]+v_x_1[i+1]*dt)      v_y_1.append(v_y_1[i]+(G*m2/r12[i]**2)*n12_j[i]*dt+(G*m3/r13[i]**2)*n13_j[i]*dt)      y_1.append(y_1[i]+v_y_1[i+1]*dt)      v_x_2.append(v_x_2[i]-(G*m1/r12[i]**2)*n12_i[i]*dt-(G*m3/r23[i]**2)*n23_i[i]*dt)      x_2.append(x_2[i]+v_x_2[i+1]*dt)      v_y_2.append(v_y_2[i]-(G*m1/r12[i]**2)*n12_j[i]*dt-(G*m3/r23[i]**2)*n23_j[i]*dt)      y_2.append(y_2[i]+v_y_2[i+1]*dt)      v_x_3.append(v_x_3[i]-(G*m1/r13[i]**2)*n13_i[i]*dt+(G*m2/r23[i]**2)*n23_i[i]*dt)      x_3.append(x_3[i]+v_x_3[i+1]*dt)      v_y_3.append(v_y_3[i]-(G*m1/r13[i]**2)*n13_j[i]*dt+(G*m2/r23[i]**2)*n23_j[i]*dt)      y_3.append(y_3[i]+v_y_3[i+1]*dt)      t.append(t[i]+dt)      '''      v_x_1.append(v_x_1[i]+(G*m2*(x_2[i]-x_1[i])/((x_1[i]-x_2[i])**2+(y_1[i]-y_2[i])**2)**(1.5)+G*m3*(x_3[i]-x_1[i])/((x_1[i]-x_3[i])**2+(y_1[i]-y_3[i])**2)**(1.5))*dt)      v_x_2.append(v_x_2[i]+(G*m1*(x_1[i]-x_2[i])/((x_1[i]-x_2[i])**2+(y_1[i]-y_2[i])**2)**(1.5)+G*m3*(x_3[i]-x_2[i])/((x_2[i]-x_3[i])**2+(y_2[i]-y_3[i])**2)**(1.5))*dt)      v_x_3.append(v_x_3[i]+(G*m1*(x_1[i]-x_3[i])/((x_1[i]-x_3[i])**2+(y_1[i]-y_3[i])**2)**(1.5)+G*m2*(x_2[i]-x_3[i])/((x_2[i]-x_3[i])**2+(y_2[i]-y_3[i])**2)**(1.5))*dt)      v_y_1.append(v_y_1[i]+(G*m2*(y_2[i]-y_1[i])/((x_1[i]-x_2[i])**2+(y_1[i]-y_2[i])**2)**(1.5)+G*m3*(y_3[i]-y_1[i])/((x_1[i]-x_3[i])**2+(y_1[i]-y_3[i])**2)**(1.5))*dt)      v_y_2.append(v_y_2[i]+(G*m1*(y_1[i]-y_2[i])/((x_1[i]-x_2[i])**2+(y_1[i]-y_2[i])**2)**(1.5)+G*m3*(y_3[i]-y_2[i])/((x_2[i]-x_3[i])**2+(y_2[i]-y_3[i])**2)**(1.5))*dt)      v_y_3.append(v_y_3[i]+(G*m1*(y_1[i]-y_3[i])/((x_1[i]-x_3[i])**2+(y_1[i]-y_3[i])**2)**(1.5)+G*m2*(y_2[i]-y_3[i])/((x_2[i]-x_3[i])**2+(y_2[i]-y_3[i])**2)**(1.5))*dt)      x_1.append(x_1[i]+v_x_1[i+1]*dt)      x_2.append(x_2[i]+v_x_2[i+1]*dt)      x_3.append(x_3[i]+v_x_3[i+1]*dt)      y_1.append(y_1[i]+v_y_1[i+1]*dt)      y_2.append(y_2[i]+v_y_2[i+1]*dt)      y_3.append(y_3[i]+v_y_3[i+1]*dt)import matplotlib.pyplot as pltimport numpy as npplt.plot(x_1,y_1,'--' ,label='star_1,$r_1=1,m_1=1$')plt.plot(x_2,y_2,'--',label='star_2,$r_2=1,m_2=1$')plt.plot(x_3,y_3,'--',label='star_2,$r_3=1,m_3=1$')plt.title(u'the orbit of star',fontsize=14)plt.xlabel(u'x/AU',fontsize=14)plt.ylabel(u'y/AU',fontsize=14)plt.legend(fontsize=12,loc='best')plt.show()