РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА (работа 1)

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ УКРАИНЫ

НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

“ ХАРЬКОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ”
Кафедра “Системы и Процессы Управления”

ОТЧЕТ

о научно-исследовательской курсовой работе

по численным методам

на тему :

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

Выполнил студент

гр.И-29 Уханов Е.В.

Руководитель работы

Д.т.н. проф Бреславский Д.В.

Харьков 2001

СОДЕРЖАНИЕ

Введение………………………………………………………………………..3

    Постановка задачи …………………………………………………………4

    Методы решения………………..…………………………………………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)

где А заданная матрица размером N x N .

- вектор с 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 , позволяющий пользователю изменять параметры и настройки системы , предоставляющий справку о разработчике , а также дает доступ к справочной системе 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% .

Тексты программной оболочки PrandCo M version 2.41 приведены в приложении 4 .

5.ПРИМЕРЫ РАСЧЕТОВ

Для анализа достоверности получаемых результатов рассмотрим следующие примеры :

5.1.Решение одного дифференциального уравнения

Первым этапом анализа достоверности была проверка правильности решения одного дифференциального уравнения . Полученное численное решение сравнивается с аналитическим .

Пусть требуется решить уравнение :

при начальном условии y(0)=1 , 0<=x<=1 , и шаге интегрирования h=0.1 . Это линейное уравнение , имеющее следующее точное решение :

которое поможет нам сравнить точность численного решения для случая с постоянным шагом , т.к. точность решений с переменным шагом выше . Результаты расчета представлены в Таблице 1 .Как видно из таблицы, отличие между численными и аналитическими решениями удовлетворительное даже для такого большого шага , и не превышает 2% . Теперь решим этот же пример тем же методом , но с переменным шагом . Получаем любопытные зависимости точности от выбора шага , а также шага сходимости , - которые носят периодический характер . Результаты исследования приведены в таблице 2 . Как мы видим, погрешность резко уменьшается с использованием метода с переменным шагом , и показывает очень высокую точность решения для численных методов , не превышающею 1% .

Таблица 1

Таблица 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 .

ЗАКЛЮЧЕНИЕ

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

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

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

Во всех случаях получены результаты высокой точности .

Список используемой литературы
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;

Tsub>Menu1 : 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. (*********************************)

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