Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364139
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62791)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21319)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21692)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8692)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3462)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20644)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Курсовая работа: Построение графиков функций

Название: Построение графиков функций
Раздел: Рефераты по информатике
Тип: курсовая работа Добавлен 16:29:23 14 декабря 2010 Похожие работы
Просмотров: 392 Комментариев: 21 Оценило: 2 человек Средний балл: 5 Оценка: неизвестно     Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

КУРГАНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

Кафедра автоматизации производственных процессов

Тема курсовой работы:

«Построение графиков функций»

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

Расчетно-пояснительная записка.

Дисциплина: Программирование и основы алгоритмизации

Студент: Яковлев П. С.

Группа: Т-2144

Руководитель: Скобелев И. В.

Комиссия__________________

Оценка____________________

Дата защиты_______________

Курган, 2006г.
Оглавление

1. Техническое задание

2. Общая блок-схема алгоритма

3. Описание работы программного продукта

4. Инструкция по инсталляции программного продукта

5. Инструкция оператору

6. Ограничения данной версии программы

7. Вывод

Список используемой литературы


1. Техническое задание

Программный продукт GRAPHIC позволяет строить и сохранять графики любых функций одной переменной. Продукт разработан на языке программирования Мicrosoft Visual C++ 6.0 с использованием объектно-ориентированной методологии. Диалог пользователя с программой, а именно введение параметров, осуществляется посредством диалоговых окон программы. Диапазон вводимых значений программно ограничен, с целью недопущения некорректной работы или возникновения ошибки.

2. Общая блок-схема алгоритма

Общая блок схема алгоритма программы GRAPHIC:



3. Описание работы программного продукта

Программа “GRAPHIC” позволяет строить и сохранять графики функций одной переменной. При открытии программы появляется окно, в котором уже по умолчанию построен график функции f(x)=sin(x)+0.05*x на отрезке [-5,10]. Выбрав на панели меню пункт Функция, и, изменяя поле ввода в появившемся диалоговом окне, можно построить необходимый график функции или изменить отрезок, на котором построен график.

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

class CGRAPHICView : public CView //Класс Single Document

{

public:

CString sFunc;

double XX;

double X1;

double X2;

int SdvX;

int SdvY;

int DlX;

int DlY;

CDC* pDCbuf;

bool GbNeedRepaint;

CMFunc vFunc;

CFuncEval FuncEval;

void Vichislenie();

void VFillBuffer (CDC* pSrcDC);

//Остальные свойства и методы класса SingleDocument

};

classCMFunc //Класс расчета функции

{

public:

double FXX[400];

double FYY[400];

bool FYYER[400];

int KolT;

double MinY;

double MaxY;

void FuncMaxMinY();

CMFunc();

};

void CGRAPHICView::OnDraw(CDC* pDC) //Функцияпрорисовкидокумента

{

CGRAPHICDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

// TODO: add draw code for native data here

try

{

VFillBuffer(pDC);

}

catch (...)

{

MessageBox(_T("Ошибкапостроенияграфика!"),_T("Ошибка"));

}

}

voidCGRAPHICView::Vichislenie() //Функция вычисления параметров функции

{

int a; double shag;

extern BOOL bMathError;

FuncEval.SetString(sFunc);

//Вычисляемшаг shag

shag=((X2-X1)/(vFunc.KolT-1));

//Вычисляемузлыфункции vFunc.FXX[a]

for(a=0;a<(vFunc.KolT-1);a++)

vFunc.FXX[a]=X1+a*shag;

vFunc.FXX[vFunc.KolT-1]=X2;

//Вычисляем значения функции в узлах vFunc.FYY[a] и ошибку вычисления vFunc.FYYER[a]

for(a=0;a<vFunc.KolT;a++) {

bMathError = FALSE;

XX=vFunc.FXX[a];

vFunc.FYY[a] = FuncEval.Compute ();

vFunc.FYYER[a] = bMathError;

}

//Вычисляем max и min значенияфункции vFunc.MaxY и vFunc.MinY

vFunc.FuncMaxMinY();

}

void CGRAPHICView::VFillBuffer (CDC* pSrcDC) //Функциярисованияграфика

