三阶与四阶辛积分器的测试结果很奇怪
在我的回答到关于MSE问题关于汉密尔顿的2D物理模拟,我一直在使用高阶建议辛积分。 然后,我认为演示不同时间步长对具有不同顺序的方法的全局精度的影响可能是一个好主意,为此我编写并运行了Python / Pylab脚本。为了比较,我选择了: (jump2) 我熟悉的Wikipedia的2阶示例,尽管我知道它的名称是jumpfrog, (ruth3)Ruth的三阶辛积分器, (ruth4)露丝的四阶辛格积分器。 奇怪的是,无论我选择什么时间步长,Ruth的三阶方法在我的测试中似乎都比Ruth的四阶方法更精确,甚至高出一个数量级。 因此,我的问题是:我在这里做错了什么?详细信息如下。 这些方法在具有可分离哈密顿量的系统中展现出它们的优势,即可以写为 H(q,p)=T(p)+V(q)H(q,p)=T(p)+V(q)H(q,p) = T(p) + V(q) ,其中qqq包括所有位置坐标, ppp包括共轭矩a, TTT表示动力学能量和VVV势能。 在我们的设置中,我们可以通过对其施加的质量进行归一化。因此,力变成加速度,而力矩变成速度。 辛积分器带有特殊的(给定的,恒定的)系数,我将它们标记为a1,…,ana1,…,ana_1,\ldots,a_n和b1,…,bnb1,…,bnb_1,\ldots,b_n。与那些系数,一个步骤,用于从时间演进系统ttt 到时间t + δŤt+δtt+\delta t的形式为 对于i = 1 ,… ,ni=1,…,ni=1,\ldots,n: 给定所有位置的向量q,计算所有加速度的向量Gggqqq 将所有速度的向量vvv改变b一世GδŤbigδtb_i\,g\,\delta t 变化矢量qqq的所有位置的一个一世vδŤaivδta_i\,v\,\delta t 现在的智慧在于系数。这些是 [a1b1a2b2][a1b1a2b2a3b3][a1b1a2b2a3b3a4b4]=[120121]=[23724−23341−124]=12−2–√3[1201−2√3211−2√32−2–√3121](leap2)(ruth3)(ruth4)[a1a2b1b2]=[121201](leap2)[a1a2a3b1b2b3]=[23−23172434−124](ruth3)[a1a2a3a4b1b2b3b4]=12−23[121−2321−2321201−231](ruth4)\begin{align} \begin{bmatrix} a_1 & a_2 \\ b_1 & b_2 \end{bmatrix} &= \begin{bmatrix} \frac{1}{2} & …