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

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

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

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

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

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

2

Министерство образования Республики Беларусь

Белорусско-Российский университет

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

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

По дисциплине “Информатика”

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

Содержание

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.3 Решение задачи в математической системе Mathcad

4.4 Решение задачи в математической системе MATLAB

4.5 Анализ результатов тестирования

5. Разработка гипертекстового варианта документа работы

Заключение

Приложения

Введение

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

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

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

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

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

,

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

y - зависимая переменная является функция

,

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

При использовании численного метода интегрирования решение уравнения (1.2) получается в виде массива точек описывающих кривую, начинающуюся в конечной точке определения аргумента - .

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

Исходные данные и результаты расчёта при многошаговом методе интегрирования аналогично данным одношаговым методам.

Однако для определения текущих значений точек искомой функции в процесс интегрирования необходимо сформировать два одномерных массива: для аргумента -MX и функции - MY. В этих массивах первый(нулевой) элемент соответствует текущей искомой (n-ной) точке, первый - предыдущей(n-1)-вой, второй - (n-2)-ой точке, которая стоит впереди текущей на два шага интегрирования, тритий - (n-3)-ей точке, отстоящей на три шага интегрирования, и так до последней точки.

с начальным условиями:

Уравнение (1.3) можно преобразовать к виду:

и применить к нему разделённый метод Рунге-Кутты:

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

Число расчётных точек определяется величиной шага интегрирования. Метод Нистрема имеет третий порядок точности. Каждое последующее значение функции определяется на основе значений предыдущей точки при помощи выражения:

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

Метод Нистрема подробно описывается в [1], [2]. Он относится к явным многошаговым методам численного интегрирования дифференциальных уравнений.

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

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

Описание численного метода Нистрема в Интернет среде компьютерной математики находится на следующих сайтах:

-www.exponenta.ru;

-http://alglib.sources.ru

Поиск данных в Интернете производится с помощью поисковой службы Yandex.by.

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

Разрабатываемая программа должна удовлетворять следующим требованиям:

1) Тип операционной системы -MS Windows 7/8/8.1/10;

2) Формат файла исходных данных - текcтовый;

3) Форма вывода результата расчёта:

- таблица результатов расчёта искомой функции с сохранением в текстовый файл.

- графиком функции с возможностью сохранения в Windows мета-файл (wmf);

4)в программе следует предусмотреть задание числа фиксируемых точек решения Np;

5) контроль корректности ввода исходных данных выполнятся путём проверки условий:

;

;

6)визуализация текущего процесса численного интегрирования- в виде полосы с указанием номера текущей точки сохранения;

7) формат файла справки - html.

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

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

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

1) Главная форма приложения с вводом исходных данных;

2) Форма отображения таблицы и графика результатов расчёта;

3) Форма информации о программе.

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

1) Ввод исходных данных;

2) Загрузка созданного ранее файла с исходными данными;

3) Решение ОДУ численным методом Нистрема, при условии ввода исходных данных;

4) Отображение таблицы и графика результатов расчёта, при условии успешного расчёта(производится автоматически);

5) Вывод формы с информацией о программе;

6) Выход из программы.

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

1) Запуск численного решения при отсутствии ввода исходных данных:

2) Просмотр результатов расчёта(таблица и графика решения) без успешного завершения этапа численного решения.

Схема алгоритма головной программы изображается согласно требований ГОСТ 19.701-90 на рисунке 2.1 и на листе графической части НИСТРЕМ 00.00.000.

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

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

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

dy/dx=

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

1) Np -число сохраняемых расчётных точек ;

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

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

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

Схема алгоритма ввода исходных данных из текстового файла показана на рисунке 2.2а

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

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

В курсовой работе рассматривается схема алгоритма записи полученного решения в текстовый файл вместе с исходными данными. При этом предусматривается запись строки комментария. Схема алгоритма показывается на рисунке 2.2б.

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

а) Алгоритм чтения б) Алгоритм записи

данных из файла результатов в файл

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

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

При организации текущих вычислений удобно использовать переменные значений аргумента Xn и функции Yn для точки предыдущего шага и Xn1 и Yn1 - для точки последующего шага

Численное решение ОДУ методом Нистрема с учётом приведённого в разделе 1 описания исходных данных и результатов расчёта показывается на схеме алгоритма рисунка 2.4. Результаты решения дифференциального уравнения записываются в переменные-массивы X (значения аргументов точке интегрирования) и Y(значения функций).

