НАУЧНО-ИССЛЕДОВАТЕЛЬСКАЯ РАБОТА "Построение прогнозов"
творческая работа учащихся по теме

Горбачева Ольга Николаевна

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

Задачи:

1.                  Рассмотреть различные методы прогноза;

2.                  Составить математическую модель задачи;

3.                  Выбрать наиболее оптимальный метод решения;

4.                  Составить алгоритм решения задачи и подобрать оптимальную среду для написания программы;

5.                  Написать программу;

6.                  Провести отладку и тестирование программы;

7.                  Проанализировать результат

 

Объектом исследования в данной работе является различные модели прогнозирования, а так же использование этих моделей для различных типов задач.

Предмет исследования – программа, реализующая прогноз различными методами, дающая краткую оценку полученному прогнозу.

Скачать:

ВложениеРазмер
Файл Публикация моих учеников386.5 КБ

Предварительный просмотр:

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

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

РЕСПУБЛИКИ ХАКАСИЯ СРЕДНЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ХАКАССКИЙ ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ»

НАУЧНО-ИССЛЕДОВАТЕЛЬСКАЯ РАБОТА

ТЕМА: ПОСТРОЕНИЕ ПРОГНОЗОВ

Автор:  Е.С. Голиков

студент группы ПРО – 31

Научный руководитель:

О.Н. Горбачева

Абакан 2013 год

Содержание

Введение        

1 Теоретическая честь        

1.1 Регрессивный анализ        

1.1.1 Метод наименьших квадратов (МНК)        

1.1.2 Сущность метода наименьших квадратов        

1.2 Методы построения прогноза        

1.2.1 Линейная зависимость        

1.2.2 Параболическая зависимость        

1.2.3 Показательная зависимость        

1.3 Качественная оценка прогноза        

1.3.1 Критерий Дарбина-Уотсона(DW)        

1.3.2 Расчёт характеристик точности        

2 Практическая часть        

2.1 Условие задачи        

2.2 Составление математической модели        

2.3 Составление прогноза для линейной модели        

2.4 Составление прогноза для параболической модели        

2.5 Составление прогноза для показательной модели        

2.5.1 Проверка адекватности линейной модели исходным данным по критерию Дарбина-Уотсона        

2.5.2 Проверка адекватности параболической модели исходным данным по критерию Дарбина-Уотсона        

2.5.3 Проверка адекватности показательной модели исходным данным по критерию Дарбина-Уотсона        

2.6.1 Расчет характеристик точности линейной модели        

2.6.2 Расчет характеристик точности параболической модели        

2.6.3 Расчет характеристик точности показательной модели        

2.7 Написание программы        

2.7.1 Обоснование выбора средств разработки программы        

2.7.2 Описание алгоритма программы        

2.7.3 Построение блок-схемы        

2.7.4 Руководство пользователя        

2.7.5 Тестирование и отладка программы        

Заключение        

Список используемых источников        

Приложение А        

Приложение Б        


Введение

Прогнозирование одна из основных составляющих управленческого процесса. Без прогнозирования, без представления об ожидаемом ходе вырабатывания событий невозможно принятие эффективного управленческого решения.

Государственные деятели прошлого, полководцы, бизнесмены принимали подчас блестящие управленческие решения. При этом, как правило, использовались элементы прогнозирования, относящиеся скорее к искусству прогнозирования. Ведь науки о прогнозировании, как и науки управления, вообще не существовало.(1)

Процесс прогнозирования достаточно актуален в настоящее время. Широка сфера его применения. Прогнозирование широко используется в экономике, а именно в управлении. В менеджменте понятие «планирование» и «прогнозирование» тесно переплетены, они не идентичны и не подменяют друг друга. Планы и прогнозы различаются между собой временными границами, степенью детализации содержащихся в них показателей, степенью точности и вероятности их достижения, адресностью и, наконец, правовой основой. Прогнозы, как правило, носят индикативный характер, а планы обладают силой директивного характера.(2)

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

В настоящее время ни одна сфера жизни общества не может обойтись без прогнозов как средства познания будущего. Особенно важное значение имеют прогнозы социально-экономического развития общества, обоснование основных направлений экономической политики, предвидение последствий принимаемых решений. Социально-экономическое прогнозирование является одним из решающих научных факторов формирования стратегии и тактики общественного развития.(1)

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

Задачи:

  1. Рассмотреть различные методы прогноза;
  2. Составить математическую модель задачи;
  3. Выбрать наиболее оптимальный метод решения;
  4. Составить алгоритм решения задачи и подобрать оптимальную среду для написания программы;
  5. Написать программу;
  6. Провести отладку и тестирование программы;
  7. Проанализировать результат

Объектом исследования в данной работе является различные модели прогнозирования, а так же использование этих моделей для различных типов задач.

Предмет исследования – программа, реализующая прогноз различными методами, дающая краткую оценку полученному прогнозу.

Работа состоит из 4 частей:

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


1 Теоретическая честь

1.1 Регрессивный анализ

1.1.1 Метод наименьших квадратов (МНК)

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

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

1.1.2 Сущность метода наименьших квадратов

Задача заключается в нахождении коэффициентов линейной зависимости, при которых функция двух переменных a и b (1.1) принимает наименьшее значение. То есть, при данных a и b сумма квадратов отклонения экспериментальных данных от найденной прямой будет наименьшей. В этом вся суть метода наименьших квадратов. (5)

Таким образом, решение примера сводится к нахождению экстремума функции двух переменных.

Вывод формул для нахождения коэффициентов.

