Hi. I have a problem with a physics assignment I have to finish by tonight.
They have already given me a python code, but I have to find the period T of Jupiter through interpolation.
(It doesnt have to be interpolation, but my teacher recommended it.)
This is the program:
from numpy import *
from scitools . easyviz . gnuplot_ import *
# Physical parameters and constants
G = 6.67259 e -11 # Gravitational constant in SI units
yeard = 365.25636 # Number of days in a year
years = yeard *24.0*60.0*60.0 # Number of seconds in a year .
r0 = 1.49597870691 e11 # AU
GMsun = 1.32712440018 e20 # G * M
MsunDivMjup = 1047.3486 # M / m_J
MsunDivMast = 1.0 e23 # M / m_A
# Simulation parameters
time = 50.0 # In years
dt = 0.01 # In years
nstep = int ( round ( time / dt ) )
rJ = zeros (( nstep ,3) , float )
vJ = rJ . copy ()
t = zeros ( nstep , float )
# Initialize positions and velocities in 3 d
rJ  = array ([ -5.758295190842140 E +11 ,
-5.704511997951533 E +11 ,1.525358540575477 E +10])
vJ  = array ([9.038714838773942 E +03 ,
-8.674265884570330 E +03 , -1.662886596994482 E +02])
# Convert to dimensionless coordinates
rJ = rJ / r0
vJ = vJ * years / r0
gmJ = GMsun * years **2.0/ r0 **3.0
gmA = 0.0
for i in range ( nstep -1) :
rJnorm = sqrt ( dot ( rJ [ i ] , rJ [ i ]) )
a = - gmJ * rJ [ i ]/ rJnorm **3.0
vJ [ i +1] = vJ [ i ] + a * dt
rJ [ i +1] = rJ [ i ] + vJ [ i +1]* dt
t [ i +1] = t [ i ] + dt
plot ( rJ [: ,0] , rJ [: ,1])
xlabel ( ’X ( AU ) ’) ;
ylabel ( ’Y ( AU ) ’) ;
axis ( ’ equal ’)
I have searched for interpolation via python online, but I can only find interpolation on strings and stuff...
And I have to find the period T, by studying the time between each time Jupiter passes the xz-plane.
I guess this is when the y-coordinate is zero... I tried an if loop to find what i is when rJ =0...
but that didnt really seem to work. Anyone who can help me?