Я использую код другого человека, чтобы попытаться продемонстрировать эту проблему в физике:
большая масса М сталкивается с меньшей массой m, которая затем перемещается, чтобы отскочить от стены, возвращающейся к столкновениюс большей массой M. Этот процесс повторяется до тех пор, пока большая масса не повернется и ее знак скорости не перевернется.Если масса большего блока в 16 * 100 ^ n (где n является целым числом) раз больше, чем в первом блоке, то число столкновений между большим блоком и небольшим блоком вычисляет (n + 1) цифр числа pi.Например: когда блок в 1600 раз больше, происходит 31 столкновение.Если блок 16000000, то будет 3141 столкновений.
Я сделал свой код в vPython, и он работает, но только до определенного количества.Мне удалось получить 31415 столкновений при исходном коде.Когда я делаю N = 5, симуляция полностью проваливается, и экран становится черным.Видимо, это потому, что шаг по времени не достаточно мал.Поэтому я попытался уменьшить его и посмотреть, сможет ли он вычислить больше чисел, и он это делает.Мне удалось сосчитать 314159 столкновений, изменив временной шаг на 0,00001.Но затем я ввожу N = 6, и он снова падает.Поэтому я пытаюсь увеличить шаг по времени до 0,000001, и он работает, но дает только число 3.14159e + 6 без дополнительной цифры числа пи.
введите описание изображения здесь
Может кто-нибудь, пожалуйста, скажите, почему это так.Почему я не получаю следующую цифру.Мой компьютер недостаточно силен?Мне не нужно на самом деле исправлять эту проблему, это не главное, мне просто нужно понять ограничения моего моделирования и компьютера и почему он не может вычислить следующую цифру.