1.实验目的
建立地球-月球-太阳的模型。
用到了欧拉公式求数值积分。
用到了向心力公式、万有引力公式、加速度公式、速度公式、位移公式。
2.实验代码
# 天空ak 2023322060117
import math
import matplotlib.pyplot as plt
m_sun=200000.0
m_ear=1.0
m_mon=0.1
G=1
xte=[];ute=[];yte=[];vte=[];
xtm=[];utm=[];ytm=[];vtm=[];
xts=[];yts=[];
dt=0.5;
xe = 3500.0;
ye = 0.0;
ue = 0.0;
ve = math.pow(m_sun/xe, 1/2);
xm = 10.0; #地月x轴距离
ym = 0.0; #地月y轴距离
um = 0.0; #月球x轴速度
vm = math.pow(m_ear/xm, 1/2); # 月球y轴方向速度
for i in range(10000):
xte.append(xe)
ute.append(ue)
yte.append(ye)
vte.append(ve)
xts.append(0)
yts.append(0)
xtm.append(xm+xe)
utm.append(um)
ytm.append(ym+ye)
vtm.append(vm)
Fx_earth_moon = G*(m_ear*m_mon)*(xm)/math.pow((xm)**2 + (ym)**2, 3/2)
Fy_earth_moon = G*(m_ear*m_mon)*(ym)/math.pow((xm)**2 + (ym)**2, 3/2)
Fx_earth_sun = G*(m_ear*m_sun)*xe/math.pow(xe**2 + ye**2, 3/2)
Fy_earth_sun = G*(m_ear*m_sun)*ye/math.pow(xe**2 + ye**2, 3/2)
due = (-Fx_earth_sun) / m_ear # x方向速度变化 注意负号
dve = (-Fy_earth_sun) / m_ear # y方向速度变化
ue=ue+dt*due # 地球x方向速度 欧拉法数值积分
ve=ve+dt*dve
xe = xe + dt*ue # 地球x方向的位置 欧拉法数值积分
ye = ye + dt*ve
dum = (-Fx_earth_moon) / m_mon # x方向速度变化
dvm = (-Fy_earth_moon) / m_mon
um = um + dt*dum # 月球x方向速度 欧拉法数值积分
vm = vm + dt*dvm # 月球y方向速度 欧拉法数值积分
xm = xm + dt*um # 月球x方向的位置 欧拉法数值积分
ym = ym + dt*vm # 月球y方向的位置 欧拉法数值积分
plt.plot(xte, yte, label="earth")
plt.plot(xtm, ytm, label="moon")
plt.show()
3、实验结果
下图为局部放大图:可以看到月球(蓝线)绕着地球(黄线)转 。
4、如何更改数据
改红色的值,然后根据公式算出来黄色的值。红色值在上面改有设置。
这个公式是向心力公式和万有引力公式的联立。
改数技巧:数据不能太离谱,太阳能拽住地球,地球能抓住月球,太阳到地球距离远远大于地月距离