RSS    

   РЕШЕНИЕ СИСТЕМ ЛИНЕЙНЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ПЯТИТОЧЕЧНЫМ МЕТОДОМ АДАМСА – БАШФОРТА - (курсовая)

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

    Составить систему : (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

которое поможет нам сравнить точность численного решения для случая с постоянным шагом , т. к. точность решений с переменным шагом выше . Результаты расчета представлены в Таблице 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 : Тексты программ
    

    {$M 10000, 0, 0}

(****************************************************************************) (****** Дата последней разработки : 05. 05. 2001 **********************) (****************************************************************************) Program Prognoz_and_Correction_Modification;

(****************************************************************************) Uses PACM;

(****************************************************************************) var

    TPC : TApplPandC;

(****************************************************************************) (******************************) begin (*************************************) TPC. Application;

    TPC. Done;

(*******************************) end. (*************************************) (****************************************************************************)

     NetMail ( FidoNet ) 2: 461/212. 21

(****************************************************************************) (**** Дата последней разработки модуля : 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, 2


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.