Составляется и решается система из двух уравнений с двумя неизвестными. Находим частные производные функции  (1.2)по переменным a b, приравниваем эти производные к нулю.

  =•   =•

 =•    (1.3)

Решаем полученную систему уравнений любым методом и получаем формулы для нахождения коэффициентов по методу наименьших квадратов.

 (1.4)

При данных a и b функция (1.2) принимает наименьшее значение.

1.2 Методы построения прогноза

1.2.1 Линейная зависимость

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

Параметры уравнения a и b находятся по методу наименьших квадратов в соответствии, с которым получают систему нормальных уравнений:

  (1.5)

где y – фактические (эмпирические) уровни ряда;
t – хронологические показатель времени (порядковый номер периода или момента времени). (8)

Параметр a в линейной трендовой модели обычно интерпретации не имеет, но иногда его рассматривают как обобщенный начальный уровень ряда.

Параметр b в трендовом уравнении называется коэффициентом регрессии. Он определяет направление развития явления: при b>0 – уровни ряда динамики равномерно возрастают, при b<0 равномерно снижаются. Коэффициент регрессии показывает, насколько в среднем изменится уровень ряда при изменении его на единицу времени. Это означает, что параметр b можно рассматривать как средний абсолютный прирост с учетом тенденции к равномерному росту (росту в арифметической прогрессии).(7)

1.2.2 Параболическая зависимость

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

Трендовое уравнение имеет вид .

Параметр c называется коэффициентом регрессии и характеризует изменение интенсивности развития в единицу времени. При c>0 наблюдается ускоренное развитие, при c<0 замедленное.

Система уравнения, полученная по МНК имеет вид:

 (1.6)

где y – фактические (эмпирические) уровни ряда;
t – хронологические показатель времени (порядковый номер периода или момента времени). (9)

1.2.3 Показательная зависимость

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

Такие динамические ряды отражают развитие в геометрической прогрессии.

Параметр b называется коэффициентом регрессии, интерпретируется как средний темп роста изучаемого явления в единицу времени. (4)

Для нахождения параметров модели функции предварительно логарифмируют:
 

Система нормальных уравнений для нахождения параметров трендового уравнения имеет вид:

 (1.7)

где y – фактические (эмпирические) уровни ряда;
t – хронологические показатель времени (порядковый номер периода или момента времени).

1.3 Качественная оценка прогноза

1.3.1 Критерий Дарбина-Уотсона(DW)

Критерий Дарбина-Уотсона (или DW) – статистический критерий, используемый для тестирования автокорреляции первого порядка элементов исследуемой последовательности. Наиболее часто применяется при анализе временных рядов и остатков регрессионных моделей. (10)

Критерий Дарбина-Уотсона рассчитывается по формуле:
(1.8)
где, e
t значение прогноза.

На практике применение критерия Дарбина-Уотсона основано на сравнении величины DW с теоретическими значениями dL и dU для заданных числа наблюдений n, числа независимых переменных k и уровня значимости a.

  1. Если DWL, то гипотеза о независимости случайных отклонений отвергается (следовательно присутствует положительная автокорреляция)
  2. Если DW>dU, то гипотеза не отвергается
  3. Если dLU, то нет достаточных оснований для принятия решений.

Недостатки:

  1. Неприменим к моделям автокорреляции
  2. Не способен выявлять автокорреляцию второго и более высоких порядков
  3. Дает достоверные результаты только для больших выборок

1.3.2 Расчёт характеристик точности

Оценивать качество уравнения тренда мы будем с помощью ошибки аппроксимации. (12)

  (1.9)

За качество прогноза в дальнейшем будем брать 5%.


2  Практическая часть

2.1 Условие задачи

Необходимо рассчитать значение остатков вкладов населения в банках на начало 16-го месяца, исходя из предположения, что тенденция ряда может быть описана

  1. Линейной моделью  (2.1)
  2. Параболической моделью   (2.2)
  3. Показательной моделью   (2.3)

Исходные данные сведены в таблице

Таблица 2.1

t

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

y

14717

16642

18504

20386

21321

23342

28317

30624

33408

36505

40524

45416

50857

56024

59381

2.2 Составление математической модели

Необходимо рассчитать значение остатков вкладов населения в банках на начало 16-го месяца, исходя из предположения, что тенденция ряда может быть описана

  1. Линейной моделью    (2.1)
  2. Параболической моделью   (2.2)
  3. Показательной моделью   (2.3)

Исходные данные сведены в таблице

Таблица 2.1

t

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

y

14717

16642

18504

20386

21321

23342

28317

30624

33408

36505

40524

45416

50857

56024

59381

Произведем прогноз различными моделями, для это рассчитаем необходимые значения для формул:

  1.   (1.5)
  2.  (1.6)
  3.   (1.7)

Из получившихся систем найдем необходимые коэффициенты для формул:

  1.   (2.1)
  2.   (2.2)
  3.   (2.3)

Произведем прогноз на интересующий нас период времени.

Проверим адекватность прогноза по критерию Дарбина-Уотсона и по значению абсолютной и относительной аппроксимации.

2.3 Составление прогноза для линейной модели

Составим таблицу необходимых расчетов для прогноза

Таблица 2.2

Исходные координаты

Исходные данные

Необходимые расчеты

1

14717

14717

1

2

16642

33284

4

3

18504

55512

9

4

20386

81544

16

5

21321

106605

25

6

23342

140052

36

7

28317

198219

49

8

30624

244992

64

9

33408

300672

81

10

36505

