以上是来自3b1b的一个计数谜题的意外答案。随后,3b1b发布了为什么方块碰撞能够用来计算π?。
在本篇文章中,我不想强调如何求出离散的$\pi$值,而是想探究这样的系统究竟意味着什么,或者说,它具有什么样的特殊性质?如果有,这样的性质可以推广吗?
理想碰撞
假设,这个系统可以看作是一个宏观与微观规律的一个特殊交汇点。
大概来说,这是一个宏观的量子系统。
注意,量子不等同于量子物理。量子一词,只是强调离散。
在以上的问题中,如果没有作为中间介质的小质量方块,那么整个问题就等同于弹性碰撞。
根据之前的文章:理想碰撞问题。部分摘录如下:
最终我们得到了新的公式表达:
$(F)$式的含义可以表述为
容易得到,在上述系统中,若记中间介质的小质量方块和大方块分别为$I,J$。那么,
- $J$的相对质量系数接近于2
- 我们有,$I$的原速度初始为
0
(不妨先假设大方块的速度守恒)
- 第1次,$J$的相对速度=
v
- 第2次,$J$的相对速度=
2v
- 第3次,$J$的相对速度=
4v
可以看到,小质量方块$I$会被匀加速。(在次数上的均匀)
即使回到原来的条件,大方块速度不守恒,小方块在初始的多次碰撞中仍然会被加速。
只有当小方块携带的动量与大方块在同一个数量级时,匀加速效应才会衰退。
被加速和传递动量/动能的能力增强是相同的。
emm…为了保证上述的推理是具体的和正确的,编写了相应的程序。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| m1,v1,m2,v2 = map(int,input().split())
M = m1 + m2 L1 = 2*m1/M L2 = 2*m2/M v_1 = v1 - v2 v_2 = v2 - v1
v1_new = v1 + L2*v_2 v2_new = v2 + L1*v_1 print(v1_new," ",v2_new)
"""样例 输入:2 1 1 -2 输出:-1.0 2.0 ----------------- 输入:1 0 100 -1 输出:-1.9801980198019802 -0.9801980198019802 """
|
好,看来理想碰撞公式的推导没有问题,然后是本模型的多次迭代:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| m1,v1,m2,v2 = map(float,input().split())
M = m1 + m2 L1 = 2*m1/M L2 = 2*m2/M v_1 = v1 - v2 v_2 = v2 - v1
print("----------碰撞速度表-----------") print("碰撞次数\t m1速度\t m2速度") i = 0 while v1 > v2: v1_new = v1 + L2*v_2 v2_new = v2 + L1*v_1 i += 1 print("第",i,"次: ","{:.5f}".format(v1_new)," ","{:.5f}".format(v2_new)) v1 = -v1_new if v1 > v2 or v1 > 0: i += 1 print("第",i,"次: ","{:.5f}".format(v1)," ","{:.5f}".format(v2_new)) v2 = v2_new v_1 = v1 - v2 v_2 = v2 - v1 """样例1 输入: 1 1 100 -2 输出: 1 0 100 -1 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -1.98020 -0.98020 第 2 次: 1.98020 -0.98020 第 3 次: -3.88197 -0.92158 第 4 次: 3.88197 -0.92158 第 5 次: -5.63001 -0.82646 第 6 次: 5.63001 -0.82646 第 7 次: -7.15507 -0.69861 第 8 次: 7.15507 -0.69861 第 9 次: -8.39676 -0.54309 第 10 次: 8.39676 -0.54309 第 11 次: -9.30591 -0.36606 第 12 次: 9.30591 -0.36606 第 13 次: -9.84651 -0.17454 第 14 次: 9.84651 -0.17454 第 15 次: -9.99714 0.02390 第 16 次: 9.99714 0.02390 第 17 次: -9.75185 0.22139 第 18 次: 9.75185 0.22139 第 19 次: -9.12035 0.41011 第 20 次: 9.12035 0.41011 第 21 次: -8.12765 0.58259 第 22 次: 8.12765 0.58259 第 23 次: -6.81306 0.73200 第 24 次: 6.81306 0.73200 第 25 次: -5.22864 0.85242 第 26 次: 5.22864 0.85242 第 27 次: -3.43715 0.93907 第 28 次: 3.43715 0.93907 第 29 次: -1.50954 0.98854 第 30 次: 1.50954 0.98854 第 31 次: 0.47786 0.99886
-----样例2 输入: 1 0 10000 -1 输出: ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -1.99980 -0.99980 第 2 次: 1.99980 -0.99980 第 3 次: -3.99880 -0.99920 第 4 次: 3.99880 -0.99920 第 5 次: -5.99620 -0.99820 第 6 次: 5.99620 -0.99820 第 7 次: -7.99120 -0.99680 第 8 次: 7.99120 -0.99680 第 9 次: -9.98301 -0.99500 第 10 次: 9.98301 -0.99500 第 11 次: -11.97082 -0.99281 .......... 第 310 次: 4.16839 0.99913 第 311 次: -2.16949 0.99976 第 312 次: 2.16949 0.99976 第 313 次: -0.16973 1.00000 第 314 次: 0.16973 1.00000 """
|
如果m2的速度不变,则可以验证指m1的加速。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| m1,v1,m2,v2 = map(float,input().split())
M = m1 + m2 L1 = 2*m1/M L2 = 2*m2/M v_1 = v1 - v2 v_2 = v2 - v1
print("----------碰撞速度表-----------") print("碰撞次数\t m1速度\t m2速度") i = 0 while v1 > v2: v1_new = v1 + L2*v_2 i += 1 print("第",i,"次: ","{:.5f}".format(v1_new)," ","{:.5f}".format(v2)) v1 = -v1_new if v1 > v2 or v1 > 0: i += 1 print("第",i,"次: ","{:.5f}".format(v1)," ","{:.5f}".format(v2)) v_1 = v1 - v2 v_2 = v2 - v1 if i > 20: break """样例 输入: 1 0 10000 -1.01 输出: ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -2.01980 -1.01000 第 2 次: 2.01980 -1.01000 第 3 次: -4.03919 -1.01000 第 4 次: 4.03919 -1.01000 第 5 次: -6.05818 -1.01000 第 6 次: 6.05818 -1.01000 第 7 次: -8.07677 -1.01000 第 8 次: 8.07677 -1.01000 第 9 次: -10.09495 -1.01000 第 10 次: 10.09495 -1.01000 第 11 次: -12.11273 -1.01000 第 12 次: 12.11273 -1.01000 第 13 次: -14.13011 -1.01000 第 14 次: 14.13011 -1.01000 第 15 次: -16.14708 -1.01000 第 16 次: 16.14708 -1.01000 第 17 次: -18.16365 -1.01000 第 18 次: 18.16365 -1.01000 第 19 次: -20.17981 -1.01000 第 20 次: 20.17981 -1.01000 第 21 次: -22.19558 -1.01000 第 22 次: 22.19558 -1.01000 """
|
非完全弹性
注意到,这虽然是个完全弹性碰撞问题。但大方块最后几乎总是要损失一些能量。也就是说,本问题中的这个模型对于大方块来说,其实相当于一个非完全弹性碰撞。如下所示:(当m1接近于6.3或100左右时m2的损失能量较大)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| 5 0 12 -100 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -141.17647 -41.17647 第 2 次: 141.17647 -41.17647 第 3 次: -116.26298 66.08997 第 4 次: 116.26298 66.08997 第 5 次: 45.43049 95.60350
6 0 12 -100 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -133.33333 -33.33333 第 2 次: 133.33333 -33.33333 第 3 次: -88.88889 77.77778 第 4 次: 88.88889 77.77778 第 5 次: 74.07407 85.18519
6.3 0 12 -100 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -131.14754 -31.14754 第 2 次: 131.14754 -31.14754 第 3 次: -81.69847 80.59661 第 4 次: 81.69847 80.59661 第 5 次: 80.25341 81.35527
7 0 12 -100 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -126.31579 -26.31579 第 2 次: 126.31579 -26.31579 第 3 次: -66.48199 86.14958 第 4 次: 66.48199 86.14958
100 0 12 -100 ----------碰撞速度表----------- 碰撞次数 m1速度 m2速度 第 1 次: -21.42857 78.57143 第 2 次: 21.42857 78.57143
|
可以大概推测,当m1和m2在数量级相近的一定比例时,损失最大。
那么究竟是什么比例呢?大方块最多能损失多少能量呢?
这有些脱离本篇文章的范畴,先不深入讨论。
但可以想象,这与模运算有相当的关联。
如果想象大方块并行地与多个小方块碰撞。。损失能量是否会更多呢?
宏观量子系统
我当然不是指球状闪电或者宏原子。
但是,上述的模型却与光电效应有异曲同工之妙。
这样想,量子力学的内部机制是不是也是这样,实现从宏观连续规律到微观离散规律的转化的呢?
在进行具体的分析之前。现在,不妨构造一个新的宏观量子系统模型。
我们已经知道,完全弹性碰撞是一种量子模型,它具有这些特点:(在此处不妨准确描述一下)
- 瞬时性:事件的发生是在时间点上完成的
- 量子性:事件不可分为更基础的事件
对于宏观量子模型,其特性弱化为:
- 时区性:事件的发生是在有限时区上完成的;
- 宏观量子性:事件有限可分为更基础的事件。
容易想到的一个实例是:核裂变。
(待续)