import scipy as sp
import numpy as np
import pylab as pl
import scipy.integrate as spi
import matplotlib.pyplot as plt
G=6.67*10**(-11)
M=6.4*(10**23)
R=3.4*(10**6)
m=260
#define the gravitational constant G, radius (R) and mass (M) of Mars and the mass of the satellite (m)
#called with the variables to be differentiated
def f(a,t):
xx=a[0]
vx=a[1]
yy=a[2]
vy=a[3]
ax=-(G*M*xx)/((xx**2+yy**2)**1.5)
ay=(-G*M*yy)/((xx**2+yy**2)**1.5)
return [vx,ax,vy,ay]
#returns differentiated values, function defines values and returns new values
d=((xx**2+yy*2)**(0.5))
if d<r:
vx,vy,ax,ay=0,0,0,0
return [vx,ax,vy,ay]
#first initial conditions- blue curve
t1=sp.linspace(0.,259200,10000) #three years
initial1=[3*R,2000,3*R,500]
solution1=spi.odient(f,initial1,t1)
x1=solution1[:,0]
y1=solution1[:,2]
pl.figure(1)
pl.plot(x1,y1)
pl.xlabel("x")
pl.ylabel("y")
pl.show()
Привет, пожалуйста, не могли бы вы помочь мне запустить этот код! Он написан на python и является достаточно простым, у меня есть ошибка со второй функцией возврата, она говорит «return» вне функции. Другая ошибка - «объект модуля» не имеет атрибута «odient».Код не работает (python)
, потому что ... это не в функции? –
неправильное форматирование, и вы обязательно вызываете возврат вне функции. –
Я не обращаюсь к вашему вопросу. Я просто хочу указать, что более простой (менее вычислительный) способ выражения ваших констант - с научной нотацией, например, '' G = 6.67e-11'' и '' M = 6.4e23''. – Wolf