3. Метод Адамса
Метод Адамса относится к многошаговым схемам решения ДУ, характеризующихся тем, что решение в текущем узле зависит от данных не в одном предыдущем или последующем узле сетки, как это имеет место в одношаговых методах, а зависит от данных в нескольких соседних узлах.
Идея методов Адамса заключается в том, чтобы для повышения точности использовать вычисленные уже на предыдущих шагах значения
Yk-1 , Yk-2 , Yk-3 …
Если используются значения в k предыдущих узлах, то говорят о k-шаговом методе интегрирования уравнения. Одним из способов построения многошаговых методов заключается в следующем. По значениям функции, вычисленным в k предшествующих узлах, строится интерполяционный полином степени (k-1) - , который используется при интегрировании дифференциального уравнения по выражению
Интеграл при этом выражается через квадратурную формулу:
,
где λi– квадратурные коэффициенты, значения которых k от 2 до 4 приведены в таблице ниже.
k |
λi | |||
2 |
3/2 |
-1/2 |
|
|
3 |
23/12 |
-16/12 |
5/12 |
|
4 |
55/24 |
-59/24 |
37/24 |
-9/24 |
Полученное таким образом семейство формул называется явной k-шаговой схемой Адамса. Как видно, при k=1 в качестве частного случая получается формула Эйлера.
Например, для формулы 4 порядка имеем:
(3.7)
-“прогноз”, вычисленный с использованием значений в предыдущих точках,(Р) — приближенное значение функции, вычисленное в точке получения прогноза,-«коррекция» прогнозного значения,yk+1– искомое значение по Адамсу.
Достоинство такого метода решения ДУ заключается в том, что в каждой точке рассчитывается только одно значение функции F(x,y). К недостаткам можно отнести невозможность старта многошагового метода из единственной начальной точки, так как для вычислений по k-шаговой формуле необходимо значение значения функции в k узлах. Поэтому приходится (k-1) решение в первых узлах x1, x2, …, xk-1 получать с помощью какого-либо одношагового метода, например методаРунге-Кутта 4–го порядка.
Другой проблемой является невозможность изменения шага в процессе решения, что легко реализуется в одношаговых методах.
Описание программы наC++
Программа позволяет получить решение системы ДУ, представленной в формуле (1.1), методами математического моделирования (Эйлера, Рунге-Кутта, Адамса). Результаты решения представлены динамическим отображением физического процесса в режиме реального времени.
Код программы представлен в Приложении 1.
Интерфейс программы визуально можно разделить на 4 области (см. рис. 3):
Область отрисовки физической модели;
Область задания начальных значений;
Область выбора метода расчета;
Блок кнопок управления программой.
Рис.3. Интерфейс программы
Область отрисовки физической модели. Для отрисовки физической модели используется компонент TImage и его функции рисования линий.
Область задания начальных значений. Для задания начальных значений используется 16 текстовых полей, в которых задаются начальные величины в виде текстовых строк:
Далее текстовые строки преобразуются в числа, при этом не производится проверка на правильность введенных значений. Поэтому, при вводе неверных значений (символов вместо цифр) программа завершается с ошибкой.
Область выбора метода расчета состоит из трех компонентов TRadioButton. В этой области возможен выбор, только одного метода расчета. При выборе другого метода автоматически отменяются оставшиеся методы.
Блок кнопок управления программой позволяет запустить моделирование физического процесса (кнопка «Старт») и поведения (движения заданной системы тел) физической модели, а так же, остановить моделирование (Кнопка «Стоп») до окончания заданного времени моделирования.
Программа начинает работу по кнопке «Старт». До активации кнопки «Старт» можно задать начальные значения в соответствующих полях; если ввода не произведено, программа работает со значениями по умолчанию. В режиме реального времени выполняется имитация движения системы. Анализ поведения физической модели при некоторых отличных от начальных значениях описан далее (см. стр. 11). До окончания времени моделирования можно остановить выполнение программы и задать новые начальные условия или выбрать иной метод расчета.Завершение работы программы осуществляется путем нажатия кнопки с крестиком в правом верхнем углу основного окна программы (блок управляющих кнопок).