Создание программы табуляции функций
Содержание
Введение
1 Теоретическая часть
2 Программная реализация решения задачи
3 Пример выполнения программы
Заключение
Список использованных источников и литературы
Введение
В XXI веке в развитии
человеческой цивилизации происходят глобальные изменения, ведущие к её новому
этапу - постиндустриальному обществу, все шире использующему
компьютеризированные орудия труда и информационные технологии.
Стремительное развитие
индустрии, влечет за собой все больший и больший интерес начинающих
программистов создавать то, что актуально в наше время. Мы в своей курсовой
работе предлагаем упрощенный и автоматизированный вариант табуляции функций.
Данная программа,
написанная на языке высокого уровня C++ в среде визуального программирования CodeGear RadStudio 2009.
Цель
написания данной курсовой работы – табуляция функций.
Курсовая
работа проста, удобна и практична в использовании.
Курсовая
работа содержит: введение, теоретическую часть, практическую реализацию,
заключение, литературу, которая использовалась при написании курсовой работы.
1. Теоретическая
часть
Понятие функции.
Пусть Х и Y - некоторые множества.
Если каждому элементу xХ ставится в соответствие по некоторому правилу единственный
элемент y Y , то говорят, что на множестве Х задана функция
(отображение) со значениями в множестве Y :
f : XY, y=f(x).
Множество Х называется
областью определения функции и обозначается Dom(f) или
D(f), множество Y
называется множеством значений функции и обозначается Im(f) или I(f).
Если функция f переводит элемент xХ в элемент y Y, т.е. y=f(x), то у
называют образом элемента х, а х называют прообразом элемента у. Образ всегда
единственен.
Если обратное
соответствие, переводящее У в Х является функцией, т.е. у каждого элемента yУ имеется единственный прообраз xХ, то это соответствие называют обратным отображением, или
обратной функцией.
f -1 : YХ, х=f -1 (у).
Обратная функция
обратима, и обратная функция к обратной функции совпадает с исходной функцией (f -1) -1= f .
Графиком числовой функции
y=f(x) называется совокупность точек
плоскости вида (x , f(x)),
где хD(f).
Табуляция
функции
означает создать таблицу, в которой для каждого значения аргумента вычислено
соответствующее значение функции.
2. Программная
реализация решения задачи
Файл UTabulation.h
//---------------------------------------------------------------------------
#ifndef UTabulationH
#define UTabulationH
//---------------------------------------------------------------------------
#include
<Classes.hpp>
#include
<Controls.hpp>
#include
<StdCtrls.hpp>
#include
<Forms.hpp>
#include
"HandTuning.h"
#include
"Chart.hpp"
#include
"Series.hpp"
#include
"TeEngine.hpp"
#include
"TeeProcs.hpp"
#include
<ExtCtrls.hpp>
#include
"HandTuning.h"
#include
<Grids.hpp>
//---------------------------------------------------------------------------
class
TfrmTabulation : public TForm
{__published: //
IDE-managed Components
THandTuning
*htMin;
THandTuning
*htMax;
THandTuning
*htStep;
TLabel
*Label1;
TLabel
*Label2;
TLabel *Label3;
TChart
*chGraph;
TFastLineSeries
*Series1;
TButton
*btnCalc;
TButton
*btnExit;
TButton
*btnClear;
TStringGrid
*sgrXY;
TRadioGroup
*rgrFunction;
void
__fastcall btnExitClick(TObject *Sender);
void
__fastcall btnCalcClick(TObject *Sender);
void __fastcall
btnClearClick(TObject *Sender);
private: //
User declarations
double
__fastcall function1(double x);
double
__fastcall function2(double x);
double
__fastcall function3(double x);
double
__fastcall function4(double x);
double
__fastcall function5(double x);
double
__fastcall function6(double x);
__fastcall
TfrmTabulation(TComponent* Owner);};
//---------------------------------------------------------------------------
extern PACKAGE
TfrmTabulation *frmTabulation;
//---------------------------------------------------------------------------
#endif
Файл UTabulation.cpp
//---------------------------------------------------------------------------
#include
<vcl.h>
#pragma
hdrstop
#include
"UTabulation.h"
//---------------------------------------------------------------------------
#pragma
package(smart_init)
#pragma link
"Chart"
#pragma link
"HandTuning"
#pragma link
"Series"
#pragma link
"TeEngine"
#pragma link
"TeeProcs"
#pragma link
"HandTuning"
#pragma
resource "*.dfm"
TfrmTabulation
*frmTabulation;
double
__fastcall TfrmTabulation::function1(double x)
{return
sin(x);}
//---------------------------------------------------------------------------
double
__fastcall TfrmTabulation::function2(double x)
{return tan(3
* x);}
//---------------------------------------------------------------------------
double
__fastcall TfrmTabulation::function3(double x)
{return cos(2
* x);}
//---------------------------------------------------------------------------
double
__fastcall TfrmTabulation::function4(double x)
{return (4 -
x) / 2;}
//----------------------------------------------------------
double
__fastcall TfrmTabulation::function5(double x)
{return (1 -
tan(x)) / (1 + tan(x));}
//----------------------------------------------------------
double
__fastcall TfrmTabulation::function6(double x)
{return cos(x)
+ sin(x);}
//----------------------------------------------------------__fastcall
TfrmTabulation::TfrmTabulation(TComponent* Owner)
: TForm(Owner)
{sgrXY->Rows[0]->Strings[0]
= "y";
sgrXY->Rows[0]->Strings[1]
= "x";}
//----------------------------------------------------------
void
__fastcall TfrmTabulation::btnExitClick(TObject *Sender)
{this->Close();}
//----------------------------------------------------------
void
__fastcall TfrmTabulation::btnCalcClick(TObject *Sender)
{Series1->Clear();
sgrXY->Cells[0][1]
= "";
sgrXY->Cells[1][1]
= "";
sgrXY->RowCount
= 2;
for(double i =
htMin->Value, j=0; i < htMax->Value; i = i + htStep->Value, j++)
{sgrXY->RowCount++;
sgrXY->Rows[j+1]->Strings[0]
= FormatFloat("0.00", i);
switch(rgrFunction->ItemIndex)
{case 0:
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function1(i));
Series1->AddXY(i,
function1(i), "",clRed) ;
break;
case 1:
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function2(i));
Series1->AddXY(i,
function2(i), "",clRed) ;
break;
case 2:
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function3(i));
Series1->AddXY(i,
function3(i), "",clRed) ;
break;
case 3:
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function4(i));
Series1->AddXY(i,
function4(i), "",clRed) ;
break;
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function5(i));
Series1->AddXY(i,
function5(i), "",clRed) ;
break;
case 5:
sgrXY->Rows[j+1]->Strings[1]
= FormatFloat("0.00", function6(i));
Series1->AddXY(i,
function6(i), "",clRed) ;
break;}}
sgrXY->RowCount
= sgrXY->RowCount >= 2 ? sgrXY->RowCount : sgrXY->RowCount--;}
//----------------------------------------------------------
void
__fastcall TfrmTabulation::btnClearClick(TObject *Sender)
{Series1->Clear();
sgrXY->Cells[0][1]
= "";
sgrXY->Cells[1][1]
= "";
sgrXY->RowCount
= 2;
htMin->Value
= 0;
htMax->Value
= 0;
htStep->Value = 0.1;}
//---------------------------------------------------------------------------
3. Пример
выполнения программы
Пример 1.
Рисунок 1 – Табуляция
функции
Пример 2.
Рисунок 2 – Табуляция
функции
Пример 3.
Рисунок 3 – Табуляция
функции
Пример 4.
Рисунок 4 – Табуляция
функции
Пример 5.
Рисунок 5 – Табуляция
функции
Пример 6.
Рисунок 6 – Табуляция
функции
Пример 7.
Рисунок 7 – Очистка
Заключение
Проблема
повышения качества вычислений, как несоответствие между желаемым и
действительным, существует и будет существовать в дальнейшем. Ее решению будет
содействовать развитие информационных технологий, которое заключается как в
совершенствовании методов организации информационных процессов, так и их
реализации с помощью конкретных инструментов – сред и языков программирования.
Итогом
работы можно считать созданную программу табуляции функций.
Созданная программная реализация может служить органической частью решения
более сложных задач.
Список
использованных источников и литературы
1.
Архангельский,
А.Я. Программирование в С++ Builder
6. [Текст] / А.Я.Архангельский. – М.: Бином, 2003. С. 1154.
2.
Ахо, А..
Построение и анализ вычислительных алгоритмов [Электронный ресурс] / А. Ахо,
Дж. Хопкрофт, Дж.. Ульман. – М.: Мир. 1999. С. 143.
3.
Бронштейн, И.Н. Справочник по математике для инженеров и учащихся втузов
[Текст] / И.Н. Бронштейн, К.А. Семендяев. – М.: Наука, 2007. – 708 с.
4.
Кремер, Н.Ш.
Высшая математика для экономистов: учебник для студентов вузов. [Текст] /
Н.Ш.Кремер, 3-е издание – М.:ЮНИТИ-ДАНА, 2006. C. 412.
5.
Калиткин, Н.Н.
Численные методы. [Электронный ресурс] / Н.Н. Калиткин. – М.: Питер, 2001. С.
504.
6.
Павловская, Т.А.
Программирование на языке высокого уровня. [Текст] / Т.А. Павловская. – М.:
Питер, 2003. С. 461.
7. Семакин, И.Г. Основы
программирования. [Текст] / И.Г.Семакин, А.П.Шестаков. – М.: Мир, 2006. C. 346.
8.
Табуляция функций
[Электронный ресурс] – Режим доступа: http://programmer.zp.ua/index.php