РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА
Оглавление
ВВЕДЕНИЕ *
Условия задачи *
Метод прогноза и коррекции *
Модифицированный метод Гаусса *
ОПИСАНИЕ АЛГОРИТМА *
ОПИСАНИЕ ПРОГРАММЫ *
Выводы *
Листинг программы *
Список литературы *
Задачи прогноза протекания процессов , с дальнейшей их коррекцией весьма распространенны во многих областях науки и техники.
Решение таких задач связано с необходимостью использования численных методов , таких как : метод прогноза и коррекции , метод Адамса-Башфорта , метод Эйлера , метод Рунге-Кута , и др. Так же необходимо уметь решать системы линейных дифференциальных уравнений первого порядка одним из методов интегрирования , на произвольном промежутке времени .
Пяти точечный Метод прогноза и коррекции Адамса-Башфорта - дает высокую точность результатов. При необходимости большего повышения точности употребляют трех точечный метод прогноза и коррекции с автоматическим выбором шага - это приводит к универсальному методу интегрирования систем дифференциальных уравнений произвольного вида на любом промежутке интегрирования .
Важнейшей вспомогательной научно-технической задачей является разработка программных средств, реализующих расчет точного прогноза протекания процессов.
Используя метод прогноза и коррекции Адамса-Башфорта пятого порядка , требуется получить значения неизвестных для заданных временных интервалов . Для определения метода следует использовать метод прогноза и коррекции третьего порядка с переменным шагом , на заданных временных промежутках.
Преимущества трех шагового метода прогноза и коррекции заключаются в его высокой точности , авто подборе шага , что во много раз повышает точность самого метода Адамса-Башфорта , и делает его оптимальным для задач такого рода .
Для решения системы четырех линейных алгебраических уравнений с четырьмя неизвестными модифицированным методом Гаусса необходимо:
- Составить систему;
- Каждое уравнение поделить на коэффициент при X1;
- Образовать нули в первом столбце матрицы системы;
- Повторить еще раз эти операции, получим систему двух уравнений с двумя неизвестными , решение которой можно получить по формулам Крамера
Значения X1 и X2 можно получить , подставив в какое-либо из уравнений систем и разрешив эти уравнения относительно соответствующей переменной .
В начале программы выводится сообщение, а именно о начальных условий и матрицы коэффициентов системы линейных дифференциальных уравнений первого рода , начального шага интегрирования , левого и правого условий Рунге , время интегрирования по трех шаговому методу прогноза и коррекции , время интегрирования по пяти точечному методу Адамса-Башфорта .
Дополнительные начальные условия находим с помощью метода Эйлера. Решение систем линейных дифференциальных уравнений мы описываем отдельной процедурой, что облегчает дальнейшую алгоритмизацию .
Далее составляем цикл, для реализации алгоритма нахождения всех Yk+1 точек на заданном малом промежутке времени , и проверкой на условия Рунге , по трех шаговому методу прогноза и коррекции с авто подбором шага . После чего мы организовываем цикл, реализующий алгоритм нахождения точек по методу Адамса-Башфота , на заданном большом промежутке времени и с шагом автоматически подобранным предыдущим методом .
Вычисленные данные записываем файл, по ним формируем массив данных, которые выводим в соответствии с масштабированием на экран в виде графиков.
Программа реализующая универсальный алгоритм для решения систем линейных дифференциальных уравнений первого порядка произвольного вида, - построена по принципам объектно-ориентированного программирования.Основная программа построена на объектной библиотеке VFH , реализующей возможности реализации гибкого интерфейса между программой и пользователем .
Основная программа включает в себя только один модуль PACM , и использует всего два метода объекта TApplPandC , - метод Application - рабочий цикл программы ; деструктор Done – реализует разрушение таблицы виртуальных методов, и операций , связанных с завершением программы .
Модуль PACM включает в себя модули библиотек - реализующих построение интерфейса . Модуль реализующий алгоритм метода Адамса-Башфорта , и по вычесленным данным строящий график , есть – PACMBtn .
Главным родителем всех объектов есть объект – Tobject . Основным рабочим объектом библиотеки VFH есть объект Tform . Рассмотрим потомка являющегося типичным представителем родителя TForm - TApplPandC . Он имеет два виртуалых метода: MouseHandler: Boolean Б – выходным параметром которого есть признак закрытия формы , и метод FormCreate - реализующий построение интерфейса формы . Не виртуальный метод Application - предназначен для создания формы , конфигурирования программной среды , и дальнейшего управления программой .
Модуль реализующий создание и управления главного и субменю, есть – PACMMenu , позволяющий пользователю изменять параметры и настройки системы, предоставляющий справку о разработчике , а также дает доступ к справочной системе PrandCo M Help System . Данные свойства меню реализуют объекты TMenu , и THelpForm , объектной библиотеки VFH .
Теперь рассмотрим модуль PACMBtn – рреализующий алгоритм построения вычисленных данных. Процедура реализующая алгоритм пяти точечного метода прогноза и коррекции Адамса-Башфорта , - MethodAdamsaBashforta ( h,tp,ta : real ; NU : array[1..N] of real ) – параметры которой представляют : h - начальный шаг интегрирования ; tp – время интегрирования трех точечным методом прогноза и коррекции , ta – время интегрирования по методу Адамса-Башфорта , NU – массив начальных условий. Данная процедура способна производить решения систем линейных дифференциальных уравнений произвольного размера, на произвольном промежутке времени интегрирования. Вычисленные данные записываются в файлы prandcom*.df . Метод реализующий алгоритм построения вычисленных данных произвольной степени сложности , с возможностью построения графиков с не линейно изменяющимся шагом , построения одновременно любого количества графиков, - есть объект TCartFile , обладающего всеми свойствами родителей Tform , Tchart .
Стоит заметить, что программа PrandCo M version 2.41 - разработана на языке Borland Pascal под защищенный режим работы процессора и имеет доступ ко всей оперативной памяти компьютера. Реализует гибкий интерфейс, облегчающим работу с программным обеспечением. Позволяет решить систему линейных дифференциальных уравнений первого порядка методом Адамса-Башфорта , с возможность просмотра результатов вычисления в виде графиков .
Тестовые программы подтвердили то, что разработанный алгоритм предоставляет точность вычислений, погрешность которых не превышает 1% .
В данной работе был создан алгоритм, а также программа для решения систем линейных дифференциальных уравнений первого порядка пяти точечным методом прогноза и коррекции Адамса-Башфорта .
Проделаны тестовые расчеты, которые точно определили высокую эффективность метода Адамса-Башфорта со стартованием трех точечным методом прогноза и коррекции с переменным шагом.
Также были проделаны необходимые исследования решения систем как с постоянным шагом, так и с переменным шагом на сходимость к постоянному шагу.
Все результаты, полученные нами точны.
{
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| PrandCoM version 2.41 Copiright ( c ) 2001 |
| Программа разработана студентом |
| Национального Технического Университета |
| " Харьковский Политехнический Институ " |
| группы И - 29 |
| Кафедры Автоматического Управления Движением |
| ( Системы и процессы управления ) |
| Ухановым Е.В. |
| NetMail ( FidoNet ) 2:461/212.21 |
| E-Mail :
| |
| Программа разработана на основе объектной библиотеки VFH version 4.XX |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
{$M 10000,0,0}
(****************************************************************************)
(****** Дата последней разработки : 05.05.2001 **********************)
(****************************************************************************)
Program Prognoz_and_Correction_Modification;
(****************************************************************************)
Uses PACM;
(****************************************************************************)
var
TPC : TApplPandC;
(****************************************************************************)
(******************************) begin (*************************************)
TPC.Application;
TPC.Done;
(*******************************) end. (*************************************)
(****************************************************************************)
{
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| Версия 2.XX |
| Программа разработана студентом Национального Технического |
| Университета " Харьковский Политехнический Институ " группы И - 29 |
| Кафедры Автоматического Управления Движением - Ухановым Е.В. |
| NetMail ( FidoNet ) 2:461/212.21 |
| E-Mail :
| |
| Программа разработана на основе объектной библиотеки VFH version 4.XX |
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
}
(****************************************************************************)
(**** Дата последней разработки модуля : 15.04.2001 *****************)
(****************************************************************************)
(****************************************************************************)
(*******************************) Unit PACM; (*******************************)
(****************************************************************************)
(*******************************) INTERFACE (********************************)
(****************************************************************************)
Uses FormObj,MouseObj,PACMEr,PACMMenu,PACMBtn,PACMPnl,PACMPC,PACMCnst;
(****************************************************************************)
type
TApplPandC = object ( TForm )
Function MouseHandler : boolean;Virtual;
Procedure FormCreate;Virtual;
Procedure Application;
end;
(****************************************************************************)
(******************************) IMPLEMENTATION (****************************)
(****************************************************************************)
Procedure TApplPandC.FormCreate;
var
Pnl : TPanel;
Pnl1 : TPanel;
TMenu1 : TCreateMenus;
begin
Pnl.Init(548,35,619,50,1,7,1,1,1,1,false,false);
Pnl.Panel;
Pnl1.Init(470,407,630,460,1,7,1,0,1,4,true,false);
Pnl1.Panel;
TPnl1.ToolBarCreate;
TPnl1.PanelCreate;
TPageControl1.PageControlCreater;
TBitBtns.BitBtnCreaters;
TMenu1.MenusCreate;
end;
(********************************)
Function TApplPandC.MouseHandler;
var
TMouse1 : TMouse;
b,x,y : word;
TMenu1 : TCreateMenus;
TSubMenu1 : TCreateMenus;
ST1 : TSystemTime;
begin
MouseHandler:=false;
TMouse1.GetMouseState(b,x,y);
ST1.Init(549,36,618,49,1,15);
ST1.SystemTime;
TBitBtns.BitBtnHandlers(b,x,y);
MouseHandler:=fExitBtn;
TMenu1.MenusVisible(x,y);
TMenu1.MenusHandlers(b,x,y);
TPageControl1.PageControlHandlers(b,x,y);
end;
Procedure TApplPandC.Application;
var
TIEr : TInitErrors;
begin
TIEr.FatalErrorVFH;
TIEr.LoadFont("km_defj8.fnt");
TIEr.FindImEr1("x.bi");
InitObjGraph;
if InitMouseJVU then
begin
TIEr.LfLoad("Lf.sys");
TIEr.ErrorExec("x.bi");
TIEr.FindFile("f1.dat");
TIEr.FindFile("f2.dat");
TIEr.FindFile("f3.dat");
TIEr.FindFile("f4.dat");
TIEr.FindFile("km_defj8.fnt");
TIEr.FindFile("f_nfrj8.fnt");
TIEr.FindFile("t_nfrj8.fnt");
TIEr.FindFile("asdf.bi");
TIEr.FindFile("pacm_n1.bi");
TIEr.FindFile("pacm_n2.bi");
TIEr.FindFile("pacm_n3.bi");
TIEr.FindFile("pacm_n4.bi");
TIEr.FindFile("PrandCoM.hlp");
TIEr.FindFile("litj.chr");
TIEr.FindFile("scri.chr");
TIEr.FindFile("trip.chr");
TIEr.FindFile("tscr.chr");
TIEr.FindFile("initm.mtr");
TIEr.FindFile("initnu.mtr");
if not fQuickHalt then
begin
TIEr.LoadCFG("PrandCom.cfg");
With HT do
begin
hx1:=575;
hy1:=20;
hx2:=637;
hy2:=34;
hc:=true;
hs:="Закрыть";
end;
Init(1,1,639,479,7,1,"Prognoz & Corrections Modifications");
Form;
end;
end
else
begin
TIEr.ErrorVFH;
end;
end;
(****************************************************************************)
(***********************************) END. (*********************************)
(****************************************************************************)
- Дж.Ортега , У.Пул “Введение в численные методы решения дифференциальных уравнений”. Пер.с англ.; под редакцией А.А.Абрамова - М.;Наука.Гл.ред.физ.мат.лит.1986.-288с.
- Р.В.Хемминг “Численные методы для научных работников и инженеров ”: Пер с англ.:Под редакцией Р.С.Гутера .- Гл.ред.физ.мат.лит.1968.-203 с.
3..Т.Шуп.”Решение инженерных задач наЭВМ. Практическое пособие “Пер.с англ.-М.Мир.1982.-238с.