首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要在数值积分中使用标准化的单位?

为什么我要在数值积分中使用标准化的单位?
EN

Stack Overflow用户
提问于 2021-07-23 14:19:46
回答 1查看 158关注 0票数 4

我在模拟太阳系(太阳、地球和月球)。当我第一次开始做这个项目的时候,我用的是基本单位:米代表距离,秒代表时间,米每秒代表速度。因为我处理的是太阳系,这个数字很大,例如地球和太阳之间的距离是150·10⁹ m。

当我将系统与scipy.solve_ivp进行数值集成时,结果是完全错误的。这里是地球和月球轨道的一个例子。

但是后来我从一个朋友那里得到了一个建议,我应该使用标准化的单位:天文单位 (AU)表示距离,使用年份表示时间。模拟开始完美无缺地工作!

我的问题是:为什么对于像我这样的问题,这是一个普遍有效的建议?(请记住,这不是我已经解决的具体问题,而是解决办法的原因。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-23 20:05:06

如果下列情况下,大多数集成模块(如果不是所有集成模块)都能最好地发挥作用:

  • 你的动力变量有相同的数量级;
  • 该数量级为1;
  • 你动力学中最小的时间尺度也有一个数量级1。

这在天文模拟中通常是失败的,因为在典型单位中,数量级不同,数值和时间尺度往往很大。

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

离题

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

  • 大约千分之二十的用户不会遇到像你这样的问题。
  • 大约5万名用户(包括上述用户)错过了学习集成者如何工作和阅读文档的基本知识的机会。
  • 大约千分之一的用户会遇到比上述更难解决的自动化问题。
  • 我需要引入控制自动化的新参数,这些参数对于普通用户来说更难掌握。
  • 我花了很多时间来设计和实现自动化。
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68500704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档