Программная реализация решения системы дифференциальных уравнений

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 16.05.2016
Размер файла 158,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Федеральное Государственное Автономное образовательное учреждение Высшего профессионального образования «БЕЛГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ УНИВЕРСИТЕТ»

Институт инженерных технологий и естественных наук

Кафедра математического и программного обеспечения информационных систем

Курсовая работа

ПРОГРАММНАЯ РЕАЛИЗАЦИЯ РЕШЕНИЯ СИСТЕМЫ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

Методы вычислений Данькова Н.А.

Научный руководитель доц. Бурданова Е. В.

БЕЛГОРОД 2016

Содержание

дифференциальный программирование вычислительный математический

Введение

1. Теоретическая часть

1.1 Обыкновенное дифференциальное уравнение первого порядка. Задача Коши

1.2 Суть метода Рунге-Кутта

1.3 Выбор среды разработки

2. Практическая часть

2.1 Программная реализация метода Ркнге-Кутта 4-го порядка

3. Тестирование

3.1 Пример

Заключение

Список использованных источников

Введение

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

= f(x, y) ,

где у - искомая функция, х - независимая переменная, f(x,y) - непрерывная функция от х и у. Однако получить аналитическое решение этого уравнения для достаточно произвольной функции f не удается, и только для некоторых частных случаев, с которыми можно ознакомиться в справочной литературе.

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

Цель курсовой работы: изучить метод Рунге - Кутта 4-го порядка для решения обыкновенных дифференциальных уравнений.

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

1. Теоретическая часть

1.1 Обыкновенное дифференциальное уравнение первого порядка. Задача Коши

Для простоты рассмотрим двумерное пространство переменных х и у и некоторое открытое множество G, принадлежащее ему. Пусть на этом открытом множестве определена непрерывно дифференцируемая функция f(х, у) и задано уравнение

= f(x, y)

