问题描述
我只是发现了galpy,并整日浏览了文档和示例,但对于在不指定时间范围的情况下整合轨道的可能性仍然有些困惑。
文档中提供的一个简单示例如下:
from galpy import potential
import numpy
ts= numpy.linspace(0,100,10000)
o= Orbit([1.,0.1,1.1,0.,0.])
o.integrate(ts,potential.MWPotential2014)
但是我问是否有可能使用积分方法而不指定整个时间数组,而仅指定适当单位的时间量。例如:
t = 100
o.integrate(t,potential.MWPotential2014)
谢谢。
解决方法
如果文档中没有说存在这样的接口,那么您可以假定它不存在,尽管快速浏览一下代码可以确认这一点。无论如何,即使存在这样的快捷方式,集成器功能本身仍然需要一系列时间步骤来进行集成,因此这仅仅是一个快捷方式。
即使您只是想指定“时间量”,您仍然需要提供一个时间步长,尽管您也可以使用默认的时间步长。您可以编写自己的快捷方式功能,例如:
def integrate_orbit(orbit,pot,t,dt=0.01):
t = np.arange(0,dt)
return orbit.integrate(t,pot)