Приведённые схемы алгоритмов также строятся на листе НИСТРЕМ 00.00.000 графической части работы.

Рисунок 2.4 - Схема численного решения методом Нистрема

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

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

Согласно заданию проект программы разрабатывается в среде визуального программирования C++ Builder версии 6.0 на основе составленных блок-схем алгоритмов.

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

1) Form2- главная форма(модуль Unit2) на которой располагается системное меню, ввод исходных данных и выполнение расчёта;

2) Form1- Форма отображения результатов расчёта в виде графика и таблицы(модуль Unit1)

3) Form3- форма с информацией по программе(модуль Unit3)

Основные переменные и подпрограммы размещаются в файле модуля главной формы.

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

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

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

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

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

А)”Сохранить/Загрузить” (компонент N1Click класса TMenuItem) - ввод исходных данных имеет следующие подразделы:

-“Cохранить”(N6Click класса TMenuItem)- сохранение значений данных в файле;

-“Загрузить”(N7Click класс TMenuItem) - загрузка ранее сохранённых данных;

Б)Справка(N2Click класса TMenuItem)- отображение информации о программе на форме Form3;

В)”Закрыть” (N3Click класса TMenuItem)- выход из программы;

2) компоненты TLabel текcтовых меток:

-Label1- для отображения строки “Расчёт функции методом Нистрема”;

-Label2- для отображения начального значения независимой переменной x(X0);

-Label3- для отображения начального значения переменной функции y(Y0); численный кодирование интерфейс тестирование

-Label4- для отображения конечного значения независимой переменной x(Xk);

-Label5- для отображения числа точек расчёта(Np);

-Label6- для отображения значения шага интегрирования(h);

-Label7- для отображения строки “Прогресс”;

-Label8- для отображения строки

“Функция вида: a*x^2+b*x+c*y^2+d*y+e*x*y+f”;

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

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

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

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

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

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

3) ProgressBar1 - строка отображения процента выполнения численного интегрирования;

4) SaveDialog1 - диалоговое окно для задания имени файла для сохранения результатов;

5) OpentDialog1 - диалоговое окно для выбора имени файла исходных данных;

6) Однострочные редакторы класса TEdit для ввода исходных данных:

-Edit1 - начальное значение независимой переменной X0;

-Edit2 - начальное значение переменной функции Y0;

-Edit3 - конечное значение независимой переменной X0;

-Edit4 - Число точек расчёта(Np);

-Edit5 - значение шага интегрирования(h);

-Edit6 - значение а для функции(2.1);

-Edit7 - значение b для функции(2.1);

-Edit8 - значение c для функции(2.1);

-Edit9 - значение d для функции(2.1);

-Edit10 - значение e для функции(2.1);

-Edit11 - значение f для функции(2.1);

7) кнопка управления класса TButton :

-“Расчёт”(Buttlon1Click класса TButton) - решение ОДУ с принятыми исходными данными и открытием формы TForm1 при успешном расчёте;

8)ToolBar1 - инструментальной панели со следующими кнопками( класса TToolButton):

-ToolButton1 - запуск численного метода(связан с пунктом главного меню ButtonClick1);

-ToolButton2- сохранение исходных данных в файл(связан с пунктом главного меню N6Click);

-ToolButton3 - загрузка исходных данных из файла(связан с пунктом главного меню N7Click);

-ToolButton4 - вызов формы информации по программе(связан с пунктом главного меню N2Click);

-ToolButton5 - Закрытие приложения(связан с пунктом главного меню N3Click).

Интерфейс формы таблицы и графика результатов Form1

Рисунок 3.2 - Форма отображения результатов

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

1) Текстовая таблица из трёх колонок StringGrid1 класса TStringGrid, в которой отображаются численные значения рассчитанных переменных элементов массивов решения X и Y;

2) Двухмерный график Chart1 класса TChart, в котором используется один набор точек график Series1 класса TLineSeries и не отображается легенда и заготовок графика;

3) Текстовая метка Label1 класса TLable для отображения текста: “Таблица результатов решения:”

4) SaveDialog1 - диалоговое окно выбора имени текстового файла для сохранения массивов решения X и Y в виде таблицы.

5) SavePictureDialog1- диалоговое окно задания имени файла для сохранения результатов;

6) Кнопки управления класса TButton:

-“Закрыть”(Button1Click класса TButton)- выход из программы;

-“Сохранить таблицу”(Button4Click класса TButton)- для записи таблицы результатов и исходных данных в текстовый файл;

