Разработка программы численного интегрирования обыкновенного дифференциального уравнения явным методом Рунге-Кутта шестого порядка точности
Математическое описание задачи решения обыкновенного дифференциального уравнения численным явным методом Рунге-Кутта, разработка схемы алгоритма и написание программы в среде программирования Microsoft Visual Studio 2010. Тестирование работы программы.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 22.01.2014 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Кафедра «Электропривод и АПУ»
Курсовая работа
по дисциплине «Информатика»
Тема работы:
«Разработка программы численного интегрирования обыкновенного дифференциального уравнения явным методом Рунге-Кутта шестого порядка точности»
Выполнил:
студент группы ЭАиТР-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.
Размещено на http://www.allbest.ru/
Рисунок 2.1 Схема алгоритма программы
Ввод данных должен производиться с клавиатуры после вывода на экран соответствующего запроса. Последовательно должны вводиться следующие переменные:
X0 - начало интервала интегрирования;
Y0 - начальное значение функции (начальные условия);
H - значение шага интегрирования;
N - значение точности расчета данной функции.
Схема алгоритма подпрограммы показана на рисунке 2.2
Размещено на http://www.allbest.ru/
Рисунок 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 = -72707,8292671784
2 X = 50 Y = -145416,658534357
3 X = 75 Y = -218125,487801535
4 X = 100 Y = -290834,317068713
5 X = 125 Y = -363543,146335892
6 X = 150 Y = -436251,97560307
7 X = 175 Y = -508960,804870249
8 X = 200 Y = -581669,634137427
9 X = 225 Y = -654378,463404606
10 X = 250 Y = -727087,292671784
11 X = 275 Y = -799796,121938962
12 X = 300 Y = -872504,95120614
13 X = 325 Y = -945213,780473319
14 X = 350 Y = -1017922,6097405
15 X = 375 Y = -1090631,43900768
16 X = 400 Y = -1163340,26827485
17 X = 425 Y = -1236049,09754203
18 X = 450 Y = -1308757,92680921
19 X = 475 Y = -1381466,75607639
Приложение Б
Размещено на Allbest.ru
Подобные документы
Разработка прикладного программного обеспечения для решения расчетных задач для компьютера. Численное интегрирование - вычисление значения определённого интеграла. Проектирование алгоритма численного метода. Тестирование работоспособности программы.
курсовая работа [1,1 M], добавлен 03.08.2011Анализ предметной области объектно-ориентированного программирования. Языки Delphi, Object Pascal - объектно-ориентированная среда программирования. Основные алгоритмические решения. Решение дифференциального уравнения методом Рунге-Кутта в среде Excel.
курсовая работа [1,5 M], добавлен 02.04.2011Составление программы на алгоритмическом языке Turbo Pascal. Разработка блок-схемы алгоритма её решения. Составление исходной Pascal-программы и реализация вычислений по составленной программе. Применение методов Рунге-Кутта и Рунге-Кутта-Мерсона.
курсовая работа [385,0 K], добавлен 17.09.2009Проектирование программного модуля. Описание схемы программы и структуры разрабатываемого пакета. Написание кода ввода исходных данных и основных расчетов. Тестирование программного модуля. Тестирование решения задачи. Методы численного интегрирования.
курсовая работа [549,9 K], добавлен 20.03.2014Численное решение задачи Коши для обыкновенного дифференциального уравнения первого и второго порядка методом Эйлера и Рунге-Кутты и краевой задачи для ОДУ второго порядка с применением пакета MathCad, электронной таблицы Excel и программы Visual Basic.
курсовая работа [476,2 K], добавлен 14.02.2016Решение дифференциального уравнения N-го порядка методом интегрирования при помощи характеристического уравнения, методом интегрирования и операторным методом для значений аргументов при заданных начальных условиях и нулевых уравнения 4–го порядка.
практическая работа [806,9 K], добавлен 05.12.2009Численный метод для решения однородного дифференциального уравнения первого порядка методом Эйлера. Решение систем дифференциальных уравнений методом Рунге–Кутта. Решение краевой задачи. Уравнения параболического типа, а также Лапласа и Пуассона.
курсовая работа [163,5 K], добавлен 27.05.2013Обыкновенное дифференциальное уравнение первого порядка. Задача Коши, суть метода Рунге-Кутта. Выбор среды разработки. Программная реализация метода Рунге-Кутта 4-го порядка. Определение порядка точности метода. Применение языка программирования C++.
курсовая работа [163,4 K], добавлен 16.05.2016Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.
курсовая работа [1,4 M], добавлен 16.03.2012Определение зависимости скорости вала двигателя от времени. Математическая модель решения задачи. Решение задачи Коши на интервале методом Эйлера и Рунге-Кутта четвертого порядка точности. Алгоритм решения задачи. Текст программы и результаты ее работы.
контрольная работа [108,9 K], добавлен 08.03.2013