当前位置:   article > 正文

google earth pro不显示地球_【天问一号×计算物理】为什么火星到地球的距离极小值不是固定的?...

"savefig(\"mdb.png\", dpi=150)"

c3ffe118c8bb7e5abca1fd9cac3205a4.png

中国第一颗自主发射的火星探测器“天问一号”已经于7月23日发射升空。此时,日本和阿联酋联合研制的“希望号”早“天问一号”几天发射升空,而美国最新的火星车“毅力号”预计将于几天后奔向火星。短短几天内多个火星探测器的深空并不是巧合,而是由于最近的一段时间将是未来几年内地球和火星最接近的时候。

但为什么火星和地球都绕着太阳转,火星和地球距离的极小值却不是固定的?这是由于火星和地球的轨道都不是正圆形的,特别是火星轨道的形状偏离正圆形相对较多,导致火星和地球距离的极小值有较大的变动范围。本文通过对地球和火星的轨道做一个很简单的模拟,计算火星和地球的轨道随时间的变化,由此了解为何火星和地球距离的极小值变动范围较大,以及为何十几天之内有三个火星探测器竞相奔往火星。

一、共面圆形轨道的情形

假定地球和火星的轨道是在一个平面上的圆形轨道,且起始时太阳、地球和火星三者在一条直线上,并且忽略地球和火星间的引力关系。此时地球和火星间的距离可求出解析解,但这里采用绘图的方式直观地看出火星和地球间的距离与时间的关系。

设三个星体的连线为x轴,太阳为圆心,地球和火星做圆周运动的半径为实际轨道的半长轴,查得相关数据后[1][2],地球和火星的坐标分别如下:

若将时间的单位设置为年,则

rad/年,根据开普勒第三定律,
rad/年,由此可以直接计算得到任意时刻地球和火星的位置,计算两者距离。计算和绘图代码如下:
  1. import numpy as np
  2. import pylab as pl
  3. import matplotlib.pyplot as plt
  4. plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
  5. plt.rcParams['axes.unicode_minus']=False #显示负号
  6. PI = 3.141592653589793
  7. year = np.linspace(0, 20, 10000) #时间,单位为年
  8. omega1 = 2*PI #地球公转的角速度
  9. omega2 = omega1 / np.sqrt(1.52**3) #火星公转的角速度
  10. #地球和火星坐标,单位为亿千米
  11. x1 = 1.496*np.sin(omega1*year)
  12. y1 = 1.496*np.cos(omega1*year)
  13. x2 = 2.279*np.sin(omega2*year)
  14. y2 = 2.279*np.cos(omega2*year)
  15. d = np.sqrt((x1 - x2)**2 + (y1 - y2)**2)
  16. plt.figure(figsize=(6,6))
  17. plt.plot(0, 0, marker='.', color='black', label='太阳')
  18. plt.plot(x1, y1, color='red', label='地球')
  19. plt.plot(x2, y2, color='blue', label='火星')
  20. plt.legend(loc='upper left')
  21. plt.xlim(-3, 3)
  22. plt.ylim(-3, 3)
  23. plt.title("地球和火星轨道(圆轨道)")
  24. plt.savefig("地球和火星轨道(圆轨道).png", dpi=150)
  25. plt.show()
  26. pl.plot(year,d,'r-')
  27. pl.xlim(0,20)
  28. pl.ylim(0,5)
  29. pl.xlabel('时间/年')
  30. pl.ylabel('距离/亿千米')
  31. pl.title('地球到火星的距离')
  32. pl.savefig('地火距离(圆轨道).png', dpi=150)
  33. pl.show()

计算结果如下:

47881561806c8dd2eaf063572a3d807b.png
地球和火星的轨道

264102984afc353b02907633c703588a.png
地球到火星的距离

与理论预测相同,距离

的图像为正弦曲线,虽然
周期性变化,但所有极小值均相同。若在初始时刻太阳、地球和火星不在一条直线上,则极大值和极小值均不会改变,仅仅改变曲线解析式的相位。

二、共面椭圆轨道的情形

若将地球和火星的轨道改为共面但长轴和焦距均与实际轨道相同的椭圆轨道,由于椭圆最常见的两个方程

中的参数
均不能代表时间,需要根据动力学公式计算地球和火星的轨迹。

为了计算简单,设地球和火星起始时均位于远日点。模拟还需要地球和火星在远日点的速度。设星体在远日点和近日点的速度分别为

,则由机械能守恒有

其中

。由角动量守恒有

联立求解得到

这就是星体在近日点和远日点的速度。火星和地球的运动学方程中

相同,可根据地球的周期和半长轴计算。

由于模拟时间不必太长,精度也不必太高,这里采用最简单的欧拉法求解轨迹:

