Математическая модель описывается (представляется)
У математических моделей есть и дидактические аспекты - развитие модельного и математического стиля мышления, позволяющего вникать в структуру и внутреннюю логику моделируемой системы.
Отметим основные операции (процедуры)
1. М=М(X, Y, A), где X - множество входов, Y - множество выходов, А - X->A->Y. Если X, Y, A - ax+by аргументов $$\phi$$ и $$\psi$$ преобразуют в соответствующие
Пример. Применим операцию у=at2/2, 0<=t<=4, которая является нелинейной (квадратичной). Для этого заменим один из множителей t на его среднее значение для рассматриваемого промежутка, т.е. на t=2. Такая (пусть простят меня знакомые с y=2at. Более точную t не на среднее, а на значение в некоторой точке (это точка - неизвестная!); тогда, как следует из теоремы о среднем из курса высшей математики, такая замена будет достаточно точна, но при этом необходимо оценить значение неизвестной точки. На практике используются достаточно точные и тонкие процедуры
2. М=М(X, Y, A), A={ai}, ai=(ai1, ai2, ..., aik) - вектор состояния объекта (системы). Если вектор ai зависит от некоторых неизвестных параметров, то задача S={s1, s2, ..., sn} - некоторая последовательность сообщений, получаемых от источника информации о системе, М={m1, m2, ..., mz} - последовательность моделей, описывающих S, среди которых, возможно, содержится оптимальная (в каком-то смысле) модель, то М означает, что последовательность S позволяет различать (по рассматриваемому критерию адекватности) две разные модели в М. Последовательность сообщений (данных) S назовем информативной, если она позволяет различать разные модели в М. Цель
Пример. Применим операцию t, например, y=6 при t=3. Тогда из модели получаем: 6=9a/2, a=12/9=4/3. Идентифицированный параметр а определяет следующую модель y=2t2/3. Методы
3.
Пример. у=at2/2, 0<=t<=4, полученной в результате |at2/2-2at|, 0<=t<=4. Если a>0, то, как несложно оценить с помощью производной, эта погрешность будет экстремальна при t=2a. Например, если a=1, то эта величина не превосходит 2. Это достаточно большое отклонение, и можно заключить, что наша линеаризованная модель в данном случае не является адекватной (как исходной системе, так и нелинеаризованной модели).
4. Оценка чувствительности модели (чувствительности к изменениям входных параметров).
Пример. Из предыдущего примера следует, что чувствительность модели у=at2/2, 0<=t<=4 такова, что изменение входного параметра t на 1% приводит к изменению выходного параметра y на более, чем 2%, т.е. эта модель является чувствительной.
5.
Отметим основные причины, несколько тормозящие выход
В базовой пятерке: "система (исследуемая среда) - модель (описание среды) - алгоритм (программа) - компьютер (компьютерная технология) - пользователь (выработка решения)" при компьютерном моделировании главную роль играют уже алгоритм (программа), компьютер и технология, точнее, инструментальные системы для компьютера, компьютерные технологии.
Пример. При имитационном моделировании (при отсутствии строгого и формально записанного алгоритма) главную роль играют технология и средства моделирования; аналогичная ситуация наблюдается в когнитивной графике.
Модель не
Специфические операции
Основные функции компьютера при моделировании систем:
Можно говорить сейчас и о специальных пакетах прикладных программ, текстовых, графических и табличных процессоров, визуальных и когнитивных средах (особенно, работающих в режиме реального времени), позволяющих осуществлять
Информация (абстракция), реализуясь сообщениями реального мира, овеществляется в разных предметных процессах, а реализация на компьютере вызывает необходимость использования в компьютерах специальных формализованных описаний, представлений этих процессов.
Пример. Математическое и
Современное производство характерно тем, что часть производимой продукции (в стоимостном выражении) возвращается в виде инвестиций (т.е. части конечной продукции, используемой для создания основных фондов производства) в производство. При этом время возврата, ввода в оборот новых фондов может быть различным для различного рода производства. Необходимо промоделировать эту ситуацию и выявить динамику изменения величины основных фондов производства (капитала).
Сложность и многообразие, слабая структурированность и плохая формализуемость основных экономических механизмов, определяющих работу предприятий, не позволяют преобразовать
Рассмотрим одну такую простую модель социально-экономического процесса.
Динамика изменения величины капитала определяется в нашей модели, в основном, простыми процессами производства и описывается так называемыми обобщенными коэффициентами амортизации (расхода фондов) и потока инвестиций (часть конечного продукта, используемого в единицу времени для создания основных фондов). Эти коэффициенты - относительные величины (оцениваются за единицу времени). Необходимо разработать и исследовать модель динамики основных фондов. Считаем при этом допустимость определенных гипотез, определяющих систему производства.
Пусть x(t) - величина основных фондов (капитала) в момент времени t, где 0<=t<=N. Через промежуток времени $$\Delta t$$ она будет равна $$x(t+\Delta t)$$. Абсолютный прирост равен $$\Delta x=x(t+\Delta t)-x(t)$$. Относительный прирост будет равен $$\delta x=[x(t+\Delta t)-x(t)]/\Delta t$$.
Примем следующие гипотезы:
y(t) ;m, и при достаточно малом значении $$\Delta t$$, изменение основных фондов прямо пропорционально текущей величине капитала, т.е. dx=y(t) - mx(t).Считая $$\Delta t\to 0$$, а также учитывая определение производной, получим из предыдущего соотношения следующее математическое выражение закона изменения величины капитала - математическую модель (дифференциальное уравнение) динамики капитала:
x`(t) = y(t) - mx(t), x(0)=х0,
где х(0) - начальное значение капитала в момент времени t=0.
Эта простейшая модель не отражает важного факта: социально-экономические ресурсы производства таковы, что между выделением инвестиций и их введением и использованием в выпуске новой продукции проходит время (лаг). Учитывая это, можно записать модель в виде
x`(t) = y(t-T)-mx(t), x(0)=х0
Этой непрерывной, дифференциальной,
хi+1=хi +yj - mхi , x0=с, i=0, 1, 2, :, n, 0<j<n,
где n - предельное значение момента времени при моделировании.
x`(t) на относительное приращение (из определения производной, это справедливо при малых значениях $$\Delta t$$ ).
Возьмем для простоты режим моделирования, когда m, c - известны и постоянны, y - увеличивается на каждый следующий момент времени на 1%, а также рассмотрим наиболее простой алгоритм моделирования в укрупненных шагах.
с=х(0) - начальный капитал; n - конечное время моделирования; m - коэффициент амортизации; s - единица измерения времени; y - инвестиции.xi от i=1 до i=n по рекуррентной формуле, приведенной выше.j, 0<=j<=n, начиная с которого все хj, хj +1, :, хn постоянны или изменяются на малую допустимую величину $$\varepsilon >0$$.Алгоритм, записанный на учебном
алг Производство (арг вещ m, c, n, рез вещ таб х[1:366], лит p, q);
дано | производство с основными фондами, изменяющимися по закону:
| х[i+1]=х[i]+y-mx[i], x[0]=c, i=0, 1, 2, :, n, 0<j<n,
| t=i*h, h=1 - шаг по времени (день),
| i - текущий момент времени,
| m - коэффициент амортизации,
| х[0]=с - заданная начальная величина капитала,
| y - увеличиваемая на 1% каждый раз величина инвестиций
надо | промоделировать динамику основных фондов, т.е. выяснить:
| 1) чему они равны на момент времени n;
| 2) наступает ли гибель предприятия, т.е. обращается ли капитал
| (основные фонды) в нуль при некотором t, и найти это t;
| 3) наступает ли ситуация, когда капитал стабилизируется
нач | начало тела алгоритма
| описание типов переменных
цел i, | i - переменная цикла прогноза (текущее время)
j, | j - задаваемая величина лага
k, | k - момент гибели предприятия (если есть)
y | y - величина инвестиций, увеличиваемая по закону y:=1.01*y
ввод (m, n, c, y) | ввод исходных данных
p:='предприятие не гибнет' | задаем начальное значение s
q:='капитал не стационарен' | задаем начальное значение q
х[0]:=с | начальное значение капитала (не нулевое)
i:=0 | задаем начальный момент времени моделирования
нц пoка (i<=n) и (х[i]>0) | заголовок цикла прогноза капитала
| тело цикла прогноза капитала
х[i+1]=х[i]+y-mx[i] | вычисление прибыли в следующий момент
y:=1.01*y | и увеличиваем на 1% - для следующего момента
если х[i+1]<=0 | проверка гибели
то | если гибнет, - выполняется блок погибшего предприятия
p:="предприятие гибнет" | заменяем значение s
k:=i-1 | и фиксируем время гибели
нц для j от k до n | цикла вычисления всех
x[j]=0 | остальных, нулевых значений прибыли
кц | конец блок обработки погибшего предприятия
если х[i+1]=х[i] | проверка стационарности прибыли
то q:="капитал стационарен" | заменяем старое значение q
кц
кон.
Приведем программу на Паскале для имитационного моделирования (программа реализована для функции типа y=at+b, где a, b - коэффициенты потока инвестиций; структурированность и интерфейс программы "принесены в жертву" компактности, простоте и понятности программы).
PROGRAM MODFOND;
{Исходные данные находятся в файле in.dat текущего каталога}
{Результаты записываются в файл out.dat текущего каталога}
Uses
Crt, Graph, Textwin;
Type
Vector = Array[0..2000] of Real;
Mas = Array[0..2000] of LongInt;
Var
Time, Lag, t, dv, mv, i, yi, p :Integer;
tmax, tmin :LongInt;
a, b, m, X0, maxx, minx, aa, bb, cc, sx, tk :Real;
x :Vector;
ax, ay :Mas;
ch :Char;
f1, f2 :Text;
{-------------------------------------------------------------------------------------------}
Procedure InputKeyboard; { Ввод с клавиатуры }
Begin
OpenWindow(10,5,70,20,' Ввод данных ',14,4);
ClrScr; WriteLn;
WriteLn('Введите время Т прогнозирования системы:');
Repeat
Writeln('Для удобства построения графика введите Т не меньше 2');
Write('Т='); ReadLn(Time);
until Time>=2;
WriteLn('Введите лаг:');
Repeat
Write('Лаг должен быть строго меньше Т - '); ReadLn(Lag);
until Lag<Time;
WriteLn('Введите коэффициенты для вычисления потока инвестиций');
Write('Введите a>0: a= '); ReadLn(a);
Write('Введите b>0: b= '); ReadLn(b);
Repeat
Write('Введите коэффициент амортизации ( 0<M<1 ) - '); Readln(m);
until (m<1) and (m>0);
Write('Введите значение фондов в начальный момент - '); Readln(X0);
CloseWindow;
end;
{-------------------------------------------------------------------------------------------}
Procedure InputFile; { Ввод из файла }
Begin
Assign(f1,'in.dat'); Reset(f1); Readln(f1,time,lag,a,b,m,X0); Close(f1);
End;
{-------------------------------------------------------------------------------------------}
Procedure OutputFile; { Запись результата работы в файл }
Begin
Assign(f2,'out.dat'); Rewrite(f2);
WriteLn(f2,' Результаты моделирования:');
WriteLn(f2,'Значение фондов в заданное время Т = ',x[time]:4:2);
WriteLn(f2,'Максимальное значение фондов = ',maxx:4:2);
Write(f2,'Минимальное значение фондов = ',minx:4:2);
Close(f2);
End;
{------------------------------------------------------------------------------------------}
Procedure InputRnd; { Ввод случайными числами }
Begin
Randomize;
Repeat Time:=Random(90); until Time>=2;
Repeat Lag:=Random(80); until Lag<Time;
a:=Random(10); b:=Random(10); m:=Random; X0:=Random(200);
End;
{------------------------------------------------------------------------------------------}
Procedure OutputScreen; { Вывод данных на экран }
Begin
OpenWindow(10,5,70,20,' Вывод данных: ',4,3); WriteLn;
WriteLn(' Данный набор входных параметров:'); WriteLn;
WriteLn(' Время Т - ',time);
WriteLn(' Лаг - ',lag); WriteLn;
WriteLn('Коэффициенты потока инвестиций:'); WriteLn;
WriteLn(' a - ',a:4:2);
WriteLn(' b - ',b:4:2); WriteLn;
WriteLn('Эмпирический коэффициент амортизации - ',m:4:3);
Write('Состояние фондов в начальный момент - ',X0:4:2);
ReadKey; CloseWindow;
End;
{-------------------------------------------------------------------------------------------}
Procedure Worker; { Рабочая процедура }
Var
yt :real;
Begin
x[0]:=X0;
For t:=1 to Time do
Begin
If t<Lag+1 then yt:=0 else yt:=a*(t-1-Lag)+b; x[t]:=yt+(1-m)*x[t-1];
End;
maxx:=x[0]; minx:=x[0]; tmin:=0; tmax:=0;
For t:=1 to Time do
If x[t]>maxx
then begin maxx:=x[t]; tmax:=t; end
else if x[t]<minx then begin minx:=x[t]; tmin:=t; end;
OpenWindow(10,5,70,13,' Результат работы модели: ',14,7);
ClrScr; WriteLn;
WriteLn('Значение фондов в заданное время Т = ',x[time]:4:2);
If tmin<>0 then
WriteLn(' Величина фондов возрастает с ',tmin,' до ',tmax);
WriteLn(' Максимальное значение фондов = ',maxx:4:2);
Write(' Минимальное значение фондов = ',minx:4:2);
ReadKey; CloseWindow;
End;
{---------------------------------------------------------------------------------------------}
Procedure Mas_OX; { Масштабирование по оси ОХ }
Var
st :String;
Begin
p:=1; While Time>p*24 do inc(p);
For i:=1 to 24 do Begin Str(p*i,st); OutTextXY(65+20*i,420,st) End;
For t:=0 to Time do ax[t]:=70+round(20*t/p);
End;
{-------------------------------------------------------------------------------------------}
Procedure Mas_OY; { Масштабирование по оси ОУ }
Var
st :String;
k, r :Integer;
Begin
If maxx>16
then Begin
k:=1; While maxx>k*16 do inc(k);
For i:=1 to 16 do Begin Str(k*i,st);OutTextXY(35,407-20*i,st);End;
tk:=k;
End
else Begin
r:=1; While (maxx<=16/r) and (r<16) do inc®; dec®;
For i:=1 to (trunc(16/r-0.1)+1) do
Begin
Str(i,st);
OutTextXY(35,407-0*r*i,st)
End;
tk:=1/r;
End;
For t:=0 to Time do ay[t]:=410-round(20*x[t]/tk);
End;
{----------------------------------------------------------------------------------------------}
Procedure Ipol(x1,y1,x2,y2,x3,y3:Real); {Процедура интерполяции}
Var d1, da, db, dc :Real;
Begin
d1:=x1*x1*(x2-x3)+x2*x2*(x3-x1)+x3*x3*(x1-x2);
da:=y1*(x2-x3)+y2*(x3-x1)+y3*(x1-x2);
db:=x1*x1*(y2-y3)+x2*x2*(y3-y1)+x3*x3*(y1-y2);
dc:=x1*x1*(x2*y3-y2*x3)+x2*x2*(x3*y1-y3*x1)+x3*x3*(x1*y2-y1*x2);
aa:=da/d1; bb:=db/d1; cc:=dc/d1;
End;
{--------------------------------------------------------------------------------------------}
Procedure Graf; { Построение графика }
Begin
dv:=detect; InitGraph(dv,mv,''); SetBkColor(7); SetColor(6);
Rectangle(30,40,600,450);
Line(600,60,620,60); Line(620,60,620,470);
Line(50,450,50,470); Line(50,470,620,470);
SetFillStyle(1,1); FloodFill(610,450,6);
SetFillStyle(1,15); FloodFill(100,100,6);
SetColor(5); Circle(70,410,2);
Line(70,410,70,50); Line(70,410,590,410); { оси ОХ и ОУ }
OutTextXY(587,407,'>'); OutTextXY(67,47,'^'); OutTextXY(57,415,'0');
OutTextXY(80,45,'X(T) - (Величина основных фондов производства)');
OutTextXY(590,415,'T'); OutTextXY(540,430,'(Время)'); SetColor(2);
For i:=1 to 16 do Line(67,70+20*i,70,70+20*i);
For i:=1 to 24 do Line(70+20*i,410,70+20*i,413);
Mas_OX; Mas_OY;
For t:=0 to time do Вegin
SetColor(Blue); Circle(ax[t],ay[t],2);
SetFillStyle(SolidFill,Red); FloodFill(ax[t],ay[t],Blue);
End;
SetColor(Red); SetLineStyle(3,1,1);
Line(70,ay[time],ax[time],ay[time]); Line(ax[time],ay[time],ax[time],410);
Ipol(0,x[0],1,x[1],2,x[2]);
For i:=ax[0] to ax[2] do Begin
sx:=p*(i-70)/20;
yi:=410-round(20*(aa*sx*sx+bb*sx+cc)/tk);
SetColor(Red); Circle(i,yi,1);
End;
For t:=1 to Time-2 do Begin
Ipol(t,x[t],t+1,x[t+1],t+2,x[t+2]);
For i:=ax[t+1] to ax[t+2]do
Begin
sx:=p*(i-70)/20;
yi:=410-round(20*(aa*sx*sx+bb*sx+cc)/tk);
SetColor(Red); Circle(i,yi,1);
End;
End;
ReadKey; CloseGraph;
End;
{-------------------------------------------------------------------------------------------}
Begin
While true do
Begin
ClrScr; TextBackGround(2); Window(1,1,80,25); ClrScr;
OpenWindow(30,22,50,24,' Нажмите клавишу: ',4,1);
OpenWindow(5,5,75,16,' Динамика фондов производства ',14,5);
ClrScr; WriteLn;
WriteLn(' Пусть х(t) - основные фонды в момент времени t, y(t) -');
WriteLn(' инвестиции, m - коэффициент амортизации фондов.');
WriteLn(' Модель динамики основных фондов (L - лаг):');
Write(' x`(t) = y(t-L) - mx(t), где х(0) = Хо, y(t)=at+b, ( a,b>0 ).');
ReadKey; CloseWindow;
OpenWindow(15,10,65,17,' Выбирите вариант входа-выхода: ',15,0);
ClrScr; WriteLn;
WriteLn(' С клавиатуры - <1>');
WriteLn(' Из файла - <2>');
WriteLn(' Случайными числами - <3>');
WriteLn(' Выход - <Esc>');
ch:=ReadKey;
Сase ch of
#49: InputKeyboard;
#50: Вegin InputFile; OutputScreen; Еnd;
#51: Вegin InputRnd; OutputScreen; End;
#27: Halt(1);
End;
CloseWindow; Worker; OutputFile;
OpenWindow(22,10,58,14,'',15,5);
ClrScr; WriteLn;
Write('Для просмотра графика нажмите ввод'); ch:=ReadKey;
If ch=#13 then begin Graf; RestoreCrtMode; end;
CloseWindow; TextBackGround(15); Window(1,1,80,25);
ClrScr; OpenWindow(15,10,65,16,'',15,6); ClrScr; WriteLn;
WriteLn(' Хотите еще моделировать ?'); WriteLn;
WriteLn('Для выхода нажмите - < Esc >');
WriteLn('Для продолжения нажмите любую другую клавишу');
ch:=ReadKey;
If ch=#27 then Halt(1);
CloseWindow;
End;
ClrScr; TextBackGround(0);
End.
Эксперимент 1. Поток инвестиций - постоянный и в каждый момент времени равен 10000. В начальный момент капитал - 1000000 руб. Коэффициент амортизации - 0,0025. Найти величину основных фондов через 20 суток, если лаг равен 5 суток.
Эксперимент 2. Основные фонды в момент времени t=0 была равны 5000. Через какое время общая их сумма превысит 120000 руб., если поток инвестиций постоянный и равен 200, а m=0,02, T=3?
Эксперимент 3. Какую стратегию инвестиций лучше использовать, если величина инвестиций постоянная, в начальный момент капитал равен 100000, величина амортизации постоянная?
Модификация 1. Коэффициент амортизации можно взять в форме m=r-sx(t), где r - коэфициент обновления фондов, s - коэффициент устаревания фондов, причем 0<=r, s<=1. При этом модель примет вид
x`(t)=y(t-T)-rx(t)+sx2(t), x(0)=х0
Этой непрерывной, дифференциальной,
хi+1=хi +yj - rхi+sxi 2 ,
x0=с, i=0, 1, 2, :, n, 0<j<n,
где n - предельное значение момента времени при моделировании. Поставить цели и исследовать непрерывную и
Модификация 2. Одна из моделей математической экономики задается уравнением: dz/dt=((1-c)*z(t)+k(t-w)+a)l, где z(t ) - функция, которая характеризует выпуск продукции, k - коэффициент капиталовложений, a - независимые расходы производства, l - скорость реакции выпуска на капиталовложения, c - постоянная спроса, w -
Модификация 3. Для модели динамики фондов с переменным законом потока инвестиций: а) построить гипотезы, модель и алгоритм для моделирования; б) сформулировать планы
Пример. Компьютерной (физической) моделью может служить простая модель броуновского движения, получаемая генерацией компьютером нового случайного положения точки на экране и траектории ее движения; при этом отметим, что сам "датчик случайных чисел компьютера (или языка)" - это
По приведенным ниже моделям: выписать соответствующую
хi вещества в реке зависит только от расстояния i, i=0,1,:, n по течению реки и определяется по формуле: ab(xi+1-2xi+xi+1)-c(xi-xi-1)-daxi=0, где а - площадь поперечного сечения реки, b - коэффициент рассеивания по течению реки, с - полный объемный расход реки, d - скорость разложения органического вещества. Эти величины a, b, c, d считаются пока постоянными. Общий поток вещества определяется: N=cxi-ab(xi+1-xi). Цель моделирования - прогноз загрязнения реки (для каждого i ).x(t) - величина ресурса (вещественного, энергетического или информационного), а(х) - скорость его возобновления, у(t) - величина потребителя (плотность), b=b(x,y) - скорость потребления ресурса потребителем, причем эксперименты показывают, что часто b=b(x). При этих условиях модель баланса ресурса имеет вид: x'(t)=a-by(t), x(0)=m, y'(t)=cby(t)-dy(t), y(0)=n, где с - к.п.д. переработки ресурса для нужд потребителя (например, в биомассу потребителя), d - коэффициент естественной убыли потребителя. Функция b=b(x), обладающая свойствами: а) b(x) - монотонна, т.е. растет или убывает, b'(x)>0 или b'(x)<0; б) b(0)=0 (в начальный момент трофическая функция равна нулю); в) b(x) - ограничена (т.е. скорость потребления ресурса ограничена) называется трофической функцией потребителя. Если а=0 - ресурс не возобновляем, иначе - возобновляем с постоянной скоростью а. Рассмотреть социально-экономическую интерпретацию одной модели. Цель моделирования: а) прогноз потребления; б) прогноз переработки; в) Математическая модель описывается (представляется)
У математических моделей есть и дидактические аспекты - развитие модельного и математического стиля мышления, позволяющего вникать в структуру и внутреннюю логику моделируемой системы.
Отметим основные операции (процедуры)
1. М=М(X, Y, A), где X - множество входов, Y - множество выходов, А - X->A->Y. Если X, Y, A - ax+by аргументов $$\phi$$ и $$\psi$$ преобразуют в соответствующие
Пример. Применим операцию у=at2/2, 0<=t<=4, которая является нелинейной (квадратичной). Для этого заменим один из множителей t на его среднее значение для рассматриваемого промежутка, т.е. на t=2. Такая (пусть простят меня знакомые с y=2at. Более точную t не на среднее, а на значение в некоторой точке (это точка - неизвестная!); тогда, как следует из теоремы о среднем из курса высшей математики, такая замена будет достаточно точна, но при этом необходимо оценить значение неизвестной точки. На практике используются достаточно точные и тонкие процедуры
2. М=М(X, Y, A), A={ai}, ai=(ai1, ai2, ..., aik) - вектор состояния объекта (системы). Если вектор ai зависит от некоторых неизвестных параметров, то задача S={s1, s2, ..., sn} - некоторая последовательность сообщений, получаемых от источника информации о системе, М={m1, m2, ..., mz} - последовательность моделей, описывающих S, среди которых, возможно, содержится оптимальная (в каком-то смысле) модель, то М означает, что последовательность S позволяет различать (по рассматриваемому критерию адекватности) две разные модели в М. Последовательность сообщений (данных) S назовем информативной, если она позволяет различать разные модели в М. Цель
Пример. Применим операцию t, например, y=6 при t=3. Тогда из модели получаем: 6=9a/2, a=12/9=4/3. Идентифицированный параметр а определяет следующую модель y=2t2/3. Методы
3.
Пример. у=at2/2, 0<=t<=4, полученной в результате |at2/2-2at|, 0<=t<=4. Если a>0, то, как несложно оценить с помощью производной, эта погрешность будет экстремальна при t=2a. Например, если a=1, то эта величина не превосходит 2. Это достаточно большое отклонение, и можно заключить, что наша линеаризованная модель в данном случае не является адекватной (как исходной системе, так и нелинеаризованной модели).
4. Оценка чувствительности модели (чувствительности к изменениям входных параметров).
Пример. Из предыдущего примера следует, что чувствительность модели у=at2/2, 0<=t<=4 такова, что изменение входного параметра t на 1% приводит к изменению выходного параметра y на более, чем 2%, т.е. эта модель является чувствительной.
5.
Отметим основные причины, несколько тормозящие выход
В базовой пятерке: "система (исследуемая среда) - модель (описание среды) - алгоритм (программа) - компьютер (компьютерная технология) - пользователь (выработка решения)" при компьютерном моделировании главную роль играют уже алгоритм (программа), компьютер и технология, точнее, инструментальные системы для компьютера, компьютерные технологии.
Пример. При имитационном моделировании (при отсутствии строгого и формально записанного алгоритма) главную роль играют технология и средства моделирования; аналогичная ситуация наблюдается в когнитивной графике.
Модель не
Специфические операции
Основные функции компьютера при моделировании систем:
Можно говорить сейчас и о специальных пакетах прикладных программ, текстовых, графических и табличных процессоров, визуальных и когнитивных средах (особенно, работающих в режиме реального времени), позволяющих осуществлять
Информация (абстракция), реализуясь сообщениями реального мира, овеществляется в разных предметных процессах, а реализация на компьютере вызывает необходимость использования в компьютерах специальных формализованных описаний, представлений этих процессов.
Пример. Математическое и
Современное производство характерно тем, что часть производимой продукции (в стоимостном выражении) возвращается в виде инвестиций (т.е. части конечной продукции, используемой для создания основных фондов производства) в производство. При этом время возврата, ввода в оборот новых фондов может быть различным для различного рода производства. Необходимо промоделировать эту ситуацию и выявить динамику изменения величины основных фондов производства (капитала).
Сложность и многообразие, слабая структурированность и плохая формализуемость основных экономических механизмов, определяющих работу предприятий, не позволяют преобразовать
Рассмотрим одну такую простую модель социально-экономического процесса.
Динамика изменения величины капитала определяется в нашей модели, в основном, простыми процессами производства и описывается так называемыми обобщенными коэффициентами амортизации (расхода фондов) и потока инвестиций (часть конечного продукта, используемого в единицу времени для создания основных фондов). Эти коэффициенты - относительные величины (оцениваются за единицу времени). Необходимо разработать и исследовать модель динамики основных фондов. Считаем при этом допустимость определенных гипотез, определяющих систему производства.
Пусть x(t) - величина основных фондов (капитала) в момент времени t, где 0<=t<=N. Через промежуток времени $$\Delta t$$ она будет равна $$x(t+\Delta t)$$. Абсолютный прирост равен $$\Delta x=x(t+\Delta t)-x(t)$$. Относительный прирост будет равен $$\delta x=[x(t+\Delta t)-x(t)]/\Delta t$$.
Примем следующие гипотезы:
y(t) ;m, и при достаточно малом значении $$\Delta t$$, изменение основных фондов прямо пропорционально текущей величине капитала, т.е. dx=y(t) - mx(t).Считая $$\Delta t\to 0$$, а также учитывая определение производной, получим из предыдущего соотношения следующее математическое выражение закона изменения величины капитала - математическую модель (дифференциальное уравнение) динамики капитала:
x`(t) = y(t) - mx(t), x(0)=х0,
где х(0) - начальное значение капитала в момент времени t=0.
Эта простейшая модель не отражает важного факта: социально-экономические ресурсы производства таковы, что между выделением инвестиций и их введением и использованием в выпуске новой продукции проходит время (лаг). Учитывая это, можно записать модель в виде
x`(t) = y(t-T)-mx(t), x(0)=х0
Этой непрерывной, дифференциальной,
хi+1=хi +yj - mхi , x0=с, i=0, 1, 2, :, n, 0<j<n,
где n - предельное значение момента времени при моделировании.
x`(t) на относительное приращение (из определения производной, это справедливо при малых значениях $$\Delta t$$ ).
Возьмем для простоты режим моделирования, когда m, c - известны и постоянны, y - увеличивается на каждый следующий момент времени на 1%, а также рассмотрим наиболее простой алгоритм моделирования в укрупненных шагах.
с=х(0) - начальный капитал; n - конечное время моделирования; m - коэффициент амортизации; s - единица измерения времени; y - инвестиции.xi от i=1 до i=n по рекуррентной формуле, приведенной выше.j, 0<=j<=n, начиная с которого все хj, хj +1, :, хn постоянны или изменяются на малую допустимую величину $$\varepsilon >0$$.Алгоритм, записанный на учебном
алг Производство (арг вещ m, c, n, рез вещ таб х[1:366], лит p, q);
дано | производство с основными фондами, изменяющимися по закону:
| х[i+1]=х[i]+y-mx[i], x[0]=c, i=0, 1, 2, :, n, 0<j<n,
| t=i*h, h=1 - шаг по времени (день),
| i - текущий момент времени,
| m - коэффициент амортизации,
| х[0]=с - заданная начальная величина капитала,
| y - увеличиваемая на 1% каждый раз величина инвестиций
надо | промоделировать динамику основных фондов, т.е. выяснить:
| 1) чему они равны на момент времени n;
| 2) наступает ли гибель предприятия, т.е. обращается ли капитал
| (основные фонды) в нуль при некотором t, и найти это t;
| 3) наступает ли ситуация, когда капитал стабилизируется
нач | начало тела алгоритма
| описание типов переменных
цел i, | i - переменная цикла прогноза (текущее время)
j, | j - задаваемая величина лага
k, | k - момент гибели предприятия (если есть)
y | y - величина инвестиций, увеличиваемая по закону y:=1.01*y
ввод (m, n, c, y) | ввод исходных данных
p:='предприятие не гибнет' | задаем начальное значение s
q:='капитал не стационарен' | задаем начальное значение q
х[0]:=с | начальное значение капитала (не нулевое)
i:=0 | задаем начальный момент времени моделирования
нц пoка (i<=n) и (х[i]>0) | заголовок цикла прогноза капитала
| тело цикла прогноза капитала
х[i+1]=х[i]+y-mx[i] | вычисление прибыли в следующий момент
y:=1.01*y | и увеличиваем на 1% - для следующего момента
если х[i+1]<=0 | проверка гибели
то | если гибнет, - выполняется блок погибшего предприятия
p:="предприятие гибнет" | заменяем значение s
k:=i-1 | и фиксируем время гибели
нц для j от k до n | цикла вычисления всех
x[j]=0 | остальных, нулевых значений прибыли
кц | конец блок обработки погибшего предприятия
если х[i+1]=х[i] | проверка стационарности прибыли
то q:="капитал стационарен" | заменяем старое значение q
кц
кон.
Приведем программу на Паскале для имитационного моделирования (программа реализована для функции типа y=at+b, где a, b - коэффициенты потока инвестиций; структурированность и интерфейс программы "принесены в жертву" компактности, простоте и понятности программы).
PROGRAM MODFOND;
{Исходные данные находятся в файле in.dat текущего каталога}
{Результаты записываются в файл out.dat текущего каталога}
Uses
Crt, Graph, Textwin;
Type
Vector = Array[0..2000] of Real;
Mas = Array[0..2000] of LongInt;
Var
Time, Lag, t, dv, mv, i, yi, p :Integer;
tmax, tmin :LongInt;
a, b, m, X0, maxx, minx, aa, bb, cc, sx, tk :Real;
x :Vector;
ax, ay :Mas;
ch :Char;
f1, f2 :Text;
{-------------------------------------------------------------------------------------------}
Procedure InputKeyboard; { Ввод с клавиатуры }
Begin
OpenWindow(10,5,70,20,' Ввод данных ',14,4);
ClrScr; WriteLn;
WriteLn('Введите время Т прогнозирования системы:');
Repeat
Writeln('Для удобства построения графика введите Т не меньше 2');
Write('Т='); ReadLn(Time);
until Time>=2;
WriteLn('Введите лаг:');
Repeat
Write('Лаг должен быть строго меньше Т - '); ReadLn(Lag);
until Lag<Time;
WriteLn('Введите коэффициенты для вычисления потока инвестиций');
Write('Введите a>0: a= '); ReadLn(a);
Write('Введите b>0: b= '); ReadLn(b);
Repeat
Write('Введите коэффициент амортизации ( 0<M<1 ) - '); Readln(m);
until (m<1) and (m>0);
Write('Введите значение фондов в начальный момент - '); Readln(X0);
CloseWindow;
end;
{-------------------------------------------------------------------------------------------}
Procedure InputFile; { Ввод из файла }
Begin
Assign(f1,'in.dat'); Reset(f1); Readln(f1,time,lag,a,b,m,X0); Close(f1);
End;
{-------------------------------------------------------------------------------------------}
Procedure OutputFile; { Запись результата работы в файл }
Begin
Assign(f2,'out.dat'); Rewrite(f2);
WriteLn(f2,' Результаты моделирования:');
WriteLn(f2,'Значение фондов в заданное время Т = ',x[time]:4:2);
WriteLn(f2,'Максимальное значение фондов = ',maxx:4:2);
Write(f2,'Минимальное значение фондов = ',minx:4:2);
Close(f2);
End;
{------------------------------------------------------------------------------------------}
Procedure InputRnd; { Ввод случайными числами }
Begin
Randomize;
Repeat Time:=Random(90); until Time>=2;
Repeat Lag:=Random(80); until Lag<Time;
a:=Random(10); b:=Random(10); m:=Random; X0:=Random(200);
End;
{------------------------------------------------------------------------------------------}
Procedure OutputScreen; { Вывод данных на экран }
Begin
OpenWindow(10,5,70,20,' Вывод данных: ',4,3); WriteLn;
WriteLn(' Данный набор входных параметров:'); WriteLn;
WriteLn(' Время Т - ',time);
WriteLn(' Лаг - ',lag); WriteLn;
WriteLn('Коэффициенты потока инвестиций:'); WriteLn;
WriteLn(' a - ',a:4:2);
WriteLn(' b - ',b:4:2); WriteLn;
WriteLn('Эмпирический коэффициент амортизации - ',m:4:3);
Write('Состояние фондов в начальный момент - ',X0:4:2);
ReadKey; CloseWindow;
End;
{-------------------------------------------------------------------------------------------}
Procedure Worker; { Рабочая процедура }
Var
yt :real;
Begin
x[0]:=X0;
For t:=1 to Time do
Begin
If t<Lag+1 then yt:=0 else yt:=a*(t-1-Lag)+b; x[t]:=yt+(1-m)*x[t-1];
End;
maxx:=x[0]; minx:=x[0]; tmin:=0; tmax:=0;
For t:=1 to Time do
If x[t]>maxx
then begin maxx:=x[t]; tmax:=t; end
else if x[t]<minx then begin minx:=x[t]; tmin:=t; end;
OpenWindow(10,5,70,13,' Результат работы модели: ',14,7);
ClrScr; WriteLn;
WriteLn('Значение фондов в заданное время Т = ',x[time]:4:2);
If tmin<>0 then
WriteLn(' Величина фондов возрастает с ',tmin,' до ',tmax);
WriteLn(' Максимальное значение фондов = ',maxx:4:2);
Write(' Минимальное значение фондов = ',minx:4:2);
ReadKey; CloseWindow;
End;
{---------------------------------------------------------------------------------------------}
Procedure Mas_OX; { Масштабирование по оси ОХ }
Var
st :String;
Begin
p:=1; While Time>p*24 do inc(p);
For i:=1 to 24 do Begin Str(p*i,st); OutTextXY(65+20*i,420,st) End;
For t:=0 to Time do ax[t]:=70+round(20*t/p);
End;
{-------------------------------------------------------------------------------------------}
Procedure Mas_OY; { Масштабирование по оси ОУ }
Var
st :String;
k, r :Integer;
Begin
If maxx>16
then Begin
k:=1; While maxx>k*16 do inc(k);
For i:=1 to 16 do Begin Str(k*i,st);OutTextXY(35,407-20*i,st);End;
tk:=k;
End
else Begin
r:=1; While (maxx<=16/r) and (r<16) do inc®; dec®;
For i:=1 to (trunc(16/r-0.1)+1) do
Begin
Str(i,st);
OutTextXY(35,407-0*r*i,st)
End;
tk:=1/r;
End;
For t:=0 to Time do ay[t]:=410-round(20*x[t]/tk);
End;
{----------------------------------------------------------------------------------------------}
Procedure Ipol(x1,y1,x2,y2,x3,y3:Real); {Процедура интерполяции}
Var d1, da, db, dc :Real;
Begin
d1:=x1*x1*(x2-x3)+x2*x2*(x3-x1)+x3*x3*(x1-x2);
da:=y1*(x2-x3)+y2*(x3-x1)+y3*(x1-x2);
db:=x1*x1*(y2-y3)+x2*x2*(y3-y1)+x3*x3*(y1-y2);
dc:=x1*x1*(x2*y3-y2*x3)+x2*x2*(x3*y1-y3*x1)+x3*x3*(x1*y2-y1*x2);
aa:=da/d1; bb:=db/d1; cc:=dc/d1;
End;
{--------------------------------------------------------------------------------------------}
Procedure Graf; { Построение графика }
Begin
dv:=detect; InitGraph(dv,mv,''); SetBkColor(7); SetColor(6);
Rectangle(30,40,600,450);
Line(600,60,620,60); Line(620,60,620,470);
Line(50,450,50,470); Line(50,470,620,470);
SetFillStyle(1,1); FloodFill(610,450,6);
SetFillStyle(1,15); FloodFill(100,100,6);
SetColor(5); Circle(70,410,2);
Line(70,410,70,50); Line(70,410,590,410); { оси ОХ и ОУ }
OutTextXY(587,407,'>'); OutTextXY(67,47,'^'); OutTextXY(57,415,'0');
OutTextXY(80,45,'X(T) - (Величина основных фондов производства)');
OutTextXY(590,415,'T'); OutTextXY(540,430,'(Время)'); SetColor(2);
For i:=1 to 16 do Line(67,70+20*i,70,70+20*i);
For i:=1 to 24 do Line(70+20*i,410,70+20*i,413);
Mas_OX; Mas_OY;
For t:=0 to time do Вegin
SetColor(Blue); Circle(ax[t],ay[t],2);
SetFillStyle(SolidFill,Red); FloodFill(ax[t],ay[t],Blue);
End;
SetColor(Red); SetLineStyle(3,1,1);
Line(70,ay[time],ax[time],ay[time]); Line(ax[time],ay[time],ax[time],410);
Ipol(0,x[0],1,x[1],2,x[2]);
For i:=ax[0] to ax[2] do Begin
sx:=p*(i-70)/20;
yi:=410-round(20*(aa*sx*sx+bb*sx+cc)/tk);
SetColor(Red); Circle(i,yi,1);
End;
For t:=1 to Time-2 do Begin
Ipol(t,x[t],t+1,x[t+1],t+2,x[t+2]);
For i:=ax[t+1] to ax[t+2]do
Begin
sx:=p*(i-70)/20;
yi:=410-round(20*(aa*sx*sx+bb*sx+cc)/tk);
SetColor(Red); Circle(i,yi,1);
End;
End;
ReadKey; CloseGraph;
End;
{-------------------------------------------------------------------------------------------}
Begin
While true do
Begin
ClrScr; TextBackGround(2); Window(1,1,80,25); ClrScr;
OpenWindow(30,22,50,24,' Нажмите клавишу: ',4,1);
OpenWindow(5,5,75,16,' Динамика фондов производства ',14,5);
ClrScr; WriteLn;
WriteLn(' Пусть х(t) - основные фонды в момент времени t, y(t) -');
WriteLn(' инвестиции, m - коэффициент амортизации фондов.');
WriteLn(' Модель динамики основных фондов (L - лаг):');
Write(' x`(t) = y(t-L) - mx(t), где х(0) = Хо, y(t)=at+b, ( a,b>0 ).');
ReadKey; CloseWindow;
OpenWindow(15,10,65,17,' Выбирите вариант входа-выхода: ',15,0);
ClrScr; WriteLn;
WriteLn(' С клавиатуры - <1>');
WriteLn(' Из файла - <2>');
WriteLn(' Случайными числами - <3>');
WriteLn(' Выход - <Esc>');
ch:=ReadKey;
Сase ch of
#49: InputKeyboard;
#50: Вegin InputFile; OutputScreen; Еnd;
#51: Вegin InputRnd; OutputScreen; End;
#27: Halt(1);
End;
CloseWindow; Worker; OutputFile;
OpenWindow(22,10,58,14,'',15,5);
ClrScr; WriteLn;
Write('Для просмотра графика нажмите ввод'); ch:=ReadKey;
If ch=#13 then begin Graf; RestoreCrtMode; end;
CloseWindow; TextBackGround(15); Window(1,1,80,25);
ClrScr; OpenWindow(15,10,65,16,'',15,6); ClrScr; WriteLn;
WriteLn(' Хотите еще моделировать ?'); WriteLn;
WriteLn('Для выхода нажмите - < Esc >');
WriteLn('Для продолжения нажмите любую другую клавишу');
ch:=ReadKey;
If ch=#27 then Halt(1);
CloseWindow;
End;
ClrScr; TextBackGround(0);
End.
Эксперимент 1. Поток инвестиций - постоянный и в каждый момент времени равен 10000. В начальный момент капитал - 1000000 руб. Коэффициент амортизации - 0,0025. Найти величину основных фондов через 20 суток, если лаг равен 5 суток.
Эксперимент 2. Основные фонды в момент времени t=0 была равны 5000. Через какое время общая их сумма превысит 120000 руб., если поток инвестиций постоянный и равен 200, а m=0,02, T=3?
Эксперимент 3. Какую стратегию инвестиций лучше использовать, если величина инвестиций постоянная, в начальный момент капитал равен 100000, величина амортизации постоянная?
Модификация 1. Коэффициент амортизации можно взять в форме m=r-sx(t), где r - коэфициент обновления фондов, s - коэффициент устаревания фондов, причем 0<=r, s<=1. При этом модель примет вид
x`(t)=y(t-T)-rx(t)+sx2(t), x(0)=х0
Этой непрерывной, дифференциальной,
хi+1=хi +yj - rхi+sxi 2 ,
x0=с, i=0, 1, 2, :, n, 0<j<n,
где n - предельное значение момента времени при моделировании. Поставить цели и исследовать непрерывную и
Модификация 2. Одна из моделей математической экономики задается уравнением: dz/dt=((1-c)*z(t)+k(t-w)+a)l, где z(t ) - функция, которая характеризует выпуск продукции, k - коэффициент капиталовложений, a - независимые расходы производства, l - скорость реакции выпуска на капиталовложения, c - постоянная спроса, w -
Модификация 3. Для модели динамики фондов с переменным законом потока инвестиций: а) построить гипотезы, модель и алгоритм для моделирования; б) сформулировать планы
Пример. Компьютерной (физической) моделью может служить простая модель броуновского движения, получаемая генерацией компьютером нового случайного положения точки на экране и траектории ее движения; при этом отметим, что сам "датчик случайных чисел компьютера (или языка)" - это
По приведенным ниже моделям: выписать соответствующую
хi вещества в реке зависит только от расстояния i, i=0,1,:, n по течению реки и определяется по формуле: ab(xi+1-2xi+xi+1)-c(xi-xi-1)-daxi=0, где а - площадь поперечного сечения реки, b - коэффициент рассеивания по течению реки, с - полный объемный расход реки, d - скорость разложения органического вещества. Эти величины a, b, c, d считаются пока постоянными. Общий поток вещества определяется: N=cxi-ab(xi+1-xi). Цель моделирования - прогноз загрязнения реки (для каждого i ).x(t) - величина ресурса (вещественного, энергетического или информационного), а(х) - скорость его возобновления, у(t) - величина потребителя (плотность), b=b(x,y) - скорость потребления ресурса потребителем, причем эксперименты показывают, что часто b=b(x). При этих условиях модель баланса ресурса имеет вид: x'(t)=a-by(t), x(0)=m, y'(t)=cby(t)-dy(t), y(0)=n, где с - к.п.д. переработки ресурса для нужд потребителя (например, в биомассу потребителя), d - коэффициент естественной убыли потребителя. Функция b=b(x), обладающая свойствами: а) b(x) - монотонна, т.е. растет или убывает, b'(x)>0 или b'(x)<0; б) b(0)=0 (в начальный момент трофическая функция равна нулю); в) b(x) - ограничена (т.е. скорость потребления ресурса ограничена) называется трофической функцией потребителя. Если а=0 - ресурс не возобновляем, иначе - возобновляем с постоянной скоростью а. Рассмотреть социально-экономическую интерпретацию одной модели. Цель моделирования: а) прогноз потребления; б) прогноз переработки; в) Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.