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

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

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

Кафедра «Электропривод и АПУ»

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

по дисциплине «Информатика»

Тема работы:

«Разработка программы численного интегрирования обыкновенного дифференциального уравнения явным методом Рунге-Кутта шестого порядка точности»

Выполнил:

студент группы ЭАиТР-121

Мусаев А.Э.

Проверил: Овсянников К. В.

Могилев 2013

Содержание

Введение

1. Постановка задачи

1.1 Общая характеристика задачи

1.2 Анализ литературных источников

1.3 Расчетные формулы метода

2. Разработка алгоритма решения задачи

2.1 Описание данных, используемых для решения задачи

2.2 Описание схемы программы

3. Кодирование программы

3.1 Описание структуры разрабатываемого пакета

3.2 Описание используемых типов данных

3.3 Проектирование интерфейса программы

4. Тестирование программы

4.1 Тестирование задачи в математическом пакете

4.2 Тестирование работы программы

Заключение

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

Приложения

Введение

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

Цель данной работы — разработка программы численного решения обыкновенного дифференциального уравнения явным методом Рунге-Кутта в Microsoft Visual Studio 2010 для персонального компьютера.

1. Постановка задачи

1.1 Общая характеристика задачи

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

Решением обыкновенного дифференциального уравнения в нормальной форме Коши согласно

dy / dx = (x, y) (1.1)

является функция одной переменной

y = f (x), (1. 2)

удовлетворяющая начальным условиям — точке (x0,y0).

При использовании численного метода интегрирования решение уравнения (1. 2) получается в виде массива точек (xi, yi), описывающих кривую, начинающуюся из точки начальных условий (x0,y0).

1.2 Анализ литературных источников

Метод Рунге-Кутта — метод численного интегрирования дифференциального уравнения, один из наиболее употребительных методов повышенной точности. Согласно [1] метод Рунге-Кутта, несмотря на свою трудоёмкость, широко используется при численном решении дифференциальных уравнений с помощи вычислительных машин.

1.3 Расчетные формулы метода

Производится интегрирование при помощи выражения:

, (1. 3)

где коэффициенты находятся по формулам:

, (1. 4)

, (1. 5)

) (1. 6)

) (1. 7)

) (1. 8)

) (1. 9)

где x0, y0 — значения аргумента и функции на предыдущем шаге интегрирования;

x n+1,yn+1 — значения аргумента и функции на последующем шаге интегрирования;

h — величина шага интегрирования

При этом в цикле расчёта точки интегрирования сначала производится определение коэффициентов по (1. 4)-(1. 9), а затем вычисляется (1. 3).

2. Проектирование схем алгоритмов.

2.1 Разработка алгоритма головной программы.

Исходными данными являются:

— точка начальных условий — (x0,y0);

— величина шага интегрирования H — разность между двумя соседними точками аргумента;

-число шагов интегрирования.

Вычисление каждого последующего значения аргумента производится по формуле (1. 3).

2.2 Проектирование алгоритма ввода исходных данных.

На формате А1 представлены схемы алгоритмов головной программы и подпрограмм.

Схема алгоритма составлена в соответствии с математическим описанием курсовой работы и отображает последовательность операций в программе. При ее изображении используются правила и требования ГОСТ 19. 701. 90.

Алгоритм решения данной задачи строится с использованием подпрограмм. При этом вся программа разбивается на три основные подпрограммы, выполняющиеся последовательно:

1) подпрограмма ввода исходных данных Entry;

2) подпрограмма численного интегрирования Count;

3) подпрограмма вывода таблицы результатов Demo.

Схемы алгоритмов (программ) головной программы и подпрограмм выполняются согласно ГОСТ 19. 701−90. Общий алгоритм программы строится на рисунке 2.1.

/

Рисунок 2.1 Схема алгоритма программы

Ввод данных должен производиться с клавиатуры после вывода на экран соответствующего запроса. Последовательно должны вводиться следующие переменные:

X0 — начало интервала интегрирования;

Y0 — начальное значение функции (начальные условия);

H — значение шага интегрирования;

N — значение точности расчета данной функции.

Схема алгоритма подпрограммы показана на рисунке 2. 2

/

Рисунок 2.2 Схема подпрограммы ввода данных

Где данные xo, Y0, H, N вводятся с клавиатуры по запросу.

Результаты решения дифференциального уравнения записываются в переменные-массивы X (значения аргументов точек интегрирования) и Y (значения функций).

Для организации вычисления решения обыкновенного дифференциального уравнения согласно выражениям (1. 3), предварительно должно определяться число точек решения (N), значение которых будет сохраняться через одинаковый интервал значения аргумента x. Также должен предварительно определяться заранее шаг интегрирования (H).

3. Кодирование программы в среде программирования

3.1 Разработка структуры программы.

Программа курсовой работы создана в среде визуального программирования Microsoft Visual Studio 2010 и состоит из головной программы и блоков подпрограмм.

Программа выполнена на основе объектно-ориентированного программирования и содержит следующее:

а)TextBox;

б)Button;

в)Label;

г)DataGridView

3.2 Разработка интерфейса пользователя

1)Form1 содержит:

MainMenu — главное меню, где располагаются следующие пункты:

Ввод X0, N, Y0, Шаг.

Решение происходит с помощью кнопки «ОК».

Для вывода графика есть кнопка «График».

Для вывода таблицы есть кнопка «Таблица».

Рисунок 1 — Главная форма, форма ввода данных

2)Form2(Таблица)содержит:

AnswerTableForm — вывод расчетных точек.

Рисунок 2 — форма вывода расчётных точек.

3)Form3(График) содержит:

