Вот, кстати, точное решение:
Здесь все начинается с момента удара красной пружинки слева (движется слева направо), причем после удара она приклеивается. А аналогичный зеленый сегмент справа тоже приклеен (это чтобы можно было видеть несколько проходов волны).
На графиках нарисована волна деформации (вверх - сжатие, вниз - растяжение). Внизу нарисована она же, но в виде разложения на волну, бегущую направо (сжатие) и налево (растяжение). Когда волна сжатия добегает до конца пружины, она отражается, как волна растяжения (и наоборот) и так бегает по кольцу. Сумма этих волн дает верхний результат. Снизу приведено движение сборки после удара по типу гусеницы.
Как видно, волна сжатия/растяжения прямоугольная (фронты на самом деле вертикальные). Импульс частиц меняется только на границе волны, а внутри и вне волны скорости частиц постоянны. Из этого следует, что скорость частицы равна нулю только если и волна сжатия (прямая) и волна растяжения (обратная) (а не просто их сумма) в этой точке равны нулю.
Все начинается с того, что красный сегмент "приносит с собой" волну, сложенную на нем "пополам". Собственно, движущийся сегмент пружины можно представлять, как такой сегмент, по которому непрерывно циркулирует волна деформации длиной вдвое больше этого сегмента, т.е. ее начало совпадает с ее концом. Когда красный сегмент ударяется об остальную часть, он "выпускает" эту волну, и мы видим, что она захватывает вдове большую длину, чем длина красного сегмента. "Длина" в данном случае означает число точек, отмечающих равные расстояния на ненапряженной пружине. Понятно, что если деформации малы, как в колыбели Ньютона, то можно не думать о том, как волна деформации меняет расстояния между точками тела, по которому она идет, и просто говорить о том, что расстояние между точками не меняется. А если они велики, то эти вещи уже нужно различать.
Когда волна добегает до селеного сегмента и складывается там вдвое, он должен оторваться (если не приклеен). Отрыв должен произойти там, где первый раз в этой задаче появляется растяжение.
manul91Руки пока не дошли до переменных параметров по длине. Но это мне тоже интересно. Просто там ничего такого простого не ожидается, ведь наверняка в переменной среде нет строгой "когерентности".
Конечно, измельчение пространственно-временной сетки уменьшает ошибку. Но по хорошему нужно просто правильно организовать расчет или применить более сложный метод численного решения. Например, я часто ввожу тут искусственную вязкость, которая поддерживает полную энергию системы на неизменном уровне.