365050

100

11

40524

445764

121

12

45416

544992

144

13

50857

661141

169

14

56024

784336

196

15

59381

890715

225

сумма

495968

4867595

1240

Для нахождения прогноза будем использовать систему:

  (1.5)

Подставим в систему получившиеся значения

Решим данную систему в Mathcad

Следовательно:

Тогда уравнение тенденции ряда линейной модели примет вид:

Следовательно, уравнение прогноза на 16 месяц примет вид:

Вывод: если тенденция ряда задана линейной моделью, то остатки вкладов населения в банках на 16 месяц составят 58779 рублей.

2.4 Составление прогноза для параболической модели

Составим таблицу необходимых расчетов для прогноза

Таблица 2.3

Исходные координаты

Исходные данные

Необходимые расчеты

1

14717

14717

14717

1

1

1

2

16642

33284

66568

4

8

16

3

18504

55512

166536

9

27

81

4

20386

81544

326176

16

64

256

5

21321

106605

533025

25

125

625

6

23342

140052

840312

36

216

1296

7

28317

198219

1387533

49

343

2401

8

30624

244992

1959936

64

512

4096

9

33408

300672

2706048

81

729

6561

10

36505

365050

3650500

100

1000

10000

11

40524

445764

4903404

121

1331

14641

12

45416

544992

6539904

144

1728

20736

13

50857

661141

8594833

169

2197

28561

14

56024

784336

10980704

196

2744

38416

15

59381

890715

13360725

225

3375

50625

сумма

495968

4867595

56030921

1240

14400

178312

Для нахождения прогноза будем использовать систему:

 (1.6)

Подставим в систему получившиеся значения

Решим данную систему в Mathcad

Следовательно:

Тогда уравнение тенденции ряда линейной модели примет вид:

Следовательно, уравнение прогноза на 16 месяц примет вид:

Вывод: если тенденция ряда задана параболической моделью, то остатки вкладов населения в банках на 16 месяц составят 65730,08 рублей.

2.5 Составление прогноза для показательной модели

Составим таблицу необходимых расчетов для прогноза

Таблица 2.4

Исходные координаты

Исходные данные

Необходимые расчеты

1

14717

1

9,596759

9,596759

2

16642

4

9,719685

19,43937

3

18504

9

9,825742

29,47723

4

20386

16

9,922604

39,69041

5

21321

25

9,967448

49,83724

6

23342

36

10,05801

60,34806

7

28317

49

10,25122

71,75852

8

30624

64

10,32954

82,63631

9

33408

81

10,41655

93,74896

10

36505

100

10,5052

105,052

11

40524

121

10,60965

116,7061

12

45416

144

10,72362

128,6834

13

50857

169

10,83677

140,878

14

56024

196

10,93354

153,0695

15

59381

225

10,99173

164,8759

сумма

495968

1240

154,69

1265,80

Для нахождения прогноза будем использовать систему:

  (1.7)

Подставим в систему получившиеся значения

Решим данную систему в Mathcad

Следовательно:

Тогда уравнение тенденции ряда линейной модели примет вид:

Следовательно, уравнение прогноза на 16 месяц примет вид:

Вывод: если тенденция ряда задана показательной моделью, то остатки вкладов населения в банках на 16 месяц составят  рублей.

2.5.1 Проверка адекватности линейной модели исходным данным по критерию Дарбина-Уотсона

Составим таблицу необходимых расчетов

Таблица 2.5

Исходные данные

Необходимые расчеты

14717

10569

4148

17205904

16642

13783

2859

8173881

1661521

18504

16997

1507

2271049

1827904

20386

20211

175

30625

1774224

21321

23425

-2104

4426816

5193841

23342

26639

-3297

10870209

1423249

28317

29853

-1536

2359296

3101121

30624

33067

-2443

5968249

822649

33408

36281

-2873

8254129

184900

36505

39495

-2990

8940100

13689

40524

42709

-2185

4774225

648025

45416

45923

-507

257049

2815684

50857

49137

1720

2958400

4959529

56024

52351

3673

13490929

3814209

59381

55565

3816

14561856

20449

Сумма:

-4185

87336813

28260994

Наблюдаемое значение статистики Дарбина-Уотсона (d):

= 0.27     (1.8)

                                                                     

                     Длина ряда n=15

Число объясняющих переменных в модели k=1                

следовательно, критические значения Дарбина-Уотсона с  уровнем значимости =0,05

       

                                                                                  d1=1,08 d2=1,36

                                     0                                                   2

                          d1=1,08          d2=1,36                                      

Рис. 1 – Адекватность Дарбина-Уотсона

Вывод: модель не адекватна исходным данным.

2.5.2 Проверка адекватности параболической модели исходным данным по критерию Дарбина-Уотсона

Составим таблицу необходимых расчетов

Таблица 2.6

Исходные данные

Необходимые расчеты

 параболическая

14717

10569

-504,1

254116,81

16642

13783

202,758

41110,80656

499648,2

18504

16997

539,574

291140,1015

113445

20386

20211

589,348

347331,0651

2477,451

21321

23425

-614,92

378126,6064

1450261

23342

26639

-1040,23

1082078,453

180888,6

28317

29853

1181,418

1395748,491

4935720

30624

33067

428,024

183204,5446

567602,5

33408

36281

-155,412

24152,88974

340397,6

36505

39495

-732,89

537127,7521

333480,8

40524

42709

-695,41

483595,0681

1404,75

45416

45923

-91,972

8458,848784

364137,4

50857

49137

753,424

