我正在模拟太阳系(太阳、地球和月球)。当我第一次开始这个项目时,我使用了基本单位:对于距离我使用米[m],对于时间我使用秒[s],对于速度/速度我使用米/秒[m/s]。因为我在研究太阳系,所以数字相当大,例如,地球和太阳之间的距离是150*10^9米
当我运行模拟-数值积分(我使用的是solve_ivp方法,scipy库中的函数)时,结果完全错误。。。这是地球和月球轨道的例子
但后来我从一个朋友那里得到一个建议,我应该使用标准化单位,距离天文单位[AU],时间单位[year]。模拟开始完美地工作了
我的问题是:为什么会这样?为什么一开始不工作,在我从基地切换到标准单位后突然开始工作??为什么使用基本单位时计算错误
大多数(如果不是所有的话)集成模块在以下情况下最适合开箱即用:
这通常不适用于天文模拟,在天文模拟中,数量级不同,数值和时间尺度通常以典型单位表示
积分器的上述行为的原因是它们使用step-size adaption,即,调整积分步骤以将估计误差保持在定义的水平。 步长自适应又由许多参数控制,如绝对公差、相对公差、最小时间步长等。 您通常可以调整这些参数,但如果不调整,则需要一些默认值,并且这些默认值是根据上述设置选择的
离题
您可能会问自己:这些参数不能更动态地选择吗?作为集成模块的开发人员和维护人员,我大致预计引入此类自动化会产生以下后果:
相关问题 更多 >
编程相关推荐