Решение систем линейных дифференциальных уравнений пятиточечным методом Адамса-Башфорта
РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА — БАШФОРТА
Оглавление
ВВЕДЕНИЕ *
Условия задачи *
Метод прогноза и коррекции *
Модифицированный метод Гаусса *
ОПИСАНИЕ АЛГОРИТМА *
ОПИСАНИЕ ПРОГРАММЫ *
Выводы *
Листинг программы *
Список литературы *
ВВЕДЕНИЕ
Задачи прогноза протекания процессов, с дальнейшей их коррекцией весьма распространенны во многих областях науки и техники.
Решение таких задач связано с необходимостью использования численных методов, таких как: метод прогноза и коррекции, метод Адамса-Башфорта, метод Эйлера, метод Рунге-Кута, и др. Так же необходимо уметь решать системы линейных дифференциальных уравнений первого порядка одним из методов интегрирования, на произвольном промежутке времени.
Пяти точечный Метод прогноза и коррекции Адамса-Башфорта — дает высокую точность результатов. При необходимости большего повышения точности употребляют трех точечный метод прогноза и коррекции с автоматическим выбором шага — это приводит к универсальному методу интегрирования систем дифференциальных уравнений произвольного вида на любом промежутке интегрирования .
Важнейшей вспомогательной научно-технической задачей является разработка программных средств, реализующих расчет точного прогноза протекания процессов.
Условия задачи
Используя метод прогноза и коррекции Адамса-Башфорта пятого порядка, требуется получить значения неизвестных для заданных временных интервалов. Для определения метода следует использовать метод прогноза и коррекции третьего порядка с переменным шагом, на заданных временных промежутках.
Метод прогноза и коррекции
Преимущества трех шагового метода прогноза и коррекции заключаются в его высокой точности, авто подборе шага, что во много раз повышает точность самого метода Адамса-Башфорта, и делает его оптимальным для задач такого рода .
Модифицированный метод Гаусса
Для решения системы четырех линейных алгебраических уравнений с четырьмя неизвестными модифицированным методом Гаусса необходимо:
- Составить систему;
- Каждое уравнение поделить на коэффициент при X1;
- Образовать нули в первом столбце матрицы системы;
- Повторить еще раз эти операции, получим систему двух уравнений с двумя неизвестными, решение которой можно получить по формулам Крамера
Значения X1 и X2 можно получить, подставив в какое-либо из уравнений систем и разрешив эти уравнения относительно соответствующей переменной.
ОПИСАНИЕ АЛГОРИТМА
В начале программы выводится сообщение, а именно о начальных условий и матрицы коэффициентов системы линейных дифференциальных уравнений первого рода, начального шага интегрирования, левого и правого условий Рунге, время интегрирования по трех шаговому методу прогноза и коррекции, время интегрирования по пяти точечному методу Адамса-Башфорта .
Дополнительные начальные условия находим с помощью метода Эйлера. Решение систем линейных дифференциальных уравнений мы описываем отдельной процедурой, что облегчает дальнейшую алгоритмизацию .
Далее составляем цикл, для реализации алгоритма нахождения всех Yk+1 точек на заданном малом промежутке времени, и проверкой на условия Рунге, по трех шаговому методу прогноза и коррекции с авто подбором шага. После чего мы организовываем цикл, реализующий алгоритм нахождения точек по методу Адамса-Башфота, на заданном большом промежутке времени и с шагом автоматически подобранным предыдущим методом .
Вычисленные данные записываем файл, по ним формируем массив данных, которые выводим в соответствии с масштабированием на экран в виде графиков.
ОПИСАНИЕ ПРОГРАММЫ
Программа реализующая универсальный алгоритм для решения систем линейных дифференциальных уравнений первого порядка произвольного вида, — построена по принципам объектно-ориентированного программирования. Основная программа построена на объектной библиотеке VFH, реализующей возможности реализации гибкого интерфейса между программой и пользователем .
Основная программа включает в себя только один модуль PACM, и использует всего два метода объекта TApplPandC , — метод Application — рабочий цикл программы; деструктор Done — реализует разрушение таблицы виртуальных методов, и операций, связанных с завершением программы .