567647,7238

714694,4

56024

52351

1017,778

1035872,057

69883,04

59381

55565

-834,91

697074,7081

3432453

Сумма:

546,58

7326785,926

10988376

Наблюдаемое значение статистики Дарбина-Уотсона (d):

 =1,76          (1.8)

     

Длина ряда n=15

Число объясняющих переменных в модели k=2        

следовательно, критические значения Дарбина-Уотсона с  уровнем значимости =0,05

d1=0,95 ; d2=1,54

                        0                                        2

   d1=0,95          d2=1,54                                      

Рис. 2 – Адекватность Дарбина-Уотсона

Вывод: модель адекватна исходным данным.

2.5.3 Проверка адекватности показательной модели исходным данным по критерию Дарбина-Уотсона

Составим таблицу необходимых расчетов

Таблица 2.7

Исходные данные

Необходимые расчеты

 показательная

14717

10569

-504,1

254116,81

16642

13783

202,758

41110,80656

499648,2

18504

16997

539,574

291140,1015

113445

20386

20211

589,348

347331,0651

2477,451

21321

23425

-614,92

378126,6064

1450261

23342

26639

-1040,23

1082078,453

180888,6

28317

29853

1181,418

1395748,491

4935720

30624

33067

428,024

183204,5446

567602,5

33408

36281

-155,412

24152,88974

340397,6

36505

39495

-732,89

537127,7521

333480,8

40524

42709

-695,41

483595,0681

1404,75

45416

45923

-91,972

8458,848784

364137,4

50857

49137

753,424

567647,7238

714694,4

56024

52351

1017,778

1035872,057

69883,04

59381

55565

-834,91

697074,7081

3432453

Сумма:

546,58

7326785,926

10988376

Наблюдаемое значение статистики Дарбина-Уотсона (d):

               =1,66             (1.8)

Длина ряда n=15

Число объясняющих переменных в модели k=1                

следовательно, критические значения Дарбина-Уотсона с уровнем значимости  =0,05

          d1=1,08 ; d2=1,36

                                         0                                                      2

                                         d11,08          d2=1,36                                      

Рис. 3 – Адекватность Дарбина-Уотсона

Вывод: модель адекватна исходным данным.

2.6.1 Расчет характеристик точности линейной модели

Составим таблицу необходимых расчетов

Таблица 2.8

Исходные данные

Необходимые расчеты

*100%

14717

10569

4148

0,2819

16642

13783

2859

0,1718

18504

16997

1507

0,0814

20386

20211

175

0,0086

21321

23425

2104

0,0987

23342

26639

3297

0,1412

28317

29853

1536

0,0542

30624

33067

2443

0,0798

33408

36281

2873

0,0860

36505

39495

2990

0,0819

40524

42709

2185

0,0539

45416

45923

507

0,0112

50857

49137

1720

0,0338

56024

52351

3673

0,0656

59381

55565

3816

0,0643

Сумма:

496005

35833

1,3142

Средняя абсолютная ошибка по модулю:    =2388,87 рублей. (1.9)

длина ряда n=15

Средняя относительная ошибка по модулю:   =8,76%  (1.10)

Вывод: средняя относительная погрешность превышает 5%, прогноз с малой точностью.

2.6.2 Расчет характеристик точности параболической модели

Составим таблицу необходимых расчетов

Таблица 2.9

Исходные данные

Необходимые расчеты

 параболическая

*100%

14717

15221,1

504,1

0,0343

16642

16439,24

202,758

0,0122

18504

17964,43

539,574

0,0292

20386

19796,65

589,348

0,0289

21321

21935,92

614,92

0,0288

23342

24382,23

1040,23

0,0446

28317

27135,58

1181,418

0,0417

30624

30195,98

428,024

0,0140

33408

33563,41

155,412

0,0047

36505

37237,89

732,89

0,0201

40524

41219,41

695,41

0,0172

45416

45507,97

91,972

0,0020

50857

50103,58

753,424

0,0148

56024

55006,22

1017,778

0,0182

59381

60215,91

834,91

0,0141

Сумма:

495925,5

9382,168

0,3246

Средняя абсолютная ошибка по модулю:    = 625,48 рублей. (1.9)

длина ряда n=15

Средняя относительная ошибка по модулю:   =2,16% (1.10)

Вывод: средняя относительная погрешность не превышает 5%, прогноз с высокой точностью.


2.6.3 Расчет характеристик точности показательной модели

Составим таблицу необходимых расчетов

Таблица 2.10

Исходные данные

Необходимые расчеты

 показательная

*100%

14717

15221,1

504,1

0,0343

16642

16439,24

202,758

0,0122

18504

17964,43

539,574

0,0292

20386

19796,65

589,348

0,0289

21321

21935,92

614,92

0,0288

23342

24382,23

1040,23

0,0446

28317

27135,58

1181,418

0,0417

30624

30195,98

428,024

0,0140

33408

33563,41

155,412

0,0047

36505

37237,89

732,89

0,0201

40524

41219,41

695,41

0,0172

45416

45507,97

91,972

0,0020

50857

50103,58

753,424

0,0148

56024

55006,22

1017,778

0,0182

59381

60215,91

834,91

0,0141

Сумма:

495925,5

9382,168

0,3246

Средняя абсолютная ошибка по модулю:    =630,39 рублей.  (1.9)

длина ряда n=15

Средняя относительная ошибка по модулю:   =1,99%  (1.10)

Вывод: средняя относительная погрешность не превышает 5%, прогноз с высокой точностью.

