Определение параметров регрессионной зависимости выполнения плана по затратам на 1 рубль выпущенной продукции от выполнения плана по хлебопечению
Корреляционной связью называется такая статистическая связь, при которой различным значениям одной переменной соответствуют разные средние значения другой. Возникать корреляционная связь может несколькими путями. Важнейший из них — причинная зависимость вариации результативного признака от изменения факторного. Кроме того, такой вид связи может наблюдаться между двумя следствиями одной причины… Читать ещё >
Определение параметров регрессионной зависимости выполнения плана по затратам на 1 рубль выпущенной продукции от выполнения плана по хлебопечению (реферат, курсовая, диплом, контрольная)
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение образования
«Гомельский государственный технический университет имени П.О.Сухого»
Факультет автоматизированных и информационных систем Кафедра «Информационные технологии»
направление специальности 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
Количество значений | Значения фактора | Значения результата | |
100,0 | 85,5 | ||
97,8 | 98,3 | ||
0,0 | 72,5 | ||
0,0 | 84,9 | ||
88,1 | 92,9 | ||
98,7 | 100,8 | ||
94,0 | 98,8 | ||
92,5 | 93,5 | ||
90,7 | 93,1 | ||
91,4 | 98,5 | ||
94,3 | 94,3 | ||
96,2 | 91,8 | ||
91,2 | 93,5 | ||
94,4 | 97,0 | ||
94,7 | 98,5 | ||
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 вычисленными данными, значениями первой и второй регрессии.
Значения регрессий | Значение первой регрессии | x2 | Значение второй регрессии | ln (x)^2 | |
81,3 820 268 | 2500,0 | 78,81 669 042 | 15,30 392 399 | ||
83,77 708 546 | 3600,0 | 83,35 305 698 | 16,76 365 739 | ||
86,60 760 934 | 4900,0 | 87,34 968 698 | 18,4 971 182 | ||
92,83 826 736 | 7761,6 | 93,58 679 007 | 20,5 671 623 | ||
93,8 504 627 | 8226,5 | 94,39 900 112 | 20,31 807 333 | ||
94,484 905 | 8317,4 | 94,55 311 403 | 20,3 676 645 | ||
94,12 800 645 | 8354,0 | 94,61 457 508 | 20,38 744 173 | ||
94,56 845 774 | 8556,3 | 94,95 075 134 | 20,49 561 811 | ||
95,1 775 647 | 8836,0 | 95,40 418 919 | 20,64 152 748 | ||
95,30 056 185 | 8892,5 | 95,49 419 884 | 20,67 049 121 | ||
95,34 164 799 | 8911,4 | 95,52 415 242 | 20,68 012 981 | ||
95,4 651 677 | 8968,1 | 95,61 386 489 | 20,70 899 791 | ||
96,8 864 502 | 9254,4 | 96,5 912 895 | 20,85 227 708 | ||
96,76 448 703 | 9564,8 | 96,52 814 005 | 21,319 768 | ||
97,14 954 714 | 9741,7 | 96,78 932 858 | 21,8 724 416 | ||
97,71 197 223 | 10 000,0 | 97,16 333 108 | 21,20 759 244 | ||
Рисунок 4.2
На рисунке 4.3 изображена таблица c вычисленными данными, значениями первой и второй регрессии в формульном виде.
Значения регрессий | Значение первой регрессии | x2 | Значение второй регрессии | ln (x)^2 | |
=$C$ 21+$C$ 22*G2 | =C22 | =$C$ 27+$C$ 28*I2 | =(LN (C2))^2 | ||
=$C$ 21+$C$ 22*G3 | =C32 | =$C$ 27+$C$ 28*I3 | =(LN (C3))^2 | ||
=$C$ 21+$C$ 22*G4 | =C42 | =$C$ 27+$C$ 28*I4 | =(LN (C4))^2 | ||
=$C$ 21+$C$ 22*G5 | =C52 | =$C$ 27+$C$ 28*I5 | =(LN (C5))^2 | ||
=$C$ 21+$C$ 22*G6 | =C62 | =$C$ 27+$C$ 28*I6 | =(LN (C6))^2 | ||
=$C$ 21+$C$ 22*G7 | =C72 | =$C$ 27+$C$ 28*I7 | =(LN (C7))^2 | ||
=$C$ 21+$C$ 22*G8 | =C82 | =$C$ 27+$C$ 28*I8 | =(LN (C8))^2 | ||
=$C$ 21+$C$ 22*G9 | =C92 | =$C$ 27+$C$ 28*I9 | =(LN (C9))^2 | ||
=$C$ 21+$C$ 22*G10 | =C102 | =$C$ 27+$C$ 28*I10 | =(LN (C10))^2 | ||
=$C$ 21+$C$ 22*G11 | =C112 | =$C$ 27+$C$ 28*I11 | =(LN (C11))^2 | ||
=$C$ 21+$C$ 22*G12 | =C122 | =$C$ 27+$C$ 28*I12 | =(LN (C12))^2 | ||
=$C$ 21+$C$ 22*G13 | =C132 | =$C$ 27+$C$ 28*I13 | =(LN (C13))^2 | ||
=$C$ 21+$C$ 22*G14 | =C142 | =$C$ 27+$C$ 28*I14 | =(LN (C14))^2 | ||
=$C$ 21+$C$ 22*G15 | =C152 | =$C$ 27+$C$ 28*I15 | =(LN (C15))^2 | ||
=$C$ 21+$C$ 22*G16 | =C162 | =$C$ 27+$C$ 28*I16 | =(LN (C16))^2 | ||
=$C$ 21+$C$ 22*G17 | =C172 | =$C$ 27+$C$ 28*I17 | =(LN (C17))^2 | ||
Рисунок 4.3
На рисунке 4.4 изображены значения a0 и a1 для первой и второй регрессий.
Данные по регрессиям | Первая | ||
a0 | 75,93 871 165 | ||
a1 | 0,2 177 326 | ||
Вторая | |||
a0 | 31,25 717 775 | ||
a1 | 3,107 667 856 | ||
Рисунок 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,3 611 667 | ||
Среднеквадратичное отклонение по x | 14,5 685 964 | ||
Среднеквадратичное отклонение по y | 7,965 602 | ||
Коэффициент парной корреляции r | 0,71 624 791 | ||
Существует ли связь между x и y? | Да | ||
Рисунок 4.7
Остаточная дисперсия первой регрессии | 26,96 729 | |
Остаточная дисперсия второй регрессии | 22,649 | |
Коэффициент Фишера для первой регрессии | 1,867 491 | |
Коэффициент Фишера для второй регрессии | 2,223 549 | |
Рисунок 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
#include
#include
#include
#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 («nnnnn»);
puts («t Факультет автоматизированных и информационных системn»);
puts («t Кафедра:<<�Информационные технологии>>n «);
puts («nnnnn»);
puts («t КУРСОВАЯ РАБОТАn»);
puts («t по дисциплине: <<�Основы алгоритмизации и программирования>>n»);
puts («t на тему :<<�Определение параметров регрессионной зависимости>>»);
puts («nnnnnnnn»);
puts («t Выполнил: студент группы ИТ-12»);
puts («t Бажкова А.С.»);
puts («t Принял преподователь: «);
puts («t доц. Кравченко О.А.»);
puts («nnnnnnnnnnnnnnn»);
puts («t Гомель 2013»);
printf («ttttttНажмите 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
printf («%-15s %20.2f %23.1fn», name[i], x[i], y[i]);
}
}
else if (z=='k')
{
puts («Осуществляется ввод с клавиатуры»);
puts («Введите количество райпо»);
scanf («%d», &n);
for (i=0;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
printf («%-10s %20.2f %23.1fn», 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 рубль %.3fn», sry);
printf («————————————n»);
puts («дисперсия:»);
printf («-по x %.3fn», sxk);
printf (« -по y %.3fn», syk);
printf («————————————n»);
puts («среднеквадратичное отклонение:»);
printf (« -по x %.3fn», sx);
printf («-по y %.3fn», sy);
printf («————————————n»);
puts («коэффициент парной корреляции:»);
printf (« %.3fn», r);
printf («————————————n»);
if (fabs®<=0.5)
printf («Связь между x и y слабая / не существует.»);
else
{
printf («Связь между x и y существует.»);
printf («n»);
float a01, a11;
a0a1(x, y, n, f1, a01, a11);
printf («Для первой регрессии: n a0: %fn a1: %fn», 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: %fn a1: %fn», 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 («Остаточная дисперсия для первой регрессии: %fn», ost_dy1);
printf («————————————n»);
printf («n»);
float ost_dy2 = ost_disp (y, y2, n);
printf («Остаточная дисперсия для второй регрессии: %fn», ost_dy2);
printf («————————————n»);
printf («n»);
float fisher1 = koef_fisher (syk, ost_dy1);
printf («Коэффициент Фишера для первой регрессии: %fn», fisher1);
printf («————————————n»);
printf («n»);
float fisher2 = koef_fisher (syk, ost_dy2);
printf («Коэффициент Фишера для второй регрессии: %fn», 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 рубль %.3fn", sry);
fprintf (rz," ————————————n");
fprintf (rz," дисперсия:");
fprintf (rz," -по x %.3fn", sxk);
fprintf (rz," -по y %.3fn", syk);
fprintf (rz," ————————————n");
fprintf (rz," среднеквадратичное отклонение:");
fprintf (rz," -по x %.3fn", sx);
fprintf (rz," -по y %.3fn", sy);
fprintf (rz," ————————————n");
fprintf (rz," коэффициент парной корреляции:");
fprintf (rz," %.3fn", r);
fprintf (rz," ————————————n");
if (fabs®<=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: %fn a1: %fn", 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: %fn a1: %fn", 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," Остаточная дисперсия для первой регрессии: %fn", ost_dy1);
fprintf (rz," ————————————n");
fprintf (rz," n");
float ost_dy2 = ost_disp (y, y2, n);
fprintf (rz," Остаточная дисперсия для второй регрессии: %fn", ost_dy2);
fprintf (rz," ————————————n");
fprintf (rz," n");
float fisher1 = koef_fisher (syk, ost_dy1);
fprintf (rz," Коэффициент Фишера для первой регрессии: %fn", fisher1);
fprintf (rz," ————————————n");
fprintf (rz," n");
float fisher2 = koef_fisher (syk, ost_dy2);
fprintf (rz," Коэффициент Фишера для второй регрессии: %fn", 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)
%14.2fn", X[i], Y[i]);
//функция вычисления среднего арифметического (1)
float sr (int n, float a[])
{
int i;
float s, sra;
s=0;
for (i=0;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
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
r1=r1+(a[i]-sra)*(b[i]-srb);
r=r1/((n-1)*sa*sb);
return ®;
}
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
{ //накопление сумм для вычислений
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
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
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
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)
%14.2fn", X[i], Y[i]);
//функция вычисления среднего арифметического (1)
float sr (int n, float a[])
{
int i;
float s, sra;
s=0;
for (i=0;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
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
r1=r1+(a[i]-sra)*(b[i]-srb);
r=r1/((n-1)*sa*sb);
return ®;
}
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
{ //накопление сумм для вычислений
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
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
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