为啥这个算法误差的看起来这么小

因为这事实上是不完全的 implicit method。关于这个问题的简要分析,可见 Numerical Recipes。这个书的旧版是在网上公开的,比如,可见 http://apps.nrbook.com/c/index.html ,在 go to page 那儿打 734 就行了。只能说是稳定性好,不能说精密或准确。(http://www.geophysik.uni-muenchen.de/~igel/downloads/nmgimplicitmethods.pdf)
■网友
什么叫做精度高?误差和精度不是一回事。误差系统的存在于O(1/n) 中,只是第一种方法画出来,震荡少一点罢了。但是误差是存在的。比如两个人画老虎,都画成了狗。但是第一个人画的狗比较可爱,第二个人画的比较撕逼。难道你要说第一个人画的更精确?至于为什么欧拉离散化导致震荡,的确可能和你采用了t-1的q有关。如果你把delta t变小,应该会好起来。
■网友
euler-cromer算法 这里面有个守恒量 modified energy所以轨道一直是闭合的。而最简单的euler算法下,系统能量是随模拟时间线性变化的(根据你是forward还是backward 轨道向外发散或者向内闭合)给个相关链接http://www.tunl.duke.edu/documents/public/root/material/6/CompPhysMethods.pdf当然这两个算法精度是没有差别的 更多类似算法可见symplectic integratorbtw你这个算法没有严格的时间反演对称性 详情请见http://sixtrack.web.cern.ch/SixTrack/doc/yoshida00.pdf至少得是2.3中的integrator才有时间反演对称性,具体证明参见lemma即公式3.5
■网友
做误差分析,应该首先定义一个适当的误差函数(比如逐点与精确解的均方差),然后画出它作为格点数函数,使用对数坐标,研究其收敛性,然后才能比较误差的渐进形式。即使两个误差的渐进形式相同,前面的比例系数也可能会有很大差别,这意味着直接比较少数格点的结果根本不能说出渐进式误差,此外格点比较小时也说不出误差大小。当然,相空间迭代一般来说的确好些 —— 我不知道为什么 —— 只是批评下你误差分析的方法。
■网友
你别只画相轨,画随时演化啊…半隐式迭代能保能量而已


    推荐阅读