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

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

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

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

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

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

Содержание

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

Введение

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

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

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

1.3 Формирование требований к программе

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

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

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

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

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

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

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

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

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

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

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

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

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

Введение

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

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

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

В третьем разделе описана структура разрабатываемого пакета, типы используемых данных, разработан интерфейс программы.

В четвертом описаны тестирование программы в математическом пакете и тестирование готовой программы.

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

Интерполяция - процесс получения значений функции Y=F(X), заданной в виде таблицы значений узлов (Xi,Yi) при i=1,…,n, на интервале между двумя соседними значениями узлов. При этом исходная функция приближенно описывается некоторой интерполяционной функцией вида Y=G(X), которая совпадает с заданной Y=F(X) в узловых точках [3].

Интерполяция используется для поиска значения Y, соответствующего заданному значению X, лежащему между узлами заданной таблицы функции (X1<X<Xn).

Используются следующие методы интерполяции табличных функций одной переменной:

1) линейная интерполяция;

2) квадратичная интерполяция;

3) интерполяция степенным рядом;

4) интерполяция сплайнами;

5) интерполяция полиномами (многочленами): Лагранжа, Ньютона, Гаусса, Стирлинга, Бесселя, Эрмита, Чебышева [3].

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

Многочленом Чебышева является функция, определённая на интервале [-1;1] вида [3]:

(x)=cos(n*arcos(x));

где n- порядок многочлена Чебышева.

Для многочлена Чебышева справедливо рекуррентное правило

(х)=2х*-(х)

При различных значениях степени n имеют место следующие выражения многочленов Чебышева:

= 1;

= х;

;

= -3х;

= -8+1;

= -20+5х;

= -48+18-1;

= -112+56-7х.

Многочлены Чебышева (x) имеют на отрезке [-1;1] n действительных корней, называемых узлами Чебышева, определяемые по формуле

= cos

где i=0, 1, 2, 3…, n-1.

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

Для интерполяции табличной функции с помощью полиномов Чебышева на отрезке [a, b] выполняется преобразование независимой переменной по формуле:

Согласно данной формуле узлам [a, b] можно сопоставить точки [-1, 1].

Интерполяционный полином Чебышева на отрезке [-1, 1] записывается как сумма полиномов

(x);

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

=

= ( cos);

где j = 1, 2, …, n.

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

Интерполяция полиномами подробно описывается в [1], [3], [4],. В данной курсовой работе рассматривается интерполяция полиномом Чебышева. Он может применяется в случае таблиц с неравноотстоящими и равноотстоящими узлами. Согласно [1] данный метод является одним из самых употребительных методов интерполяции табличных функций.

При поиске существующего программного обеспечения для решения поставленной задачи были использованы поисковые службы Интернет:

· Яндекс, 94000 ответов;

· Google, 1950 ответов.

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

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

http://aep24.ru/kursovye/si/38-polinom-chebysheva.html

http://referatwork.ru/refs/source/ref-120081.html

1.3 Формирование требований к программе

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

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

· операционная система - MS Windows 2000/XP/Vista;

· система программирования - Sharp Develop или MS visual Studio;

· математические системы тестирования - MahtCAD, Matlab.

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

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

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

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

2)форма ввода значений;

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

1) Расчет

2) Построение графика

3) Загрузка данных из файла

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

При интерполяции табличной функции полиномом Чебышева исходными данными являются:

а) количество значений узловых точек n;

б) таблица значений исходной функции X и Y;

в) абсцисса искомой точки - xx;

Коэффициенты полинома Чебышева хранятся в переменной-массиве - C.

При организации текущих вычислений удобно использовать специальную матрицу А размером n*n.

Рисунок 1.1 Схема алгоритма приложения

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

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

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

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

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

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

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

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

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

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

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

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

2) KeyBoardIn - форма для введения значений.

3) Main Form - форма отображающая график.

4) WriteBoxXY - форма отображающая результаты вычислений.

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

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

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

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

1) CheckBox - позволяет выбирать нужные варианты решения.

2) RadioButton - выбор метода ввода данных

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

- btn_получить ответ - решение уравнения на основе исходных данных;

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

Рисунок 3.3 Интерфейс формы отображающей результаты вычислений

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

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

1) с помощью KeyBoardIn, где значения вводятся с клавиатуры;

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

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

Исходная функция, представленное выражением (2.2), оформляется на форме Form1 в виде следующего:

T[1] = XX;

double P =

C[0] * T[0] + C[1] * T[1];

for (int i = 2; i < N; i++)

{

T[i] = 2 * XX * T[i - 1] * T[i - 2];

P += C[i] * T[i];

}

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

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

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

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

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

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

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

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

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

5) видеоадаптер: GeForse560 GTX;

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

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

X

Y

1

0.5

2

0.6

3

0.6

4

0.5

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

Рис 4.1 Введенные исходные данные

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

Рис 4.2 Поведение программы на неправильно введённые данные

Заключение

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

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

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

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

2. Ракитин, В.И., Первушин, В.Е. Практическое руководство по методам вычислений с приложением программ для персональных компьютеров: Учеб. пособие/В.И. Ракитин, В.Е. Первушин. М.: Высш. шк., 1998. 393 с.

3. Вычислительная техника и программирование. Интерполяция и аппроксимация табличных функций. Методические указания к курсовой работе для студентов специальности Т11.02 «Автоматизированный электропривод». Могилев: БРУ, 2004. 32 с.

4. Научная библиотека избранных естественно-научных изданий: научная библиотека.рф [Электронный ресурс]. режим доступа: http://alnam.ru/book_bcm.php?id=17. Дата доступа: 04.12.2013.

Приложение А

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

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using SimpleSignal;

using WriteBoxXY;

