Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите разобраться с программой
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
ss91
Программа считает прогнозы по методу экспоненциальному сглаживанию, сглаживанию Брауна, и по сезонно-декомпозиционной модели Хольта-Уинтерса, программа работает но я не понимаю некоторые значение которые нужно вводить, можете помочь, расписать каждые значения, что они означают, что туда вводить

код программы:
Код
program ec;
uses crt;
var a,dt,ft,ut,bt,et:real;
    bt_1,ut_1,gamma,tau:real;
    Ft_Ltau,Ft_1,A1,B,C,Ft_L:real;
function metod_prostogo_exponentialnogo_sglagivaniya(a,dt,ft:real):real;
begin
metod_prostogo_exponentialnogo_sglagivaniya:=a*dt+(1-a)*ft;
end;

function adaptivnoe_sglagivanie_prognoza_Brauna(ut_1,bt_1,gamma,dt,ft,tau:real):real;
var ut,bt,et:real;
begin
et:=dt-ft;
bt:=bt_1+sqr(1-gamma)*et;
ut:=ut_1+bt_1+(1-sqr(gamma))*et;
adaptivnoe_sglagivanie_prognoza_Brauna:=ut+bt*tau;
end;
BEGIN
writeln('  ***  метод простого экспоненциального сглаживания  ***');
writeln;
repeat
clrscr;
write(' Введите константу сглаживания: 0.1<=a<=1.    a=');
readln(a);
until ((0.1<=a) and (a<=1));
write('Введите фактическое значение наблюдаемого показателя. dt=');
readln(dt);
write('Введите прогноз на момент времени ft=');
readln(ft);
writeln('По методу простого экспоненциального сглаживания f(t+tau)=',
metod_prostogo_exponentialnogo_sglagivaniya(a,dt,ft):8:6);
writeln;
writeln('  ***   адаптивное сглаживание прогноза Брауна   ***');
writeln;
write('Введите показатель линейного роста , bt_1=');
readln(bt_1);
repeat
write('Введите коэффициент дисконтирования 0.1<=gamma<=1,    gamma=');
readln(gamma);
until ((0.1<=gamma) and (gamma<=1));
write(' Введите экспоненциальное взвешенное среднее, ut_1=');
readln(ut_1);
write('Введите период упреждения прогноза , tau=');
readln(tau);
writeln('по методу адаптивного сглаживания прогноза Брауна  f(t+tau)=',
adaptivnoe_sglagivanie_prognoza_Brauna(ut_1,bt_1,gamma,dt,ft,tau):8:6);
writeln;
writeln('  ***  Сезонно-декомпозиционная модель Хольта-Уинтерса   ***');
writeln;
writeln('Введите коэффициенты А, В, С');
write('A=');  readln(A1);
write('B=');  readln(B);
write('C=');  readln(C);
write('Введите значение коэффициента сезонности F(t-L+tau)=');
readln(Ft_Ltau);
write('Введите F(t-1)=');
readln(Ft_1);
write('Введите F(t-L)=');
readln(Ft_L);
writeln;
writeln('Оценка стационарного фактора (т.е. оценка среднеежемесячного');
writeln(' значения независимо от времени года, ut=', A1*dt/Ft_1+(1-A1)*(ut_1+bt_1):8:6);
ut:=ut_1+bt_1+(1-sqr(gamma))*et;
writeln;
writeln('Оценка линейного роста на основе модели роста Хольта, bt=',B*(ut-ut_1)+(1-B)

*bt_1:8:6);
writeln;
writeln('Оценка сезонного фактора (адаптация коэффициента сезонности).');
writeln('Она равен ',dt/ut:8:6);
writeln;
writeln('Экспоненциальное взвешенное среднее текущего значения коэффи-циента ');
writeln(' сезонности: F(t)=',C*dt/ut+(1-C)*Ft_L:8:6);
writeln;
bt:=bt_1+sqr(1-gamma)*et;
writeln('Прогноз. f(t+tau)=',(ut+bt*tau)*Ft_Ltau:8:6);
repeat
until keypressed;
END.
Федосеев Павел
Я вот тоже не знаю.
Скорее всего эти параметры - результаты расчётов экспериментальных данных для нескольких формул экстраполяции (моделей прогноза).
Но набор в Яндексе ключевых слов выдаёт сылки на пояснительные материалы - [1], [2], [3].

Конечно, прошу прощения за перенаправление в поисковик. Но, полагаю, что так ты быстрее разберёшься - программисты и технари редко помнят что-либо из экономики.

Поэтому, как вариант, можешь поискать тематический форум экономистов, там в разделе для студентов, наверняка тебе смогут прояснить физический смысл коэффициентов.
ss91
Федосеев Павел точно попробую найти форум где экономисты, спасибо
KIN
Скопируй мою программу и поменяй со своей,будешь читать её на русском языке и Тебе все будет понятно.

program ec;
uses crt;
var a,dt,ft,ut,bt,et:real;
bt_1,ut_1,gamma,tau:real;
Ft_Ltau,Ft_1,A1,B,C,Ft_L:real;
function metod_prostogo_exponentialnogo_sglagivaniya(a,dt,ft:real):real;
begin
metod_prostogo_exponentialnogo_sglagivaniya:=a*dt+(1-a)*ft;
end;

