fir-tree писал(а):Source of the post
A вы сначала прикиньте эту задачу аналитически. Простейший пример: три шара на одной линии, сталкиваются в один момент. После первой шишки от граблей посмотрите, что будет, если они сталкиваются почти в один момент. A потом прикиньте, как это будет система событийного моделирования переваривать.
Система событийного моделирования переварит это без проблем. B одномерном случае, если центральный шар много легче двух других, то он будет скакать между ними постепенно их расталкивая. При большой скорости этого шара будет много ударов и каждый придется обсчитывать, но тут ничего не поделаешь. Такой физический процесс происходит и система его корректно обсчитывает. Если же нужен более быстрый обсчет таких процессов c разными временными масштабами, то можно использовать упрощающие приближения, только к исходной задаче это уже не имеет отношения.
Если же масса всех трех шаров сравнима, то буквально через несколько ударов внешние шары разлетятся в стороны, a центральный их не сможет догнать.
Вообще не вижу смысла вводить случай одновременного столкновения нескольких шаров сразу. B данной модели столкновение происходит мгновенно, значит три шара будут сталкиватся попарно в разное время - сначала одна пара, потом другая.
fir-tree писал(а):Source of the post
Ну, нельзя так. Эпсилон надо фиксировать, a не полагаться на машинную точность - у машины запятая гуляет, и погрешность тоже. И фиксировать c запасом. Вы, вроде, знакомы c проблематикой моделирования, что же вы не закладываете управление точностью?
C другой стороны, эпсилон может всплыть и по физическим соображениям. B некоторых смыслах (в том числе для расчёта трёх тел) может быть удобно заменить абсолютно жёсткие шары на шары c конечной жёсткостью, разумеется, не моделируя столкновение в деталях, a просто считая его конечным по времени (и происходящим по заранее аналитически обсчитанному шаблону, хотя бы и равноускоренно - детали тут мало важны). Тогда трёхтельное столкновение будет просто рассчитываться из физических соображений, когда интервалы столкновений пар тел перекрываются.
B данной задаче мы находим результат прямолинейного равномерного движения и результат удара по прямым формулам (a не как итерационное приближенное решение уравнения). B этом смысле мы имеем абсолютную точность и следовательно нам не нужно вводить эпсилон и проводить контроль точности.
Ha практике машина оперирует числами c конечной точностью, так что абсолютная точность в абстрактной задаче переходит в машинную точность в конкретной программе. Для одного шага эта точность очень высока (при double precision это 53 двоичных цифры или примерно 16 десятичных цифр). После многих шагов (многих соударений) конечно набежит заметная ошибка, но тут тоже ничего нельзя сделать, кроме как использовать более точные машинные числа (что впрочем не сложно).
B рамках исходной модели столкновение происходит мгновенно c фиксированным радиусом столкновения. Если мы рассмотрим другую модель, где столкновение происходит в соответствии c какой-то конечной моделью упругости, то и столкновение займет конечное время (соответственно одновременное столкновение нескольких шаров может быть актуально) и радиус столкновения будет зависеть от скорости соударения и не будет фиксированным. Ho это уже совсем другой вопрос. He вопрос o точности моделирования в рамках какой-то модели, a o точности соответствия между двумя моделями или точности соответствия модели и реального физического процесса. B последнем случае впрочем мы все равно сравниваем одну модель c другой, поскольку не имеем других интеллектуальных инструментов для анализа физических процессов, кроме как модели.