Orbit of the Earth - numerical methods leapfrog

In summary: So the potential and kinetic energies should oscillate in opposite phase, with a small difference in amplitude.In summary, the conversation discusses modifying the code to calculate kinetic and potential energy for the Earth's orbit. The code is modified and a new function is created, but it returns an error message. The conversation then shifts to using the result from part a) to calculate the energies, and the resulting plots show that the total energy is relatively constant with small oscillations. The potential and kinetic energies oscillate in opposite phases with a small difference in amplitude.
  • #1
Graham87
70
16
Homework Statement
Plot gravitational potential energy and kinetic energy
Relevant Equations
-GMm/r, 0.5mv^2
I am attempting this homework exercise part b).
1.png

I've modified my code but I get error overflow message. My goal is to modify my code so it returns kinetic and potential energy of Earth's orbit.
I made a new f(z,t) and modified the rows 99 and 100 with dz[2]=-G*M*m/r, and dz[3]=0.5*m*y**2 but obviously it didn't work.

Python:
import matplotlib.pyplot as plt
import numpy as np
import scipy.integrate as spi

G = 6.6738*10**-11
M = 1.9891*10**30
h = 3600
y = 1.4710*10**11
vx = 3.0287*10**4

def LeapFrog(f, t_start, t_stop, z0, h):

    t_vec = np.arange(t_start, t_stop, h)
    n = len(t_vec)
    d = len(z0)
    z_vec = np.zeros((n, d))
    z_vec[0,:] = z0
    z_half_step=z_vec[0 , :] + (1/2)*h*f(z0,t_vec[0])
   
   
    for i in range(0, n - 1):
        z_vec[i+1,:]=z_vec[i,:] + h*f(z_half_step, t_vec[i])
        z_half_step += h*f(z_vec[i+1,:], t_vec[i])      return t_vec, z_vec,def f(z,t):   #dz/dt
   
    x=z[0]
    y=z[1]
    vx=z[2]
    vy=z[3]
    r=np.sqrt(x**2+y**2)

    dz=np.zeros(4)
   
    dz[0]=vx
    dz[1]=vy
    dz[2]=-G*M*x/r**3
    dz[3]=-G*M*y/r**3

    return dz

t_start = 0
t_stop = 24*365*h*5 #5 years
z0 = np.array([0,y,vx,0])
t_vec, z_vec = LeapFrog(f, t_start, t_stop, z0, h)
figure, ax = plt.subplots()

plt.title("Orbit of the Earth")
plt.plot(0,0,'yo', label = 'Sun positon')
plt.plot(z_vec[:,0],z_vec[:,1], 'g', markersize=1, label='Earth trajectory')
ax.set_aspect('equal')

ax.set(xlim=(-1.55*10**11, 1.55*10**11), ylim = (-1.55*10**11, 1.55*10**11))
a_circle = plt.Circle((0, 0), 1.4710*10**11, fill=False,color='r')
ax.add_artist(a_circle)
ax.set_aspect('equal')

legend = plt.legend(['Sun position','Earths 5-year trajectory','Perfect circle'],loc='center left', bbox_to_anchor=(1, 0.5))

plt.show()
"""

We can see that the trajectory of the Earth for 5 years is very slightly non-circular.

"""

"""b"""

m = 5.9722*10**24
def f(z,t):   #dz/dt
   
    x=z[0]
    y=z[1]
    vx=z[2]
    vy=z[3]
    r=np.sqrt(x**2+y**2)

    dz=np.zeros(4)
   
    dz[0]=vx
    dz[1]=vy
    dz[2]=-G*M*m/r
    dz[3]=0.5*m*y**2

    return dz

t_start = 0
t_stop = 24*365*h*5 #5 years
z0 = np.array([0,y,vx,0])
LeapFrog(f, t_start, t_stop, z0, h)
 
Last edited:
Physics news on Phys.org
  • #2
The equation of motion is exactly the same as in part (a) so you don't need to change the integration. What information do you think you need to calculate kinetic and potential energy?
 
  • Like
Likes Graham87
  • #3
pbuk said:
The equation of motion is exactly the same as in part (a) so you don't need to change the integration. What information do you think you need to calculate kinetic and potential energy?
Aha! So I use the result from part a) to compute the energies:

Python:
x,y,vx,vy = z_vec.T
r=np.sqrt(x**2+y**2)
E_kin = 0.5*m*(vx**2+vy**2)
E_pot = -G*M*m/r
E = E_kin+E_pot

plt.title('Energies function of time')
plt.plot(t_vec,E_pot)
plt.plot(t_vec,E_kin)
plt.plot(t_vec,E)
plt.legend(['Potential energy','Kinetic energy', 'Total energy'])
plt.show()

plt.title('Total E(t)')
plt.plot(t_vec,E)
plt.show()

I get these plots now. Did I plot it correctly? Shouldn't total energy oscillate between 0?

2.png
 
Last edited:
  • Like
Likes pbuk
  • #4
Graham87 said:
I get these plots now. Did I plot it correctly?
Looks about right: the key point is that total energy is more or less constant, (with a relatively small oscillation which is an artefact of the leapfrog method: you'll probably cover this in the next lecture).
 
  • Love
Likes Graham87

FAQ: Orbit of the Earth - numerical methods leapfrog

What is the orbit of the Earth?

The orbit of the Earth refers to the path that the Earth follows around the Sun. It is an elliptical shape, with the Sun located at one of the foci of the ellipse.

How is the orbit of the Earth calculated using numerical methods?

Numerical methods, such as the leapfrog method, use a series of calculations and approximations to determine the position and velocity of the Earth at different points in time. This allows us to accurately predict the orbit of the Earth.

Why is the leapfrog method commonly used for calculating the orbit of the Earth?

The leapfrog method is often used because it is a symplectic method, meaning it conserves energy and angular momentum. This makes it more accurate and stable for long-term simulations of the Earth's orbit.

How does the Earth's orbit change over time?

The Earth's orbit changes over time due to various factors, such as the gravitational pull of other planets, the Sun's changing magnetic field, and the Earth's own rotation. These changes can cause the orbit to become more elliptical or shift in its orientation.

Can the leapfrog method be used to calculate the orbit of other planets?

Yes, the leapfrog method can be used to calculate the orbits of other planets in our solar system. However, the specific parameters and initial conditions for each planet may vary, so the method would need to be adjusted accordingly.

Similar threads

Replies
6
Views
1K
Replies
4
Views
1K
Replies
12
Views
2K
Replies
1
Views
2K
Replies
5
Views
2K
Replies
7
Views
3K
Replies
4
Views
3K
Replies
2
Views
3K
Back
Top