import numpy as np
import matplotlib.pyplot as plt
def Accel(Sun_x,Sun_y,Planet_x,Planet_y,Grav):
Rel_x = Planet_x - Sun_x
Rel_y = Planet_y - Sun_y
Rel_3 = (Rel_x*Rel_x+ Rel_y*Rel_y) **1.5
Aug = (-Grav/Rel_3)
return Aug*Rel_x,Aug*Rel_y
for i in range(len(Time)) :
SunAcc_1 = Accel(Sun_x,Sun_y,Planet_x,Planet_y,Grav_sun)
PlaAcc_1 = Accel(Sun_x,Sun_y,Planet_x,Planet_y,Grav_planet)
Sun_x += SunVel_x * dt + 0.5 * dt * dt * SunAcc_1[0]
Sun_y += SunVel_y * dt + 0.5 * dt * dt * SunAcc_1[1]
Planet_x += PlaVel_x * dt + 0.5 * dt *dt * PlaAcc_1[0]
Planet_y += PlaVel_y * dt + 0.5 * dt *dt * PlaAcc_1[1]
SunAcc_2 = Accel(Sun_x,Sun_y,Planet_x,Planet_y,Grav_sun)
PlaAcc_2 = Accel(Sun_x,Sun_y,Planet_x,Planet_y,Grav_planet)
SunVelAvg_x = (SunAcc_1[0] + SunAcc_2[0]) /2
SunVelAvg_y = (SunAcc_1[1] + SunAcc_2[1]) /2
PlaVelAvg_x = (PlaAcc_1[0] + PlaAcc_2[0]) /2
PlaVelAvg_y = (PlaAcc_1[1] + PlaAcc_2[1]) /2
SunVel_x += SunVelAvg_x * dt
SunVel_y += SunVelAvg_y * dt
PlaVel_x += PlaVelAvg_x * dt
PlaVel_y += PlaVelAvg_y * dt
plt.plot(Planet_x,Planet_y,".r",ms = 2 + i*dt)
plt.plot(Sun_x,Sun_y,".b",ms = 2 + i*dt)
plt.show()
此代码用于通过verlet方法计算Sun-jupyter的运动 现在我必须将事物(Sun_x,Sun_y,Planet_x等)更改为数组格式。 我已经尝试了,但它一直在发送错误消息