2.7 Написание программы

2.7.1 Обоснование выбора средств разработки программы

Для создания программы была выбрана среда Borland Delphi. Среда Borland Delphi представляет собой объектно-ориентированное программирование. Данная среда является визуальной, что упрощает создание интерфейса.

2.7.2 Описание алгоритма программы

procedure TForm1.Button1Click(Sender: TObject):  процедура заполнения значений

procedure TForm1.Button2Click(Sender: TObject): процедура выполнения прогноза линейной моделью. В ней реализован расчет необходимых значений и решение линейной системы уравнения с двумя неизвестными методом подстановки.

procedure TForm1.Button3Click(Sender: TObject): процедура выполнения прогноза параболической моделью. В ней реализован расчет необходимых значений и решение линейной системы уравнения с тремя неизвестными методом Гаусса.

procedure TForm1.Button4Click(Sender: TObject): процедура выполнения прогноза показательной моделью. В ней реализован расчет необходимых значений и решение линейной системы уравнения с двумя неизвестными методом подстановки.

procedure TForm1.N2Click(Sender: TObject): процедура позволяющая ввести значения поставленной задачи.

2.7.3 Построение блок-схемы

2.7.4 Руководство пользователя

После открытия программы пользователь видит окно:

 

Рис. 4 – Окно запуска программы

  1. Пользователю необходимо заполнить таблицу, используя кнопку «ввести значение»
  2. Заполнить поле, в котором указывается месяц, на который нужен прогноз
  3. Выбрать модель, по которой будет строиться прогноз, используя кнопки:
  1. Линейная модель
  2. Параболическая модель
  3. Показательная модель
  1. Посмотреть результат построения прогноза.

Так же пользователю предлагаются расчеты точности производимого прогноза и график позволяющий сравнить исходные данные с прогнозируемыми результатами.

Рис. 5 – Заполненное окно программы

Так же пользователь может ознакомиться с работой программы, используя справку:

Рис. 6 – Окно «справка»

Ознакомиться с версией программы и ее авторами, позволяет окно «О программе»:

Рис. 7 – Окно «О программе»

2.7.5 Тестирование и отладка программы

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


Заключение

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

В работе были рассмотрены методы решения задачи построения прогноза с использование различных моделей прогнозирования. Для получения результата задача была решена с использованием приложений: MS Office Excel и MathCAD.

Составлена математическая модель. Была разработана и протестирована программа для построения прогноза. Для ее реализации была использована среда программирования Borland Delphi 2010.

Результаты использования рассмотренных методов решения:

  1. Линейной моделью: 58779 рублей
  2. Параболической моделью: 65730,08 рублей
  3. Показательной моделью: 67272,03 рублей

Поставленные цели и задачи были полностью выполнены. Программа была разработана в среде программирования Borland Delphi 2010. Программа позволяет вводить первоначальные значения и строить прогноз с использований 3х моделей прогнозирования, оценивать прогноз по характеристикам точности, а так же графически отображает построенный прогноз.


Список используемых источников

  1. Сафронова В.М. Прогнозирование и моделирование в социальной работе: Учеб. пособие для студ. высш. учеб. заведений. - М.: Издательский центр «Академия», 2002. - 192с.
  2. Курбатов В.И. Социальная работа: Учебное пособие. - М.: Издательско-торговая корпорация «Дашков и К», Ростов н/Д: Наука - Пресс, 2007 - 480с.
  3. Суслов В. И., Ибрагимов Н. М., Талышева Л. П., Цыплаков А. А. Эконометрия. — Новосибирск: СО РАН, 2005. — 744 с.
  4. Линник Ю. В. Метод наименьших квадратов и основы математико-статистической теории обработки наблюдений. — 2-е изд. — М., 1962
  5. Айвазян С. А. Прикладная статистика. Основы эконометрики. Том 2. — М.: Юнити-Дана, 2001. — 432 с.
  6. Доугерти К. Введение в эконометрику: Пер. с англ. — М.: ИНФРА-М, 1999. — 402 с.
  7. Кремер Н. Ш., Путко Б. А. Эконометрика. — М.: Юнити-Дана, 2003-2004. — 311 с.
  8. Магнус Я. Р., Катышев П. К., Пересецкий А. А. Эконометрика. Начальный курс. — М.: Дело, 2007. — 504 с.
  9. Эконометрика. Учебник / Под ред. Елисеевой И. И. — 2-е изд. — М.: Финансы и статистика, 2006. — 576 с.
  10. Александрова Н. В. История математических терминов, понятий, обозначений: словарь-справочник. — 3-е изд.. — М.: ЛКИ, 2008. — 248 с.
  11. Радченко Станислав Григорьевич, Устойчивые методы оценивания статистических моделей: Монография. — К.: ПП «Санспарель», 2005. — С. 504.
  12. Справочник по прикладной статистике. В 2-х т. Т. 1: Пер. с англ. / Под ред. Э. Ллойда, У. Ледермана, Ю. Н. Тюрина. — М.: Финансы и статистика, 1989. — 510 с.

Приложение А

Рис. 8 – Построение прогноза линейной моделью

Рис. 9 – Построение прогноза параболической моделью

Рис. 10 – Построение прогноза показательной моделью