ZedGraphControl1 — график;

Рисунок 3 — форма вывода графика функции

3.3 Программирование ввода-вывода данных

3.4 Программная реализация численного метода.

Визуальное программирование позволило свести проектирование пользовательского интерфейса к простым и наглядным процедурам. В библиотеки визуальных компонентов Microsoft Visual Studio 2010 включено множество типов компонентов. Типы объектов и, в частности, компонентов библиотек Microsoft Visual Studio 2010 оформляются в виде классов. Классы — это типы, определяемые пользователем. В классах описываются свойства объекта, его методы и события, на которые он может реагировать. А сами классы являются разработчиками программного обеспечения. На пользовательской форме разработанной программы (рисунок 1) расположено главное меню с пунктами «X0″,"Y0″,"N»,"Шаг". Ввод данных можно начать с «OK». На Form2 находятся форма вывода расчетных точек. Надо ввести значения в Form1, нажать «ОК», и нажать на «График» — для вывода графика, или нажать «Таблица» — для вывода таблицы.

4. Тестирование работоспособности программы

4.1 Расчет тестового примера

Для тестирования программы используется обыкновенное дифференциальное уравнение вида

(4. 1)

4.2 Тестовый расчет, сравнение с тестовым примером.

Тестирование программы проводилось на компьютере:

процессор AMD E2

объём ОЗУ 6 Гb;

операционная система Windows 7 MAX;

видеоадаптер Radeon HD 7470;

Заключение

В результате выполнения курсовой работы было произведено математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработана схема алгоритма и написана программа. Использована среда программирования Microsoft Visual Studio 2010. Проведённое тестирование показало правильность вычисления по спроектированной программе. Разработанная программа может использоваться для решения обыкновенных дифференциальных уравнений на персональных компьютерах.

Список используемых источников

1. Численные методы анализа. Приближение функций, дифференциальные уравнения. Б. П. Демидович, И. А. Марон, Э. З. Шувалова. Под редакцией Б. П. Демидовича. Государственное издательство Физико-Математической литературы. Москва 1962. -368с.

2. Изучение численных методов интегрирования дифференциальных уравнений. Методические указания к лабораторной работе № 19 по дисциплине «Вычислительная техника и программирование». Для студентов очной формы обучения специальностей Т11. 02. 00 «Автоматизированные электроприводы». В.Н. Абобурко-2003. Белорусско-Российский университет.

Приложение А

using System;

using System. Collections. Generic;

using System. ComponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

namespace WindowsFormsApplication1

{

public partial class RG6Arzu: Form

{

double[] X;

double[] Y;

static double f (double x, double y)

{

return x*x+y;

}

public RG6Arzu ()

{

InitializeComponent ();

}

private void button1_Click (object sender, EventArgs e)

{

int n = Convert. ToInt32(textBox3. Text);

double h = Convert. ToDouble (textBox4. Text);

X = new double[n];

Y = new double[n];

X[0] = Convert. ToDouble (textBox1. Text);

Y[0] = Convert. ToDouble (textBox2. Text);

double k1 = f (X[0], Y[0]);

double k2 = h * f (X[0] + h / 4, Y[0] + 1 / 4 * k1);

double k3 = h * f (X[0] + h * 3 / 8, Y[0] + 3 / 32 * k1 + 9 / 32 * k2);

double k4 = h * f (X[0] + h * 12 / 13, Y[0] + 1932 / 2197 * k1 + (-7200 / 2197) * k2 + 7 / 96 / 2197 * k3);

double k5 = h * f (X[0] + h, Y[0] + 439 / 216 * k1 + (-8) * k2 + 3680 / 513 * k3 + (-845 / 4104) * k4);

double k6 = h * f (X[0] + h / 2, Y[0] + (-8 / 27) * k1 + 2 * k2 + (-3544 / 2565) * k3 + 1859 / 4104 * k4 + (-11 / 40) * k5);

for (int i = 1; i < n; i++)

{

X[i] = X[i — 1] + h;

Y[i] = Y[i — 1] + k1 * 25 / 216 + k3 * 1408 / 2565 + k4 * 2197 / 4104 — k5 / 5;

}

}

private void button2_Click (object sender, EventArgs e)

{

AnswerTableForm atf = new AnswerTableForm (X, Y);

atf. Show ();

}

private void button3_Click (object sender, EventArgs e)

{

AnswerGraphForm agf = new AnswerGraphForm (X, Y);

agf. Show ();

}

}

Приложение Б

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

X0= 0 Y0= 1

h= 0,1 n= 25

ns= 20

Таблица значений функции

0 X = 0 Y = 1,0000

1 X = 25 Y = -72 707,8292671784

2 X = 50 Y = -145 416,658534357

3 X = 75 Y = -218 125,487801535

4 X = 100 Y = -290 834,317068713

5 X = 125 Y = -363 543,146335892

6 X = 150 Y = -436 251,97560307

7 X = 175 Y = -508 960,804870249

8 X = 200 Y = -581 669,634137427

9 X = 225 Y = -654 378,463404606

10 X = 250 Y = -727 087,292671784

11 X = 275 Y = -799 796,121938962

12 X = 300 Y = -872 504,95120614

13 X = 325 Y = -945 213,780473319

14 X = 350 Y = -1 017 922,6097405

15 X = 375 Y = -1 090 631,43900768

16 X = 400 Y = -1 163 340,26827485

17 X = 425 Y = -1 236 049,09754203

18 X = 450 Y = -1 308 757,92680921

19 X = 475 Y = -1 381 466,75607639

Приложение Б

ПоказатьСвернуть
Заполнить форму текущей работой