function adaptivnoe_sglagivanie_prognoza_Brauna(ut_1,bt_1,gamma,dt,ft,tau:real):real;
var ut,bt,et:real;
begin
et:=dt-ft;
bt:=bt_1+sqr(1-gamma)*et;
ut:=ut_1+bt_1+(1-sqr(gamma))*et;
adaptivnoe_sglagivanie_prognoza_Brauna:=ut+bt*tau;
end;
BEGIN
writeln(' *** ЊҐв®¤ Їа®бв®Ј® нЄбЇ®­Ґ­жЁ «м­®Ј бЈ« ¦Ёў ­Ёпя ***');
writeln;
repeat
clrscr;
write(' ‚ўҐ¤ЁвҐ Є®­бв ­вг бЈ« ¦Ёў ­Ёпя: 0.1<=a<=1. a=');
readln(a);
until ((0.1<=a) and (a<=1));
write('‚ўҐ¤ЁвҐ д ЄвЁзҐбЄ®Ґ §­ зҐ­ЁҐ ­ Ў«о¤ Ґ¬®Ј® Ї®Є § вҐ«пя. dt=');
readln(dt);
write('‚ўҐ¤ЁвҐ Їа®Ј­®§ ­  ¬®¬Ґ­в ўаҐ¬Ґ­Ё ft=');
readln(ft);
writeln('Џ® ¬Ґв®¤г Їа®бв®Ј® нЄбЇ®­Ґ­жЁ «м­®Ј® бЈ« ¦Ёў ­Ёпя f(t+tau)=',
metod_prostogo_exponentialnogo_sglagivaniya(a,dt,ft):8:6);
writeln;
writeln(' ***  ¤ ЇвЁў­®Ґ бЈ« ¦Ёў ­ЁҐ Їа®Ј­®§  Ѓа г­  ***');
writeln;
write('‚ўҐ¤ЁвҐ Ї®Є § вҐ«м «Ё­Ґ©­®Ј® а®бв  , bt_1=');
readln(bt_1);
repeat
write('‚ўҐ¤ЁвҐ Є®нддЁжЁҐ­в ¤ЁбЄ®вЁа®ў ­Ёпя 0.1<=gamma<=1, gamma=');
readln(gamma);
until ((0.1<=gamma) and (gamma<=1));
write(' ‚ўҐ¤ЁвҐ нЄбЇ®­Ґ­жЁ «м­®Ґ ў§ўҐиҐ­­®Ґ б।­ҐҐ, ut_1=');
readln(ut_1);
write('‚ўҐ¤ЁвҐ ЇҐаЁ®¤ ЇаҐ¦¤Ґ­Ёп Їа®Ј­®§  , tau=');
readln(tau);
writeln('Ї® ¬Ґв®¤г  ¤ ЇвЁў­®Ј® бЈ« ¦Ёў ­Ёп Їа®Ј­®§  Ѓа г­  f(t+tau)=',
adaptivnoe_sglagivanie_prognoza_Brauna(ut_1,bt_1,gamma,dt,ft,tau):8:6);
writeln;
writeln(' *** ‘Ґ§®­­®-¤ҐЄ®¬Ї®§ЁжЁ®­­ п ¬®¤Ґ«м •®«мв - “Ё­вҐаб  ***');
writeln;
writeln('‚ўҐ¤ЁвҐ Є®нддЁжЁҐ­вл Ђ, ‚, ‘');
write('A='); readln(A1);
write('B='); readln(B);
write('C='); readln©;
write('‚ўҐ¤ЁвҐ §­ зҐ­ЁҐ Є®нддЁжЁҐ­в  ᥧ®­­®бвЁ F(t-L+tau)=');
readln(Ft_Ltau);
write('‚ўҐ¤ЁвҐ F(t-1)=');
readln(Ft_1);
write('‚ўҐ¤ЁвҐ F(t-L)=');
readln(Ft_L);
writeln;
writeln('ЋжҐ­Є  бв жЁ®­ а­®Ј® д Єв®а  (в.Ґ. ®жҐ­Є  б।­ҐҐ¦Ґ¬Ґбпз­®Ј®');
writeln(' §­ зҐ­ЁҐ ­Ґ§ ўЁбЁ¬® ®в ўаҐ¬Ґ­Ё Ј®¤ , ut=', A1*dt/Ft_1+(1-A1)*(ut_1+bt_1):8:6);
ut:=ut_1+bt_1+(1-sqr(gamma))*et;
writeln;
writeln('ЋжҐ­Є  «Ё­Ґ©­®Ј® а®бв  ­  ®б­®ўҐ ¬®¤Ґ«Ё а®бв  •®«мв , bt=',B*(ut-ut_1)+(1-B)

*bt_1:8:6);
writeln;
writeln('ЋжҐ­Є  ᥧ®­­®Ј® д Єв®а  ( ¤ Їв жЁп Є®нддЁжЁҐ­в  ᥧ®­­®бвЁ).');
writeln('Ћ­ а ўҐ­ ',dt/ut:8:6);
writeln;
writeln('ќЄбЇ®­Ґ­жЁ «м­®Ґ ў§ўҐиҐ­­®Ґ б।­ҐҐ ⥪г饣® §­ зҐ­Ёп Є®нддЁжЁҐ­в  ');
writeln(' ᥧ®­­®бвЁ: F(t)=',C*dt/ut+(1-C)*Ft_L:8:6);
writeln;
bt:=bt_1+sqr(1-gamma)*et;
writeln('Џа®Ј­®§. f(t+tau)=',(ut+bt*tau)*Ft_Ltau:8:6);
repeat
until keypressed;
END.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.