Professional Documents
Culture Documents
DEQ4
DEQ4
Computational Physics
Orbital Motion
Outline
Diferential
Equation
Estimate value
of y at half-step
(Euler Method)
Use value at
half-step to
fnd new estimate
of derivative
Fourth Order Runge-Kutta
Value at beginning
of interval
Two estimates of
value at mid-point
Estimate of value at
end of interval
Motion in Three Dimensions
{
VX[i+i] = VX[i] + FX[i]/m*dt
Velocity VY[i+i] = VY[i] + FY[i]/m*dt
Components VZ[i+i] = VZ[i] + FZ[i]/m*dt
Position
Components { X[i+i] = X[i] + VX[i]*dt
Y[i+i] = Y[i] + VY[i]*dt
Z[i+i] = Z[i] + VZ[i]*dt
3D Solution in Python
Vector Equations - Euler Method
X0
X0==[0.,0.,0.]
[0.,0.,0.]
V0
V0==[0.,0.,0.]
[0.,0.,0.]
XX==np.zeros(
np.zeros((nsteps,3)
(nsteps,3)) )
VV==np.zeros(
np.zeros((nsteps,3)
(nsteps,3)) )
##use
usecolon
colonoperator
operatorto
tosetsetvectors
vectors
Initialization X[0,:]
X[0,:]==X0
X0
V[0,:]
V[0,:]==V0
V0
##F[i,:]
F[i,:]has
hasFX,
FX,FY,
FY,FZ]
FZ]forforeach
eachstep
stepi i
Velocity Vector for
fori iininrange(nsteps):
range(nsteps):
V[i+1,:]
V[i+1,:]==V[i,:]
V[i,:]++ F[i,:]/m*dt
F[i,:]/m*dt
Position Vector X[i+1,:]
X[i+1,:]==X[i,:]
X[i,:]++V[i,:]*dt
V[i,:]*dt
Projectile Motion Problem
Motion of particle
under gravity, and
eventually other
realistic forces.
Initial Conditions:
specify location of
beginning of
trajectory
specify initial
velocity
Equation of Motion
Gravity Only
Magnitude of r is numpy.linalg.norm(r)
Initial Conditions
Potential Kinetic
Semimajor Axis - a
Semimajor Axis
depends
only on energy
Eccentricity - e
Eccentricity depends
on angular momentum
and energy