xs = G * mE * -xs / |xs| + G * mm * Xm-xs/ |xm-xs|^3
non-linear
x(t)=sin(t)
x(t)=sin(x(t))
x(t)=cos(y(t))
t=(y(t))^2
differential equation that govern the motion
simple solution method
import math from xxx import * moon_distance = 384e6 def orbit(): num_steps = 50 x = numpy.zeros([num_steps + 1, 2]) for i in range(num_steps + 1): angle = 2.*path.pi * i / num_steps x[i, 0] = moon_distance * math.cos(angle) x[i, 1] = moon_distance * math.sin(angle) return x x = orbit() @show_plot def plot_me(): matplotlib.pyplot.axis('equal') matplotlib.pyplot.plot(x[:, 0], x[:, 1]) axes = matplotlib.pyplot.gca() axes.set_xlabel('Longitudinal position in m') axes.set_ylabel('Lateral position in m') plot_me()
import math from xxx import * h = 0.1 g = 9.81 acceleration = numpy.array initial_speed = 20. # m / s @show_plot def trajectory(): angles = numpy.linspace(20., 70., 6) num_steps = 30 x = numpy.zeros([num_steps + 1, 2]) v = numpy.zeros([num_steps + 1, 2]) for angle in angles: matplotlib.pyplot.plot(x[:, 0], x[:, 1]) matplotlib.pyplot.axis('equal') axes = matplotlib.pyplot.gca() axes.set_xlabel('Horizontal position in m') axes.set_ylabel('Vertical position in m') return x, v trajectory()