УДК 519.622
ТЕСТИРОВАНИЕ МОДИФИЦИРОВАННОЙ ВЕРСИИ
ИНТЕГРАТОРА ГАУССА-ЭВЕРХАРТА
,
Кемеровский государственный университет
В работе приведены результаты некоторых тестов приложения Diff5 [1], дополненного режимом интегрирования ОДУ методом Эверхарта [2]. Метод Эверхарта широко используется при численном интегрировании задач небесной механики в связи с его высокой эффективностью на этом классе задач. В [3] приведены, подробное описание и результаты тестирования программы Gauss_15, реализующей алгоритм метода Гаусса-Эверхарта. За основу настоящей работы был взят исходный код на языке Фортран бета версии алгоритма Гаусса-Эверхарта - Gauss_32_mod, являющегося модификацией Gauss_15, и опубликованного на электронном ресурсе [4]. Для использования алгоритма Gauss_32_mod в приложении Diff5, исходный код алгоритма был переписан на язык Паскаль и в него были внесены некоторые изменения, связанные с особенностями процедур ввода-вывода информации, используемых в Diff5. Тестирование проводилось с целью подтверждения корректности работы модифицированного алгоритма и сравнения результатов интегрирования с данными, приведенными в [3].
Для тестирования использовалась задача двух тел:
при различных значениях эксцентриситета e. Выбирались различные значения следующих входных параметров процедуры интегрирования [3]:
§ TF – конечное значение независимой переменной,
§ ERR – задаваемая точность для выбора переменного шага,
§ STEP – величина шага в режиме интегрирования с постоянным шагом,
§ NOR – порядок интегратора,
§ NI – число итераций на шаге.
На выходе анализировались величины:
§ Δr – среднеквадратичная погрешность первых двух компонент решения (абсолютная),
§ NF – число обращений к процедуре правых частей.
Оценка погрешности проводилась в конечной точке интервала интегрирования, который выбирался кратным 2π. Поскольку решение задачи (1) 2π-периодично, оценка погрешности может быть получена сравнением решения в начальной и конечной точках интервала интегрирования.
![]()
![]()
Исследовалась зависимость погрешности от шага STEP. Для этого задача (1) при e = 0.1 интегрировалась на интервале 1000 оборотов (TF = 2000π) в режиме постоянного шага с шестью итерациями на шаге. Порядок интегратора варьировался от 2 до 11. На рис. 1 представлены зависимости Δr от величины выбранного шага интегрирования STEP. На рис. 2 для сравнения изображены результаты аналогичного теста, для Gauss_15, приведенные в [3]. Заметим, что на рис. 1 шкала оси ординат начинается с величины 1e-12 в отличие от 1e-9 на рис. 2. Сравнение рисунков показывает, что для порядков интегратора равных 2 и 3, графики получаются идентичными. Характеры графиков для более высоких порядков аналогичны, с той лишь разницей, что величина погрешности ниже которой проявляется их случайное поведение, вызванное ошибками округления, в нашем случае на 2-3 порядка меньше, чем в [3].
![]()

Изучалась зависимость точности и быстродействия при различных значениях количества итераций на шаге. Для этого задача (1) при e = 0.9 и e = 0.1 интегрировалась на интервале 1000 оборотов в режиме переменного шага и порядке интегратора NOR = 11. Величина ERR варьировалась в интервале от 1e-3 до 1e-15 и строились диаграммы точность – быстродействие для значений NI от 1 до 6. Графики для NI=1, 3, 6 представлены на рис. 3. Полученные результаты для e = 0.1 соответствуют данным [3], с той лишь разницей, что наилучшая достижимая точность на линейных участках графиков в [3] составляет 1e-9, тогда, как в нашем случае линейные участки характеристик продолжаются до величины 1e-12.
Исследовалась зависимость погрешности от длины интервала интегрирования. Интегрировалась задача (1) при e = 0.1 на интервалах от 1 до 1000 оборотов с постоянным шагом равным π/16, порядок метода NOR изменялся от 6 до 12, интегрирование проводилось до полной сходимости итераций. На рис. 4 представлена зависимость погрешности Δr от количества оборотов. Из рис. 4 видно, что методы четного порядка дают линейную зависимость величины погрешности от длины интервала интегрирования, а нечетного – квадратичную, что соответствует результатам [3].
Проводилось сравнительное тестирование алгоритма Гаусса-Эверхарта, интегрированного в Diff5 и исходного алгоритма Gauss_32_mod на языке Фортран. Путем вариации величины ERR строились диаграммы точность-быстродействие для различных значений исходных параметров. На рис. 5 приведены графики, полученные при интегрировании траектории с эксцентриситетом e = 0.999 на интервале 1000 оборотов с переменным шагом и порядком NOR = 11.
Приведенные выше данные показывают соответствие результатов тестирования Diff5 и результатов [3], с той лишь разницей, что величина
достижимой точности алгоритма, интегрированного в Diff5, оказывается на 2-3 порядка лучше, чем исходной программы на языке Фортран. Это связано с тем, что по сравнению с арифметикой двойной точности исходного кода программы, использование расширенной арифметики в Diff5 дает соответствующее преимущество в точности представлении числа [3].
Из представленных выше данных можно сделать вывод, что перенос алгоритма на другой язык программирования, его модификация и интеграция с приложением Diff5 были проведены корректно.
Список литературы:
1. Каков Р. Н. Программа Diff4 для численного и качественного анализа решений обыкновенных дифференциальных уравнений / Р. Н. Каков, Д. Р. Ганеев – Материалы V Международной научно-практической конференции студентов, аспирантов и молодых ученых, Кемерово, 2010.
2. Everhart E. A New Method for Integrating Orbits / E. Everhart – Bulletin of the American Astronomical Society, 1973. V. 5. P. 389.
3. Авдюшев В. А. Интегратор Гаусса–Эверхарта / В. А. Авдюшев – Вычислительные технологии, 2010. Т. 15. № 4. С. 31–47.
4. Авдюшев В. А. Интегратор Гаусса–Эверхарта [Электрон-ный ресурс]. Режим доступа: http://www. scharmn. narod. ru/AVD/Software. htm (дата обращения 16.03.2014).


