5 Разработка гипертекстового варианта документа работы
Html-документ со справочной информацией по разработанной программе выполняется на языке HTML5 в среде текстового редактора Блокнот. Полный исходный текст документа находится в Приложении Д.
Рисунок 5.1 – Гипертекстовый документ в браузере Firefox
Заключение
В результате выполнения курсовой работы было выполнено описание поставленной задачи, изучение литературы, создание схем алгоритмов, кодирование программы в среде программирования и тестирование разработанной программы.
Список использованных источников
1 Метод — Википедия — Википедия см. ссылку сайта: https://ru.wikipedia.org/wiki/Метод_Дифференцирования
2 Гладышев Н.С.- Решение научных и инженерных задач средствами Excel, VBA и C++ -2004
3 Абабурко В.Н. – Численные методы интерполяции и аппроксимации, дифференцирования
Приложение А
(Обязательное)
Тексты спроектированной программы
Текст файла MyForm . h
#pragma once
#include <fstream>
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
double f(double x) {
return x*x;
}
double *_X,*x;
double *_Y,*y, *yy;
double a, b, h;
int n,p;
namespace RKM {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;
/// <summary>
/// Сводка для MyForm
/// </summary>
public ref class MyForm : public System::Windows::Forms::Form
{
public:
MyForm(void)
{
InitializeComponent();
//
//TODO: добавьте код конструктора
//
}
protected:
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
~MyForm()
{
if (components)
{
delete components;
}
}
private: System::Windows::Forms::OpenFileDialog^ openFileDialog1;
protected:
private: System::Windows::Forms::SaveFileDialog^ saveFileDialog1;
private: System::Windows::Forms::Button^ button1;
private: System::Windows::Forms::MenuStrip^ menuStrip1;
private: System::Windows::Forms::ToolStripMenuItem^ файлToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ сохранитьToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ загрузитьToolStripMenuItem;
private: System::Windows::Forms::ToolStripMenuItem^ оПрограммеToolStripMenuItem;
private: System::Windows::Forms::DataVisualization::Charting::Chart^ chart1;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::TextBox^ textBox2;
private: System::Windows::Forms::TextBox^ textBox3;
private: System::Windows::Forms::DataGridView^ dataGridView1;
private: System::Windows::Forms::Label^ label1;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label4;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ X;
private: System::Windows::Forms::DataGridViewTextBoxColumn^ Y;
private:
/// <summary>
Продолжение приложения А
/// Обязательная переменная конструктора.
/// </summary>
System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code
/// <summary>
/// Требуемый метод для поддержки конструктора — не изменяйте
/// содержимое этого метода с помощью редактора кода.
/// </summary>
void InitializeComponent(void)
{
System::Windows::Forms::DataVisualization::Charting::ChartArea^ chartArea1 = (gcnew System::Windows::Forms::DataVisualization::Charting::ChartArea());
System::Windows::Forms::DataVisualization::Charting::Legend^ legend1 = (gcnew System::Windows::Forms::DataVisualization::Charting::Legend());
System::Windows::Forms::DataVisualization::Charting::Series^ series1 = (gcnew System::Windows::Forms::DataVisualization::Charting::Series());
System::Windows::Forms::DataVisualization::Charting::Series^ series2 = (gcnew System::Windows::Forms::DataVisualization::Charting::Series());
this->openFileDialog1 = (gcnew System::Windows::Forms::OpenFileDialog());
this->saveFileDialog1 = (gcnew System::Windows::Forms::SaveFileDialog());
this->button1 = (gcnew System::Windows::Forms::Button());
this->menuStrip1 = (gcnew System::Windows::Forms::MenuStrip());
this->файлToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->сохранитьToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->загрузитьToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->оПрограммеToolStripMenuItem = (gcnew System::Windows::Forms::ToolStripMenuItem());
this->chart1 = (gcnew System::Windows::Forms::DataVisualization::Charting::Chart());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->textBox2 = (gcnew System::Windows::Forms::TextBox());
this->textBox3 = (gcnew System::Windows::Forms::TextBox());
this->dataGridView1 = (gcnew System::Windows::Forms::DataGridView());
this->X = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->Y = (gcnew System::Windows::Forms::DataGridViewTextBoxColumn());
this->label1 = (gcnew System::Windows::Forms::Label());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label4 = (gcnew System::Windows::Forms::Label());
this->menuStrip1->SuspendLayout();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->chart1))->BeginInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->dataGridView1))->BeginInit();
this->SuspendLayout();
//
// openFileDialog1
//
this->openFileDialog1->FileName = L"openFileDialog1";
//
// button1
//
this->button1->Location = System::Drawing::Point(22, 207);
this->button1->Margin = System::Windows::Forms::Padding(2);
this->button1->Name = L"button1";
this->button1->Size = System::Drawing::Size(208, 27);
this->button1->TabIndex = 0;
this->button1->Text = L"Рассчитать";
this->button1->UseVisualStyleBackColor = true;
this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click);
//
// menuStrip1
//
this->menuStrip1->ImageScalingSize = System::Drawing::Size(20, 20);
this->menuStrip1->Items->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {
this->файлToolStripMenuItem,
this->оПрограммеToolStripMenuItem
});
this->menuStrip1->Location = System::Drawing::Point(0, 0);
this->menuStrip1->Name = L"menuStrip1";
this->menuStrip1->Padding = System::Windows::Forms::Padding(4, 2, 0, 2);
this->menuStrip1->Size = System::Drawing::Size(792, 24);
Продолжение приложения А
this->menuStrip1->TabIndex = 1;
this->menuStrip1->Text = L"menuStrip1";
//
// файлToolStripMenuItem
//
this->файлToolStripMenuItem->DropDownItems->AddRange(gcnew cli::array< System::Windows::Forms::ToolStripItem^ >(2) {
this->сохранитьToolStripMenuItem,
this->загрузитьToolStripMenuItem
});
this->файлToolStripMenuItem->Name = L"файлToolStripMenuItem";
this->файлToolStripMenuItem->Size = System::Drawing::Size(48, 20);
this->файлToolStripMenuItem->Text = L"Файл";
//
// сохранитьToolStripMenuItem
//
this->сохранитьToolStripMenuItem->Name = L"сохранитьToolStripMenuItem";
this->сохранитьToolStripMenuItem->Size = System::Drawing::Size(132, 22);
this->сохранитьToolStripMenuItem->Text = L"Сохранить";
this->сохранитьToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::сохранитьToolStripMenuItem_Click);
//
// загрузитьToolStripMenuItem
//
this->загрузитьToolStripMenuItem->Name = L"загрузитьToolStripMenuItem";
this->загрузитьToolStripMenuItem->Size = System::Drawing::Size(132, 22);
this->загрузитьToolStripMenuItem->Text = L"Загрузить";
this->загрузитьToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::загрузитьToolStripMenuItem_Click);
//
// оПрограммеToolStripMenuItem
//
this->оПрограммеToolStripMenuItem->Name = L"оПрограммеToolStripMenuItem";
this->оПрограммеToolStripMenuItem->Size = System::Drawing::Size(94, 20);
this->оПрограммеToolStripMenuItem->Text = L"О программе";
this->оПрограммеToolStripMenuItem->Click += gcnew System::EventHandler(this, &MyForm::оПрограммеToolStripMenuItem_Click);
//
// chart1
//
chartArea1->Name = L"ChartArea1";
this->chart1->ChartAreas->Add(chartArea1);
legend1->Name = L"Legend1";
this->chart1->Legends->Add(legend1);
this->chart1->Location = System::Drawing::Point(0, 252);
this->chart1->Margin = System::Windows::Forms::Padding(2);
this->chart1->Name = L"chart1";
series1->ChartArea = L"ChartArea1";
series1->ChartType = System::Windows::Forms::DataVisualization::Charting::SeriesChartType::Line;
series1->Legend = L"Legend1";
series1->Name = L"Табличная ф.";
series2->ChartArea = L"ChartArea1";
series2->ChartType = System::Windows::Forms::DataVisualization::Charting::SeriesChartType::Line;
series2->Legend = L"Legend1";
series2->Name = L"Дифференцированная ф.";
this->chart1->Series->Add(series1);
this->chart1->Series->Add(series2);
this->chart1->Size = System::Drawing::Size(792, 406);
this->chart1->TabIndex = 2;
this->chart1->Text = L"chart1";
//
// textBox1
//
this->textBox1->Location = System::Drawing::Point(49, 46);
this->textBox1->Margin = System::Windows::Forms::Padding(2);
this->textBox1->Name = L"textBox1";
this->textBox1->Size = System::Drawing::Size(76, 20);
this->textBox1->TabIndex = 3;
this->textBox1->Text = L"0";
//
// textBox2
//
this->textBox2->Location = System::Drawing::Point(49, 69);
Продолжение приложения А
this->textBox2->Margin = System::Windows::Forms::Padding(2);
this->textBox2->Name = L"textBox2";
this->textBox2->Size = System::Drawing::Size(76, 20);
this->textBox2->TabIndex = 4;
this->textBox2->Text = L"4";
//
// textBox3
//
this->textBox3->Location = System::Drawing::Point(49, 94);
this->textBox3->Margin = System::Windows::Forms::Padding(2);
this->textBox3->Name = L"textBox3";
this->textBox3->Size = System::Drawing::Size(76, 20);
this->textBox3->TabIndex = 5;
this->textBox3->Text = L"0,1";
//
// dataGridView1
//
this->dataGridView1->ColumnHeadersHeightSizeMode = System::Windows::Forms::DataGridViewColumnHeadersHeightSizeMode::AutoSize;
this->dataGridView1->Columns->AddRange(gcnew cli::array< System::Windows::Forms::DataGridViewColumn^ >(2) { this->X, this->Y });
this->dataGridView1->Location = System::Drawing::Point(340, 25);
this->dataGridView1->Margin = System::Windows::Forms::Padding(2);
this->dataGridView1->Name = L"dataGridView1";
this->dataGridView1->RowTemplate->Height = 24;
this->dataGridView1->Size = System::Drawing::Size(443, 222);
this->dataGridView1->TabIndex = 9;
//
// X
//
this->X->HeaderText = L"X";
this->X->Name = L"X";
this->X->ReadOnly = true;
this->X->Width = 200;
//
// Y
//
this->Y->HeaderText = L"Y";
this->Y->Name = L"Y";
this->Y->ReadOnly = true;
this->Y->Width = 200;
//
// label1
//
this->label1->AutoSize = true;
this->label1->Location = System::Drawing::Point(10, 49);
this->label1->Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
this->label1->Name = L"label1";
this->label1->Size = System::Drawing::Size(20, 13);
this->label1->TabIndex = 10;
this->label1->Text = L"Xn";
//
// label2
//
this->label2->AutoSize = true;
this->label2->Location = System::Drawing::Point(10, 72);
this->label2->Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
this->label2->Name = L"label2";
this->label2->Size = System::Drawing::Size(20, 13);
this->label2->TabIndex = 11;
this->label2->Text = L"Xk";
this->label2->Click += gcnew System::EventHandler(this, &MyForm::label2_Click);
//
// label4
//
this->label4->AutoSize = true;
this->label4->Location = System::Drawing::Point(10, 93);
this->label4->Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
this->label4->Name = L"label4";
this->label4->Size = System::Drawing::Size(13, 13);
this->label4->TabIndex = 11;
this->label4->Text = L"h";
this->label4->Click += gcnew System::EventHandler(this, &MyForm::label2_Click);
//
// MyForm
Продолжение приложения А
//
this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
this->ClientSize = System::Drawing::Size(792, 661);
this->Controls->Add(this->label4);
this->Controls->Add(this->label2);
this->Controls->Add(this->label1);
this->Controls->Add(this->dataGridView1);
this->Controls->Add(this->textBox3);
this->Controls->Add(this->textBox2);
this->Controls->Add(this->textBox1);
this->Controls->Add(this->chart1);
this->Controls->Add(this->button1);
this->Controls->Add(this->menuStrip1);
this->MainMenuStrip = this->menuStrip1;
this->Margin = System::Windows::Forms::Padding(2);
this->Name = L"MyForm";
this->ShowIcon = false;
this->Text = L"Дифференцирование табличной функции";
this->Load += gcnew System::EventHandler(this, &MyForm::MyForm_Load);
this->menuStrip1->ResumeLayout(false);
this->menuStrip1->PerformLayout();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->chart1))->EndInit();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->dataGridView1))->EndInit();
this->ResumeLayout(false);
this->PerformLayout();
}
#pragma endregion
private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void label2_Click(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void label5_Click(System::Object^ sender, System::EventArgs^ e) {
}
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
chart1->Series["Табличная ф."]->Points->Clear();
chart1->Series["Дифференцированная ф."]->Points->Clear();
dataGridView1->Rows->Clear();
try {
a = Convert::ToDouble(textBox1->Text);
b = Convert::ToDouble(textBox2->Text);
h = Convert::ToDouble(textBox3->Text);
}
catch (...) {
MessageBox::Show("Данные введены не верно");
return;
}
n = (b - a) / h;
_X = new double[n+1];
_Y = new double[n+1];
yy = new double[n+1];
for (int i = 0; i <= n; i++) {
_X[i] = a + h*i;
_Y[i] = f(_X[i]);
}
yy[0] = (-3 * _Y[0] + 4 * _Y[1] - _Y[2]) / h;
for (int i = 1; i < n; i++) {
yy[i] = (_Y[i + 1] - _Y[i - 1]) / 2 / h;
}
yy[n] = (3 * _Y[n] - 4 * _Y[n - 1] + _Y[n - 2]) / 2 / h;
for (int i = 0; i <= n;i++) {
dataGridView1->Rows->Add(_X[i], yy[i]);
chart1->Series["Табличная ф."]->Points->AddXY( _X[i], _Y[i]);
chart1->Series["Дифференцированная ф."]->Points->AddXY(_X[i], yy[i]);
}
}
Продолжение приложения А
private: System::Void сохранитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
saveFileDialog1->ShowDialog();
System::String^ S_path = saveFileDialog1->FileName;
std::string myString = "";
for (int i = 0; i < S_path->Length; i++)
myString += (char)S_path[i];
auto stt = myString.c_str();
std::ofstream file(stt);
file << " X\t" << "Y\t" << std::endl;
for (int i = 0; i < n + 1;i++) {
file << " " << _X[i] << "\t" << yy[i] << "\t" << std::endl;
}
file.close();
}
private: System::Void label4_Click(System::Object^ sender, System::EventArgs^ e) {}
private: System::Void textBox4_TextChanged(System::Object^ sender, System::EventArgs^ e) {}
private: System::Void загрузитьToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
openFileDialog1->ShowDialog();
System::String^ S_path = openFileDialog1->FileName;
std::string myString = "";
for (int i = 0; i < S_path->Length; i++)
myString += (char)S_path[i];
auto stt = myString.c_str();
std::ifstream file(stt);
char buff[50];
// x0
file.getline(buff, 50);
textBox1->Text = Convert::ToString(atoi(buff));
// Xk
file.getline(buff, 50);
textBox2->Text = Convert::ToString(atof(buff));
// h
file.getline(buff, 50);
textBox3->Text = Convert::ToString(atof(buff));
file.close();
}
private: System::Void оПрограммеToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
MessageBox::Show("Выполнил студент группы АЭП-201 Масюра В.И.");
}
};
}
Приложение Б
(Обязательное)
Результаты тестирования программы
Приложение В
(Обязательное)
Решение в математической системе Mathcad
Приложение Г
(Обязательное)
Решение в математической системе MATLAB
Содержимое файла test.m
Приложение Д
(Обязательное)
Гипертекстовая справка по программе
<!DOCTYPE html>
<html>
<head>
<title>Дифференцирование на основании полинома Ньютона</title>
<link href="style.css" rel="stylesheet" >
<meta charset="utf-8">
<meta name="наименование_типа_данных" content="значение_данных" charset="utf-8">
<meta name="content-type" content="text/html" charset="windows-1251">
</head>
<body>
<h1><a name="part_0">Содержание</a></h1>
<li><a href="#part_1"> Описание численного метода</a></li>
<li><a href="#part_2"> Проектирование схемы алгоритма</a></li>
<li><a href="#part_3"> Кодирование программы</a></li>
<li><a href="#part_4"> Тестирование программы</a></li>
<li><a href="#part_5">Список использованных источников</a></li>
</ol>
<h1><a name="#part_1">1 Описание численного метода</a></h1>
<div class="text">
<p>Ньютона степени n используется выражение:</p>
<img src="1.png" width="700">
<p>изводная от полинома:</p>
<img src="2.png" width="700">
<p>Коэффициенты в (1) и (2) для степени полинома n=2 определяются согласно выражениям:</p>
<img src="3.png" width="700">
</div>
<h1><a name="part_2">2 Проектирование схемы алгоритма</a></h1>
<div>
<p>Схема алгоритма головной программы описывает общий сценарий работы разрабатываемого приложения. В составе головной программы предусматривается следующие этапы:</p>
<ol>
<li>Ввод исходных данных;</li>
<li>Решение;</li>
<li>Построение графика;</li>
<li>Отображение таблицы результатов расчета;</li>
<li>Сохранение результатов расчета в файл;</li>
</ol>
<p>В схеме алгоритма предусматривается контроль и блокирование следующих неверных действий пользователя:</p>
<ol>
<li>запуск численного решения при отсутствии ввода исходных данных;</li>
<li>просмотр результатов расчета (таблицы и графика решения) без успешного завершения этапа численного решения.</li>
</ol>
<p>Схема алгоритма головной программы изображается согласно требованиям ГОСТ 19.701-90 на рисунке 2.1 и на листе графической части .</p>
</div>
<h1><a name="part_3">3 Кодирование программы в среде программирования</a></h1>
<div>
<p>Программа разрабатывалась в среде программирования Microsoft Visual Studio 2015 на основе схем алгоритмов, описанных в предыдущем разделе.</p>
<p>В состав программы входят следующие функции:</p>
<ol>
<li>Элементов управления формы;</li>
<li>Ввод результатов расчёта на график и в таблицу;</li>
<li>Сохранение результатов в файл;</li>
<li>Функции для расчёта исходных данных;</li>
</ol>
Продолжение приложения Д
<p>Проект приложения включает в себя MyForm.cpp, MyForm.h – главные файлы проекта, описывающие форму и работу программы.</p>
</div>
<h1><a name="part_4">4 Тестирование программы</a></h1>
<div>
<p>Для тестирования программы используется функция вида:</p>
<ol>
<li>x0, y0 – начальное условие;</li>
<li>Xn – начальное значение;</li>
<li>Xk – конечное значение;</li>
<li>h – шаг интегрирования.</li>
</ol>
<img src="f4.png">
<p>Согласно принятой форме записи в программе описывается следующими исходными данными:</p>
<ol>
<li>начало интервала интегрирования Xn=0;</li>
<li>конец интервала интегрирования Xk=4;</li>
<li>величина шага h = 0,01;</li>
<li>степень полиинома Чебышева.</li>
</ol>
<img src="f4.png" width="700">
<p>Рисунок 4.5 – Результат расчета разработанной программой</p>
<p>Время расчета составило менее 1 с.</p>
<p>Результаты расчета в виде текстового файла приводятся в Приложении Б.</p>
</div>
<h1><a name="part_5">Список использованных источников</a></h1>
<ol>
<li>1 Метод дифференцирование полиномами — Википедия — Википедия см. ссылку стайта: https://ru.wikipedia.org/wiki/Методы_Дифференцирования</li>
<li> Гладышев Н.С.- Решение научных и инженерных задач средствами Excel, VBA и C++ -2004</li>
<li> Абабурко В.Н. – Численные методы интерполяции и аппроксимации</li>
</ol>
<hr>
<br>
<table border="1" align="center">
<caption>Характеристики разработанной программы</caption>
<tr><td>Наименование характеристик</td><td>Значение</td></tr>
<tr><td>Тип операционной системы</td><td>Windows 10</td></tr>
<tr><td>Тип файла результатов</td><td>txt</td></tr>
<tr><td>Размер exe-файла программы</td><td>7563 кБайт</td></tr>
<tr><td>Относительная точность</td><td>1.67%</td></tr>
</table><br>
<hr>
<br>
<a href="#part_0">К содержанию</a><br><br>
<a href="c:\">Запуск программы</a><br><br>
</body>
</html>
Приложение Е
(Обязательное)
Акт приемки программы
Разработанная программа по теме «Разработка программы численного дифференцирования табличной функции на основании полинома Ньютона» курсовой работы удовлетворяет всем требованиям задания и прошла успешно тестирование.
Разработчик: группы АЭП-211
Басов Н.А.
Руководитель работы: преподаватель
Абабурко В.Н.