首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不节能的速度verlet算法

不节能的速度verlet算法
EN

Stack Overflow用户
提问于 2016-01-07 09:42:00
回答 2查看 1.6K关注 0票数 1

我当时的印象是,如果被建模的系统确实这样做了,那么该算法应该可以节省能量。我在建立太阳系的模型,它应该能节约能源。该程序保留角动量并产生稳定的轨道,但总能量(动能+引力势)在某些基线附近振荡。振荡是显著的。是否有共同的原因可能会发生这种情况?

模型假设行星是点质量,圆形轨道(我也尝试过椭圆轨道,能量仍然振荡),并使用牛顿力学。我想不出程序的其他特性可能会影响到结果。

如果只是预期能量会振荡,是什么原因呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-10 12:51:06

从评论中合并:对于一个完整的引力N体问题,我不认为任何数值积分器都是辛的。速度Verlet是不辛的,即使一个点绕中心运行(很容易检验,因为它有一个简单的解析解,g= v^2/R)。因此,我建议尝试一个高阶积分器(例如Runge),如果能量偏差几乎消失(这意味着计算一般是正确的),你可以对合并的动能进行调整,以保持总能量显着地守恒。具体来说,您计算更新的Ekin_actual和Ekin_desired = Etotal_initial -E潜,并按sqrt(Ekin_desired / Ekin_actual)缩放所有速度。

票数 1
EN

Stack Overflow用户

发布于 2016-01-16 13:32:41

查阅由Hairer等人撰写的论文。(用St rmer/Verlet方法说明的几何数值积分)。网上应该有几个来源。

总之,辛积分器保留一个哈密顿量,从而保持能量,但它是一个修正的哈密顿量。如果该方法被正确初始化,则修改为O(H 2)阶的扰动,其中h是步骤大小。不正确的初始化会产生O(h)的扰动,而所观察到的振荡的振幅仍应为O(H)。

因此,由物理公式计算的振荡能量的观测模式是完全正常和预期的。如果能量(迅速)偏离这一相对稳定的模式,就会观察到一个误差。

从order 2 Verlet方法获得4阶辛积分器的一种简单但略低的方法是替换

代码语言:javascript
复制
Verlet(h)

通过

代码语言:javascript
复制
Verlet4(h) {
  Verlet(b0*h);
  Verlet(-b1*h);
  Verlet(b0*h);
}

b0=1/(2-2^(1/3))=1.35120719196…b1=2*b0-1=1.70241438392…。这被称为“合成方法”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34651818

复制
相关文章

相似问题

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