资讯中心

同样的弹簧公式为什么更新顺序会改变长期运动:规则练习第02例

2026-11-09

离散模拟每一步都要先后更新速度与位置。即使使用同一条恢复力公式,位置使用旧速度还是新速度,也会产生不同的轨迹和能量变化。

质量取一,恢复加速度为负k乘位置,步长为h。显式方法同时按旧状态计算新位置和新速度;半隐式方法先用旧位置更新速度,再用新速度更新位置。两种方法都从同一组位置和速度出发。

本例输入与约定

初始位置-12、速度-3,弹簧常数1,步长1/4。记录初始及十二次更新。

完整计算记录

步 | 显式位置/速度/两倍能量 | 半隐式位置/速度/两倍能量 0 | -12/-3/153 | -12/-3/153 1 | -51/4/0/2601/16 | -12/0/144 2 | -51/4/51/16/44217/256 | -45/4/3/2169/16 3 | -765/64/51/8/751689/4096 | -627/64/93/16/531513/4096 4 | -663/64/2397/256/12778713/65536 | -7917/1024/2115/256/134250489/1048576 5 | -8211/1024/765/64/217238121/1048576 | -84915/16384/41757/4096/35108910009/268435456 6 | -5151/1024/57171/4096/3693048057/16777216 | -605613/262144/753027/65536/9439561709433/68719476736 7 | -25245/16384/31161/2048/62781816969/268435456 | 2964237/4194304/12654045/1048576/2570784378784569/17592186044416 8 | 37077/16384/1022397/65536/1067290888473/4294967296 | 246928275/67108864/199500483/16777216/697780656470208249/4503599627370496 9 | 1615629/262144/123165/8192/18143945104041/68719476736 | 6895931853/1073741824/2945079453/268435456/186329763872944480953/1152921504606846976 10 | 2600949/262144/14149491/1048576/308447066768697/1099511627776 | 150560249043/17179869184/40225339395/4294967296/48557635462977205872249/295147905179352825856 11 | 55764675/4194304/5774271/524288/5243600135067849/17592186044416 | 2902009165965/274877906944/493045181277/68719476736/12311154011832391575992889/75557863725914323419136 12 | 67313217/4194304/129011997/16777216/89141202296153433/281474976710656 | 51418860389907/4398046511104/4986713734467/1099511627776/3041776225709096058207854073/19342813113834066795298816

表中编号仅用于识别本例的元素。读取一个结果时,应先核对它对应的输入、处理顺序和边界约定;布尔值表示条件是否成立,空集合表示没有符合要求的对象,不应把这些字段混成同一种数值。

复核方法与适用范围

每一步记录位置、速度和速度平方加k乘位置平方;最后一项是理想弹簧系统能量的两倍。计算保留精确分数,避免把舍入误差混进更新顺序的比较。

本例没有阻尼、碰撞或外力,也不保证任意步长都稳定。半隐式方法并非每一步都严格保持真实能量;选择步长仍应结合具体系统,不能把某一份表的表现当成所有参数的结论。

练习时可以先独立计算最前面的一步,再检查最后的整体不变量。若结论不同,应保留各步记录,定位第一处差异;只调整最终数字会掩盖规则理解上的问题。改变输入后也要重新演算,而不是照抄这一例的输出。

准备好开始吧,它既快速又简单。