-“Сохранить в bmp-файл”(Button3Click класса TButton)- сохранение графика в файл формата растровых изображений(bmp);

-“Сохранить в wmf-файл”(Button2Click класса TButton)- сохранение графика в файл формата Windows Metafile.

Интерфейс формы информации о программе Form3

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

1) PageControl1- набор закладок для организации двух страниц:

-“Численный метод”(TabSheet1)- страница с описанием численного метода;

-“О программе”(TabSheet2)- страница со сведениями о программе;

2) RichEdit1 - окно многострочного форматного текстового редактора, расположенное на странице TabSheet1, в которое загружается описание численного метода Нистрема из внешнего файла “имя файла.формат”;

3) RichEdit2 - окно многострочного форматного текстового редактора, расположенное на странице TabSheet2, в котором отображается информация о программе;

4) кнопка Button1 класса TButton для закрытия формы с информацией.

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

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

1) С помощью формы Form2, где значения переменных исходных данных считываются из текстовых полей Теxt компонентов Edit с последующим преобразованием их в соответствующий вещественный или целочисленный тип данных.

2) Чтением ранее сохранённых значений из внешнего текстового файла с помощью потока ifstream из модуля fstream; алгоритм чтения исходных данных соответствует

Рисунку 2.2а на форм Form2.

В приложении предусмотрено сохранение исходных данных во внешний файл на форме Form1 с помощью файлового потока ofstream.

Отображении численных значений выполняется с помощью формы Form2 в ячейках таблицы StringGrid1, используя функции преобразования численных данных в строковые IntToStr и FloatToStr, а так же с помощью компонента Chart1. Результаты расчёта таблицы можно сохранить в текстовый файл вместе с исходными данными и выражением OДУ, используя поток ofstream. На форме реализована возможность изменения высоты формы графика и таблиц в обработчике события OnResize.

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

Исходное ОДУ, представленное выражением (2.1), оформляется на форме Form1 в виде функции:

double F(double X, double Y)

{return a*X*X+b*X+c*Y*Y+d*Y+e*X*Y+g;}

Программная реализация на языке С++ метода Нистрема для численного интегрирования ОДУ выполняется на основе разработанной схемы алгоритма рисунка 2.4 в функции обработчике выбора пункта ButtonClick1 из главного меню:

void __fastcall TForm1::Button1Click(TObject *Sender)

В начале тела функции проверяется наличие ввода исходных данных. В теле цикла расчёта точек сохранения организуется отображение значения текущего счётчика i в свойстве ProgressBar1->Position.

Тексты cpp и h файлов проекта помещаются в Приложение А.

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

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

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

1) Тип ЦП AMD Athlon(tm) X4 840 Quad Core Processor 3.10GHz с характеристиками:

-Ядро - Trinity;

-Количество ядер - 4;

-Частота - 3400МГц;

-Тепловыделение - 100Вт;

-Тип памяти - DDR3;

2) Системная плата ASRock FM2A68M-DG3+ с параметрами:

-форм-фактор ATX;

-Весь Твёрдый Конденсаторный проект

-Максимальный объём оперативной памяти-32Гб;

-Поддержка технологии Dual Channel DDR3 Memory Technology;

-Поддержка DDR3 2400+(ОС)/2133(OC)/1866(OC)/1600/1333/1066 не=ECC, безбуферная память1066/800 не-ECC;

3)установлен 1 модуль оперативной памяти (DDR3) объёмом 8192 Мб;

4)Типы внешней памяти компьютера:

-дисковые устройства: WDC WD2500AAJS-00YZCA0(250Gb);

WDC WD3200AAKS-00L9A0(250Gb);

Silicon-power USB Device;

5)тип видеоадаптера NVIDIA GeForce GT-740;

-Частота SPU - 810МГц;

-Частота ядра - 810МГц;

-Частота памяти- 1800/3200МГц;

-Тип памяти - DDR3/GDDR5

-Объём памяти 2048Мб;

-Ядро - GK107;

-Шина памяти - 128бит;

6)Параметры монитора:

-тип ЭЛТ-монитора- SyncMaster 923NW;

-Диагональ:19;

-Разрешение: 1440x900 (16:10);

-Тип ЖК-матрицы: TFT TN;

-Шаг точки по вертикали: 0.285 мм;

-Шаг точки по горизонтали: 0.285 мм;

-Яркость: 300 кд/м2;

-Контрастность: 1000:1;

-Область обзора: по горизонтали: 170°; по вертикали: 160°;

