【发布时间】:2013-02-25 00:23:55
【问题描述】:
我需要绘制一个粒子在时间 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))。粒子正在垂直向上发射,我想每秒打印一次它的当前位置,直到它撞到地面。但是我不知道如何在定义一个函数之前不使用另一个函数来定义它。到目前为止,这是我的代码:
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)
当我运行函数时,它说它不能分配函数调用。
【问题讨论】:
-
那么
g(s)是函数的函数吗?它使用的t来自哪里? -
您应该阅读the Python tutorial 以了解如何在 Python 中编写函数的基础知识。
标签: python function projectile