同样的弹簧公式为什么更新顺序会改变长期运动:规则练习第15例
离散模拟每一步都要先后更新速度与位置。即使使用同一条恢复力公式,位置使用旧速度还是新速度,也会产生不同的轨迹和能量变化。
质量取一,恢复加速度为负k乘位置,步长为h。显式方法同时按旧状态计算新位置和新速度;半隐式方法先用旧位置更新速度,再用新速度更新位置。两种方法都从同一组位置和速度出发。
本例输入与约定
初始位置1、速度-2,弹簧常数1,步长1/2。记录初始及十二次更新。
完整计算记录
步 | 显式位置/速度/两倍能量 | 半隐式位置/速度/两倍能量 0 | 1/-2/5 | 1/-2/5 1 | 0/-5/2/25/4 | -1/4/-5/2/101/16 2 | -5/4/-5/2/125/16 | -23/16/-19/8/1973/256 3 | -5/2/-15/8/625/64 | -145/64/-53/32/32261/4096 4 | -55/16/-5/8/3125/256 | -647/256/-67/128/436565/65536 5 | -15/4/35/32/15625/1024 | -2209/1024/379/512/5454245/1048576 6 | -205/64/95/32/78125/4096 | -5111/4096/3725/2048/81624821/16777216 7 | -55/32/585/128/390625/16384 | -433/16384/20011/8192/1601947973/268435456 8 | 145/256/695/128/1953125/65536 | 78745/65536/80477/32768/32106965141/4294967296 9 | 105/32/2635/512/9765625/262144 | 558143/262144/243163/131072/548036586725/68719476736 10 | 5995/1024/1795/512/48828125/1048576 | 2647081/1048576/414509/524288/7694308664885/1099511627776 11 | 3895/512/1185/2048/244140625/4194304 | 9599279/4194304/-989045/2097152/96058997367941/17592186044416 12 | 32345/4096/-6605/2048/1220703125/16777216 | 24841657/16777216/-13555459/8388608/1352109797308373/281474976710656
表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。
复核方法与适用范围
每一步记录位置、速度和速度平方加k乘位置平方;最后一项是理想弹簧系统能量的两倍。计算保留精确分数,避免把舍入误差混进更新顺序的比较。
本例没有阻尼、碰撞或外力,也不保证任意步长都稳定。半隐式方法并非每一步都严格保持真实能量;选择步长仍应结合具体系统,不能把某一份表的表现当成所有参数的结论。
练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。
