Добрый вечер, прошу помочь с программой на Python
Цель: смоделировать траекторию движения спутника (на спутник ничто кроме Земли не влияет, сам спутник в виде материальной точки). По идее должен получиться круг.
Делаю с помощью библиотеки matplotlib, плюс vector - мой модуль, где прописаны сложение и умножение векторов и вектора на число. ПРога либо зацикливается , либо выводит прямую, то есть во втором варианте скорее всего неправильно написан ylist. А что именно – не доходит.. Насколько я понимаю, результат возвращаться должен в векторах. Заранее благодарю
#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
import pylab
from matplotlib import mlab
from vector import vector
M_earth = 5.9736e-24
G = 6.67429e-11
R0 = vector( 0, 10000000.0 ) # радиус-вектор
V0 = vector( 10000.0, 0 ) #начальная скорость
def ar () : # ускорение
R = R0
V = V0
RR = ( G * M_earth / (R.abs*R.abs*1/R.abs)*R)
dt = 0.5
T = 60 # одна минута
for n in range(0,int(T//dt)) :
R1 = R + dt*V
V = V + dt*RR
R = R1
xmin = -100000.0
xmax = 100000.0
ymin = -100000.0
ymax = 100000.0
dx = 0.1
xlist = mlab.frange (xmin, xmax, dx)
ylist =
pylab.plot (xlist, ylist)
pylab.show()
модуль vector:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import math
class vector ( object ) :
def __init__( self, x, y ) :
self.__X = float(x)
self.__Y = float(y)
def __repr__ ( self ) :
return “( %f, %f )” % ( self.__X, self.__Y )
@property
def abs( self ) : # длина
return math.sqrt( self.__X * self.__X +
self.__Y * self.__Y )
def __add__( self, other ) : #сложение
return vector( self.__X + other.__X,
self.__Y + other.__Y )
def __mul__( self, number ) :
return vector( float(number)*self.__X,
float(number)*self.__Y )
def __rmul__( self, number ) :
return self * number