7) состав интерфейса для подключения периферийных устройств:

-2 разъёма стандарта USB2.0;

-2 разъёма стандарта USB3.0;

-1 разъём порта LTP;

-блок из 3 аудиоразъёмов.

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

Разработанное приложение влючает в себя следующие файлы:

1)загрузочный файл- Nistrem(3).exe объёмом(123kb);

2)информационный файл- Метод Нистрема.rtf

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

где

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

-a=0;

-b=0;

-c=0;

-d=0;

-e=0;

-f=1;

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

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

2)начальное условие функции Y0=0;

3)конец интервала интегрирования Xk=3;

4)величина шага интегрирования h=0.01;

5)число точек расчёта Np=10.

При вводе исходных данных форма Form1 имеет вид рисунка 4.1.

Время расчёта составило менее 1 с.

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

Рисунок 4.1- ввод исходных данных

4.3 Решение задачи в математической системе Mathcad

Для тестирования используется математический пакет MathCAD 11A. При этом исходное уравнение (4.1) задаётся в виде функции:

(4.2)

Для численного расчёта с параметрами интегрирования, указанными в п.4.2, используется функция численного интегрирования многошаговым методом Адамса

Adams(x0, yo, xk, N, dy, h)

Где: x0- начальное значение независимой переменной;

y0- начальное значение зависимой переменной;

xk- конечное значение независимой переменой;

N- число точек решения;

dy- выражение ОДУ;

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

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

4.4 Решение задачи в математической системе MATLAB

Для тестирования уравнения вида(4.1) использовался пакет MATLAB версии 6.5. Дифференциальное уравнение(4.1) задаётся в виде m-файла func.m функцией:

Function f= func(x,y)

f=[0*x*x+0*x+0*y*y+0*y+0*y*x+1];

Для расчёта ОДУ используется встроенная функция численного интегрирования адаптированным методом Рунге-Кутта 4-5го порядка точности:

