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

Явный многошаговый метод однопараметрической табличной функции в программе SharpDevelop или MS Visual Studio. Разработка алгоритма головной программы, ввода исходных данных, вывода результата. Проектирование интерфейса и тестирование работоспособности.

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

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

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

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

5

Содержание

интерфейс однопараметрический работоспособность

Введение

1. Описание поставленной задачи

1.1 Краткая характеристика численного метода

1.2 Анализ литературы и программ

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

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

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

2.3 Разработка алгоритма вывода результатов

2.4 Проектирование алгоритма численного метода

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

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

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

3.2.1 Разработка главной формы

3.2.2 Интерфейс формы отображающей график

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

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

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

4.1 Описание аппаратной части конфигурации для тестирования

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

Заключение

Список использованной литературы

Приложения

Введение

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

Согласно задания, цель данной курсовой работы - разработка программы численного решения обыкновенного дифференциального уравнения явным многошаговым методом однопараметрической табличной функции кубическим сплайном в программе программирования SharpDevelop или MS Visual Studio.

1. Описание поставленной задачи

1.1 Краткая характеристика численного метода

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

( 1.1 )

где - независимая переменная аргумента;

- зависимая переменная - функция одной переменной

, (1.2)

удовлетворяющая начальным условиям - точке .

Алгоритмы многоточечных методов основываются на аппроксимации итерполяционными полиномами либо правых частей ОДУ, либо интегральных кривых ук (х).

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

( 1.3 )

( 1.4 )

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

- значения функции и аргумента на последующем шаге интегрирования;

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

- производная -ой степени от (1.2).

В зависимости от степени производной, учитываемой численным методом, определяется степень точности метода.

Шаг интервала является постоянным на всем расчетном интервале аргумента . Для получения последующей точки искомого значения функция пользуется только предыдущее значение, которое определяется по (1.4).

Формула для метода однопараметрической табличной функции кубическим сплайном имеет вид :

+1 = h*f (xn, yn), ( 1.5 )

+2 = Уn+1 + h/2 *(3*f(хn+1,уn+1) - f(xn,yn)), ( 1.6 )

+3=+2+h/12*(23*f(xn+2,yn+2)-16*f(xn+1,yn+1)+5*f (xn,yn)). ( 1.7 )

1.2 Анализ литературы и программ, патентный поиск

Метод однопараметрической табличной функции кубическим сплайном относится к многошаговым явным методам численного интегрирования дифференциальных уравнений и рассмотрен в (1.5 - 1.7).

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

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

Схема алгоритма головной программы описывает общий сценарий работы разрабатываемого приложения. В составе проекта приложения предусматривается две формы:

1)главная форма приложения;

2)форма информации о программе;

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

1) выход из приложения,

2) расчет,

3) график.

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

Для решения в программе выбирается ОДУ вида степенного ряда:

dy/dx=a0+a1x+a2x2+…+anxn + b1y+…+b2y2+…+bmym,( 2.1 )

где a0, a1, …, an - коэффициенты степенного порядка n

переменной аргумента x;

b1, …, bm - коэффициенты степенного ряда порядка m

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

В общем виде (2.1) примет вид

( 2.2 )

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

1) N - размерность степенного ряда переменной x;

2) M - размерность степенного ряда переменной y;

3) A - массив коэффициентов ряда переменной x;

4) B - массив коэффициентов ряда переменной у;

5) , - начальные условия решения;

6) - конечное значение аргумента , определяющее интервал поиска решения;

7) - число точек значений аргумента и функции, выводимых на печать.

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

2.3 Разработка алгоритма вывода результатов

Результаты расчета (точки искомой функции) сохраняются в переменных-массивах: для аргумента X и функции Y, которые отображаются в виде таблицы или графика. В курсовой работе рассматривается схема алгоритма записи полученного решения (массивов X и Y) в текстовый файл вместе с исходными данными (массивами A и B).Схема алгоритма показывается на рисунке 2.2

Рисунок 2.2 - Схема алгоритма вывода результатов

2.4 Проектирование алгоритма численного метода

Функция расчета дифференциального уравнения ( 2.1 ) оформляется в виде отдельного алгоритма и представлена на рисунке 2.2

При организации текущих вычислений удобно использовать переменные значений аргумента и функции для точки предыдущего шага и и - для точки последующего шага. Численное решение ОДУ методом однопараметрической табличной функции кубическим сплайном с учетом приведенного в разделе 1 описания исходных данных и результатов расчета показывается на схеме алгоритма рисунка. Схема для численного решения уравнения методом однопараметрической табличной функции кубическим сплайном точности показана на рисунке 2.3