namespace ChabishevMethodProject

{

public partial class Form1: Form

{

GraphForm gf;

WriteBoxXY.WriteBoxXY wbxy;

KeyBoardIn kbi;

private class MyPoint

{

public double X, Y;

public MyPoint(double x, double y)

{

X = x;

Y = y;

}

}

private double[] GetXFromListMyPoint(List<MyPoint> items)

{

double[] x = new double[items.Count];

for (int i = 0; i < items.Count; i++)

{

x[i] = items[i].X;

}

return x;

}

private double[] GetYFromListMyPoint(List<MyPoint> items)

{

double[] y = new double[items.Count];

for (int i = 0; i < items.Count; i++)

{

y[i] = items[i].Y;

}

return y;

}

public const string PATH = "in.txt";

private double[] X;

private double[][] Y;

private List<MyPoint> _answer;

public Form1()

{

InitializeComponent();

_answer = new List<MyPoint>();

this.rbInFile.Click += GetData;

this.rbInKeyBoard.Click += GetData;

}

private void ReadDataFromFile()

{

using (System.IO.StreamReader read = new System.IO.StreamReader(PATH))

{

string[] split = read.ReadLine().Split();

InitArray(split, out X);

Y = new double[X.Length][];

for (int i = 0; i < X.Length; i++)

{

split = read.ReadLine().Split();

InitArray(split, out Y[i]);

}

read.Close();

}

}

private void InitArray(string[] s, out double[] arr)

{

arr = new double[s.Length];

for (int i = 0; i < s.Length; i++)

{

arr[i] = Convert.ToDouble(s[i]);

}

}

private void GetData(object sender, EventArgs e)

{

if (rbInKeyBoard.Checked)

{

ReadDataFromKeyBoard();

}

ReadDataFromFile();

}

private void ReadDataFromKeyBoard()

{

kbi = new KeyBoardIn();

kbi.Show();

}

private void GetAnswer_Click(object sender, EventArgs e)

{

int N = 0;

try

{

N = Y[0].Length;

}

catch

{

MessageBox.Show("Введи значения!");

return;

}

for (int numberOfIteration = 0; numberOfIteration < X.Length; numberOfIteration++)

{

double XX = X[numberOfIteration];

double[] C = new double[N];

double[] T = new double[N];

T[0] = 1;

for (int i = 0; i < N; i++)

{

C[0] += Y[numberOfIteration][i];

}

C[0] /= (N + 1);

for (int j = 1; j < N; j++)

{

for (int i = 0; i < N; i++)

{

C[j] += Y[numberOfIteration][i] * Math.Cos(j * Math.PI * (2 * i + 1) / (2 * N + 2));

}

C[j] /= N + 1;

}

T[1] = XX;

double P =

C[0] * T[0] + C[1] * T[1];

for (int i = 2; i < N; i++)

{

T[i] = 2 * XX * T[i - 1] * T[i - 2];

P += C[i] * T[i];

}

double YY = P;

_answer.Add(new MyPoint(XX, YY));

}

if (cbPlottFunction.Checked)

{

gf = new GraphForm();

gf.DrawGraph(GetXFromListMyPoint(_answer), GetYFromListMyPoint(_answer));

gf.Show();

}

if (cbShowTable.Checked)

{

wbxy = new WriteBoxXY.WriteBoxXY();

wbxy.AddXY(GetXFromListMyPoint(_answer), GetYFromListMyPoint(_answer));

wbxy.Show();

}

}

}

}

Приложение Б

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

Решение табличной функции:

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

X

Y

1

0.5

2

0.6

3

0.6

4

0.5

Рисунок Б.1 результаты расчёта

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

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


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

  • Проектирование модульной структуры программы сетевого мессенджера, назначение модуля "frmMsg". Разработка главной формы и интерфейса пользователя программы. Проектирование модуля формы "About". Разработка методики тестирования и отладка программы.

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

  • Разработка программы обработки типизированных файлов с кодом на языке Object Pascal, с использованием компонентов Delphi для ввода и вывода данных. Разработка экранных форм и алгоритма программы. Описание программных модулей и инструкция оператору.

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

  • Разработка приложения "Ведомость начисления заработной платы" в среде программирования C++Builder. Алгоритм и сценарий работы программы. Проектирование интерфейса пользователя. Написание программных модулей и результаты тестирования данной программы.

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

  • Разработка приложения для шифрования данных с помощью алгоритма DES5: процесс шифрования, расшифрования, получение ключей. Спецификация программы, процедуры и функции; описание интерфейса пользователя. Реализация задачи в среде программирования DELPHI.

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

  • Изучение особенностей растровых и векторных графических редакторов. Создание графического редактора: выбор языка программирования, разработка структуры программы и алгоритма работы. Описание интерфейса программы. Руководство программиста и пользователя.

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

  • Разработка программы проверки знаний для тестирования студентов по программированию с кодом на языке Delphi. Проектирование визуального интерфейса и словесный алгоритм работы программы. Алгоритмы разработанных процедур и функций, инструкция пользователя.

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

  • Обоснование необходимости разработки программы для игры "Тетрис". Математическая и графическая части алгоритма. Выбор языка и среды программирования. Отладка текста программы, разработка интерфейса пользователя. Тестирование, руководство пользователя.

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

  • Проектирование программы в среде Delphi для тестирования знаний студентов по программированию, с выводом оценки по окончанию тестирования. Разработка экранных форм и алгоритма программы. Описание программных модулей. Алгоритм процедуры BitBtn1Click.

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

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

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

  • Разработка алгоритма решения задачи численного интегрирования методом трапеции. Словесное описание и блок-схема разработанного алгоритма программы. Описание интерфейса, главного окна и основных форм программы. Проверка работоспособности программы.

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

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