ode45(`m-файла',X,Y0);

Где m-файл - имя m-файла с ОДУ

X - массив расчётных точек независимой переменной

Y0 - начальное значение зависимой переменной.

Для построения двухмерного графика используется функция plot().

Состав m-файла для решения ОДУ следующий:

clc

[X,Y]=ode45(`func',[0 3],0)

plot(X,Y)

grid on

Результаты расчёта в виде численных данных и графика решения в среде MATLAB приводятся в Приложении Г.

4.5 Анализ результатов тестирования

По данным Приложения Б получено конечное значение:

.02

По данным Приложения В получено конечное значение:

По данным Приложения Г получено конечное значение:

Тогда абсолютное значение ошибки программы по Mathcad

Относительное значение ошибки теста Mathcad

.6%

Тогда абсолютное значение ошибки программы по MATLAB

Относительное значение ошибки теста MATLAB

%

Как видно из данных Приложений Б, В и Г получена точность расчёта менее 1%, что допустимо для технических расчётов. Это связано с тем что у метода Нистрема более высокая точность расчётов чем в используемых математических средах.

5. Разработка гипертекстового варианта документа работы

Html-документ со справочной информацией по разработанной программе выполняется на языке HTML в среде текстового редактора Блокнот. Полный исходный текст документа находится в Приложении Д.

Рисунок 5.1- Окно обозревателя Google со справкой

Заключение

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

Разработанная программа может использоваться для решения ОДУ на ПК в среде Windows 7/8/10.

Приложения

Приложение А

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

Текст файла Progect1.cpp

#include <vcl.h>

#pragma hdrstop

//--------------------------------------------------------------------

USEFORM("Unit2.cpp", Form2);

USEFORM("Unit1.cpp", Form1);

USEFORM("Unit3.cpp", Form3);

//--------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->CreateForm(__classid(TForm2), &Form2);

Application->CreateForm(__classid(TForm3), &Form3);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//--------------------------------------------------------------------

Файл Unit1.h(форма Form1)

#ifndef Unit1H

#define Unit1H

//--------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <Menus.hpp>

#include <Dialogs.hpp>

#include <ToolWin.hpp>

Продолжение приложения А

#include <ImgList.hpp>

//--------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TEdit *Edit1;

TEdit *Edit2;

TEdit *Edit3;

TEdit *Edit4;

TEdit *Edit5;

TProgressBar *ProgressBar1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

TMainMenu *MainMenu1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TMenuItem *N6;

TSaveDialog *SaveDialog1;

TOpenDialog *OpenDialog1;

TLabel *Label7;

TEdit *Edit6;

TEdit *Edit7;

TEdit *Edit8;

TEdit *Edit9;

TEdit *Edit10;

TEdit *Edit11;

TLabel *Label8;

TLabel *Label9;

TLabel *Label10;

TLabel *Label11;

TLabel *Label12;

TLabel *Label13;

TButton *Button1;

TToolBar *ToolBar1;

TToolButton *ToolButton1;

TToolButton *ToolButton2;

TToolButton *ToolButton3;

TToolButton *ToolButton4;

TImageList *ImageList1;

void __fastcall N6Click(TObject *Sender);

void __fastcall N1Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N5Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//--------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

#endif

Продолжение приложения А

Файл Unit1.cpp(форма Form1)

#include <vcl.h>

#pragma hdrstop

#include <math.h>

#include "Unit1.h"

#include <fstream.h>

#include "Unit2.h"

#include <string.h>

#include "Unit3.h"

//--------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

double *X, *Y, X0, Y0, X1,Y1, X2,Y2,X3,Y3,Xk, Xn, Yn, h;

long int Nj;

int Np;

int j;

int i;

double a, b, c, d, e, g;

double F(double X, double Y)

{return a*X*X+b*X+c*Y*Y+d*Y+e*X*Y+g;}

//--------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//--------------------------------------------------------------------

void __fastcall TForm1::N6Click(TObject *Sender)

{

Close();

}

//--------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)

{

Form2->ShowModal();

}

//--------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)

{ if( SaveDialog1->Execute())

{ ofstream fout (SaveDialog1->FileName.c_str(), ios::out);

fout<< X0 <<endl;

fout<< Y0 <<endl;

fout<< Xk <<endl;

fout<< Np <<endl;

fout<< h <<endl;

fout<< a <<endl;

fout<< b <<endl;

fout<< c <<endl;

fout<< d <<endl;

fout<< e <<endl;

fout<< g <<endl;

fout.close();

}}

//--------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)

{if( OpenDialog1->Execute())

{ ifstream fin (OpenDialog1->FileName.c_str());

fin >> X0;

Edit1->Text=FloatToStr(X0);

Продолжение приложения А

fin >> Y0;

Edit2->Text=FloatToStr(Y0);

fin >> Xk;

Edit3->Text=FloatToStr(Xk);

fin >> Np;

Edit4->Text=FloatToStr(Np);

fin >> h;

Edit5->Text=FloatToStr(h);

fin >> a;

Edit6->Text=FloatToStr(a);

fin >> b;

Edit7->Text=FloatToStr(b);

fin >> c;

Edit8->Text=FloatToStr(c);

fin >> d;

Edit9->Text=FloatToStr(d);

fin >> e;

Edit10->Text=FloatToStr(e);

fin >> g;

Edit11->Text=FloatToStr(g);

fin.close();

}}

//--------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

h=StrToFloatDef(Edit5->Text.c_str(), 0.01);

if(strlen(Edit1->Text.c_str())!=0){

if(strlen(Edit2->Text.c_str())!=0){

if(strlen(Edit3->Text.c_str())!=0){

if(strlen(Edit4->Text.c_str())!=0){

if(strlen(Edit5->Text.c_str())!=0){

if(strlen(Edit6->Text.c_str())!=0){

if(strlen(Edit7->Text.c_str())!=0){

if(strlen(Edit8->Text.c_str())!=0){

if(strlen(Edit9->Text.c_str())!=0){

if(strlen(Edit10->Text.c_str())!=0){

if(strlen(Edit11->Text.c_str())!=0){

a=StrToFloat(Edit6->Text);

b=StrToFloat(Edit7->Text);

c=StrToFloat(Edit8->Text);

d=StrToFloat(Edit9->Text);

e=StrToFloat(Edit10->Text);

g=StrToFloat(Edit11->Text);

X0=StrToFloat(Edit1->Text);

Y0=StrToFloat(Edit2->Text);

Xk=StrToFloat(Edit3->Text);

Np=StrToFloat(Edit4->Text);

h=StrToFloat(Edit5->Text); if(h==0){ ShowMessage("Ошибка. Значение h не может быть <0"); return; }

if (Xk<X0) ShowMessage("Ошибка. Начальное значение X0 не должно быть больше конечного Xk");

else{

if (Np>500) ShowMessage("Ошибка. Значение Np не должно быть больше 500");

else{

X = new double[Np+1];

Y = new double[Np+1];

X[0]=X0;

Продолжение приложения А

Xn=X0;

Y[0]=Y0;

Yn=Y0;

Nj =(Xk-X0)/Np/h+1;

X1=X0+h;

Y1=Y0+h*F(X0, Y0);

X2=X1+h;

Y2=Y1+h*F(X1, Y1);

ProgressBar1->Max=Np;

ProgressBar1->Position=0;

for(i=1; i<Np; i++)

{

for(j=0; j<=Nj; j++)

{ X3=X2+h;

Y3=Y1+h*(7*F(X2,Y2)-2*F(X1,Y1)+F(Xn,Yn))/3;

Xn=X1; Yn=Y1;

X1=X2; Y1=Y2;

X2=X3; Y2=Y3;

}

ProgressBar1->Position=i;

X[i]=X3;

Y[i]=Y3;

}

Form2->ShowModal();

}

}

}

}

}

}

}

}

}

}

}

}

}

}