Рисунок 2.3 - Схема численного решения методом однопараметрической табличной функции кубическим сплайном

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

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

Согласно заданию проект программы разрабатывается в среде визуального программирования Microsoft Visual Studio 2012 на основе составленных блок-схем алгоритмов.

В составе проекта входят следующие формы:

1) MainForm - главная форма на которой производится ввод исходных данных, выполняется расчет, вывод результата расчета и отображается график;

2) AboutForm - форма с информацией о программе.

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

3.2.1 Разработка интерфейса главной формы

Рисунок 3.1 - Вид проекта главной формы

В составе интерфейса главной формы используются следующие визуальные компоненты:

1) MenuStrip - главное меню приложения со следующими разделами:

а) «Файл» имеет следующие подразделы:

- «Новый» - ввод новых значений для расчета;

- «Сохранить» - сохранение данных;

- «Открыть» - загрузка ранее сохраненных исходых данных во внешнем файле;

- «Выход» - выход из программы;

б) «Правка» с подразделами:

- «Очистить все txt_box's» - для очистки всех txtBox'ов на форме;

- «Очистить график» - для очистки построенного графика, не доступно по умолчанию. Открывается доступ при построении графика.

в) «Отображение» имеет такие подразделы,как:

- «Строка состояния» - служит для отображения строки состояния или ее отключения.

- «График» - служит для отображения получившегося графика по расчетным данным.

Г) «Справка» - содержит «О программе» которая, отобра-жает информацию о программе и ее разработчике.

2) Компоненты Label:

- lbl_X0 для отображения строки «X0=»;

- lbl_Y0 для отображения строки «Y0=»;

- lbl_Xk для отображения строки «Xk=»;

- lbl_N для отображения строки «N=»;

- lbl_H для отображения строки «H=»;

- lbl_head для отображения строки «Программа численно-го интегрирования обыкновенного ДУ методом однопараметрической табличной функции кубическим сплайном третьего порядка точности.»;

- lbl_размерности_массивов для отображения строки «Размерности массивов»

- lbl_значение_массивов для отображения строки «Значения массивов А и В:».

- lbl_Начальные_значения для отображения строки «Начальные значения:».

3) Компоненты TextBox:

- txtboxN для отображения значения N;

- txtboxH для отображения значения H;

- txtboxX0 для отображения значения X0;

- txtboxX0 для отображения значения Y0;

- txtboxXk для отображения значения Xk;

4) statusStrip1 - для отображения текста характери-зующего поведение программы.

5) Кнопки управления Button:

- btn_расчет - решение уравнения на основе исходных данных.

3.2.2 Интерфейс формы отображающей график.

Интерфейс формы отображающей график представлен на рисунке 3.2

Рисунок 3.2 - Форма отобржающая график

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

Ввод исходных данных в программе реализован двумя способами:

1) с помощью главной формы программы, где значения считываются из TextBox'ов, в некоторых свойство Multiline установлено на True,с последующим преобразованием значений в соответствующий тип данных;

2) чтением ранее сохраненных значений из внешнего текстового файла; алгоритм чтения исходных данных соответствует рисунку 2.2.

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

Исходное ОДУ, представленное выражением (2.1), оформляется на форме MainForm.

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

Листинги форм предоставлены в Приложение А.

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

4.1 Описание аппаратной конфигурации для тестирования

Тестирование программы выполнялось на компьютере под управлением операционной системы Windows Se7en со следующими характеристиками аппаратной части:

1) центральный процессор:intel core i5;

2) монитор: 15.6” HD LCD;

3) оперативная память: 6 Gb;

4) жесткий диск: HDD 650 Gb;

5) видеоадаптер: Nvidia 610M.

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

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

. ( 4.1 )

Согласно принятой форме записи ОДУ в программе описывается следующими исходными данными:

- N=3;

- =0;

- H=0.1;

- =0.

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

1) Начало интервала интегрирования =0;

2) Конец интервала интегрирования =2;

3) Начальные условия функции =0;

При вводе исходных данных и расчета форма MainForm имеет вид:

Рис 4.1 - Введенные исходные данные и расчет на форме MainForm.

Результаты расчета в виде текстового файла и графика приводятся в Приложении Б.

Заключение

В результате выполнения курсовой работы было произведено описание задачи решения обыкновенного дифференциального уравнения явным многошаговым методом однопараметрической табличной функции кубическим сплайном, разработана схема алгоритма и написана программа решения на языке программирования С# в среде программирования Microsoft Visual Studio 2012. Проведенное тестирование показало правильность вычисления по спроектированной программе.

Данная программа может использоваться для решения обыкновенных дифференциальных уравнений на персональных компьютерах в среде Windows XP/Vista/7.

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