Согласно теореме существования и единственности для любой точки (x0,y0) ?G найдется решение у = у(х), определенное на некотором интервале (х0 -д, х0 +д), удовлетворяющее условию y(x0) = y0, такое, что точки (x,y(x)) ?G и y`x ? f(x, y(x)), причем это решение будет единственным. Задача для уравнения (1) с начальным условием у(х0) = y0 (задача Коши) состоит в нахождении функции у(х), обращающей и уравнение (1), и начальное условие в тождество. Допустим, что значения, которые принимает независимое переменное х, принадлежат интервалу (Х0, XN ) и запишем задачу Коши:

Разобьём отрезок [Х0, XN ] на N частей так, что xn+1 - хn = hn ,

n = 0, … ,N-1. В дальнейшем, не ограничивая общности, рассмотрим случай, когда разбиение равномерное, т.е. все

hn = h = = const,

n = 0 ,… ,N-1.

1.2 Суть метода Рунге-Кутта

Методы Рунге-Кутта находят широкое применение при решении ДУ. Наибольшее применение нашел метод 4-го порядка.

(3)

(4)

- параметр, который определяет значение функции вблизи точки области определения.

Общепринятый метод 4-го порядка:

(6)

. (7)

. (8)

. (9)

. (10)

Ошибка формулы (10) пропорциональна h5.

Этот метод намного более точен, чем методы Эйлера, но требует и большего объема вычислений: положение точки (xi+1, yi+1) определяется в результате 4-кратного вычисления значения функции f (x,y). С появлением ЭВМ этот недостаток перестал быть существенным и метод Рунге-Кутта 4-го порядка применяется на практике чрезвычайно широко.

Число микроотрезков [xi; xi+1], на которые разбивается исходный отрезок [x0;xn], определяется требуемой точностью вычислений. Для достижения нужной точности задача решается несколько раз при последовательно удваиваемом числе микроотрезков n. Точность считается достигнутой, если при начальном и удвоенном числе n значения yi и y2i (в совпадающих точках x) отличаются не более чем на заданную величину:

i =0, ..,n. (11)

где p - порядок точности метода.

Метод Ругне-Кутта обладает следующими свойствами:

1. Метод является одноступенчатым (чтобы найти , нужна информация о предыдущей точке, )

2. Не требует вычисления производных от f(x,y), а требует вычисления самой функции

3. Имеет небольшую погрешность

1.3 Выбор среды разработки

C++ Builder-- программный продукт, инструмент быстрой разработки приложений (RAD), интегрированная среда программирования (IDE), система, используемая программистами для разработки программного обеспечения на языке программирования C++ Данный продукт позволяет создавать как консольные приложения, так и приложения с графическим интерфейсом.

Microsoft Visual Studio -- линейка продуктов компании Microsoft, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. С помощью данного продукта можно разрабатывать консольные приложения, приложения с графическим интерфейсом, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Windows, Windows Mobile, Windows CE, .NET Framework, Xbox, Windows Phone .NET Compact Framework и Silverlight.

Для выполнения поставленной задачи был выбран программный продукт C++ Builder. Так как является более простым в использовании и соответствует всем необходимым требованиям для создания консольного приложения.

2. Практическая часть

2.1 Программная реализация метода Ркнге-Кутта 4-го порядка

Разработка программы начинается с описания функций. Для этого мы используем оператор switch.

Листинг 1 «описание функций»

double func(int tip, double x, double y, double a, double b,double c, double d, double e, double f ) {

double s=0;

switch (tip){

case 1: {

s = a+b*(y*c*sin(d*x))-(e*y*f*y);

break; }

case 2: {

s =a*cos(b*x+c*y)+d*(e*x-f*y);

break; }

case 3: {

s=((a*cos(b*x)/(x+c))-(d*y*e*y)*f);

break; }

case 4: {

s = a*(b*x+c*y)/(e*f)*d;

break; }

default:

{ s =0; }

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

Когда все нужные данные получены, мы переходим непосредственно к решению ОДУ методом Рунге - Кутта 4-го порядка.

Листинг 2 «программная реализация решения ОДУ методом Рунге - Кутта 4-го порядка»

for (i=0;i<=n;i++) {

k1=func(tip,x[i],y[i],a,b,c,d,e,f)*h;

k2=func(tip,x[i]+h/2, y[i]+(k1/2),a,b,c,d,e,f)*h;

k3=func(tip,x[i]+h/2, y[i]+(k2/2),a,b,c,d,e,f)*h;

k4=func(tip,x[i]+h, y[i]+k3,a,b,c,d,e,f)*h;

y[i+1]=y[i]+((1.0/6.0)*(k1+2*k2+2*k3+k4));

x[i+1]=x[i]+h; cout<<"y"<<i<<"= "<<y[i]<<endl;

3. Тестирование

Запустив программу, мы увидим уравнения, предлагаемые для выбора.

Рис. 1. Выбор уравнения

Если ввести номер не соответствующий представленным номерам уравнений программа отреагирует на это.

Рис. 2. Ввод неверного параметра

Выбрав необходимое уравнение, вводим коэффициенты.

Рис. 3. Ввод коэффициентов

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

Рис. 4. Ввод необходимых параметров

После окончания вычисления программа выводит решение.

Рис. 5. Вывод результата

3.1 Пример

Решить задачу Коши:

на отрезке [0: 0,4]. Найти решение на равномерной сетке с шагом 0.1 Решение. Так как f(x ,y ) = х + у , то получаем

= + ,

= ++ ,

= ++ ,

= +h+ ,

= +() ,

= +h ,

для значений i = 1, 2, 3, 4.

Полагая =0, = 1, последовательно находим:

при i = 1

= 0,1(0 +1) = 0,1 ,

= 0,1(0 + 0,05 +1 + 0,05) = 0,11 ,

= 0,1(0 + 0,05 +1 + 0,055) = 0,1105 ,

= 0,1(0 + 0,1 +1 + 0,1105) = 0,121050 ,

= 1 + *(0,1 + 2*0,11+2*0,1105 + 0,12105) = 1,110342 ,

= 0+0,1=0.1 ,

при i = 2

= 0,1*(0 + 1,110342) = 0,121034 ,

= 0,1*(0,1 + 0,05 +1,110342 + 0,0605171) = 0,1320859 ,

= 0,1*(0,1 + 0,05+1,110342 + 0,06604295) = 0,1326385 ,

= 0,1*(0,1 + 0,1 + 1,110342 + 0,11326385)= 0,1442980 ,

= 1,110342 + *(0,121034 + 2*0,1320859+2*0,1326385 + 0,1442980) = 1,242805 ,

= 0,1+0,1 ,

Далее получаем:

при i = 3 = 0,3, =1,399717,

при i = 4 = 0.4, = 1,583648.

Погрешность полученного решения не превышает величины

|y4 - ц(x4) | ? 0.000001.

Для наглядности в таблице 1 приведены численные решения одной и той же задачи Коши методами Эйлера, Эйлера-Коши и Рунге-Кутта.

Таблица 1. Численные решения задачи коши разными методами

i

Значения , найденного методом

Точное решение

ц(xi)=2- xi -1

Эйлера

Эйлера - Коши

Рунге - Кутта

0

0

1.0

1.0

1.0

1.0

1

0.1

1.1

1.11

1.110342

1.110342

2

0.2

1.22

1.24205

1.242805

1.248805

3

0.3

1.362

1.398465

1.399717

1.399718

4

0.4

1.5282

1.581804

1.583648

1.583649

Теперь сравним полученные результаты с расчетами нашей программы.

Как мы видим из примера - точность вычисления сохраняется до пятого знака после запятой.

Рис. 6. Результат работы программы

Заключение

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

В ходе тестирования программы были получены результаты, по которым видно, что результаты решения методом Рунге - Кутта 4-го порядка совпадают, с достаточной точностью, с аналитическим.

Список использованных источников

1. Березин И.С., Жидков Н.П., Методы вычислений: Т.2 - М.: ГИФМЛ, 1960. - 620 с.

2. Бахвалов Н. С., Жидков Н. П., Кобельков Г. М. Численные методы. - М.: Бином, 2001 - с. 363-375.

3. Копченова Н.В., Марон И.А., Вычислительная математика, 2011

Размещено на Allbest.ru

...

Подобные документы

  • Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.

    курсовая работа [163,4 K], добавлен 16.05.2016

  • Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.

    курсовая работа [1,5 M], добавлен 02.04.2011

  • Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.

    курсовая работа [385,0 K], добавлен 17.09.2009

  • Численные методы решения задачи Коши для обыкновенных дифференциальных уравнений: Эйлера, Рунге-Кутта, Адамса и Рунге. Техники приближенного решения данных уравнений: метод конечных разностей, разностной прогонки, коллокаций; анализ результатов.

    курсовая работа [532,9 K], добавлен 14.01.2014

  • Обзор методов решения в Excel. Рекурентные формулы метода Эйлера. Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. Метод Эйлера с шагом h/2. Решение дифференциальных уравнений с помощью Mathcad. Модифицированный метод Эйлера.

    курсовая работа [580,1 K], добавлен 18.01.2011

  • Решение дифференциальных уравнений первого порядка. Варианты методов Рунге-Кутта различных порядков. Основные методы численного решения задачи Коши. Повышение точности вычислений и итерационный метод уточнения. Дискретная числовая последовательность.

    лабораторная работа [33,3 K], добавлен 14.05.2012

  • Суть метода Рунге-Кутта и его свойства. Решение дифференциальных уравнений первого порядка. Вычислительный блок Given/Odesolve. Встроенные функции rkfixed, Rkadapt, Bulstoer. Решения линейных алгебраических уравнений в среде MathCad и Microsoft Excel.

    курсовая работа [1,1 M], добавлен 02.06.2014

  • Реализация решения обыкновенных дифференциальных уравнений 1-го и 2-го порядка методом Рунге-Кутты. Построение на ЭВМ системы отображения результатов в табличной форме и в виде графика. Архитектура и требования к разрабатываемым программным средствам.

    курсовая работа [2,7 M], добавлен 05.11.2011

  • Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.

    курсовая работа [163,5 K], добавлен 27.05.2013

  • Численные методы решения задач. Решение алгебраических и трансцендентных уравнений. Уточнение корня по методу половинного деления. Решение систем линейных уравнений методом итераций. Методы решения дифференциальных уравнений. Решение транспортной задачи.

    курсовая работа [149,7 K], добавлен 16.11.2008

  • Сущность и особенности языка программирования Си. Основные этапы алгоритма решения системы линейных алгебраических уравнений методом Гаусса, реализация программы для их расчета. Инструкции пользователя и программиста. Тестирование функции решения.

    курсовая работа [153,9 K], добавлен 18.02.2013

  • Решение дифференциальных уравнений с использованием классических алгоритмов численных методов Эйлера и Рунге-Кутта 4-го порядка. Команды, используемые при решении обыкновенных дифференциальных уравнений в системе вычислений. Результат работы программы.

    курсовая работа [226,6 K], добавлен 05.04.2013

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

    методичка [35,8 K], добавлен 15.03.2009

  • Разработка программы на языке Turbo Pascal 7.0 для преобразования кинетической схемы протекания химических реакций при изотермических условиях в систему дифференциальных уравнений. Ее решение в численном виде методом Рунге-Кутта четвертого порядка.

    курсовая работа [929,7 K], добавлен 06.01.2013

  • Решение системы обыкновенных дифференциальных уравнений в программе Matlab. Применение метода Рунге–Кутты. Априорный выбор шага интегрирования. Построение трехмерного графика движения точки в декартовой системе координат и создание видеофайла формата AVI.

    контрольная работа [602,8 K], добавлен 04.05.2015

  • Ручной расчет поставленной задачи методов Эйлера и Эйлера-Коши. Алгоритмы решения обоих методов, их программная реализация, решение тестовых примеров на заданную задачу. Расчеты заданного интеграла на языке программирования Turbo Pascal, их результаты.

    курсовая работа [404,7 K], добавлен 15.06.2013

  • Решение системы дифференциальных уравнений, заданной в нормальной форме Коши. Определение аналитических зависимостей изменения переменных состояния системы с использованием преобразования Лапласа. Численный метод решения системы c помощью Mathcad.

    практическая работа [657,1 K], добавлен 05.12.2009

  • Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.

    курсовая работа [1,1 M], добавлен 22.01.2014

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

    курсовая работа [1,6 M], добавлен 11.07.2012

  • Итерационные методы решения нелинейных уравнений, системы линейных алгебраических уравнений (СЛАУ). Решение нелинейных уравнений методом интерполирования. Программная реализация итерационных методов решения СЛАУ. Практическое применение метода Эйлера.

    курсовая работа [1,6 M], добавлен 20.01.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.