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