Первым этапом анализа достоверности была проверка правильности решения одного дифференциального уравнения. Полученное численное решение сравнивается с аналитическим.
Пусть требуется решить уравнение:
при начальном условии y(0)=1, 0<=x<=1, и шаге интегрирования h=0.1. Это линейное уравнение, имеющее следующее точное решение:
которое поможет нам сравнить точность численного решения для случая с постоянным шагом, т.к. точность решений с переменным шагом выше. Результаты расчета представлены в Таблице 1.Как видно из таблицы, отличие между численными и аналитическими решениями удовлетворительное даже для такого большого шага, и не превышает 2%. Теперь решим этот же пример тем же методом, но с переменным шагом. Получаем любопытные зависимости точности от выбора шага, а также шага сходимости, - которые носят периодический характер. Результаты исследования приведены в таблице 2. Как мы видим, погрешность резко уменьшается с использованием метода с переменным шагом, и показывает очень высокую точность решения для численных методов, не превышающею 1%.
Таблица 2
Таблица 2
Начальный шаг | Максимальная погрешность | Сведение к шагу |
0.1 | 1.683 % | 0.0250 |
0.01 | 1.163 % | 0.0100 |
0.001 | 0.744 % | 0.0040 |
0.0001 | 0.568 % | 0.0032 |
0.00001 | 0.451 % | 0.0025 |
0.000001 | 0.723 % | 0.0040 |
0.0000001 | 0.578 % | 0.0032 |
0.00000001 | 0.462 % | 0.0026 |
0.000000001 | 0.740 % | 0.0041 |
0.0000000001 | 0.592 % | 0.0033 |
0.00000000001 | 0.473 % | 0.0026 |
Иллюстрация решения данного дифференциального уравнения в виде графика – приведена в Приложении 2.
Решение системы дифференциальных уравнений
Вторым этапом анализа достоверности полученных результатов была проверка правильности решения системы линейных дифференциальных уравнений с аналитическим решением.
Рассмотрим следующую систему дифференциальных уравнений, которую требуется решить методом Адамса-Башфорта:
Начальными условиями здесь являются:
. Возьмем начальный шаг интегрирования h=0.00001, время интегрирования по трех точечному методу прогноза и коррекции tp=0.1 и время интегрирования по методу Адамса-Башфорта ta=1.
Результаты исследования для разных начальных шагов интегрирования приведены в таблице 2. Мы приходим к выводу, что точность решения одного уравнения и системы дифференциальных уравнений совпадают.
Иллюстрация решения данной системы дифференциальных уравнений приведены в виде графика в приложении 3.
ЗАКЛЮЧЕНИЕ
В данной курсовой научно-исследовательской работе разработан алгоритм и программа решения систем линейных дифференциальных уравнений первого порядка пяти точечным методом прогноза и коррекции Адамса-Башфорта.
Проведены тестовые расчеты, подтвердившие высокую эффективность и точность метода Адамса-Башфорта со стартованием трех точечным методом прогноза и коррекции с переменным шагом.
Проведены ряд исследований решения систем как с постоянным шагом, так и с переменным шагом на сходимость к постоянному шагу.
Во всех случаях получены результаты высокой точности.
Список литературы
1.Дж.Ортега, У.Пул “Введение в численные методы решения дифференциальных уравнений ”. Пер.с англ.; под редакцией А.А.Абрамова - М.;Наука.Гл.ред.физ.мат.лит.1986.-288с.
2.Р.В.Хемминг “Численные методы для научных работников инженеров ”: Пер с англ.:Под редакцией Р.С.Гутера.- Гл.ред.физ.мат.лит.1968.-203 с.
Т.Шуп.”Решение инженерных задач наЭВМ. Практическое пособие “
Пер.с англ.-М.Мир.1982.-238с.
Приложение 1:
Блок схема Алгоритма
-
+
-
+
Приложение 2:
Решение одного дифференциального уравнения
Приложение 3:
Решение системы линейных дифференциальных уравнений
1-ое уравнение 2 –ое уравнение
3 – е уравнение 4 –ое уравнение
Приложение 4: Тексты программ
{
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
| 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. (*********************************)
(****************************************************************************)