РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА

 

Оглавление

ВВЕДЕНИЕ *

Условия задачи *

Метод прогноза и коррекции *

Модифицированный метод Гаусса *

ОПИСАНИЕ АЛГОРИТМА *

ОПИСАНИЕ ПРОГРАММЫ *

Выводы *

Листинг программы *

Список литературы *

 

ВВЕДЕНИЕ

Задачи прогноза протекания процессов , с дальнейшей их коррекцией весьма распространенны во многих областях науки и техники.

Решение таких задач связано с необходимостью использования численных методов , таких как : метод прогноза и коррекции , метод Адамса-Башфорта , метод Эйлера , метод Рунге-Кута , и др. Так же необходимо уметь решать системы линейных дифференциальных уравнений первого порядка одним из методов интегрирования , на произвольном промежутке времени .

Пяти точечный Метод прогноза и коррекции Адамса-Башфорта - дает высокую точность результатов. При необходимости большего повышения точности употребляют трех точечный метод прогноза и коррекции с автоматическим выбором шага - это приводит к универсальному методу интегрирования систем дифференциальных уравнений произвольного вида на любом промежутке интегрирования .

Важнейшей вспомогательной научно-технической задачей является разработка программных средств, реализующих расчет точного прогноза протекания процессов.

Условия задачи

Используя метод прогноза и коррекции Адамса-Башфорта пятого порядка , требуется получить значения неизвестных для заданных временных интервалов . Для определения метода следует использовать метод прогноза и коррекции третьего порядка с переменным шагом , на заданных временных промежутках.

Метод прогноза и коррекции

Преимущества трех шагового метода прогноза и коррекции заключаются в его высокой точности , авто подборе шага , что во много раз повышает точность самого метода Адамса-Башфорта , и делает его оптимальным для задач такого рода .

Модифицированный метод Гаусса

Для решения системы четырех линейных алгебраических уравнений с четырьмя неизвестными модифицированным методом Гаусса необходимо:

  1. Составить систему;
  2. Каждое уравнение поделить на коэффициент при X 1;
  3. Образовать нули в первом столбце матрицы системы;
  4. Повторить еще раз эти операции, получим систему двух уравнений с двумя неизвестными , решение которой можно получить по формулам Крамера

Значения 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. (*********************************)

(****************************************************************************)

 

 

 

 

 

 

 

 

Список литературы

  1. Дж.Ортега , У.Пул “Введение в численные методы решения дифференциальных уравнений ”. Пер.с англ.; под редакцией А.А.Абрамова - М.;Наука.Гл.ред.физ.мат.лит.1986.-288с.
  2. Р.В.Хемминг “Численные методы для научных работников и инженеров ”: Пер с англ.:Под редакцией Р.С.Гутера .- Гл.ред.физ.мат.лит.1968.-203 с.

3..Т.Шуп.”Решение инженерных задач наЭВМ. Практическое пособие “Пер.с англ.-М.Мир.1982.-238с.