归一化单位,为什么我们在数值积分中使用它们?

2024-03-28 19:56:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在模拟太阳系(太阳、地球和月球)。当我第一次开始这个项目时,我使用了基本单位:对于距离我使用米[m],对于时间我使用秒[s],对于速度/速度我使用米/秒[m/s]。因为我在研究太阳系,所以数字相当大,例如,地球和太阳之间的距离是150*10^9米

当我运行模拟-数值积分(我使用的是solve_ivp方法,scipy库中的函数)时,结果完全错误。。。这是地球和月球轨道的例子Earth and Moon

但后来我从一个朋友那里得到一个建议,我应该使用标准化单位,距离天文单位[AU],时间单位[year]。模拟开始完美地工作了

我的问题是:为什么会这样?为什么一开始不工作,在我从基地切换到标准单位后突然开始工作??为什么使用基本单位时计算错误


Tags: 项目方法函数距离地球时间单位数字
1条回答
网友
1楼 · 发布于 2024-03-28 19:56:01

大多数(如果不是所有的话)集成模块在以下情况下最适合开箱即用:

  • 你的动力变量有相同的数量级
  • 这个数量级是1
  • 动力学的最小时间尺度也具有数量级1

这通常不适用于天文模拟,在天文模拟中,数量级不同,数值和时间尺度通常以典型单位表示

积分器的上述行为的原因是它们使用step-size adaption,即,调整积分步骤以将估计误差保持在定义的水平。 步长自适应又由许多参数控制,如绝对公差、相对公差、最小时间步长等。 您通常可以调整这些参数,但如果不调整,则需要一些默认值,并且这些默认值是根据上述设置选择的

离题

您可能会问自己:这些参数不能更动态地选择吗?作为集成模块的开发人员和维护人员,我大致预计引入此类自动化会产生以下后果:

  • 千分之二十的用户不会遇到像你这样的问题
  • 大约有五万用户(包括上述用户)错过了学习集成商如何工作和阅读文档的基本知识的机会
  • 大约千分之一的用户会遇到比上述更难解决的自动化问题
  • 我需要引入新的参数来控制自动性,这对于普通用户来说更难掌握
  • 我花了很多时间设计和实现自动化

相关问题 更多 >