РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА
Оглавление
ВВЕДЕНИЕ
*Условия задачи
*Метод прогноза и коррекции
*Модифицированный метод Гаусса
*ОПИСАНИЕ АЛГОРИТМА
*ОПИСАНИЕ ПРОГРАММЫ
*Выводы
*Листинг программы
*Список литературы
*
Задачи прогноза протекания процессов , с дальнейшей их коррекцией весьма распространенны во многих областях науки и техники.
Решение таких задач связано с необходимостью использования численных методов , таких как : метод прогноза и коррекции , метод Адамса-Башфорта , метод Эйлера , метод Рунге-Кута , и др. Так же необходимо уметь решать системы линейных дифференциальных уравнений первого порядка одним из методов интегрирования , на произвольном промежутке времени .
Пяти точечный Метод прогноза и коррекции Адамса-Башфорта - дает высокую точность результатов. При необходимости большего повышения точности употребляют трех точечный метод прогноза и коррекции с автоматическим выбором шага - это приводит к универсальному методу интегрирования систем дифференциальных уравнений произвольного вида на любом промежутке интегрирования .
Важнейшей вспомогательной научно-технической задачей является разработка программных средств, реализующих расчет точного прогноза протекания процессов.
Используя метод прогноза и коррекции Адамса-Башфорта пятого порядка , требуется получить значения неизвестных для заданных временных интервалов . Для определения метода следует использовать метод прогноза и коррекции третьего порядка с переменным шагом , на заданных временных промежутках.
Преимущества трех шагового метода прогноза и коррекции заключаются в его высокой точности , авто подборе шага , что во много раз повышает точность самого метода Адамса-Башфорта , и делает его оптимальным для задач такого рода .
Для решения системы четырех линейных алгебраических уравнений с четырьмя неизвестными модифицированным методом Гаусса необходимо:
Значения 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 : JVUMailbox@rambler.ru
|| |
| Программа разработана на основе объектной библиотеки 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 : jvumailbox@rambler.ru
|| |
| Программа разработана на основе объектной библиотеки 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. (*********************************)
(****************************************************************************)
3..Т.Шуп.”Решение инженерных задач наЭВМ. Практическое пособие “Пер.с англ.-М.Мир.1982.-238с.