//--------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form3->ShowModal();

}

//--------------------------------------------------------------------

Файл Unit2.h(форма Form2)

#ifndef Unit2H

#define Unit2H

//------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Chart.hpp>

#include <Dialogs.hpp>

#include <ExtCtrls.hpp>

#include <ExtDlgs.hpp>

#include <Grids.hpp>

#include <TeEngine.hpp>

#include <TeeProcs.hpp>

#include <Series.hpp>

//------------------------------------------------------------------

class TForm2 : public TForm

{

__published: // IDE-managed Components

TStringGrid *StringGrid1;

TChart *Chart1;

TSaveDialog *SaveDialog1;

TSavePictureDialog *SavePictureDialog1;

TButton *Button1;

TButton *Button2;

TButton *Button3;

TButton *Button4;

TLineSeries *Series1;

TLabel *Label1;

void __fastcall Button4Click(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall FormResize(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm2(TComponent* Owner);

};

//------------------------------------------------------------------

extern PACKAGE TForm2 *Form2;

//------------------------------------------------------------------

#endif

Файл Unit2.cpp(форма Form2)

#include <vcl.h>

#pragma hdrstop

Продолжение приложения А

#include <math.h>

#include <fstream.h>

#include "Unit2.h"

//------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm2 *Form2;

extern double *X, *Y, X0, Y0, Xk, Xn, Yn, a, b, h;

extern long int Nj;

extern int Np;

//------------------------------------------------------------------

__fastcall TForm2::TForm2(TComponent* Owner)

: TForm(Owner)

{

}

//------------------------------------------------------------------

void __fastcall TForm2::Button4Click(TObject *Sender)

{

Close();

}

//------------------------------------------------------------------

void __fastcall TForm2::FormShow(TObject *Sender)

{ StringGrid1->RowCount=Np+1;

StringGrid1->Cells[0][0]="i";

StringGrid1->Cells[1][0]="X[i]";

StringGrid1->Cells[2][0]="Y[i]";

Series1->Clear();

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

{ StringGrid1->Cells[0][i+1]=IntToStr(i);

StringGrid1->Cells[1][i+1]=FloatToStrF(X[i],0,6,10);

StringGrid1->Cells[2][i+1]=FloatToStrF(Y[i],0,6,10);

Series1->AddXY(X[i],Y[i],"",clRed);

}

}//-----------------------------------------------------------------

void __fastcall TForm2::Button2Click(TObject *Sender)

{ if(SavePictureDialog1->Execute())

Chart1->SaveToMetafile(SavePictureDialog1->FileName+".bmp");

}

//------------------------------------------------------------------

void __fastcall TForm2::Button3Click(TObject *Sender)

{if(SavePictureDialog1->Execute())

Chart1->SaveToMetafile(SavePictureDialog1->FileName+".wmf");

}

//------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)

{char *Name;

if (SaveDialog1->Execute())

{ Name=SaveDialog1->FileName.c_str();

ofstream four(Name, ios_base::out);

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

{ four <<X[i] << " " <<Y[i] <<endl;

}

four.close();

}}

//------------------------------------------------------------------

void __fastcall TForm2::FormResize(TObject *Sender)

{

Chart1->Width=Form2->Width-(583-361);

Продолжение приложения А

Chart1->Height=Form2->Height-( 365-289);

StringGrid1->Height=Form2->Height-( 365-273);

Button2->Top=Form2->Height-( 365-296);

Button3->Top=Form2->Height-( 365-296);

Button1->Top=Form2->Height-( 365-296);

Button4->Top=Form2->Height-( 365-296);

}

//------------------------------------------------------------------

Файл Unit3.h(форма Form3)

#ifndef Unit3H

#define Unit3H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

//---------------------------------------------------------------------------

class TForm3 : public TForm

{

__published: // IDE-managed Components

TButton *Button1;

TPageControl *PageControl1;

TTabSheet *TabSheet1;

TTabSheet *TabSheet2;

TRichEdit *RichEdit1;

TRichEdit *RichEdit2;

void __fastcall Button1Click(TObject *Sender);

void __fastcall FormShow(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm3(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm3 *Form3;

//---------------------------------------------------------------------------

#endif

Файл Unit3.cpp(форма Form3)

#include <vcl.h>

#pragma hdrstop

#include "Unit3.h"

//------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm3 *Form3;

//------------------------------------------------------------------

__fastcall TForm3::TForm3(TComponent* Owner)

: TForm(Owner)

{

}

//------------------------------------------------------------------

Продолжение приложения А

void __fastcall TForm3::Button1Click(TObject *Sender)

{

Close();

}

//------------------------------------------------------------------

void __fastcall TForm3::FormShow(TObject *Sender)

{

RichEdit2->Lines->LoadFromFile("question38.txt");

}

//------------------------------------------------------------------

Приложение Б

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

Решение ОДУ: dy/dx=0*x^2+0*x+0*y^2+0*y+0*y*x+1

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

X0=0

Y0=0

h=0.01

Xk=3

Np=10

Таблица результатов расчёта:

x y

0 0

0.32 0.32

0.62 0.62

0.92 0.92

1.22 1.22

1.52 1.52

1.82 1.82

2.12 2.12

2.42 2.42

2.72 2.72

3.02 3.02

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

Приложение В

Решение в математической системе Mathcad

Приложение Г

Решение в математической среде MATLAB

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

Приложение Д

Гипертекстовая справка по программе

<!doctype html>

<html lang="ru">

<head>

<meta charset="utf-8">

<title>Численный явный многошаговый метод Нистрема</title>

<meta name="author" content="Boris.M">

<meta name="generator" content="WYSIWYG Web Builder 12 Trial Version - http://www.wysiwygwebbuilder.com">

<link href="Нистрем.css" rel="stylesheet">

<link href="index.css" rel="stylesheet">

</head>

<body>

<a href="http://www.wysiwygwebbuilder.com" target="_blank"><img src="images/builtwithwwb12.png" alt="WYSIWYG Web Builder" style="position:absolute;left:2623px;top:1110px;border-width:0;z-index:250"></a>

<div id="wb_Text1" style="position:absolute;left:48px;top:52px;width:373px;height:36px;z-index:3;">

<span style="color:#1E90FF;font-family:Arial;font-size:32px;">Cодержание</span></div>

<div id="wb_Text2" style="position:absolute;left:48px;top:123px;width:295px;height:80px;z-index:4;">

<span style="color:#000000;font-family:Arial;font-size:13px;"><a href="#Bookmark4">1.&nbsp; Описание численного метода</a><br><a href="#Bookmark1">2.&nbsp; Проектирование схем алгоритма</a><br><a href="#Bookmark6">3.&nbsp; Кодирование программы</a><br><a href="#Bookmark7">4.&nbsp; Тестирование программы</a><br><a href="#Bookmark8">5.&nbsp; Список используемых источников</a></span></div>

<hr id="Line1" style="position:absolute;left:4px;top:226px;width:966px;z-index:5;">

<div id="wb_Text3" style="position:absolute;left:48px;top:244px;width:490px;height:36px;z-index:6;">

<span style="color:#1E90FF;font-family:Arial;font-size:32px;">1. Описание численного метода</span></div>

<div id="wb_Text4" style="position:absolute;left:4px;top:304px;width:813px;height:1444px;z-index:7;">

<div style="margin-left:45px;position:absolute;left:0px;top:0px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Решением обыкновенного дифференциального уравнения в нормальной форме </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:21px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Коши согласно [1]</span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:42px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"><em>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; dy/dx=f(x,y)&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; </em>(1.1)<em></em></span></div>

<div style="margin-left:89px;position:absolute;left:0px;top:63px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"> </span></div>

<div style="position:absolute;left:0px;top:84px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">где x - независимая переменная;</span></div>

<div style="position:absolute;left:0px;top:105px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">&nbsp;&nbsp;&nbsp; y - зависимая переменная </span></div>

<div style="position:absolute;left:0px;top:126px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">является функция</span></div>

<div style="position:absolute;left:0px;top:147px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"><br></span></div>

<div style="position:absolute;left:0px;top:168px;width:813px;height:21px;"><span style="color:#000000;font-family:Arial;font-size:19px;">&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <em>у=f(x)</em></span><span

Продолжение приложения Д

style="color:#000000;font-family:'Courier New';font-size:19px;">&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; (1.2)&nbsp; </span></div>

<div style="position:absolute;left:0px;top:191px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"><br></span></div>

<div style="position:absolute;left:0px;top:212px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">удовлетворяющая начальным условиям - точке (x0,y0).</span></div>

<div style="position:absolute;left:0px;top:233px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">При использовании численного метода интегрирования решение уравнения </span></div>

<div style="position:absolute;left:0px;top:254px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">(1.2) получается в виде массива точек (x1,y1) описывающих кривую, </span></div>

<div style="position:absolute;left:0px;top:275px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">начинающуюся в конечной точке определения аргумента - Xk.</span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:296px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Численный метод Нистрема относится к явным многошаговым методам </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:317px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">численного интегрирования. Данные методы используют для определения </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:338px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">каждой последующей точки не одно, а несколько значений функции в </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:359px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">предыдущих точках интегрирования. В отличие от одношаговых методов, </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:380px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">многошаговые не обладают свойством самостартования, поэтому перед </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:401px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">запуском вычислений необходимо рассчитать требуемое число первых точек </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:422px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">искомой функции при помощи одношагового метода, а только потом по этим </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:443px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">значениям реализовать процесс интегрирования многошаговым методом </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:464px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Нистрема.</span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:485px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Исходные данные и результаты расчёта при многошаговом методе </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:506px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">интегрирования аналогично данным одношаговым методам. </span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:527px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"><br></span></div>

<div style="margin-left:45px;position:absolute;left:0px;top:548px;width:813px;height:20px;"><span style="color:#000000;font-family:Arial;font-size:13px;">&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; </span><span style="color:#000000;font-family:'Courier New';font-size:19px;">&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; <em> y&quot;(x)=f(x,y(x),y'(x))</em>&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; (1.3)</span></div>

<div style="position:absolute;left:0px;top:569px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;"> </span></div>

<div style="position:absolute;left:0px;top:590px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">Однако для определения текущих значений точек искомой функции в процесс </span></div>

<div style="position:absolute;left:0px;top:627px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">интегрирования необходимо сформировать два одномерных массива: для </span></div>

<div style="position:absolute;left:0px;top:648px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">аргумента -MX и функции - MY. В этих массивах первый(нулевой) элемент </span></div>

<div style="position:absolute;left:0px;top:669px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">соответствует текущей искомой (n-ной) точке, первый - предыдущей(n-1)-</span></div>

<div style="position:absolute;left:0px;top:690px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">вой, второй - (n-2)-ой точке, которая стоит впереди текущей на два шага </span></div>

<div style="position:absolute;left:0px;top:711px;width:813px;height:20px;"><span style="color:#000000;font-family:'Courier New';font-size:19px;">интегрирования, тритий -&nbsp; (n-3)-ей точке, отстоящей на три шага </span></div>


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

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

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

  • Разработка прикладного программного обеспечения для решения расчетных задач для компьютера. Численное интегрирование - вычисление значения определённого интеграла. Проектирование алгоритма численного метода. Тестирование работоспособности программы.

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

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

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

  • Проектирование программного модуля. Описание схемы программы и структуры разрабатываемого пакета. Написание кода ввода исходных данных и основных расчетов. Тестирование программного модуля. Тестирование решения задачи. Методы численного интегрирования.

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

  • Описание алгоритма создания программы для решения алгебраических или трансцендентных уравнений с помощью численного метода Бернулли. Нахождение значений корней алгебраического уравнения с заданными параметрами точности. Листинг программы на языке java.

    контрольная работа [206,0 K], добавлен 19.06.2015

  • Особенности метода численного интегрирования функции одной переменной. Замена на каждом элементарном отрезке подынтегральной функции на многочлен первой степени (линейную функцию). Разработка алгоритма программы, ее листинг. Пример работы программы.

    контрольная работа [217,9 K], добавлен 14.07.2012

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

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

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

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

  • Разработка алгоритма и программы управления поворотной платформой лифта при помощи языка программирования Java Script. Проектирование приложения к браузеру в среде Adobe Dreamweaver CS5. Схема алгоритма, текст программы для двухмерной модели лифта.

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

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

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

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