Решение систем дифференциальных уравнений при помощи неявной схемы Адамса 3-го порядка

Реализация решения задачи Коши методом Рунге-Кутта с непостоянным шагом:

Таблица 5.2 – Результаты решения задачи Коши методом Рунге-Кутта с непостоянным шагом.

X

>u(x)

v(x)

2

4

7,389056099

2,2

4,4

9,025013486

2,4

4,8

11,02317634

2,6

5,2

13,46373796

2,8

5,6

16,44464663

3

6

20,08553669

3,2

6,4

24,53252981

3,4

6,8

29,96409944

3,6

7,2

36,59823348

3,8

7,6

44,701183

4

8

54,59814775

Как видно из полученных таблиц результатов, точность решения в 0.0001 при решении методом Рунге-Кутта с непостоянным шагом достигается всего за 10 шагов, в то время, когда для достижения этой же точности при решении методом Рунге-Кутта 5-го порядка с постоянным шагом требуется около 100 шагов.

Сравнивая полученные результаты с результатами работы программы “Adams3.exe”, приходим к выводу, что неявная схема Адамса третьего порядка достаточно эффективна при численном решении задачи Коши (быстрота, высокая точность решения), однако по своим характеристикам она уступает более совершенным методам, применяющимися в различных математических пакетах.

Заключение

Результатом выполнения курсового проекта является готовый программный продукт, позволяющий решать задачу Коши для системы дифференциальных уравнений при помощи неявной схемы Адамса 3-го порядка, демонстрирующий возможности численного решения поставленной задачи с заданной степенью точности.

Готовый программный продукт может найти широкое применение при решении многих прикладных технических программ, а в частности, эффективно использование применённой схемы Адамса 3-го порядка для решения так называемых “жёстких” систем дифференциальных уравнний, для которых существует лишь численное решение.

Данная программа решает заданную пользователем систему дифференциальных уравнений с указанной точностью за минимальный промежуток времени. При этом пользователю предоставляется возможность визуально оценить неточность решения, сравнивая графики полученного и точного решений.

К достоинствам программы можно отнести также удобный пользовательский интерфейс, возможность ввода пользовательских систем дифференциальных уравнений, а также высокая стабильность работы. Однако имеются и некоторые недостатки. К недостаткам программы можно отнести: критичность к вводимым пользователем функций, отсутсвие обработки исключительных событий. Это, естественно, ограничивает возможности программы.

Литература

1. Архангельский А.Я. Программирование в С++ Builder 6. – М.: ЗАО “Издательство БИНОМ”, 2002. – 360 с.

2. Калиткин Н.Н. Численные методы. ¾ М.: Наука, 1978. ¾ 512 с.

3. Самарский А.А., Гулин А.В. Численные методы. ¾ М.: Наука, 1989. – 432с.

4. Синицын А.К., Навроцкий А.А. Алгоритмы вычислительной математики. - Мн.: БГУИР,2002. – 80 с: ил.

5. Синицин А.К. Программирование алгоритмов в среде Builder C++. –Мн.: БГУИР, 2004. – 90 с.: ил.

6. Страуструп Бьерн. Язык программирования C++. –М.: ЗАО “Издательство БИНОМ”, 2002. – 1099c.:ил.

7. Шилд Г. Программирование на Borland C++ для профессионалов— М.:ООО “попурри” ,1999. – 800c.:ил.

Приложения

Приложение 1

Блок-схема алгоритма

Блок-схема решения задачи Коши неявной схемой Адамса 3-го порядка.

Блок-схема алгоритма преобразования строки в обратную польскую запись:

Блок-схема вычисления функций:

Приложение 2

Листинг программы

Главная программа (Unit1.cpp):

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

#include "Unit2.h"

#include "math.h"

#include "stdio.h"

#include "Unit3.h"

#include "Unit5.h"

#include "fstream.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

char *opz(char *); // ф-ия преобразования в обратную польскую запись;

double fpr(char *str,double u, double v,double x); // обратный ход польской

int p=1,s=1,j=1,o=0; // записи;

//---------------------------------------------------------------------------

fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void fastcall TForm1::N5Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void fastcall TForm1::Button3Click(TObject *Sender)

{

Form1->Close();

Страница:  1  2  3  4  5  6  7  8 


Другие рефераты на тему «Математика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы