Определение параметров регрессионной зависимости выполнения плана по затратам на 1 рубль выпущенной продукции от выполнения плана по хлебопечению
Графическая схема алгоритма решения. Расчет параметров регрессионных зависимостей с помощью надстройки анализа MS Excel. График с исходными данными и регрессионными зависимостями. Среда программирования Dev-C. Функциональность системы программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 19.11.2013 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования
«Гомельский государственный технический университет
имени П.О.Сухого»
Факультет автоматизированных и информационных систем
Кафедра «Информационные технологии»
направление специальности 1-40 01 02-01 «Информационные системы и
технологии в проектировании и производстве»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовой работе
по дисциплине «Основы алгоритмизации и программирования»
на тему: «Определение параметров регрессионной зависимости выполнения плана по затратам на 1 рубль выпущенной продукции от выполнения плана по хлебопечению»
Исполнитель: студент гр. ИТ-12
Бажкова А.С.
Руководитель: доцент
Кравченко О.А
Гомель 2013
СОДЕРЖАНИЕ
Введение
1. Постановка задач и исходные данные
2. Описание структуры программы
3. Графическая схема алгоритма решения задачи
3.1 Детализация блока А-B
3.2 Детализация блока B-C
3.3 Детализация блока C-D
3.4 Детализация блока E-F
3.5 Детализация блока G-H
3.6 Детализация блока H-I
4. Расчет параметров регрессионных зависимостей с помощью надстройки анализа MS Excel
4.1 Расчет параметров регрессионных зависимостей
4.2 График с исходными данными и регрессионными зависимостями
5. Описание функциональности системы программирования
6. Среда программирования Dev-C
Список используемой литературы
Приложение A
Приложение Б
ВВЕДЕНИЕ
Регрессионный анализ -- статистический метод исследования влияния одной или нескольких независимых переменных на зависимую переменную . Независимые переменные иначе называют регрессорами или предикторами, а зависимые переменные -- критериальными. Терминология зависимых и независимых переменных отражает лишь математическую зависимость переменных, а не причинно-следственные отношения.
Целью регрессионного анализа является :
· Определение степени детерминированности вариации зависимой переменной независимыми переменными.
· Нахождение значения зависимой переменной с помощью независимой(-ых).
· Определение вклада отдельных независимых переменных в вариацию зависимой.
Регрессионный анализ нельзя использовать для определения наличия связи между переменными, поскольку наличие такой связи и есть предпосылка для применения анализа.
Регрессионный анализ - один из наиболее разработанных методов математической статистики. Для реализации регрессионного анализа необходимо выполнение ряда специальных . В реальной жизни строгое соответствие требованиям регрессионного и корреляционного анализа встречается очень редко, однако оба эти метода весьма распространены в экономических исследованиях. Зависимости в экономике могут быть не только прямыми, но и обратными и нелинейными. [1]
В ходе регрессионного анализа решаются две основные задачи:
· Построение уравнения регрессии, т.е. нахождение вида зависимости между результатным показателем и независимыми факторами x1, x2, ..., xn.
· Оценка значимости полученного уравнения, т.е. определение того, насколько выбранные факторные признаки объясняют вариацию признака у.
Необходимо отметить, что в экономических исследованиях корреляционный и регрессионный анализы нередко объединяются в один - корреляционно-регрессионный анализ. Подразумевается, что в результате такого анализа будет построена регрессионная зависимость (т.е. проведен регрессионный анализ) и рассчитаны коэффициенты ее тесноты и значимости (т.е. проведен корреляционный анализ).
Пользуясь методами корреляционно-регрессионного анализа, аналитики измеряют тесноту связей показателей с помощью коэффициента корреляции. При этом обнаруживаются связи, различные по силе (сильные, слабые, умеренные и др.) и различные по направлению (прямые, обратные). Если связи окажутся существенными, то целесообразно будет найти их математическое выражение в виде регрессионной модели и оценить статистическую значимость модели.
Корреляционно-регрессионный анализ считается одним из главных методов в маркетинге, наряду с оптимизационными расчетами, а также математическим и графическим моделированием трендов (тенденций). Широко применяются как однофакторные, так и множественные регрессионные модели.
Корреляционный анализ - метод установления связи и измерения ее тесноты между наблюдениями, которые можно считать случайными и выбранными из совокупности, распределенной по многомерному нормальному закону.
Корреляционной связью называется такая статистическая связь, при которой различным значениям одной переменной соответствуют разные средние значения другой. Возникать корреляционная связь может несколькими путями. Важнейший из них - причинная зависимость вариации результативного признака от изменения факторного. Кроме того, такой вид связи может наблюдаться между двумя следствиями одной причины. Основной особенностью корреляционного анализа следует признать то, что он устанавливает лишь факт наличия связи и степень ее тесноты, не вскрывая ее причин.[2]
Коррелямция (от лат. correlatio -- соотношение, взаимосвязь) -- статистическая взаимосвязь двух или нескольких случайных величин (либо величин, которые можно с некоторой допустимой степенью точности считать таковыми). При этом изменения значений одной или нескольких из этих величин сопутствуют систематическому изменению значений другой или других величин. Математической мерой корреляции двух случайных величин служит корреляционное отношение , либо коэффициент корреляции . В случае, если изменение одной случайной величины не ведёт к закономерному изменению другой случайной величины, но приводит к изменению другой статистической характеристики данной случайной величины, то подобная связь не считается корреляционной, хотя и является статистической.
Частная корреляция - зависимость между результативным и одним факторным признаками при фиксированном значении других факторных признаков. Множественная корреляция - зависимость результативного и двух или более факторных признаков, включенных в исследование.
Некоторые виды коэффициентов корреляции могут быть положительными или отрицательными. В первом случае предполагается, что мы можем определить только наличие или отсутствие связи, а во втором -- также и её направление. Если предполагается, что на значениях переменных задано отношение строгого порядка, то отрицательная корреляция -- корреляция, при которой увеличение одной переменной связано с уменьшением другой. При этом коэффициент корреляции будет отрицательным. Положительная корреляция в таких условиях -- это такая связь, при которой увеличение одной переменной связано с увеличением другой переменной. Возможна также ситуация отсутствия статистической взаимосвязи -- например, для независимых случайных величин.[3]
1. ПОСТАНОВКА ЗАДАЧ И ИСХОДНЫЕ ДАННЫЕ
Исходными данными задачи являются:
1. набор значений фактора и набор значений результата , указанных в таблице 1.1 , где n - количество значений;
2. две функции и , которые будут использоваться как регрессионные зависимости;
3. указываются формулы, с помощью которых можно рассчитать значения параметров и таких, что зависимость наилучшим образом приближает исходные наборы фактора и результата , а также указываются аналогичные формулы для расчета параметров и ;
4. название функциональности системы программирования, описание которой требуется найти в литературе.
В таблице 1.1 представлены исходные данные, которые будут использованы в дальнейших вычислениях.
Таблица 1.1
Количество значений |
Значения фактора |
Значения результата |
|
1 |
100,0 |
85,5 |
|
2 |
97,8 |
98,3 |
|
3 |
0,0 |
72,5 |
|
4 |
0,0 |
84,9 |
|
5 |
88,1 |
92,9 |
|
6 |
98,7 |
100,8 |
|
7 |
94,0 |
98,8 |
|
8 |
92,5 |
93,5 |
|
9 |
90,7 |
93,1 |
|
10 |
91,4 |
98,5 |
|
11 |
94,3 |
94,3 |
|
12 |
96,2 |
91,8 |
|
13 |
91,2 |
93,5 |
|
14 |
94,4 |
97,0 |
|
15 |
94,7 |
98,5 |
|
16 |
0,0 |
96,3 |
Регрессионные зависимости:
,
;
На основе указанных исходных данных требуется выполнить следующее:
1. Вычислить средние значения этих наборов:
, (1.1)
; (1.2)
2. Вычислить дисперсии:
, (1.3)
; (1.4)
3. Вычислить среднеквадратические отклонения:
, (1.5)
; (1.6)
4. Вычислить коэффициент парной корреляции:
; (1.7)
Если |r|>0.5, тогда нужно вычислить характеристики регрессионных зависимостей:
и ;
5. Для первой регрессии:
, (1.8)
, (1.9)
; (1.10)
6. Для второй регрессии:
, (1.11)
, (1.12)
; (1.13)
7. Вычислить значения результата по регрессионным зависимостям:
, (1.14)
(1.15)
8. Вычислить остаточные дисперсии:
, (1.16)
; (1.17)
9. Вычислить коэффициенты Фишера:
, (1.18)
; (1.19)
10. Следующим этапом работы является подготовка данных для отладки составленной программы. Подготовка данных выполняется с помощью надстройки MSExcel Пакет анализа;
2. ОПИСАНИЕ СТРУКТУРЫ ПРОГРАММЫ
В таблице 2.1 приведены идентификаторы и типы данных, которые были использованы при разработке алгоритма программ.
Таблица 2.1
Название переменной в программе |
Тип |
Комментарий |
|
fn |
char[] |
Имя файла для открытия |
|
i |
int |
Переменная циклов |
|
n |
int |
Количество записей (райпо) |
|
s |
char[] |
Промежуточная переменная для вывода заголовка текстового файла |
|
name |
char[][] |
Названия райпо |
|
z |
char |
Выбранный пункт загрузки данных (из файла или вручную) |
|
x |
float[] |
Массив значений x |
|
y |
float[] |
Массив значений y |
|
f |
FILE* |
Переменная-указатель на открытый файл с данными |
|
srx |
float |
Среднее арифметическое по x |
|
sry |
float |
Среднее арифметическое по y |
|
sxk |
float |
Дисперсия по x |
|
syk |
float |
Дисперсия по y |
|
sx |
float |
Среднеквадратичное отклонение по x |
|
sy |
float |
Среднеквадратичное отклонение по y |
|
r |
float |
Коэффициент парной корреляции |
|
a01 |
float |
Коэффициент для первой регрессии |
|
a11 |
float |
Коэффициент для первой регрессии |
|
a02 |
float |
Коэффициент для второй регрессии |
|
a12 |
float |
Коэффициент для второй регрессии |
|
y1 |
float* |
Указатель на массив значений первой регрессии |
|
y2 |
float* |
Указатель на массив значений второй регрессии |
|
ost_dy1 |
float |
Остаточная дисперсия для первой регрессии |
|
ost_dy2 |
float |
Остаточная дисперсия для второй регрессии |
|
fisher1 |
float |
Коэффициент Фишера для первой регрессии |
|
fisher2 |
float |
Коэффициент Фишера для второй регрессии |
3. ГРАФИЧЕСКАЯ СХЕМА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ
На рисунке 3.1 изображена графическая схема основного алгоритма программы.
Рисунок 3.1 - Графическая схема основного алгоритма
3.1 Детализация блока А-B
На рисунке 3.2 представлена графическая схема вычисления средних значений x и y.
Рисунок 3.2 - Графическая схема вычисления среднего значения х и у
3.2 Детализация блока B-C
На рисунке 3.3 представлена графическая схема алгоритма вычисления дисперсии , среднеквадратичных отклонений по х и у.
Рисунок 3.3 - Графическая схема вычисления дисперсии и среднеквадратичного отклонения
3.3 Детализация блока C-D
На рисунке 3.4 представлена графическая схема вычисления парной. Из подпрограммы передается вычисление коэффициентов парной корреляции.
Рисунок 3.4 - Графическая схема вычисления коэффициента парной корреляции
3.4 Детализация блока E-F
На рисунке 3.5 представлена графическая схема для вычисления a0 и а1 для регрессионных зависимостей.
3.5.1 - первая функция регрессионной зависимости.
3.5.2 - вторая функция регрессионной зависимости.
Рисунок 3.5 - Графическая схема вычисления а0 и а1
Рисунок 3.5.1 - Графическая схема подпрограммы f1
Рисунок 3.5.2 - Графическая схема подпрограммы f2
3.5 Детализация блока G-H
На рисунке 3.6 представлена графическая схема вычисления остаточной дисперсии для первой и второй регрессии. Из подпрограммы передается вычисленные остаточные дисперсии для регрессионных зависимостей.
Рисунок 3.6 - Графическая схема вычисления остаточной дисперсии для первой и второй регрессии
3.6 Детализация блока H-I
На рисунке 3.7 представлена графическая схема вычисления коэффициентов Фишера для первой и второй регрессионной зависимости. Из подпрограммы передаются вычисления коэффициенты Фишера для первой и второй регрессии.
Рисунок 3.7 - Графическая схема вычисления коэффициента Фишера
4. РАСЧЕТ ПАРАМЕТРОВ РЕГРЕССИОНЫХ ЗАВИСИМОСТЕЙ С ПОМОЩЬЮ НАДСТРОЙКИ ПАКЕТ АНАЛИЗА MS EXCEL
4.1 Расчет параметров регрессионных зависимостей
На рисунке 4.1 отображены исходные данные: факторы и результаты.
Исходные данные |
Райпо |
Выполнение плана по хлебопечению, % |
Выполнение плана по затратам на 1 рубль выпущенной продукции в 2005 г., % |
|
Брестское райпо |
50,0 |
72,5 |
||
Ганцевичское райпо |
60,0 |
84,9 |
||
Столинское райпо |
70,0 |
96,3 |
||
Дрогичинское райпо |
88,1 |
92,9 |
||
Каменецкое райпо |
90,7 |
93,1 |
||
Малоритское райпо |
91,2 |
93,5 |
||
Кобринское райпо |
91,4 |
98,5 |
||
Ивацевичское райпо |
92,5 |
93,5 |
||
Ивановское райпо |
94,0 |
98,8 |
||
Лунинецкое райпо |
94,3 |
94,3 |
||
Пинское райпо |
94,4 |
97,0 |
||
Пружанское райпо |
94,7 |
98,5 |
||
Ляховичское райпо |
96,2 |
91,8 |
||
Березовское райпо |
97,8 |
98,3 |
||
Жабинковское райпо |
98,7 |
100,8 |
||
Барановичское райпо |
100,0 |
85,5 |
Рисунок 4.1 - Факторы и результаты
На рисунке 4.2 изображена таблица c вычисленными данными, значениями первой и второй регрессии.
Значения регрессий |
Значение первой регрессии |
x^2 |
Значение второй регрессии |
ln(x)^2 |
|
81,3820268 |
2500,0 |
78,81669042 |
15,30392399 |
||
83,77708546 |
3600,0 |
83,35305698 |
16,76365739 |
||
86,60760934 |
4900,0 |
87,34968698 |
18,04971182 |
||
92,83826736 |
7761,6 |
93,58679007 |
20,05671623 |
||
93,8504627 |
8226,5 |
94,39900112 |
20,31807333 |
||
94,0484905 |
8317,4 |
94,55311403 |
20,3676645 |
||
94,12800645 |
8354,0 |
94,61457508 |
20,38744173 |
||
94,56845774 |
8556,3 |
94,95075134 |
20,49561811 |
||
95,1775647 |
8836,0 |
95,40418919 |
20,64152748 |
||
95,30056185 |
8892,5 |
95,49419884 |
20,67049121 |
||
95,34164799 |
8911,4 |
95,52415242 |
20,68012981 |
||
95,4651677 |
8968,1 |
95,61386489 |
20,70899791 |
||
96,08864502 |
9254,4 |
96,05912895 |
20,85227708 |
||
96,76448703 |
9564,8 |
96,52814005 |
21,00319768 |
||
97,14954714 |
9741,7 |
96,78932858 |
21,08724416 |
||
97,71197223 |
10000,0 |
97,16333108 |
21,20759244 |
Рисунок 4.2
На рисунке 4.3 изображена таблица c вычисленными данными, значениями первой и второй регрессии в формульном виде.
Значения регрессий |
Значение первой регрессии |
x^2 |
Значение второй регрессии |
ln(x)^2 |
|
=$C$21+$C$22*G2 |
=C2^2 |
=$C$27+$C$28*I2 |
=(LN(C2))^2 |
||
=$C$21+$C$22*G3 |
=C3^2 |
=$C$27+$C$28*I3 |
=(LN(C3))^2 |
||
=$C$21+$C$22*G4 |
=C4^2 |
=$C$27+$C$28*I4 |
=(LN(C4))^2 |
||
=$C$21+$C$22*G5 |
=C5^2 |
=$C$27+$C$28*I5 |
=(LN(C5))^2 |
||
=$C$21+$C$22*G6 |
=C6^2 |
=$C$27+$C$28*I6 |
=(LN(C6))^2 |
||
=$C$21+$C$22*G7 |
=C7^2 |
=$C$27+$C$28*I7 |
=(LN(C7))^2 |
||
=$C$21+$C$22*G8 |
=C8^2 |
=$C$27+$C$28*I8 |
=(LN(C8))^2 |
||
=$C$21+$C$22*G9 |
=C9^2 |
=$C$27+$C$28*I9 |
=(LN(C9))^2 |
||
=$C$21+$C$22*G10 |
=C10^2 |
=$C$27+$C$28*I10 |
=(LN(C10))^2 |
||
=$C$21+$C$22*G11 |
=C11^2 |
=$C$27+$C$28*I11 |
=(LN(C11))^2 |
||
=$C$21+$C$22*G12 |
=C12^2 |
=$C$27+$C$28*I12 |
=(LN(C12))^2 |
||
=$C$21+$C$22*G13 |
=C13^2 |
=$C$27+$C$28*I13 |
=(LN(C13))^2 |
||
=$C$21+$C$22*G14 |
=C14^2 |
=$C$27+$C$28*I14 |
=(LN(C14))^2 |
||
=$C$21+$C$22*G15 |
=C15^2 |
=$C$27+$C$28*I15 |
=(LN(C15))^2 |
||
=$C$21+$C$22*G16 |
=C16^2 |
=$C$27+$C$28*I16 |
=(LN(C16))^2 |
||
=$C$21+$C$22*G17 |
=C17^2 |
=$C$27+$C$28*I17 |
=(LN(C17))^2 |
Рисунок 4.3
На рисунке 4.4 изображены значения a0 и a1 для первой и второй регрессий.
Данные по регрессиям |
Первая |
|
|
a0 |
75,93871165 |
||
a1 |
0,002177326 |
||
Вторая |
|
||
a0 |
31,25717775 |
||
a1 |
3,107667856 |
Рисунок 4.4
На рисунке 4.5 представлены результаты работы функциональности для первой регрессии
Рисунок 4.5 - Результаты работы функциональности для первой регрессии
На рисунке 4.6 представлены результаты работы функциональности для второй регрессии.
Рисунок 4.6 - Результаты работы функциональности для второй регрессии
На рисунке 4.7 и 4.8 изображены таблицы с вычисленными данными.
Необходимые вычисления |
Среднее значение x |
87,8 |
|
Среднее значение y |
93,1 |
||
Дисперсия по x |
212,244 |
||
Дисперсия по y |
50,3611667 |
||
Среднеквадратичное отклонение по x |
14,5685964 |
||
Среднеквадратичное отклонение по y |
7,0965602 |
||
Коэффициент парной корреляции r |
0,71624791 |
||
Существует ли связь между x и y? |
Да |
Рисунок 4.7
Остаточная дисперсия первой регрессии |
26,96729 |
|
Остаточная дисперсия второй регрессии |
22,649 |
|
Коэффициент Фишера для первой регрессии |
1,867491 |
|
Коэффициент Фишера для второй регрессии |
2,223549 |
Рисунок 4.8
4.2 График с исходными данными и регрессионными зависимостями
На рисунке 4.9 изображен график зависимости выполнение плана выпущенной продукции, значение первой и второй регрессий.
Рисунок 4.9 - График с исходными данными и регрессионными зависимостями
5. ОПИСАНИЕ ФУНКЦИОНИРОВАНИЯ ПРОГРАММНОГО КОМПЛЕКСА
При запуске программы появляется диалоговое окно с титульным листом. (рис. 5.1)
Рисунок 5.1 - Титульный лист
Далее пользователь должен нажать любую клавишу, после нажатия любой клавиши пользователю предлагается выбор (рис. 5.2) : "k" - ввод вручную с клавиатуры (рис. 5.3), "f" - ввод с файла(рис. 5.4).
Рисунок 5.2 - Выбор ввода
Рисунок 5.3 - Ввод данных с клавиатуры
Рисунок 5.4 - Ввод с файла
Если пользователь нажал "k", то происходит запрос, какое количества записей будет вводиться. Если же пользователь нажал "f", то программа просит ввести имя файла, в котором находятся исходные данные.
Если пользователь ввел неправильное имя файла или такой файл не существует, то программа выводит сообщение об ошибке.(рис. 5.5)
Рисунок 5.5 - Ошибка, файл не был найден
На рисунке 5.6 изображен файл с которого считываются данные в программу. (789.txt)
Рисунок 5.6 - Файл, с которого считываются данные для решения задачи, предусмотренной в курсовой работе
Если же название введено правильно или файл существует, то программа производит вычисления и выводит в диалоговом окне.(рис. 5.7 и 5.8)
Рисунок 5.7 - Вывод вычисленных данных
Рисунок 5.8 - Вывод вычисленных данных
В конце программы данные сохраняются в файл rz.txt (рис. 5.9)
Рисунок 5.9 - Файл с сохраненными данными
регрессионный зависимость программирование алгоритм
Выход из программы осуществляется нажатием любой клавиши.
Основной текст программы предоставлен в приложении А , текст алгоритмов библиотечного файла расположен в приложении Б.
6. СРЕДА ПРОГРАММИРОВАНИЯ DEV - C++
Dev-C++ -- это интегрированная среда для программирования на языках С и C++, работающая под управлением операционной системы Windows. Среда Dev-C++ распространяется свободно с исходными кодами (на Delphi) по лицензии GPL.
Достоинства оболочки Dev-C++:
- поддержка компилятора GCC
- интегрированная отладка (используется GDB)
- менеджер проекта
- настраиваемый редактор кода с подсветкой синтаксиса
- просмотрщик классов
- автозавершение кода
- список функций
- поддержка профилей
- быстрое создание Windows-приложений, консольных программ, статичных библиотек и DLL (шаблоны)
- поддержка шаблонов, позволяющих создавать свои собственные типы проектов
- создание makefile'а
- редактирование и компиляция файлов ресурсов
- менеджер инструментов
- поддержка печати
- средства поиска/замены (забавно было бы их не обнаружить :-))
- поддержка CVS
Основатель проекта Колин Лаплас, компания Bloodshed Software. На настоящий момент не разрабатывается, вместо него активно разрабатывается порт интерфейса Dev-C++ на wxWidgets -- wxDev-C++.[4]
Интегрированные среды разработки были созданы для того, чтобы максимизировать производительность программиста благодаря тесно связанным компонентам с простыми пользовательскими интерфейсами. Это позволяет разработчику сделать меньше действий для переключения различных режимов, в отличие от дискретных программ разработки. Однако, так как ИСР является сложным программным комплексом, то лишь после долгого процесса обучения среда разработки сможет качественно ускорить процесс разработки ПО. Для уменьшения барьера вхождения многие доcтаточно интерактивны, а для облегчения перехода с одной на другую интерфейс у одного производителя максимально близок, вплоть до использования одной ИСР.
ИСР, обычно, представляет собой единственную программу, в которой проводилась вся разработка. Она, обычно, содержит много функций для создания, изменения, компилирования, развертывания и отладки программного обеспечения. Цель среды разработки заключается в том, чтобы абстрагировать конфигурацию, необходимую, чтобы объединить утилиты командной строки в одном модуле, который позволит уменьшить время, чтобы изучить язык, и повысить производительность разработчика. Также считается, что трудная интеграция задач разработки может далее повысить производительность. Например, ИСР позволяет проанализировать код и тем самым обеспечить мгновенную обратную связь и уведомить о синтаксических ошибках. В то время, как большинство современных ИСР являются графическими, они использовались ещё до того, как появились системы управления окнами (которые реализованы в Microsoft Windows или X11 для *nix-систем). Они были основаны на тексте, используя функциональные клавиши или горячие клавиши, чтобы выполнить различные задачи (например, Turbo Pascal). Использование ИСР для разработки программного обеспечения является прямой противоположностью способа, в котором используются несвязанные инструменты, такие как vi (текстовый редактор), GCC (компилятор), и т. п.[5]
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1.http://ru.wikipedia.org/wiki/%D0%E5%E3%F0%E5%F1%F1%E8%EE%ED%ED%FB%E9_%E0%ED%E0%EB%E8%E7
2. http://ias.iot.ru/mod11.php#3
3.http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D1%80%D0%B5%D0%BB%D1%8F%D1%86%D0%B8%D1%8F
4. http://ru.wikipedia.org/wiki/Dev-C++
5.http://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B5%D0%B4%D0%B0_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D1%8F
ПРИЛОЖЕНИЕ А
(обязательное)
Основной текст программы
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#include "funkcii.h"
/*typedef float (*func)(float);
float f1(float x);
float f2(float x);
void out_data(float *X, float *Y, int k);
float sr(int n, float a[]); //функция 1
void sigma (int n, float a[], float sra, float *sak, float *sa); //функция 2
float kpk(int n, float a[], float b[], float sra, float srb, float sa, float sb);
void a0a1(float *x, float *y, int k_xy, func f, float &a0, float &a1);
float* regr(float a0, float a1, float *x, int k_x, func f);
float ost_disp(float *y, float *reg, int k_y);
float koef_fisher(float d, float ost_d);*/
main ()
{
setlocale(LC_ALL, "rus");
system("color f4");// Цвет экрана и шрифта (7 - белый фон, 4 - красный шрифт)
puts("\t МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ");
puts("\t УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ <<ГОМЕЛЬСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ");
puts("\t УНИВЕРСИТЕТ ИМ. П. О. СУХОГО>>");
puts("\n\n\n\n\n");
puts("\t Факультет автоматизированных и информационных систем\n");
puts("\t Кафедра:<<Информационные технологии>>\n ");
puts("\n\n\n\n\n");
puts("\t КУРСОВАЯ РАБОТА\n");
puts("\t по дисциплине: <<Основы алгоритмизации и программирования>>\n");
puts("\t на тему :<<Определение параметров регрессионной зависимости>>");
puts("\n\n\n\n\n\n\n\n");
puts("\t Выполнил:студент группы ИТ-12");
puts("\t Бажкова А.С.");
puts("\t Принял преподователь: ");
puts("\t доц.Кравченко О.А.");
puts("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
puts("\t Гомель 2013");
printf("\t\t\t\t\t\tНажмите Enter для продолжения >>\n");
getch();//Задержка экрана до нажатия любой клавиши
system("cls");//Очистка экрана
int i, n;
char s[80], fn[10], z, name[30][90];
float x[90], y[90];
FILE *rz;
puts ("Как будет осуществляться ввод данных?\nДля ввода вручную с клавиатуры нажмите k, для ввода из файла нажмите f");
scanf ("%c", &z);
system("cls");//Очистка экрана
if (z=='f')
{
FILE *f;
puts ("Введите имя файла с раширением .txt");
scanf ("%s", &fn);
f=fopen (fn, "r");
if (f==NULL)
{
puts ("Файл не был найден");
getch ();
return 0;
}
else
{
printf ("файл %s открыт\n", fn);
system("cls");//Очистка экрана
puts ("В данном файле:");
fgets (s, 80, f);
puts (s);
fgets (s, 80, f);
puts (s);
fgets (s, 80, f);
puts (s);
i=0;
while (!feof(f))
{
fscanf (f, "%s %f %f", &name[i], &x[i], &y[i]);
i++;
}
fclose (f);
n=i;
for (i=0;i<n;i++)
printf ("%-15s %20.2f %23.1f\n", name[i], x[i], y[i]);
}
}
else if(z=='k')
{
puts ("Осуществляется ввод с клавиатуры");
puts ("Введите количество райпо");
scanf ("%d", &n);
for (i=0;i<n;i++)
{
printf ("Введите название райпо\n");
scanf ("%s", &name[i]);
fflush (stdin);
printf ("Введите значение плана по хлебопечению\n");
scanf ("%f", &x[i]);
fflush (stdin);
printf ("Введите значение затрат на 1 рубль\n");
scanf ("%f", &y[i]);
fflush (stdin);
}
for (i=0;i<n;i++)
printf ("%-10s %20.2f %23.1f\n", name[i], x[i], y[i]);
}
float srx, sry; //объявление переменных для вычисления среднего арифметического
srx=sr(n, x); //вычисление ср. арифм. массива x
sry=sr(n, y); //вычисление ср. арифм. массива y
float sxk, syk, sx, sy; //объявление переменных для вычисления дисперсии
sigma (n, x, srx, &sxk, &sx); //вызов функции 2 для массива x
sigma (n, y, sry, &syk, &sy); //вызов функции 2 для массива y
//рассчёт коэффициента парной корреляции
float r;
r=kpk(n, x, y, srx, sry, sx, sy);
printf ("в файле %d значений\n", n);
printf ("------------------------\n");
puts ("среднее арифметическое:");
printf (" -выполнение плана по хлебопечению %.3f \n", srx);
printf (" -выполение плана по затратам на 1 рубль %.3f\n", sry);
printf ("------------------------\n");
puts ("дисперсия:");
printf (" -по x %.3f\n", sxk);
printf (" -по y %.3f\n", syk);
printf ("------------------------\n");
puts ("среднеквадратичное отклонение:");
printf (" -по x %.3f\n", sx);
printf (" -по y %.3f\n", sy);
printf ("------------------------\n");
puts ("коэффициент парной корреляции:");
printf (" %.3f\n", r);
printf ("------------------------\n");
if(fabs(r)<=0.5)
printf("Связь между x и y слабая / не существует.");
else
{
printf("Связь между x и y существует.");
printf("\n");
float a01, a11;
a0a1(x, y, n, f1, a01, a11);
printf("Для первой регрессии:\n a0: %f\n a1: %f\n", a01, a11);
printf ("------------------------\n");
printf("\n");
float *y1 = regr(a01, a11, x, n, f1);
printf("Значения первой регрессии:\n");
out_data(x, y1, n);
printf ("------------------------\n");
printf("\n");
float a02, a12;
a0a1(x, y, n, f2, a02, a12);
printf("Для второй регрессии:\n a0: %f\n a1: %f\n", a02, a12);
printf ("------------------------\n");
printf("\n");
float *y2 = regr(a02, a12, x, n, f2);
printf("Значения второй регрессии:\n");
out_data(x, y2, n);
printf ("------------------------\n");
printf("\n");
float ost_dy1 = ost_disp(y, y1, n);
printf("Остаточная дисперсия для первой регрессии: %f\n", ost_dy1);
printf ("------------------------\n");
printf("\n");
float ost_dy2 = ost_disp(y, y2, n);
printf("Остаточная дисперсия для второй регрессии: %f\n", ost_dy2);
printf ("------------------------\n");
printf("\n");
float fisher1 = koef_fisher(syk, ost_dy1);
printf("Коэффициент Фишера для первой регрессии: %f\n", fisher1);
printf ("------------------------\n");
printf("\n");
float fisher2 = koef_fisher(syk, ost_dy2);
printf("Коэффициент Фишера для второй регрессии: %f\n", fisher2);
printf ("------------------------\n");
printf("\n");
if(fisher1>fisher2)
printf("Первая");
else
printf("Вторая");
printf(" регрессия лучше\n");
}
rz=fopen("rz.txt","w");
{
fprintf (rz,"среднее арифметическое:");
fprintf (rz," -выполнение плана по хлебопечению %.3f \n", srx);
fprintf (rz," -выполение плана по затратам на 1 рубль %.3f\n", sry);
fprintf (rz,"------------------------\n");
fprintf (rz,"дисперсия:");
fprintf (rz," -по x %.3f\n", sxk);
fprintf (rz," -по y %.3f\n", syk);
fprintf (rz,"------------------------\n");
fprintf (rz,"среднеквадратичное отклонение:");
fprintf (rz," -по x %.3f\n", sx);
fprintf (rz," -по y %.3f\n", sy);
fprintf (rz,"------------------------\n");
fprintf (rz,"коэффициент парной корреляции:");
fprintf (rz," %.3f\n", r);
fprintf (rz,"------------------------\n");
if(fabs(r)<=0.5)
fprintf(rz,"Связь между x и y слабая / не существует.");
else
{
fprintf(rz,"Связь между x и y существует.");
fprintf(rz,"\n");
float a01, a11;
a0a1(x, y, n, f1, a01, a11);
fprintf(rz,"Для первой регрессии:\n a0: %f\n a1: %f\n", a01, a11);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float *y1 = regr(a01, a11, x, n, f1);
fprintf(rz,"Значения первой регрессии:\n");
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float a02, a12;
a0a1(x, y, n, f2, a02, a12);
fprintf(rz,"Для второй регрессии:\n a0: %f\n a1: %f\n", a02, a12);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float *y2 = regr(a02, a12, x, n, f2);
fprintf(rz,"Значения второй регрессии:\n");
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float ost_dy1 = ost_disp(y, y1, n);
fprintf(rz,"Остаточная дисперсия для первой регрессии: %f\n", ost_dy1);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float ost_dy2 = ost_disp(y, y2, n);
fprintf(rz,"Остаточная дисперсия для второй регрессии: %f\n", ost_dy2);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float fisher1 = koef_fisher(syk, ost_dy1);
fprintf(rz,"Коэффициент Фишера для первой регрессии: %f\n", fisher1);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
float fisher2 = koef_fisher(syk, ost_dy2);
fprintf(rz,"Коэффициент Фишера для второй регрессии: %f\n", fisher2);
fprintf(rz,"------------------------\n");
fprintf(rz,"\n");
if(fisher1>fisher2)
fprintf(rz,"Первая");
else
fprintf(rz,"Вторая");
fprintf(rz," регрессия лучше\n");
}
printf("\n");
puts("Результаты выполнения программы сохранены в файл");
fclose(rz);
}
getch ();
return 0;
}
/*float f1(float x)
{
return(x*x);
}
float f2(float x)
{
return(pow(log(x), 2));
}
void out_data(float *X, float *Y, int k)
{ //вывод исходных данных
int i;
for(i=0;i<k;i++)
printf("%14.2f|%14.2f\n", X[i], Y[i]);
}
//функция вычисления среднего арифметического (1)
float sr(int n, float a[])
{
int i;
float s, sra;
s=0;
for (i=0;i<n;i++)
s=s+a[i];
sra=s/n;
return (sra);
}
//функция вычисления дисперсии и среднеквадратичного отклонения (2)
void sigma (int n, float a[], float sra, float *sak, float *sa)
{
float s;
int i;
s=0;
for (i=0;i<n;i++)
s=s+(a[i]-sra)*(a[i]-sra);
*sak=s/(n-1);
*sa=sqrt(*sak);
}
float kpk(int n, float a[], float b[], float sra, float srb, float sa, float sb)
{
int i;
float r, r1;
r1=0;
for (i=0;i<n;i++)
r1=r1+(a[i]-sra)*(b[i]-srb);
r=r1/((n-1)*sa*sb);
return (r);
}
void a0a1(float *x, float *y, int k_xy, func f, float &a0, float &a1)
{ //функция нахождения коэффициентов a0 и a1 регрессий
float s1=0, s2=0, s3=0, s4=0, d;
int i;
for(i=0;i<k_xy;i++)
{ //накопление сумм для вычислений
s1=s1+y[i];
s2=s2+pow(f(x[i]), 2);
s3=s3+f(x[i]);
s4=s4+y[i]*f(x[i]);
}
d=k_xy*s2-pow(s3, 2); //вычисление коэффициента d
a0=(s1*s2 - s3*s4)/d; //коэффициента а0
a1=(k_xy*s4 - s3*s1)/d; //и а1
}
float* regr(float a0, float a1, float *x, int k_x, func f)
{ //функция нахождения значений регрессий
float *reg = new float[k_x];
int i;
for(i=0;i<k_x;i++)
reg[i]=a0+a1*f(x[i]);
return(reg);
}
float ost_disp(float *y, float *reg, int k_y)
{ //функция нахождения остаточных дисперсий
float ost_d=0;
int i;
for(i=0;i<k_y;i++)
ost_d+=pow(y[i]-reg[i], 2);
ost_d/=k_y-1;
return(ost_d);
}
float koef_fisher(float d, float ost_d)
{ //функция нахождения коэффициентов Фишера
return(d/ost_d);
}*/
ПРИЛОЖЕНИЕ Б
(обязательное)
Текст библиотечного файла
#ifndef _funkcii_H_
#define _funkcii_H_s_
#include <math.h>
typedef float (*func)(float);
float f1(float x)
{
return(x*x);
}
float f2(float x)
{
return(pow(log(x), 2));
}
void out_data(float *X, float *Y, int k)
{ //вывод исходных данных
int i;
for(i=0;i<k;i++)
printf("%14.2f|%14.2f\n", X[i], Y[i]);
}
//функция вычисления среднего арифметического (1)
float sr(int n, float a[])
{
int i;
float s, sra;
s=0;
for (i=0;i<n;i++)
s=s+a[i];
sra=s/n;
return (sra);
}
//функция вычисления дисперсии и среднеквадратичного отклонения (2)
void sigma (int n, float a[], float sra, float *sak, float *sa)
{
float s;
int i;
s=0;
for (i=0;i<n;i++)
s=s+(a[i]-sra)*(a[i]-sra);
*sak=s/(n-1);
*sa=sqrt(*sak);
}
float kpk(int n, float a[], float b[], float sra, float srb, float sa, float sb)
{
int i;
float r, r1;
r1=0;
for (i=0;i<n;i++)
r1=r1+(a[i]-sra)*(b[i]-srb);
r=r1/((n-1)*sa*sb);
return (r);
}
void a0a1(float *x, float *y, int k_xy, func f, float &a0, float &a1)
{ //функция нахождения коэффициентов a0 и a1 регрессий
float s1=0, s2=0, s3=0, s4=0, d;
int i;
for(i=0;i<k_xy;i++)
{ //накопление сумм для вычислений
s1=s1+y[i];
s2=s2+pow(f(x[i]), 2);
s3=s3+f(x[i]);
s4=s4+y[i]*f(x[i]);
}
d=k_xy*s2-pow(s3, 2); //вычисление коэффициента d
a0=(s1*s2 - s3*s4)/d; //коэффициента а0
a1=(k_xy*s4 - s3*s1)/d; //и а1
}
float* regr(float a0, float a1, float *x, int k_x, func f)
{ //функция нахождения значений регрессий
float *reg = new float[k_x];
int i;
for(i=0;i<k_x;i++)
reg[i]=a0+a1*f(x[i]);
return(reg);
}
float ost_disp(float *y, float *reg, int k_y)
{ //функция нахождения остаточных дисперсий
float ost_d=0;
int i;
for(i=0;i<k_y;i++)
ost_d+=pow(y[i]-reg[i], 2);
ost_d/=k_y-1;
return(ost_d);
}
float koef_fisher(float d, float ost_d)
{ //функция нахождения коэффициентов Фишера
return(d/ost_d);
}
#endif
Размещено на Allbest.ru
Подобные документы
Планирование прибыли при производстве двух видов топлива. Составление оптимального плана выпуска продукции для получения максимальной прибыли от ее реализации. Определение опорного плана перевозок грузов методом минимальной стоимости и с помощью Excel.
контрольная работа [32,5 K], добавлен 12.11.2014Функции ввода-вывода строк и символов языка Си. Вычисление среднего значения, дисперсии, среднеквадратических отклонений х и у, коэффициента парной корреляции, регрессии двух функций, остаточных дисперсий. Расчет параметров регрессионных зависимостей.
курсовая работа [421,7 K], добавлен 12.03.2016Общее понятие и характеристика задачи линейного программирования. Решение транспортной задачи с помощью программы MS Excel. Рекомендации по решению задач оптимизации с помощью надстройки "Поиск решения". Двойственная задача линейного программирования.
дипломная работа [2,4 M], добавлен 20.11.2010Ознакомление с разнообразными надстройками, входящими в состав Microsoft Excel; особенности их использования. Примеры решения задач линейного программирования с помощью вспомогательных программ "Подбор параметра", "Поиск решения" и "Анализ данных".
реферат [2,5 M], добавлен 25.04.2013Анализ метода линейного программирования для решения оптимизационных управленческих задач. Графический метод решения задачи линейного программирования. Проверка оптимального решения в среде MS Excel с использованием программной надстройки "Поиск решения".
курсовая работа [2,2 M], добавлен 29.05.2015Вычисление физических параметров реальной электрической цепи посредством преобразования её к эквивалентной. Схема алгоритма программы и ее разработка на языках программирования СИ и С++, результаты расчета зависимостей эквивалентных сопротивлений.
курсовая работа [19,9 K], добавлен 15.10.2010Алгоритм решения задач линейного программирования симплекс-методом. Построение математической модели задачи линейного программирования. Решение задачи линейного программирования в Excel. Нахождение прибыли и оптимального плана выпуска продукции.
курсовая работа [1,1 M], добавлен 21.03.2012Сущность и особенности выполнения метода динамического программирования. Решение математической задачи, принцип оптимальности по затратам, ручной счёт и листинг программы. Применение метода ветвей и границ, его основные преимущества и недостатки.
курсовая работа [38,9 K], добавлен 15.11.2009Определение с помощью симплекс-метода плана выпуска продукции для получения максимальной прибыли, чтобы сырьё II вида было израсходовано полностью. Решение задач линейного программирования средствами табличного процессора Excel, составление алгоритма.
курсовая работа [53,2 K], добавлен 30.09.2013Определение зависимости между экспериментальными данными при помощи аппроксимации, особенности решения поставленной задачи различными способами, проведение расчетов с помощью табличного процессора Microsoft Excel и среды программирования Turbo Pascal 7.0.
курсовая работа [765,0 K], добавлен 25.02.2012