【发布时间】:2016-07-06 15:36:27
【问题描述】:
当我运行我的代码时,地球似乎趋向于一个极限,而不是围绕太阳公转,是我遗漏了方程式还是我的代码有问题?
这是我得到的错误:
Warning (from warnings module):
File "C:\Python32\lib\site-packages\visual\visual_all.py", line 52
return numpy(x)
RuntimeWarning: invalid value encountered in sqrt
这是我写的代码:
from visual import *
def SUVAT(A,B):
global EarthFinalV
global Acceleration
EarthFinalV = sqrt((A) + 2*Acceleration*(B))
GravitationalConstant = 1
Sun = sphere(pos=(0,0,0), radius=10, color=color.red,
make_trail=True)
Earth = sphere(pos=(50,0,0), radius=5, color=color.yellow,
make_trail=True)
Sun.mass = 50
Earth.mass = 10
EarthInitialV = vector(0,1000,0)
EarthFinalV = vector(0,0,0)
while True:
rate(1)
Distance = Earth.pos - Sun.pos
GravitationalEquation = (GravitationalConstant*Sun.mass*Earth.mass) / mag(Distance)**2
Acceleration = GravitationalEquation/Earth.mass
SUVAT(EarthInitialV,Distance)
Earth.pos = Earth.pos - EarthFinalV
【问题讨论】:
-
这是警告的完整跟踪吗?此外,就像一个挑剔的人。您应该考虑不使用全局导入(即
from visual import *),它可能会不时引起问题。您知道代码的哪一部分导致了问题吗? -
我不知道 SUVAT 是如何获得
Acceleration的,因为它应该超出范围。你能发表你认为你的方程式应该在更少程序化、更数学意义上的内容吗?