Приложение Б

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Grids, StdCtrls, Menus, TeEngine, ExtCtrls, TeeProcs, Chart, Math,

  Series;

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    ScrollBox1: TScrollBox;

    StringGrid1: TStringGrid;

    Button1: TButton;

    Button2: TButton;

    Button3: TButton;

    Button4: TButton;

    Button5: TButton;

    Label3: TLabel;

    Label4: TLabel;

    Edit3: TEdit;

    Label5: TLabel;

    Edit4: TEdit;

    MainMenu1: TMainMenu;

    N1: TMenuItem;

    N2: TMenuItem;

    N3: TMenuItem;

    N4: TMenuItem;

    N5: TMenuItem;

    N6: TMenuItem;

    Chart1: TChart;

    Series1: TFastLineSeries;

    Series2: TFastLineSeries;

    Label6: TLabel;

    Label7: TLabel;

    edit5: TEdit;

    edit6: TEdit;

    procedure FormActivate(Sender: TObject);

    procedure Button1Click(Sender: TObject);

    procedure Button2Click(Sender: TObject);

    procedure Button3Click(Sender: TObject);

    procedure Button4Click(Sender: TObject);

    procedure Button5Click(Sender: TObject);

    procedure N5Click(Sender: TObject);

    procedure N2Click(Sender: TObject);

    procedure N3Click(Sender: TObject);

    procedure N6Click(Sender: TObject);

    procedure Edit1KeyPress(Sender: TObject; var Key: Char);

    procedure Edit2KeyPress(Sender: TObject; var Key: Char);

    procedure Edit3KeyPress(Sender: TObject; var Key: Char);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  n:integer;

  t,a,b,c,summa1,summa2:real;

  s:string;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject); //заполение значений

begin

if (length(form1.edit1.text)<>0) and (length(form1.edit2.text)<>0) then

  begin

  n:=n+1;

  form1.StringGrid1.Cells[0,n]:=form1.Edit1.Text;

  form1.StringGrid1.Cells[1,n]:=form1.Edit2.Text;

  form1.Edit1.Clear; form1.Edit2.Clear;

  edit1.SetFocus;

  end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var

i,z:integer;

summaT, summaT2, summaY, summaYT: real;

begin

summa1:=0; summa2:=0;

if (length(form1.edit3.text)=0) then ShowMessage('Не все поля заполнены') else

  begin

  form1.Label3.Caption:='построение прогноза с использованием линейной модели';

  form1.Label5.Caption:='прогноз на '+edit3.Text+' месяц';

  summaY:=0; summaT:=0; summaT2:=0; summaYT:=0;

  for i:=1 to n do //необходимые значения для системы

  begin

  summaT:=summaT+strtofloat(form1.StringGrid1.Cells[0,i]);

  summaY:=summaY+strtofloat(form1.StringGrid1.Cells[1,i]);

  SummaT2:=summaT2+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  summaYT:=summaYT+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[1,i]);

  end;

  //решение системы

  b:=(summaYT-(summaT*summaY)/n)/(summaT2-(summaT*summaT)/n);

  a:=(summaY-summaT*b)/n;

  //построение прогноза

  for i:=1 to strtoint(form1.Edit3.Text) do

  begin

       form1.StringGrid1.Cells[0,i]:=inttostr(i);

       form1.StringGrid1.Cells[2,i]:=floattostr(roundto(a+b*i,-4));

  end;

  //запись требуемого значения

  t:=strtofloat(form1.Edit3.Text);

  form1.Edit4.Text:=floattostr(roundto(a+b*t,-2));

  end;

  //построение графика

  begin

  Series1.Clear;

  for i:=1 to n do

  Series1.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), strtoint(form1.StringGrid1.Cells[1,i]), '', clBlue);

  end;

   begin

  Series2.Clear;

  for i:=1 to strtoint(form1.Edit3.Text) do

  begin

  Series2.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), round(strtofloat(form1.StringGrid1.Cells[2,i])), '', clBlue);

  end;

  end;

  //Расчет характеристик точности

  for i:=1 to n do

  begin

    summa1:=summa1+abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i])));

    summa2:=summa2+(abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i]))))/strtofloat(form1.StringGrid1.Cells[1,i])*100;

  end;

  edit6.Text:=floattostr(roundto((summa1/n),-2));

  edit5.Text:=floattostr(roundto((summa2/n),-2))+'%';

end;

procedure TForm1.Button3Click(Sender: TObject);

var

i:integer;

summaT, summaT2,summaT3, summaT4, summaY, summaYT,summaYT2,d: real;

M: array [0..3,0..2] of real;

begin

summa1:=0; summa2:=0;