{

int OtstX;

int OtstY;

int DlOX;

int DlOY;

int KolLX;

int KolLY;

SdvX=30;

SdvY=30;

DlX=700;

DlY=370;

OtstX=80;

OtstY=30;

DlOX=DlX-OtstX-50;

DlOY=DlY-2*OtstY;

KolLX=10;

KolLY=10;

double KoefX;

double KoefY;

int a; double d,dd; CString sss;

if(GbNeedRepaint==TRUE) {

//Вычисление параметров функции (объект vFunc класса CMFunc)

Vichislenie();

//???????????????????????????????????????????????

pDCbuf->DeleteDC ();

pDCbuf->CreateCompatibleDC (pSrcDC);

CBitmap bitmap;

bitmap.CreateCompatibleBitmap(pSrcDC,DlX,DlY);

CBitmap* pbmp=pDCbuf->SelectObject(&bitmap);

//Рисование графика-------------------------------------------------

//Цвета (разметки (линий) - cvet1, осей - cvet2, графика - cvet3)

CPen cvet1(PS_SOLID,1,RGB(100,100,50));

CPen cvet2(PS_SOLID,1,RGB(200,0,200));

CPen cvet3(PS_SOLID,1,RGB(255,0,0));

//Отключаем фон текста и устанавливаем цвет текста

pDCbuf->SetBkMode(TRANSPARENT);

pDCbuf->SetTextColor(RGB(0,0,210));

//Закрашиваем область графика

pDCbuf->FillSolidRect(0,0,DlX,DlY,RGB(235,235,235));

//Рисование разметки X

pDCbuf->SelectObject(cvet1);

d=((double)DlOX/(KolLX-1));

for(a=0;a<KolLX;a++) {

pDCbuf->MoveTo(OtstX+(int)(a*d),OtstY);

pDCbuf->LineTo(OtstX+(int)(a*d),OtstY+DlOY);

}

//Рисование разметки Y

d=((double)DlOY/(KolLY-1));

for(a=0;a<KolLY;a++) {

pDCbuf->MoveTo(OtstX,OtstY+(int)(a*d));

pDCbuf->LineTo(OtstX+DlOX,OtstY+(int)(a*d));

}

//Подписи X

d=(X2-X1)/(KolLX-1);

dd=((double)DlOX/(KolLX-1));

for(a=0;a<(KolLX-1);a++) {

sss.Format(_T("%.3f"),X1+a*d);

pDCbuf->TextOut(OtstX+(int)(a*dd)-4*sss.GetLength(),OtstY+DlOY+3,sss);

}

sss.Format(_T("%.3f"),X2); a=KolLX-1;

pDCbuf->TextOut(OtstX+(int)(a*dd)-4*sss.GetLength(),OtstY+DlOY+3,sss);

//Подписи Y

d=(vFunc.MaxY-vFunc.MinY)/(KolLY-1);

dd=((double)DlOY/(KolLY-1));

for(a=1;a<(KolLY-1);a++) {

sss.Format(_T("%.3f"),vFunc.MinY+a*d);

pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-(int)(a*dd)-7,sss);

}

sss.Format(_T("%.3f"),vFunc.MinY);

pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-12,sss);

sss.Format(_T("%.3f"),vFunc.MaxY); a=KolLY-1;

pDCbuf->TextOut(OtstX-3-7*sss.GetLength(),OtstY+DlOY-(int)(a*dd)-7,sss);

//Подпись "График функции..."

sss.Format(_T(" на отрезке [%.2f,%.2f]"),X1,X2);

pDCbuf->TextOut(OtstX+80-2*sFunc.GetLength(),OtstY-25,(_T("График функции f(x)=")+sFunc+sss));

//Вычисления коэффициентов сжатия на экране KoefX и KoefY

KoefX=((double)DlOX)/(X2-X1);

KoefY=((double)DlOY)/(vFunc.MaxY-vFunc.MinY);

//Рисование осей X и Y

pDCbuf->SelectObject(cvet2);

if(X1<=0&&X2>=0) {

pDCbuf->MoveTo(OtstX-(int)(X1*KoefX),OtstY);

pDCbuf->LineTo(OtstX-(int)(X1*KoefX),OtstY+DlOY);

}

