我正在使用另一个人的代码来尝试在物理学中演示这个问题:
大质量 M 与较小质量 m 碰撞,然后移动移动以从墙壁反弹回来与较大质量 M 碰撞。此过程重复,直到较大质量转动并且其速度符号翻转。如果较大块的质量是第一个块的 16*100^n(其中 n 是整数)倍,则大块和小块之间的碰撞次数计算 pi 的 (n+1) 位。例如:当块大 1600 倍时,有 31 次碰撞。如果块是 16000000,则有 3141 次冲突。
我在 vPython 中编写了我的代码,它可以工作,但只到一定数量。当原始代码时,我能够得到 31415 冲突。当我使 N=5 时,模拟完全失败并且屏幕变黑。显然这是因为时间步长不够小。所以我试着让它更小,看看它是否可以计算更多的数字,它确实可以。通过将时间步长更改为 0.00001,我能够计算出 314159 次碰撞。但随后我输入 N=6 并再次崩溃。因此,我尝试将时间步长增加到 0.000001,它可以工作,但只给了我 3.14159e+6 的数字,而没有额外的 pi 数字。
有人可以告诉这是为什么。为什么我没有得到下一个数字。是不是我的电脑不够强。我不需要真正解决这个问题,这不是重点,我只需要了解我的模拟和计算机的局限性以及为什么它无法计算下一个数字。