if (length(form1.edit3.text)=0) then ShowMessage('Не все поля заполнены') else

  begin

  form1.Label3.Caption:='построение прогноза с использованием параболической модели';

  form1.Label5.Caption:='прогноз на '+edit3.Text+' месяц';

  summaT:=0;summaT2:=0;summaT3:=0;summaT4:=0;summaY:=0;summaYT:=0;summaYT2:=0;

  for i:=1 to n do //необходимые значения для системы

  begin

  summaT:=summaT+strtofloat(form1.StringGrid1.Cells[0,i]);

  summaY:=summaY+strtofloat(form1.StringGrid1.Cells[1,i]);

  SummaT2:=summaT2+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  SummaT3:=summaT3+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  SummaT4:=summaT4+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  summaYT:=summaYT+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[1,i]);

  summaYT2:=summaYT2+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[1,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  end;

  //заполнение значений

  m[0,0]:=n; m[1,0]:=summaT; m[2,0]:=summaT2; m[3,0]:=summaY;

  m[0,1]:=summaT; m[1,1]:=summaT2; m[2,1]:=summaT3; m[3,1]:=summaYT;

  m[0,2]:=summaT2; m[1,2]:=summaT3; m[2,2]:=summaT4; m[3,2]:=summaYT2;

  //приведение матрицы к треугольному виду

  //избавимся от коэффициента при Х1

  d:=m[0,0];

  m[0,0]:=m[0,0]/d; m[1,0]:=m[1,0]/d; m[2,0]:=m[2,0]/d; m[3,0]:=m[3,0]/d;

  d:=m[0,1];

  m[0,1]:=m[0,1]-m[0,0]*d; m[1,1]:=m[1,1]-m[1,0]*d; m[2,1]:=m[2,1]-m[2,0]*d; m[3,1]:=m[3,1]-m[3,0]*d;

  d:=m[0,2];

  m[0,2]:=m[0,2]-m[0,0]*d; m[1,2]:=m[1,2]-m[1,0]*d; m[2,2]:=m[2,2]-m[2,0]*d; m[3,2]:=m[3,2]-m[3,0]*d;

  //избавимся от коэффициента при Х2

  if m[1,1]<0 then begin m[1,1]:=m[1,1]*-1; m[2,1]:=m[2,1]*-1; m[3,1]:=m[3,1]*-1 end;

  d:=m[1,1];

  m[1,1]:=m[1,1]/d; m[2,1]:=m[2,1]/d; m[3,1]:=m[3,1]/d;

  if m[1,2]<0 then begin m[1,2]:=m[1,2]*-1; m[2,2]:=m[2,2]*-1; m[3,2]:=m[3,2]*-1 end;

  d:=m[1,2];

  m[1,2]:=m[1,2]-m[1,1]*d; m[2,2]:=m[2,2]-m[2,1]*d; m[3,2]:=m[3,2]-m[3,1]*d;

  //Обратный ход

  c:=m[3,2]/m[2,2];

  b:=(m[3,1]-m[2,1]*c)/m[1,1];

  a:=(m[3,0]-m[1,0]*b-m[2,0]*c)/m[1,1];

  //построение прогноза

  for i:=1 to strtoint(form1.Edit3.Text) do

    begin

    form1.StringGrid1.Cells[0,i]:=inttostr(i);

    form1.StringGrid1.Cells[2,i]:=floattostr(roundto(a+b*i+c*i*i,-4));

    end;

  //запись нужного значения

  t:=strtofloat(form1.Edit3.Text);

  form1.Edit4.Text:=floattostr(roundto(a+b*t+c*t*t,-2));

  end;

  //построение графика

  begin

  Series1.Clear;

  for i:=1 to n do

  Series1.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), strtoint(form1.StringGrid1.Cells[1,i]), '', clBlue);

  end;

   begin

  Series2.Clear;

  for i:=1 to strtoint(form1.Edit3.Text) do

  begin

  Series2.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), round(strtofloat(form1.StringGrid1.Cells[2,i])), '', clBlue);

  end;

  end;

  //Расчет характеристик точности

  for i:=1 to n do

  begin

    summa1:=summa1+abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i])));

    summa2:=summa2+(abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i]))))/strtofloat(form1.StringGrid1.Cells[1,i])*100;

  end;

  edit6.Text:=floattostr(roundto((summa1/n),-2));

  edit5.Text:=floattostr(roundto((summa2/n),-2))+'%';

end;

procedure TForm1.Button4Click(Sender: TObject);

var

summaY, summaT, summaT2, summaYT:real;

i:integer;

begin

summa1:=0; summa2:=0;

  if (length(form1.edit3.text)=0) then ShowMessage('Не все поля заполнены') else

  begin

  form1.Label3.Caption:='построение прогноза с использованием показательной модели';

  form1.Label5.Caption:='прогноз на '+edit3.Text +' месяц';

  summaT:=0;summaT2:=0;summaY:=0;summaYT:=0;

  for i:=1 to n do //необходимые значения для системы

  begin

  summaY:=summaY+ln(strtofloat(form1.StringGrid1.Cells[1,i]));

  summaYT:=summaYT+ln(strtofloat(form1.StringGrid1.Cells[1,i]))*strtofloat(form1.StringGrid1.Cells[0,i]);

  summaT:=summaT+strtofloat(form1.StringGrid1.Cells[0,i]);

  SummaT2:=summaT2+strtofloat(form1.StringGrid1.Cells[0,i])*strtofloat(form1.StringGrid1.Cells[0,i]);

  end;

  //решение системы

  b:=(summaYT-(summaT*summaY)/n)/(summaT2-(summaT*summaT)/n);

  a:=(summaY-summaT*b)/n;

  b:=exp(b);

  a:=exp(a);

  //построение прогноза

  for i:=1 to strtoint(form1.Edit3.Text) do

    begin;

    form1.StringGrid1.Cells[0,i]:=inttostr(i);

    form1.StringGrid1.Cells[2,i]:=floattostr(roundto(exp(i*ln(b))*a,-4));

    end;

  //запись нужного результата

  t:=strtofloat(form1.Edit3.Text);

  form1.Edit4.Text:=floattostr(roundto(exp(t*ln(b))*a,-2));

  end;

  //построение графика

  begin

  Series1.Clear;

  for i:=1 to n do

  Series1.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), strtoint(form1.StringGrid1.Cells[1,i]), '', clBlue);

  end;

   begin

  Series2.Clear;

  for i:=1 to strtoint(form1.Edit3.Text) do

  begin

  Series2.AddXY(strtoint(form1.StringGrid1.Cells[0,i]), round(strtofloat(form1.StringGrid1.Cells[2,i])), '', clBlue);

  end;

  end;

  //Расчет характеристик точности

  for i:=1 to n do

  begin

    summa1:=summa1+abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i])));

    summa2:=summa2+(abs((strtofloat(form1.StringGrid1.Cells[1,i])-strtofloat(form1.StringGrid1.Cells[2,i]))))/strtofloat(form1.StringGrid1.Cells[1,i])*100;

  end;

  edit6.Text:=floattostr(roundto((summa1/n),-2));

  edit5.Text:=floattostr(roundto((summa2/n),-2))+'%';