if(vFunc.MinY<=0&&vFunc.MaxY>=0) {

pDCbuf->MoveTo(OtstX,OtstY+DlOY+(int)(KoefY*vFunc.MinY));

pDCbuf->LineTo(OtstX+DlOX,OtstY+DlOY+(int)(KoefY*vFunc.MinY));

}

//Рисование самого графика функции

pDCbuf->SelectObject(cvet3);

for(a=1;a<vFunc.KolT;a++) {

if(vFunc.FYYER[a-1]==FALSE&&vFunc.FYYER[a]==FALSE) {

pDCbuf->MoveTo(OtstX+(int)(KoefX*(vFunc.FXX[a-1]-X1)),OtstY+DlOY-(int)(KoefY*(vFunc.FYY[a-1]-vFunc.MinY)));

pDCbuf->LineTo(OtstX+(int)(KoefX*(vFunc.FXX[a]-X1)),OtstY+DlOY-(int)(KoefY*(vFunc.FYY[a]-vFunc.MinY)));

}

}

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

GbNeedRepaint=FALSE;

}

//Копирование буфера pDCbuf на экран

pSrcDC->BitBlt (SdvX, SdvY, DlX, DlY, pDCbuf, 0, 0, SRCCOPY);

}

voidCGRAPHICView::OnFileSave() //Функция сохранения графика

{

HRESULT hResult;

CString strFilter;

strFilter = "PNG image (*.png)|*.png||";

CFileDialog dlg(FALSE,_T("png"),NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_EXPLORER,strFilter);

hResult = (int)dlg.DoModal();

if (hResult != IDOK) {MessageBox("Отменено пользователем","Предупреждение"); return;}

CString strFileName;

strFileName = dlg.m_ofn.lpstrFile;

CImage imgOriginal;

imgOriginal.Create (DlX, DlY, 24);

//Это позволяет нарисовать все что должно быть сохранено

(pDCbuf->FromHandle (imgOriginal.GetDC ()))->BitBlt (0, 0, DlX, DlY, pDCbuf, 0, 0, SRCCOPY);

hResult = imgOriginal.Save(strFileName);

try

{

imgOriginal.ReleaseDC ();

imgOriginal.Detach ();

imgOriginal.Destroy ();

}

catch (...)

{

}

if (FAILED(hResult)) {

MessageBox("Ошибка сохранения!","Ошибка!");

}

}

4. Инструкция по инсталляции программного продукта

Для установки программы запустите файл GRAPHICv1.0\setup.exe и следуйте инструкциям мастера. Для удаления программы можно воспользоваться этим же файлом.

Гарантируется работа данной программы в операционной системе Windows не ниже 98. В предыдущих версиях работа программы не проверялась.

Установка программы требует около 1 Мб свободной памяти на жестком диске.

Внимание!

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

Если вы не согласны с этим, то не используйте данную программу!

5. Инструкция оператору

При открытии программы появляется окно, в котором уже по умолчанию построен график функции f(x)=sin(x)+0.05*x на отрезке [-5,10], как показано на рисунке:

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

В этом окне вы можете изменять параметры функции. Начало и конец отрезка могут быть введены любые из отрезка [-1.7976931348623158e+308, 1.7976931348623158e+308], но при этом начало должно быть меньше конца отрезка, иначе появится сообщение об ошибке.

С функцией дело немного сложнее. Чтобы интерпретатор правильно понял функцию, при её вводе нужно пользоваться правилами.

Унарные операции:

cos(x) - косинус

sin(x) - синус

tg(x) = tan(x) - тангенс

ctg(x) - котангенс

arccos(x) = acos(x) - арккосинус

arcsin(x) = asin(x) - арксинус

arctg(x) = atan(x) - арктангенс

arcctg(x) - арккотангенс

round(x) - обычное округление до целого

sqr(x) - квадрат

sqrt(x) - арифметический корень

abs(x) = fabs(x) - модуль

neg(x) - отрицание

fact(x) - факториал

exp(x) - экспонента

ln(x) - натуральный логарифм

log10(x) = lg(x) - десятичный логарифм

cosh(x) - гиперболический косинус

sinh(x) - гиперболический синус

tanh(x) - гиперболический тангенс

floor(x) - округление с недостатком