为模拟出极小值随时间的变化,计算时间稍长,为30年。若起始时太阳、地球和火星贡献,计算与绘图代码如下:

  1. import numpy as np
  2. import pylab as pl
  3. import matplotlib.pyplot as plt
  4. plt.rcParams['font.sans-serif'] = ['SimHei'] #显示中文
  5. plt.rcParams['axes.unicode_minus']=False #显示负号
  6. PI = 3.1415926535897932
  7. t = 0 #单位为年
  8. dt = 1e-4
  9. a1 = 1.521 #地球轨道半长轴,单位为亿千米
  10. c1 = 0.025 #地球轨道半焦距,单位为亿千米
  11. GM = 4 * PI ** 2 * a1**3 #在前面所用单位下万有引力常数和太阳质量的乘积
  12. #地球起始点为远地点
  13. x1 = a1 + c1
  14. y1 = 0
  15. #地球位于远地点时的速度分量
  16. vx1 = 0
  17. vy1 = np.sqrt(GM * (a1 - c1) / (a1*(a1 + c1)))
  18. a2 = 2.279 #火星轨道半长轴,单位为亿千米
  19. c2 = 0.213 #火星轨道半焦距,单位为亿千米
  20. #起始点为远地点
  21. x2 = a2 + c2
  22. y2 = 0
  23. #在两椭圆长轴夹角为theta时的起始速度
  24. vx2 = 0
  25. vy2 = np.sqrt(GM * (a2 - c2) / (a2*(a2 + c2)))
  26. ts = []
  27. x1s = []
  28. y1s = []
  29. x2s = []
  30. y2s = []
  31. ds = []
  32. while t < 30:
  33. #计算地球位置
  34. r1 = np.sqrt(x1**2 + y1**2)
  35. a1 = GM / r1**2
  36. ax1 = -a1 * x1 / r1
  37. ay1 = -a1 * y1 / r1
  38. vx1 += ax1 * dt
  39. vy1 += ay1 * dt
  40. x1 += vx1 * dt
  41. y1 += vy1 * dt
  42. #计算火星位置
  43. r2 = np.sqrt(x2**2 + y2**2)
  44. a2 = GM / r2**2
  45. ax2 = -a2 * x2 / r2
  46. ay2 = -a2 * y2 / r2
  47. vx2 += ax2 * dt
  48. vy2 += ay2 * dt
  49. x2 += vx2 * dt
  50. y2 += vy2 * dt
  51. t += dt
  52. d = np.sqrt((x1 - x2)**2 + (y1 - y2)**2)
  53. #保存计算结果
  54. ts.append(t)
  55. x1s.append(x1)
  56. y1s.append(y1)
  57. x2s.append(x2)
  58. y2s.append(y2)
  59. ds.append(d)
  60. #绘制地球和火星轨道
  61. plt.figure(figsize=(6,6))
  62. plt.xlim(-3, 3)
  63. plt.ylim(-3, 3)
  64. plt.plot(0, 0, marker='.', color='black', label='太阳')
  65. plt.plot(x1s, y1s, color='red', label='地球')
  66. plt.plot(x2s, y2s, color='blue', label='火星')
  67. plt.legend(loc='upper left')
  68. plt.title("地球和火星的轨道(椭圆轨道)")
  69. plt.savefig('地球和火星轨道(椭圆轨道)',dpi=150)
  70. plt.show()
  71. #绘制地球和火星的距离与时间的关系
  72. pl.plot(ts, ds, 'r-')
  73. pl.xlim(0, 30)
  74. pl.ylim(0, 4.5)
  75. pl.title("地球到火星的距离")
  76. pl.savefig("地火距离(椭圆轨道).png",dpi=150)
  77. pl.show()

若地球和火星长轴夹角为

,则火星的赋值部分可改写为
  1. #火星轨道长轴与地球轨道长轴的夹角,可根据需要调节
  2. theta = PI
  3. #起始点为远地点,在两椭圆长轴夹角为theta时的起始位置
  4. x2 = (a2 + c2) * np.cos(theta)
  5. y2 = (a2 + c2) * np.sin(theta)
  6. #在两椭圆长轴夹角为theta时的起始速度
  7. v2 = np.sqrt(GM * (a2 - c2) / (a2*(a2 + c2)))
  8. vx2 = - v2 * np.sin(theta)
  9. vy2 = v2 * np.cos(theta)

时,计算结果如下面两幅图所示,不同的
给出的图像与此类似,仅在相位和极值上有一些差别。

fd223aa6449fc60270ec0c34770cfc79.png
地球和火星的轨道

81ed97470e5d36e2fbeba69465e15c6a.png
地球到火星的距离

可以看出火星和地球距离的极小值随时间接近周期性变化,周期在15年左右。

三、总结

上面的模拟已经给出了火星和地球的距离极小值随时间的变化,其原因为火星较大的偏心率。也可以继续扩展这种方法,考虑轨道平面的夹角和长轴的位置,在三维空间中进行模拟,或者采用更高精度的轨迹求解方法,但需要做一些几何处理以得到初始位置和速度,计算过程略繁琐,这里就不继续处理了。

近年来火星和地球的距离请查阅这篇文章:

太空精酿:为什么火星探测窗口每26个月才一次?​zhuanlan.zhihu.com
95fe8fa105d7fd00614f145478fd087f.png

在2003年,火星和地球距离的极小值接近最小,美国一次性发射了勇气号和机遇号两辆火星车去火星。在2018年,火星和地球间的距离迎来另一个较小的极小值,但由于2017年长征五号遥二火箭发射失败,中国的月球与火星探测计划多少受到了一些影响,直到今年才发射了“天问一号”。今年地球和火星距离虽然没有两年前那么近,但是也没有远到哪里去,也是一次不错的机会。预祝明年2月天问一号和携带的火星车能顺利到达火星,降落并行驶在火星红色的土壤上!希望将要进行的嫦娥五号计划与空间站核心舱的发射也能顺利进行!

这篇小文章是我第一次尝试整理出自己闲着无聊完成的东西,借此机会顺便复习了长时间没用的python的基础语法,鞭策自己不要在家变懒变废。

参考

  1. ^地球轨道的半长轴为1.496亿千米,半焦距为0.025亿千米。 https://en.wikipedia.org/wiki/Earth%27s_orbit
  2. ^火星轨道的半长轴为2.279亿千米,半焦距为0.213亿千米。 https://en.wikipedia.org/wiki/Orbit_of_Mars
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号