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

Басов Н.А.

 

 

Руководитель работы: преподаватель

Абабурко В.Н.