1 Крылов, В. И. Вычислительные методы высшей математики / В. И. Крылов; под ред. И. П. Мысовских. _ Минск : Выш. шк., 1972._ Т.2 - 672 с..Ф.

2 Мэтьюз, Дж. Численные методы. Использование MATLB: пер. с англ. / Дж. Мэтьюз, Г. Финк, Д. Куртис. - 3-е изд. - М. : Вильямс, 2001. - 720 с.

3 Славянова / Т. Шуп; под ред. С. П. Ларкурьева - М. : Высш. шк., 1991. - 252 с. Шуп, Т. Прикладные численные методы в физике и технике: пер. с англ. С. Ю.

Приложение А

Текстспроектированнойпрограммы

MainForm:

Form1

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 Form1 : Form

{

double[] x;

double[] y;

static double f(double x, double y)

{

return x * x + x;

}

public Form1()

{

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);

x[1] = x[0] + h;

y[1] = y[0] + h * f(x[0], y[0]);

x[2] = x[1] + h;

y[2] = y[1] + h / 2 * (3 * f(x[1], y[1]) - f(x[0], y[0]));

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

{

x[i] = x[i - 1] + h;

y[i] = y[i - 1] + h * (23 * f(x[i - 1], y[i - 1]) - 16 * f(x[i - 2], y[i - 2]) - 5 * f(x[i - 3], y[i - 3])) / 12;

}

}

private void button2_Click(object sender, EventArgs e)

{

AnswerTableForm atf = new AnswerTableForm(x, y);

atf.Show();

}

private void button3_Click(object sender, EventArgs e)

{

Form2 agf = new Form2(x, y);

agf.Show();

}

}

}

Form2

using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;

namespace WindowsFormsApplication1

{

static class Program

{

/// <summary>

/// Главная точка входа для приложения.

/// </summary>

[STAThread]

static void Main()

{

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new Form1());

}

}

}

Form3

namespace WindowsFormsApplication1

{

partial class AnswerTableForm

{

/// <summary>

/// Required designer variable.

/// </summary>

private System.ComponentModel.IContainer components = null;

/// <summary>

/// Clean up any resources being used.

/// </summary>

/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>

protected override void Dispose(bool disposing)

{

if (disposing && (components != null))

{

components.Dispose();

}

base.Dispose(disposing);

}

#region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

private void InitializeComponent()

{

this.dataGridView1 = new System.Windows.Forms.DataGridView();

this.Column2 = new System.Windows.Forms.DataGridViewTextBoxColumn();

this.Column3 = new System.Windows.Forms.DataGridViewTextBoxColumn();

((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit();

this.SuspendLayout();

//

// dataGridView1

//

this.dataGridView1.AllowUserToAddRows = false;

this.dataGridView1.AllowUserToDeleteRows = false;

this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells;

this.dataGridView1.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.AllCells;

this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;

this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {

this.Column2,

this.Column3});

this.dataGridView1.Location = new System.Drawing.Point(12, 12);

this.dataGridView1.Name = "dataGridView1";

this.dataGridView1.ReadOnly = true;

this.dataGridView1.RowHeadersWidth = 80;

this.dataGridView1.RowTemplate.Height = 24;

this.dataGridView1.Size = new System.Drawing.Size(248, 396);

this.dataGridView1.TabIndex = 0;

//

// Column2

//

this.Column2.HeaderText = "x";

this.Column2.Name = "Column2";

this.Column2.ReadOnly = true;

this.Column2.Width = 37;

//

// Column3

//

this.Column3.HeaderText = "y";

this.Column3.Name = "Column3";

this.Column3.ReadOnly = true;

this.Column3.Width = 37;

//

// AnswerTableForm

//

this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);

this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;

this.ClientSize = new System.Drawing.Size(272, 424);

this.Controls.Add(this.dataGridView1);

this.Name = "AnswerTableForm";

this.Text = "Form2";

((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit();и

this.ResumeLayout(false);

}

#endregion

private System.Windows.Forms.DataGridView dataGridView1;

private System.Windows.Forms.DataGridViewTextBoxColumn Column2;

private System.Windows.Forms.DataGridViewTextBoxColumn Column3;

}

}

Приложение Б

Результаты тестирования программы

РешениеОДУ:

dy/dx=2*x^0+0,1*x^1-0,01*x^2-0,2*y^1+0,02*y^2

Исходныеданныеинтегрирования:

X0=0,Y0=0,N=20,H=0,1.

Результаты расчета 5 последних точек:

x= y=

1,30.792

1,40.961833333333333

1,51.0521666666667

1,61.1983333333333

1,71.3556666666667

РисунокБ.1 - Графикрешения

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


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

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