ceil(x) - округление с избытком

sign(x) - знак числа

inv(x) - логическая инверсия

- - отрицание

Бинарные операции:

(по приоритету с наименьшего)

x+y = add (x, y) - сложение x с y

x-y = sub (x, y) - вычитание из x y

x*y = mul (x, y) - умножение x на y

x/y = div (x, y) - деление x на y

x&y = log (x, y) - логарифм от x по основанию y

x^y = pow (x, y) - возведение x в степень y

x=y = x==y = equal (x, y) - если x = y, то 1 иначе 0

x<y = less (x, y) - если x < y, то 1 иначе 0

x>y = greater (x, y) - если x > y, то 1 иначе 0

and (x, y) - логическое И

or (x, y) - логическое ИЛИ

xor (x, y) - логическое сложение по модулю 2 (операция, исключающая ИЛИ) - сумма Жегалкина

pirs (x, y) - стрелка Пирса

shef (x, y) - штих Шеффера

impl (x, y) - логическая импликация

eq (x, y) - логическая эквиваленция

less (x, y) - x<y?

greater (x, y) - x>y?

less_or_equal (x, y) - x<=y?

greater_or_equal (x, y) - x>=y?

max (x, y) - большее из x и y

min (x, y) - меньшее из x и y

equal (x, y) - эквиваленция

percent (x, y) - процент y от x

rand (x, y) - случайное число от x до y

Для всех логических операций число отличное от 0 это 1 (ПРАВДА), иначе 0 (ЛОЖЬ).

Числа пишутся в диапазоне [-1.7976931348623158e+308, 1.7976931348623158e+308]. Числа всегда записываются в десятичной форме, например 1 1f 1.0 1,0 1.0f 1,0f - одно и то же число в шести разных формах. Нельзя записывать числа в экспонентной форме, например 2.3e-5, вместо этого 2.3*(10^-5). Можно использовать константы: pi – число π, e – число e. Переменной является буква x. Между функциями можно ставить разделитель – пробел(space).

Чтобы сохранить изображение выберите во вкладке Файл -> Сохранить или Сохранить как. При этом появится стандартное диалоговое окно сохранения, где выбирается путь для сохранения. Изображения сохраняются в формате png.

6. Ограничения данной версии программы

Гарантируется работа данной программы в операционной системе Windows не ниже 98. В предыдущих версиях работа программы не проверялась.

При работе с программой нужно пользоваться правилами, которые приведены в разделе Описание работы программного продукта. В этом случае гарантируется правильная работа программы. Причем нужно обязательно соблюдать правила ввода функции, интерпретатор в этом случае поймет функцию правильно. Если в поле ввода функции ввести что-то неоговоренное правилами, интерпретатор примет это значение в любом случае, и не будет выведено никакого сообщения. Интерпретатор поймет, то что сможет распознать, остальное он игнорирует. Например, если будет введено “zxczxc” или пустая строка, то функция воспримется, как f(x)=0. Если будет введено “dghld+sin(x)asdfasf+dfgdfg”, то функция воспримется, как f(x)=sin(x).

7. Вывод

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

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


Список используемой литературы

1. Язык программирования Си++. Курс лекций. Учебное пособие / Издание второе, исправленное / Фридман А. Л. / М.: «Интернет-университет Информационных Технологий», 2004.– 264 с.

2. Язык Си++. Учебное пособие / Издание пятое / Подбельский В. В. / М.: Финансы и статистика, 2001.– 560 с.: ил.

3. http: //www.holzner.ru.

4. http: //www.firstsleps.ru.

5. http: //www.intuit.ru.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Хватит париться. На сайте FAST-REFERAT.RU вам сделают любой реферат, курсовую или дипломную. Сам пользуюсь, и вам советую!
Никита09:36:01 04 ноября 2021
.
.09:35:59 04 ноября 2021
.
.09:35:57 04 ноября 2021
.
.09:35:55 04 ноября 2021
.
.09:35:51 04 ноября 2021

Смотреть все комментарии (21)
Работы, похожие на Курсовая работа: Построение графиков функций

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

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



Результаты(294402)
Комментарии (4230)
Copyright © 2005 - 2024 BestReferat.ru / реклама на сайте