次の式を前提として、時間tでの粒子の位置をプロットする必要があります。s(t) = -0.5*g(s)*t^2+v0*t
ここで、g(s) = G*M/(R+s(t))^2
(G
、、M
およびR
は定数でs
あり、関数ではなく値ですs(t)
)。パーティクルは垂直に発射されているので、地面に着くまで1秒ごとに現在の位置を印刷したいと思います。しかし、定義する前に他の関数を使用せずに1つの関数を定義する方法を理解することはできません。これはこれまでの私のコードです:
G = 6.6742*10^(-11)
M = 5.9736*10^24
R = 6371000
s0 = 0
v0 = 300
t = 0
dt = 0.005
def g(s):
def s(t):
s(t) = -0.5*g(s)*t^2+v0*t
g(s) = G*M/(R+s(t))^2
def v(t):
v(t) = v(t-dt)-g(s(t-dt))*dt
while s(t) >= 0:
s(t) = s(t-dt)+v(t)*dt
t = t+dt
if t == int(t):
print s(t)
関数を実行すると、関数呼び出しを割り当てることができないと表示されます。