Примечание | разработан универсальный алгоритм решения СЛДУ методом Адамса-Башфорта с автоматическим подбором шага при стартовании трехточечным методом прогноза и коррекции |
Загрузить архив: | |
Файл: ref-7850.zip (426kb [zip], Скачиваний: 70) скачать |
ОТЧЕТ
о научно-исследовательской курсовой работе
по численным методам
на тему :
« РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА »
Выполнил студент
гр.И-29 Уханов Е.В.
Руководитель работы
Д.т.н. проф БреславскийД.В.
Харьков 2001
Введение………………………………………………………………………..3
1. Постановка задачи …………………………………………………………4
2. Методы решения………………..…………………………………………6
2.1. Метод прогноза и коррекции …………………………………………6
2.2 Модифицированный метод Гаусса ………………………………….12
3.Описание алгоритма ………………………………………………………14
4.Описание программы ……………………………………………………..15
5.Примеры расчетов ………………………………………………………...17
5.1. Решение одного дифференциального уравнения …………………...17
5.2. Решение системы дифференциальных уравнений ………………….19
Заключение ……………………………………………………………………20
Список использованной литературы ………………………………………..21
Приложение 1 …………………………………………………………………22
Приложение 2 …………………………………………………………………23
Приложение 3 …………………………………………………………………24
Приложение 4 …………………………………………………………………25
ВВЕДЕНИЕ
Во многих областях науки и техники , а также отраслях наукоемкой промышленности , таких как : авиационная , космическая , химическая , энергетическая, - являются весьма распространенные задачи прогноза протекания процессов ,с дальнейшей их коррекцией .
Решение такого рода задач связано с необходимостью использования численных методов , таких как : метод прогноза и коррекции , метод Адамса-Башфорта , метод Эйлера , метод Рунге-Кута , и др.При этом , стоит задача решения системы линейных дифференциальных уравнений первого порядка одним из методов интегрирования , на произвольном промежутке времени . Одним из оптимальных методов дающих высокую точность результатов – является пяти точечный метод прогноза и коррекции Адамса-Башфорта . Для повышения точности метода используется трех точечный метод прогноза и коррекции с автоматическим выбором шага , что приводит к универсальному методу интегрирования систем дифференциальных уравнений произвольного вида на любом промежутке интегрирования.
Разработка программных средств реализующих расчет точногопрогноза протекания процессов , является важнейшей вспомогательной научно-технической задачей .
Целью данной курсовой работы является разработка алгоритма решения систем линейных дифференциальных уравнений первого порядка пяти точечным методом прогноза и коррекции Адамса-Башфорта .
1. ПОСТАНОВКА ЗАДАЧИ
Рассмотрим произвольную систему линейных дифференциальных уравнений первого порядка :
(1.1)
тогда как :
А = (1.2)
гдеА заданная матрица размеромNxN .
- вектор с N координатами , который подлежит определению ;
N – произвольное целое число ;
- заданные вектора правых частей с Nкоординатами .
Сиспользованием метода прогноза и коррекции Адамса-Башфорта пятого порядка, необходимо получить значениянеизвестных для заданныхвременных интервалов . Длястартованияметода необходимо использовать метод прогноза и коррекции третьего порядка с переменным шагом, на заданных временных промежутках ..
2. МЕТОДЫ РЕШЕНИЯ
2.1. Метод прогноза и коррекции
Метод прогноза и коррекции относится к задачам класса Коши , а именно к численным решениям многошаговыми методами .
Рассмотрим задачу Коши :
, (2.1.1)
Подставим в (2.1.1) точное решениеy(x), и проинтегрируем это уравнение на отрезке, тогда получим :
(2.1.2)
где в последнем член предполагаем ,
что p(x) полином , аппроксимирующий f(x,y(x)). Чтобы
построить этот полином , предположим , что
- приближения к
решению в точках . Будем считать
для начала , что узлы Xiрасположены
равномерно с шагомh . тогдаfi= f(xi,yi), ( i=k,k-1,k-2,…,k-N) есть приближения к
f (x,y(x))в точках
и мы в качестве Pвозьмем
интерполяционный полином для выбора данных (xi,fi) ,
( i =k,k-1,k-2,…,k-N) . Таким образом , P – полином степени N , удовлетворяющий условиямP(xi)=fi, ( i = k,k-1,k-2,…,k-N) .В принципе , можем проинтегрировать этот полином явно , что ведет к следующему методу :
(2.1.3)
В простейшем случае , когдаN=0, полином P есть константа, равная fk,и (2.1.3) превращается в обычный метод Эйлера :
(2.1.4)
Если N=1 , то P есть линейная функция , проходящая через точки
(xk-1,fk-1)и (xk,fk) , т.е.
(2.1.5)
интегрируя этот полиномот Xkдо Xk+1, получим следующий метод :
(2.1.6)
который является двухшаговым , поскольку использует информацию в двух точкахxkи xk-1. Аналогично , если N=2 , то P- есть кубический интерполяционный полином , а соответствующий метод определяется формулой :
(2.1.7)
Отметим , что метод (2.1.6) – есть метод Адамса-Башфорта второго порядка , (2.1.7) – метод Адамса-Башфорта четвертого порядка.
Для стартования метода(2.1.7)необходимы сведения о четырех предыдущих точках . Соответственно данный метод требует вычисления стартующих данных . Воспользуемся для нахождения второй точки одношаговым методом Эйлера , который имеет вид :
Таким образом , подставляя начальные условия, мы находим вторую точку . Следует заметить , что степень точности совпадает со степенью точности остальных методов , что является существенным фактором в стартовании метода прогноза и коррекции .
Ввиду того , что стартовые методы имеют более низкий порядок , в начале приходится считать с меньшим шагом и с использованием большего промежутка времени . В данном случае метод Эйлера для дальнейшего интегрирования не оправдывает себя . Для этих целей воспользуемся трехшаговым методом прогноза и коррекции с переменным шагом .
Рассуждая также , как для метода Адамса-Башфорта , который излагается в работах : [1],[2],[3],мы мы приходим к формулам :
Прогноз :
(2.1.8)
Коррекция :
(2.1.9)
гдеh- шаг интегрирования , изменяющийся на малом промежутке временив соответствии с условиями Рунге :
,
где в свою очередь - малое конкретное значение , при невыполнении условия которого увеличивается шагh=h*Nа h=h/N , где N- некоторое целое число больше единицы .
Оптимально , для вычисления новой точки , с помощью метода прогноза и коррекции, используется формула :
(2.1.10)
Таким образом, мы воспользовались простым трех шаговым методом прогноза и коррекции, для стартования метода Адамса-Башфорта . Преимущества данногометода заключаются :в его высокой точности , авто подборе шага , что во много раз повышает точность самого метода Адамса-Башфорта , и делает его оптимальным для задач такого рода .
Метод Адамса-Башфорта использует уже посчитанные значения в точке Xkи в предыдущих точках . В принципе , при построении интерполяционного полинома , мы можем использовать и точки Xk+1,Xk+2,… . Простейший случай при этом состаит в использовании точек Xk+1,Xk,…,Xk-N
и построения интерполяционного полинома степениN+1, удовлетворяющего условиямP(Xi)=fi , (I=k+1,k,…,k-N) .При этом возникает класс методов , известных как методы Адамса-Моултона . ЕслиN=0, тоp – линейная функция , проходящая через точки(Xk,fk) и(Xk+1,f k+1) , и соответствующий метод :
(2.1.11)
является методом Адаиса-Моултона[2], именно им мы воспользовались в формуле(2.1.9) – коррекции спрогнозированной точки в трех шаговом методе . ЕслиN=2, то p – кубический полином , построенный по точкам и соответствующий метод :
(2.1.12)
является методом Адамса-Моултона четвертого порядка . В силу того , что по сути fk+1 – неизвестная , то методы Адамса-Моултона (2.1.11),(2.1.12) называют неявными . В тоже время методы Адамса-Башфорта – называют явными .
Теперь воспользовавшись явной формулой (2.1.7), и неявной формулой(2.1.12) , используя их совместно , мы приходим к методу Адамса-Башфорта четвертого порядка :
(2.1.13)
Стоит обратить внимание , что в целом этод метод является явным . Сначало по формуле Адамса-Башфорта вычисляется значение, являющееся“прогнозом” . Затем используется для вычисления приближенного значения , которое в свою очередь используется в формуле Адамса-Моултона . Таким образом формулаАдамса-Моултона “корректирует” корректирует приближение , называемое формулой Адамса-Башфорта .
Теперь рассмотримпроизвольную систему линейных дифференциальных уравнений первого порядка :
где
A =
Заданная матрица размером NxN ; - вектор с N координатами , который подлежит определению . В связи с тем , что связь между искомыми неизвестными определяется матрицей коэффициентов A , на каждом шаге по времени , необходимо решить систему относительно неизвестных скоростей , для её решения воспользуемся модифицированным методом Гаусса , который описан в разделе 2.2.
Далее, интегрируя сначаларанее описанными методами: методом Эйлерана первом шаге , трех точечным методом прогноза и коррекции с авто подбором шага , на малом промежутке времени и с малым начальным шагом, для повышения точности стартующих методов на оставшемся промежутке времени производим интегрирование с постоянным шагом – пяти точечным методом прогноза и коррекции Адамса-Башфорта (2.1.13) ,[2] , [3].
2.2 Модифицированный метод Гаусса
Как типичный пример решения систем линейных дифференциальных уравнений, рассмотрим систему четырех линейных алгебраических уравнений .
Для решения системы четырех линейных алгебраических уравнений с четырьмя неизвестными модифицированнымметодом Гаусса необходимо
Составить систему : (2.2.1)
1) Каждое уравнение делиться на коэффициент при X1
2) Теперь образуем нули в первом столбце матрицы системы : вычитаем 2-ое
из 1-ого , 3-е из 2-ого , 4-ое из 3-его :
(2.2.2)
3) Повторив еще раз эти операции получим систему двух уравнений с двумя неизвестными , решение которой можно получить по формулам Крамера :
(2.2.3)
Решение же X1 иX2 можно получить , подставив в какое-либо из уравнений систем (2.2.1) и (2.2.2) и разрешив эти уравнения относительно соответствующей переменной .
3.ОПИСАНИЕ АЛГОРИТМА
Программа начинается с вывода сообщения о программе . После происходит считывание необходимых исходных данных из файла , для дальнейшей работоспособности алгоритма , а именно – начальных условий и матрицы коэффициентов системы линейных дифференциальных уравнений первого рода , начального шага интегрирования , левого и правого условий Рунге , время интегрирования потрех шаговому методу прогноза и коррекции ,время интегрирования по пяти точечному методу Адамса-Башфорта .
С помощью метода Эйлера находим дополнительные начальные условия. Решение систем линейных дифференциальных уравнений мы описываем отдельной процедурой , что облегчает дальнейшую алгоритмизацию .
Далее составляем цикл , для реализации алгоритма нахождения всех Yk+1 точек на заданном малом промежутке времени , и проверкой на условия Рунге , по трех шаговому методу прогноза и коррекции с авто подбором шага. После чего мы организовываем цикл , реализующий алгоритм нахождения точек по методу Адамса-Башфота, на заданном большом промежутке времени и с шагом автоматически подобранным предыдущим методом .
Вычисленные данные записываем файл , по ним формируем массив данных , которые выводим в сответствии с масштабированием на экран в видеграфиков .
Блок-схема приведена в Приложении 1 .
4.ОПИСАНИЕ ПРОГРАММЫ
Программа реализующая универсальный алгоритм для решениясистем линейных дифференциальных уравнений первого порядка произвольного вида , - построена по принципамобъектно-ориентированного программирования .Основная программа построена на объектной библиотеке VFH, реализующей возможности реализации гибкого интерфейса между программой и пользователем .
Основная программа включает в себя только один модуль PACM , и использует всего два метода объекта TApplPandC , -методApplication- рабочий цикл программы; деструктор Done – реализует разрушение таблицы виртуальных методов, и операций , связанных с завершением программы .
Модуль PACM включает в себя модули библиотек- реализующих построение интерфейса. Модуль реализующий алгоритм метода Адамса-Башфорта , и по вычесленным данным строящий график , есть – PACMBtn .
Главным родителем всех объектов есть объект – Tobject . Основным рабочим объектом библиотеки VFHесть объектTform. Рассмотрим потомка являющегося типичным представителем родителяTForm-TApplPandC . Он имеет два виртуалых метода :MouseHandler : BooleanБ – выходным параметром которогоесть признак закрытия формы, и методFormCreate- реализующий построение интерфейса формы. Не виртуальный методApplication- предназначен для создания формы , конфигурирования программной среды , и дальнейшего управления программой .
Модуль реализующий создание и управления главного и субменю , есть – PACMMenu , позволяющий пользователю изменять параметры и настройки системы , предоставляющий справку о разработчике , а также дает доступ к справочной системеPrandCoM HelpSystem. Данные свойства меню реализуют объекты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 Mversion 2.41 -разработана на языке BorlandPascalпод защищенный режим работы процессора иимеет доступ ко всей оперативной памяти компьютера. Реализует гибкий интерфейс , облегчающим работу с программным обеспечением .Позволяет решить систему линейных дифференциальных уравнений первого порядка методом Адамса-Башфорта , с возможность просмотра результатов вычисления в виде графиков .
Как показали тестовые программы – разработанный алгоритм предоставляет точность вычислений , погрешность которых не превышает1% .
Тексты программной оболочки PrandCo M version 2.41 приведены в приложении 4 .
5.ПРИМЕРЫ РАСЧЕТОВ
Для анализа достоверности получаемых результатов рассмотрим следующие примеры :
5.1.Решение одного дифференциального уравнения
при начальном условииy(0)=1 , 0<=x<=1 ,и шаге интегрированияh=0.1 . Это линейное уравнение , имеющее следующее точное решение :
которое поможет нам сравнить точность численного решения для случая с постоянным шагом, т.к. точность решенийс переменным шагом выше. Результаты расчета представлены в Таблице 1 .Как видно из таблицы, отличие между численными и аналитическими решениями удовлетворительноедаже для такого большого шага , и не превышает 2% . Теперь решим этот же пример тем же методом , но с переменным шагом . Получаем любопытные зависимости точности от выбора шага , а также шага сходимости , - которые носят периодический характер . Результаты исследования приведены в таблице 2 . Как мы видим, погрешность резко уменьшаетсяс использованием метода с переменным шагом , и показывает очень высокую точность решениядля численных методов , не превышающею 1% .
Таблица SEQ Таблица * ARABIC 1
Таблица SEQ Таблица * ARABIC 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 .
5.2.Решение системы дифференциальных уравнений
Вторым этапом анализа достоверности полученных результатов была проверка правильности решения системы линейных дифференциальныхуравнений с аналитическим решением .
Рассмотрим следующую систему дифференциальных уравнений, которую требуется решить методом Адамса-Башфорта :
Начальными условиями здесь являются :
.Возьмем начальный шаг интегрирования h=0.00001 , времяинтегрирования по трех точечному методу прогноза и коррекцииtp=0.1и время интегрирования по методу Адамса-Башфорта ta=1 .
Результаты исследования для разных начальных шагов интегрирования приведены в таблице 2 . Мы приходим к выводу , что точность решения одного уравнения и системы дифференциальных уравнений совпадают .
Иллюстрация решения данной системы дифференциальных уравнений приведены в виде графика в приложении 3 .
ЗАКЛЮЧЕНИЕ
В данной курсовой научно-исследовательской работе разработан алгоритм и программарешения систем линейных дифференциальных уравнений первого порядка пяти точечным методом прогноза и коррекции Адамса-Башфорта.
Проведены тестовые расчеты, подтвердившие высокую эффективность и точность метода Адамса-Башфорта со стартованием трех точечным методом прогноза и коррекции спеременным шагом.
Проведеныряд исследованийрешения систем как с постоянным шагом , так и с переменным шагом на сходимость к постоянному шагу .
Во всех случаях получены результаты высокой точности .
2.Р.В.Хемминг “Численные методы для научных работников и
инженеров”: Пер с англ.:Под редакцией Р.С.Гутера .-
Гл.ред.физ.мат.лит.1968.-203 с.
3. Т.Шуп.”Решение инженерных задач наЭВМ. Практическое пособие “
Пер.с англ.-М.Мир.1982.-238с.
Приложение 1 :
Блок схема Алгоритма
Начало |
Вывод сообщения |
Считывание данных из файла |
Yn:=Yn_1+h*dYn |
T<=Tp |
-
Gauss |
Yn:=Yn_1+h*DyN/2 |
Gauss |
Yn:=Yn_1+h*(DyP-DyN)/5 |
T:=t+h |
Ep |
|
|
Стоп |
Запсиь данных в файл |
Приложение 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;
ProcedureFormCreate;Virtual;
ProcedureApplication;
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 notfQuickHalt 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. (*********************************)
(****************************************************************************)