end;

procedure TForm1.Button5Click(Sender: TObject);

begin

form1.StringGrid1.Cells[0,n]:='';

form1.StringGrid1.Cells[1,n]:='';

form1.Edit1.Clear; form1.Edit2.Clear;

edit1.SetFocus;

n:=n-1;

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if Not (Key in ['0'..'9', #8])then Key:=#0;

end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if Not (Key in ['0'..'9', #8])then Key:=#0;

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

if Not (Key in ['0'..'9', #8])then Key:=#0;

end;

procedure TForm1.FormActivate(Sender: TObject);

begin

form1.StringGrid1.Cells[0,0]:='значения t';

form1.StringGrid1.Cells[1,0]:='значения y';

form1.StringGrid1.Cells[2,0]:='Прогноз';

end;

procedure TForm1.N2Click(Sender: TObject);

begin

form1.StringGrid1.Cells[0,1]:='1';

form1.StringGrid1.Cells[1,1]:='14717';

form1.StringGrid1.Cells[0,2]:='2';

form1.StringGrid1.Cells[1,2]:='16642';

form1.StringGrid1.Cells[0,3]:='3';

form1.StringGrid1.Cells[1,3]:='18504';

form1.StringGrid1.Cells[0,4]:='4';

form1.StringGrid1.Cells[1,4]:='20386';

form1.StringGrid1.Cells[0,5]:='5';

form1.StringGrid1.Cells[1,5]:='21321';

form1.StringGrid1.Cells[0,6]:='6';

form1.StringGrid1.Cells[1,6]:='23342';

form1.StringGrid1.Cells[0,7]:='7';

form1.StringGrid1.Cells[1,7]:='28317';

form1.StringGrid1.Cells[0,8]:='8';

form1.StringGrid1.Cells[1,8]:='30624';

form1.StringGrid1.Cells[0,9]:='9';

form1.StringGrid1.Cells[1,9]:='33408';

form1.StringGrid1.Cells[0,10]:='10';

form1.StringGrid1.Cells[1,10]:='36505';

form1.StringGrid1.Cells[0,11]:='11';

form1.StringGrid1.Cells[1,11]:='40524';

form1.StringGrid1.Cells[0,12]:='12';

form1.StringGrid1.Cells[1,12]:='45416';

form1.StringGrid1.Cells[0,13]:='13';

form1.StringGrid1.Cells[1,13]:='50857';

form1.StringGrid1.Cells[0,14]:='14';

form1.StringGrid1.Cells[1,14]:='56024';

form1.StringGrid1.Cells[0,15]:='15';

form1.StringGrid1.Cells[1,15]:='59381';

n:=15; edit3.Text:='16';

end;

procedure TForm1.N3Click(Sender: TObject);

begin

close;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

form2.ShowModal;

end;

procedure TForm1.N6Click(Sender: TObject);

begin

form3.ShowModal;

end;

end.

unit Unit2;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm2 = class(TForm)

    Memo1: TMemo;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form2: TForm2;

implementation

{$R *.dfm}

end.

unit Unit3;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, StdCtrls;

type

  TForm3 = class(TForm)

    Memo1: TMemo;

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form3: TForm3;

implementation

{$R *.dfm}

end.


По теме: методические разработки, презентации и конспекты

УЧЕБНО-ИССЛЕДОВАТЕЛЬСКАЯ И НАУЧНО-ИССЛЕДОВАТЕЛЬСКАЯ ДЕЯТЕЛЬНОСТЬ ОБУЧАЮЩИХСЯ НА ЗАНЯТИЯХ БИОЛОГИИ

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

Организация учебно-исследовательской и научно-исследовательской деятельности как способ повышения качества подготовки специалистов среднего звена

Исследоватеьскй подод в обучении -это путь знакомства учащихся с методам научного познания.Сопоставление НИРС и УИРС....

МЕТОДИЧЕСКИЕ МАТЕРИАЛЫ к выступлению на городской научно-практической конференции для преподавателей «Научно-исследовательская работа как часть процесса обучения» 14 декабря 2016 г

На городской научно-практической конференции для преподавателей «Научно-исследовательская работа как часть процесса обучения» 14 декабря 2016 г представлены: стендовый доклад...

Исследовательский студенческий проект "Научно-исследовательская деятельность: Terra Incognito или Земля Обетованная"

Исследовательский студенческий проект "Научно-исследовательская деятельность: Terra Incognito или Земля Обетованная"...

Результаты научно-исследовательской, проектной деятельности обучающихся по предмету/дисциплине: научно-практические конференции, семинары и др.

Результаты научно-исследовательской, проектной деятельности обучающихся по предмету/дисциплине: научно-практические конференции, семинары и др....

Исследовательская проект в Международном конкурсе научно-исследовательских работ «SCIENTIFIC DISCOVERIES AND INNOVATIONS»

Исследовательская проект в Международном конкурсе научно-исследовательских работ «SCIENTIFIC DISCOVERIES AND INNOVATIONS»...