История изменений
Исправление qnikst, (текущая версия) :
хм, а я то надеялся, что там че-то похитрее, чем dithering
в группе, а не во всех. Ну и скорее не округление, а алгоритм дающий ошибку в определенную сторону, например при использовании методов Рунге-Кутты используют «совместные» (не помню даже английскую терминологию) генерирующие матрицы, напр Lobatto-A Lobatto-B в этом случае ошибки компенсируют др. друга. Этот подход используется даже в алгоритмах базирующихся на других методах.
А так алгоритмов много: проективные - после каждого шага мы возвращаемся на траекторию с «правильной» энергией (тут есть несколько подметодов со своими свойствами), разные методы замены переменных, методы разложения уравниние в B-Series (Butcher) ну и более сложные методы, которые я даже не осилил запомнить, использующие симплектическую структуру, симметрии, различные математические объекты, которые можно построить для таких систем. Всё это сдобрено кучей дополнительных подходов, которые должны соблюдаться, чтобы уменьшить ошибку вплоть до учета ошибок операций с плавающей точкой (таких как compensated summation).
У меня дома лежит 700 страничная книжка по всему этому делу, но я так и не нахожу время заняться подробным разбором. И ещё пара статей по конкретным нужным мне методам для би-интегрируемых систем, которые я тоже не доразобрал. Если что конкретно интересно могу посмотреть подробнее.
Исходная версия qnikst, :
хм, а я то надеялся, что там че-то похитрее, чем dithering
в группе, а не во всех. Ну и скорее не округление, а алгоритм дающий ошибку в определенную сторону, например при использовании методов Рунге-Кутты используют «совместные» (не помню даже английскую терминологию) генерирующие матрицы, напр Lobatto-A Lobatto-B в этом случае ошибки компенсируют др. друга. Этот подход используется даже в алгоритмах базирующихся на других методах.
А так алгоритмов много: проективные - после каждого шага мы возвращаемся на траекторию с «правильной» энергией (тут есть несколько подметодов со своими свойствами), разные методы замены переменных, методы разложения уравниние в B-Series (Butcher) ну и более сложные методы, которые я даже не осилил запомнить, использующие симплектическую структуру, симметрии, различные математические объекты, которые можно построить для таких систем. Всё это сдобрено кучей дополнительных подходов, которые должны соблюдаться, чтобы уменьшить ошибку вплоть до учета ошибок операций с плавающей точкой (таких как compensated summation).
У меня дома лежит 700 страничная книжка по всему этому делу, но я так и не нахожу время заняться подробным разбором. И ещё пара статей по конкретным нужным мне методам для би-интегрируемых систем, которые я тоже не доразобрал.