Исследование некоторых средних характеристик стохастических моделей тема диссертации и автореферата по ВАК РФ 05.13.18, кандидат физико-математических наук Сатин, Яков Александрович

  • Сатин, Яков Александрович
  • кандидат физико-математических науккандидат физико-математических наук
  • 2007, Вологда
  • Специальность ВАК РФ05.13.18
  • Количество страниц 130
Сатин, Яков Александрович. Исследование некоторых средних характеристик стохастических моделей: дис. кандидат физико-математических наук: 05.13.18 - Математическое моделирование, численные методы и комплексы программ. Вологда. 2007. 130 с.

Оглавление диссертации кандидат физико-математических наук Сатин, Яков Александрович

Введение

1 Основные понятия

1.1 Дифференциальные уравнения в банаховом пространстве.И

1.2 Одномерный ПРГ.

1.3 Общий процесс типа рождения и гибели.

1.4 Логарифмическая норма оператора.

1.5 Свойства подпространств в 1\.

2 Процессы рождения и гибели с периодическими ин-тенсивностями

2.1 Бесконечный ПРГ с 1-периодическими интенсивностями

2.2 Конечный ПРГ с 1-периодическими интенсивностями

2.3 Бесконечный ПРГ с интенсивностями, близкими к периодическим

3 Процессы типа рождения и гибели

3.1 ОПТРГ с 1-периодическими интенсивностями.

3.2 Асимптотически эквивалентные ПРГ.

3.3 Процессы, близкие к вырождающимся.

4 Описание моделей

4.1 Использование ПРГ в теории массового обслуживания

4.1.1 Применения к телефонии.

4.1.2 Применение к обслуживанию машин.

4.1.3 Общая схема.

5 Вычисление предельных средних

5.1 Система с неограниченным числом мест ожидания

5.2 Система с ограниченным числом мест ожидания

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

5.4 Простейшие модели эпидемий.

Рекомендованный список диссертаций по специальности «Математическое моделирование, численные методы и комплексы программ», 05.13.18 шифр ВАК

Введение диссертации (часть автореферата) на тему «Исследование некоторых средних характеристик стохастических моделей»

Актуальность темы.

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

Первоначально такого рода задачи возникли из требований телефонного дела, физики и рациональной организации массового обслуживания (билетные кассы, магазины и прочее) в начале предыдущего столетия. Первые исследования по этой тематике были приведены в работах А. К. Эрланга. Основные его исследования в этой области относятся к 1908-1922 годам. С того времени интерес к проблемам, выдвинутым Эрлангом, значительно возрос. Оказалось, что подобные задачи возникают в самых разнообразных направлениях исследований: в естествознании, в технике, экономике, транспорте, военном деле, организации производства и многих других. Для решения проблем такого рода примерно в 50-х годах двадцатого века была создана так называемая теория массового обслуживания (англоязычный термин - теория очередей), являющаяся с тех пор активно развивающимся разделом прикладной теории вероятностей.

В числе математиков, заложивших основы теории и приложений этой области и сформировавших ее современный облик (в части, близкой к тематике настоящего исследования), следует отметить Р. JI. Добрушина, Б. В. Гнеденко, В. В. Калашникова, И. П. Макарова, А. И. Зейфмана, Н. В. Карташова, В. В. Анисимова, Е. Van Doorn'a, W.Whitt'a и многих других.

Наиболее распространенной из моделей, описывающих реальные системы массового обслуживания, является так называемый процесс рождения и гибели - это частный случай марковского процесса с непрерывным временем и не более чем счетным числом состояний, в котором за малый промежуток времени реальны только изменения текущего состояния не более чем на единицу. Вероятности состояний процесса рождения и гибели (далее ПРГ) описываются (всюду в дальнейшем это предполагается выполненным) так называемой прямой системой Колмогорова - системой линейных дифференциальных уравнений специального вида. В первоначальных исследованиях предполагаюсь, что модели массового обслуживания описываются стационарными ПРГ (это означает, что соответствующая система Колмогорова имеет постоянную матрицу коэффициентов, которые называются интенсивностями переходов), с содержательной точки зрения такая ситуация соответствует тому, что "интенсивности" поступления и обслуживания требований в систему не зависят от времени. Понятно, что такое предположение достаточно далеко от реальности. В связи с этим, начиная с 70-х годов прошлого века (см. [7]), начались исследования нестационарных моделей теории массового обслуживания. Таким моделям соответствуют системы линейных дифференциальных уравнений с переменной матрицей интенсивностей. Основными задачами для стационарных моделей являлись построение предельных (так называемых стационарных) вероятностей состояний, оценка скорости сходимости к ним, построение различных вероятностных характеристик исследуемых моделей (в частности, математического ожидания числа требований в системе). Понятно, что точное решение таких задач для нестационарных систем в общей ситуации невозможно. Поэтому в настоящей работе вводятся два важных и очень полезных для теории массового обслуживания понятия, связанных с математическим ожиданием - так называемые предельное среднее и двойное среднее. Для изучаемых классов моделей удается доказать существование этих характеристик, оценить скорость сходимости к ним, указать методику приближенного их построения и соответствующие оценки.

Такого же рода задачи рассматриваются в работе и для более широкого класса марковских процессов - так называемых общих процессов типа рождения и гибели (ОПТРГ). ОПТРГ - это частный случай марковского процесса с непрерывным временем и конечным или счетным числом состояний, в котором имеются несколько типов "частиц", и ненулевыми предполагаются "интенсивности" изменения количества "частиц" одного типа не более чем на единицу, либо переход "частицы" из одного типа в другой. ОПТРГ являются реалистическими моделями в химии, иммунологии, физике. Стационарные процессы такого вида исследовались, например, в [4],[39],[32],[53],[8], [23],[34]. Матрица интенсивностей ОПТРГ имеет существенно более сложную структуру, поэтому построение предельных характеристик даже в стационарной ситуации представляет собой не слишком простую задачу. Тем более важной и интересной для изучения соответствующих моделей представляется нестационарная ситуация, исследуемая в настоящей работе.

Цель работы.

Доказать существование, получить оценки, указать методику вычисления так называемых предельного среднего и двойного среднего для ПРГ и ОПТРГ с конечным и счетным числом состояний. Рассмотреть применение разработанных методов для конкретных классов моделей, в основном из теории массового обслуживания.

Методика исследования.

В работе исследуется прямая система Колмогорова, имеющая вид: пт

Я = АЦ)х, (0.0.1) где х({) - вектор-столбец вероятностей состояний описываемого процесса, а - матрица специального вида.

В основном рассматривается случай счетного пространства состояний процесса, которому соответствует счетная система (0.0.1), отождествляемая с дифференциальным уравнением в пространстве последовательностей 1\. Для исследования решений этой системы приходится опираться в основном на методы и понятия, разработанные в книге [9]. Эти методы с небольшими модификациями, как правило, применимы и для рассматриваемых задач. При этом исследуются решения системы (0.0.1), лежащие в множестве стохастических векторов П, то есть в множестве векторов с неотрицательными координатами и единичной /1-нормой.

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

В случае ПРГ сначала доказывается существование предельного среднего и получается его оценка с использованием логарифмической нормы оператора и перенормировок, предложенных в работах [38],[43],[54], [56],[57]. Затем рассматривается возможность аппроксимации процессом с меньшим числом состояний (то есть конечными системами вида (0.0.1) меньшей конечной размерности) и получаются оценки такой аппроксимации. В качестве окончательного результата получаются оценки для предельного среднего и двойного среднего, и кроме того, разработана методика их численного построения.

В случае ОПТРГ используются дифференциальные неравенства для доказательства асимптотической устойчивости системы (0.0.1) на множестве 0 в случае большой, но конечной размерности Далее исследование проводится по той же схеме.

Основные результаты, имеющиеся по данной проблеме.

При исследовании рассматриваемых систем прямое исследование системы (0.0.1) на асимптотическую устойчивость не представляется возможным, поскольку норма от оператора Коши равна 1.

Поэтому при изучении ПРГ применяются методы, аналогичные введенным в работах [38], [43],[54],[56],[57]. Обычно в этом случае решение задачи сводится к вопросу существования особой последовательности выполнении ряда условий и переходу к другому (вспомогательному) пространству последовательностей.

В случаях ОПТРГ используются методы, связанные с дифференциальными неравенствами, см, [54],[15], [59].

Проблемы аппроксимации нестационарных моделей обслуживания в других ситуациях рассматриваются в работах [48], [38], [49].

Содержание работы.

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

Диссертация состоит из пяти глав, разбитых на параграфы.

Похожие диссертационные работы по специальности «Математическое моделирование, численные методы и комплексы программ», 05.13.18 шифр ВАК

Заключение диссертации по теме «Математическое моделирование, численные методы и комплексы программ», Сатин, Яков Александрович

Выход

Основные модули программы находятся в ипкЗ.рав, пех1сЦ£раз, эит.раз. Только их содержимое приводится.

Unit3.pas unit Unit3;

Коши, координаты, график, средняя, решение дифура, fresultdi furlntegral S impson, countsrednee interface

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids,nextdif,summ, ExtDlgs, ComCtrls; const bordx=50; bordy=50; strL=10; strW=5; colorconst=0; by=10; type

TForm3 = class(TForm) Button 1: TButton; Button2: TButton; GroupBoxl: TGroupBox; Image l:TImage; Panel l:TPanel; sg: TStringGrid; Edit2: TEdit; Edit3: TEdit; Label2: TLabel; Label3: TLabel; Button3: TButton; Panel2: TPanel; Label4: TLabel; Labels: TLabel; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Label6: TLabel; Edit7: TEdit; Label7: TLabel; Button5: TButton; Button6: TButton; Button7: TButton; Koshi: TStringGrid;

Button8: TButton; spd: TSavePictureDialog; Button9: TButton; opend: TOpenDialog; LabeI8: TLabel; Edit8: TEdit; Label9: TLabel; Edit9: TEdit; ButtonlO: TButton; Label 1: TLabel; Editl: TEdit; Buttonll: TButton; od: TOpenDialog; Buttonl3: TButton; Edit 12: TEdit; Label 10: TLabel; CheckBoxl: TCheckBox; procedure ButtonlClick(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button9Click(Sender: TObject); procedure ButtonlOClick(Sender: TObject); procedure ButtonllClick(Sender: TObject); procedure Button 13Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CheckBoxlClick(Sender: TObject); private {Private declarations} fr: integer; procedure SetR(dat:integer); public firstvector,nilvector:typarr; property CountR: integer read fr write SetR; procedure fresultdifurIntegralSimpson(var temp,srednee:typarr); procedure graphicShow(bt:extended;arr:typanr); procedure init;

Procedure show;

Procedure show2; procedure SetCoord(max,min,period,maxy,miny:extended); function countsrednee (var srednee:typarr;n,r:integer):extended; {Public declarations} end; var

Form3: TForm3; implementation uses NewDifur, Unit2, Unit5; {$R *.dfm} procedure TForm3.ButtonlClick(Sender: TObject); begin close; end; procedure TForm3.Button2Click(Sender: TObject); begin form 1.close; end; procedure Tform3.SetR(dat:integer); var k:integer; begin fr:=dat; sg.RowCount:=dat+l; for k:= 1 to dat do sg.Cells[0,k] :=inttostr(k); Koshi.RowCount:=dat+l; Koshi .ColCount :=dat+1; end;

Procedure TForm3.show; var temp,srednee:typarr; k,kk:integer; tmp:extended; max,min,mx,my,mx,my:extended; procedure genEi(i:integer;var tmp:typarr); begin tmp:=nilvector; tmp[i]:=l; srednee:=nilvector; end; begin for kk:-l to n size do nilvector[kk]:=0; for k:=l to strtoint(form 1.edit 1.text) do begin genEi(k,temp); {в arr заносится ek, зануляется srednee} fresultdifurIntegralSimpson(temp,srednee); for kk:=l to strtoint(forml.edit 1.text) do

Koshi.CeUs[k,kk]:=floattostr(temp[kk]); {сохраняется u(kk,k)} используя srednee можно получить \int(bt)A(et) u(kk,k) (s)ds} end; max:=0; for kk:=l to strtoint(form 1.edit 1.text) do begin min:=l; for tostrtoint(forml.editl.text)do begin tmp:=strtofloat(Koshi.Cells[k,kk]); if tmp<min then begin min:=tmp; mx:=k;my:=kk; end; end; if min>max then begin max:=min; mx:=mx; my:=my; end; end; edit8.text:=floattostr(mx)+'' + floattostr(my)+'' + floattostr(max); end;

Procedure TForm3.show2; var temp,srednee:typarr; kk:integer; et,bt,tmp:extended; begin temp:=firstvector; fresultdifurIntegralSimpson(temp,srednee); bj:=strtofloat(edit4.text); et:- strtofloat(edit5.text); form5.Memol .Lines.Clear; for kk:=l to strtoint(edit9.Text) do begin tmp:=countsrednee(srednee,strtoint(edit9.Text),kk); form5.Memo 1 .Lines. Add(floattostr(tmp/(et-bt))); end; end; procedure Tform3.fresultdifurIntegralSimpson (var temp,srednee:typarr); var bt,et,h:extended; n:integer; begin bt:=strtofloat(edit4.text); et:= strtofloat(edit5.text); h:= strtofloat(edit6.text); n:=strtoint(forml .editl .text); initKl; resultdifurNOTsrednee(0,bt,h,n,temp); resultdifurIntegralSimpson(bt,et,h,n,temp,srednee); end; procedure Tform3.init; var x,y:integer; begin forx:=l to form2.sg.RowCount-l do for y:=l to form2.sg.RowCount-1 do begin arrKoef[x,y]:=dat.Create(form2.sg.Cells[x,y]); end; end; procedure TForm3.SetCoord(max,min,period,maxy,miny:extended); var k,t,TMP,tmp2,tmpp:integer; step:extended; st: string; begin image 1 .Canvas.font.name:-arial'; tmp:=imagel .Canvas.Pen.Color; image 1 .Canvas.Pen.Color:=colorconst; t:=10; for k:=0 to t do begin image 1 .Canvas.TextOut(0, round(imagel.Height-bordy-k/10*(imagel.Height-2*bordy)), floattostr(miny+k/t*(maxy-minY))); image 1 .Canvas.MoveTo(bordx, round(imagel .Height-bordy-k/10*(imagel .Height-2*bordy))); imagel .Canvas.LineTo(imagel .width-bordx, round(imagel. Height-bordy-k/10* ( image 1 .Height-2* bordy))); end; step:=min; if max>0 then while step<=max do begin imagel.Canvas.MoveTo(bordx+round(step*(imagel.Width-2*bordx)/(max-min))-round(min* (image 1. Width-2 * bordx)/(max-min)), bordy); imagel.Canvas.LineTo(bordx+round(step*(imagel.Width-2*bordx)/(max-min))-round(min*(imagel.Width-2*bordx)/(max-min)), round(imagel .Height-bordy)); imagel.Canvas.TextOut(bordx+round(step*(imagel. Width-2*bordx)/(max-min))-round(min* (image 1 .Width-2*bordx)/(max-min))imagel.Canvas.TextWidth(floattostr(step)) div 2, round(imagel.Height-bordy)+by,floattostr(step)); step:=step+period; end; imagel.Canvas.TextOut((imagel.Width-imagel.Canvas.TextWidth(editl2.text)) div 2, imagel.Height-bordy div 2,editl2.text); imagel.Canvas.MoveTo(bordx,imagel.Height-bordy); image 1 .Canvas.LineTo(bordx,bordy div 2); for k:= -strW div 2 to strW div 2 do begin image l.Canvas.MoveTo(bordx,bordy div 2); image l.Canvas.LineTo(bordx+k,bordy div 2 + strL); end; st:=imagel .Canvas.font.name; imagel.Canvas.font.name:- Symbol'; tmpp:=imagel.Canvas.TextWidth('j')*5 div4; image l.Canvas.TextC)ut(0,bordy div 2,'j'); image 1 .Canvas.font.name:=st; if strtoint(edit9.Text)> 1 then begin tmp2:=image 1 .Canvas.font.Size; imagel .Canvas.font.Size:=imagel .Canvas.font.Size-3; imagel.Canvas.TextOut(tmp,bordy div 2 + 3*imagel.Canvas.font.Size div 2 +2,editl.Text); tmpp:=tmpp+image 1 .Canvas.TextWidth(edit 1 .Text); imagel .Canvas.font.Size:=tmp2; end; image l.Canvas.TextOut(tmpp,bordy div 2,'(t)'); imagel. Canvas.MoveTo(bordx, imagel. Height-bordy); imagel.Canvas.LineTo(imagel. Width- bordx div 2,imagel.Height-bordy); for k:= -strW div 2 to strW div 2 do begin imagel.Canvas.MoveTo(imagel.Width- bordx div 2,imagel.Height-bordy); imagel.Canvas.LineTo(imagel.Width- bordx div 2 - StrL,image 1.Height-bordy -k); end; imagel.Canvas.TextOut(imagel.Width- bordx div 2,imagel.Height-bordy,'t'); image 1 .Canvas.Pen.Color:=tmp; end; procedure TForm3.Button3Click(Sender: TObject); var arr:typarr; begin if strtoint(edit9.Text)— 1 then arrC:=arrCl else arrc:=arrC2; if strtoint(edit9.Text)=l then funct:=functl else funct:=funct2; arr:=firstvector; graphicShow(0,arr); end; procedure TForm3.graphicShow(bt:extended;arr:typarr); var h,endt,res,maxY,minY,begint:extended; n:integer; tttt,pp,pp2:integer; FirstBegt:extended; procedure Setline 1 (x,y,max:extended); begin image 1 .Canvas.LineTo(round(bordx+x/max*(imagel .width-2*bordx)), round(image 1. Height+minY * (image 1 .Height-2 *bordy)/(Max Y-min Y)-(bordy+y*(image 1 .Height-2*bordy)/(Max Y-min Y)))); inc(tttt); end; begin tttt:=0; begint:=strtofloat(edit4.text); endt:=strtofloat(edit5 .text); h:=strtofloat(edit6.text); n:=strtoint(forml .editl .text); pp:=strtoint(editl .Text); pp2 :-strtoint(edit9 .Text); maxY.-strtofloat(edit2.text); minY:=strtofloat(edit3 .text);

SetCoord(endt,begint,strtofloat(edit7.text),maxY,minY); FirstBegt:=begint; resultdifurNotSrednee(bt,begint,h,n,arr); res:=countsrednee(arr,pp2,pp); image 1 .Canvas.MoveTo(round(bordx), round(imagel .Height+minY* (image 1 .Height-2* bordy)/(Max Y-min Y)-(bordy+res*(imagel.Height-2*bordy)/(MaxY-minY)))); while begint<endt do begin resultdifurNotSrednee(begint,begint+h,h,n,arr); res:=countsrednee(arr,pp2,pp); {OpncaHHe Setline(x,y,max)} Setline 1 (begint-FirstBegt,res,endt-FirstBegt); //image 1.Refresh; begint:=begint+h; end; end; procedure TForm3.Button7Click(Sender: TObject); begin

Koshi.Visible:=notKoshi.Visible; imagel .Visible:=not imagel .Visible; end; procedure TForm3.Button8Click(Sender: TObject); begin if strtoint(edit9.Text)=l then arrC:=arrCl else arrc:=arrC2; if strtoint(edit9.Text)=l then funct:=functl else funct:=funct2; show end; procedure TForm3.Button6Click(Sender: TObject); begin if spd.Execute then imagel. Picture.SaveToFile(spd.FileName); end; procedure TForm3.Button5Click(Sender: TObject); begin image 1 .Canvas.brush.Color :=image 1 .Picture.bitmap.TransparentColor; imagel .Canvas.FillRect(imagel .ClientRect); end; procedure TForm3.Button9Click(Sender: TObject); var k,kk:integer; i:textfile; begin if opend.Execute then begin

AssignFile(i, opend.FileName); rewrite(i); for k:= 1 to Koshi.colcount do begin forkk:= 1 to Koshi.colcount do write(i,Koshi.Cells[k,kk]:25); writeln(i); end; closefile(i); end end; procedure TForm3.ButtonlOClick(Sender: TObject); begin form5. ShowModal; end; function TForm3.countjsrednee (var srednee:typarr;n,r:integer):extended; var tmp,tmp2:extended;mt,k,k 1 ,k2,k3,count,kk:integer; begin count:=strtoint(forml .Edit 1 .Text); tmp:=0; case n of 1: for k:=l to count do tmp:=tmp+srednee[k] * (k-1);

2: case r of 1: for k:=0 to round(sqrt(count))-l do begin tmp2:=0; for kk:=0 to round(sqrt(count))-l do tmp2:=tmp2+srednee[kk+k*round(sqrt(count))+l]; tmp:=tmp+tmp2*k; end; for k:=0 to round(sqrt(count))-l do begin tmp2:=0; for kk:=0 to round(sqrt(count))-l do tmp2 :=tmp2+srednee[k+kk *round(sqrt(count))+1 ]; tmp:=tmp+tmp2*k; end; end; 3: begin mt:=count; for kl:=l to count do if (kl*kl*kl=count) then mt:=kl; case r of 1:

1,10,19,20-дно forkl:=0to mt-1 do begin tmp2:=0; fork2:=0to mt-1 do for k3:=0 to mt-1 do tmp2:=tmp2+srednee[k2+kl *mt+k3*mt*mt+l ]; tmp:=tmp+tmp2*kl; end;

2:

1,2,3,4 -дно for kl:=0 to mt-1 do begin tmp2:=0; for k2:=0 to mt-1 do for k3:=0 to mt-1 do tmp2 :=tmp2+srednee [k2+k3 *mt+k 1 *mt*mt+l ]; tmp:=tmp+tmp2*kl; end;

3:

1,4,7,10,13 -дно forkl:=Otomt-l do begin tmp2:=0; for k2:=0 to mt-1 do for k3:=0 to mt-1 do tmp2:=tmp2+srednee[kl+k2*mt+k3*mt*mt+l]; tmp:=tmp+tmp2*k 1; end; end; end; end; countsrednee:=tmp; end; procedure TForm3.Buttonl lCIick(Sender: TObject); begin if strtoint(edit9.Text)=l then arrC:=arrCl else arrc:=arrC2; if strtoint(edit9.Text)=l then funct:=functl else funct:=funct2; show2; end; procedure TForm3.Buttonl3Click(Sender: TObject); var temp,srednee:typarr; k,kk,n:integer; et,bt,h: extended; procedure genEi(i:integer;var tmp:typarr); begin tmp:=nilvector; tmp[i]:=l; end; begin forkk:=l ton size do nilvector[kk]:=0; temp:=firstvector; initKl; if strtoint(edit9.Text)=l then arrC:=arrCl else arrc:=arrC2; if strtoint(edit9.Text)=l then funct^functl else funct:=funct2; bt:= strtofloat(edit4.text); et:= strtofloat(edit5.text); n:=strtoint(forml .edit 1 .text); h:=strtofloat(edit6.text); resultdifurNOTsrednee(0,bt,h,n,temp); resultdifurIntegralSimpson(bt,et,h,n,temp,srednee); for k:=l to strtoint(forml.edit 1.text) do begin if et>bt then sg.Cells[l,k]:=floattostr(srednee[k]/(eJ-bt)) else sg.Cells[l,k]:='error'; sg.Cells[2,k]:=floattostr(temp[k]); end; end; procedure TForm3.FormCreate(Sender: TObject); begin sg.Cells[2)0]:='PeineHHe ¿m4>ypa'; if checkbox 1.Checked then funct:=functl else funct:=funct2; if checkbox 1.Checked then arrC:=arrCl else arrC:=arrC2; end; procedure TForm3.CheckBoxlClick(Sender: TObject); begin if (Sender as tcheckbox).Checked then funct:=functl else fiinct:=funct2; if (Sender as tcheckbox).Checked then arrC:=arrCl else arrC:=arrC2; end; end. nextdif.pas

Рассматривается система dp/dt=A(t)p(t). Вектор р содержится в массивах типа typarr.

Масивы передаютя в процедуру как параметры - переменные для ускорения вычислений. Тип dat описывается в модуле summ. Позволяет ускорить вычисления. Используются формулы "Классического" метода Рунге Кутты.

Перед использованием продедур данного модуля, необходимо быть уверенным, что funct присвоено funct 1 или funct2. } unit nextdif; interface uses summ,Math; const nsize= 1500; type typarr=array [l.nsize] of extended; var, kl,tmpkl:array[l.nsize,-1.4] of extended; // содержит коэффициенты. arrKoef:array[l.nsize,l.nsize] of dat; // содержит A(t); тип dat описывается в модуле summ; arrKoefcont:array[ 1 .nsize,l ,.nsize] of extended; funct: function (k,n,koef:integer;t:extended;var arr:array of extended;c:integer):extended; arrC:procedure (t:extended; n:integer); procedure resultdifurN OTsrednee(begt,maxt,h : extended ;n : word ; var arnarray of extended); procedure resultdifurIntegralSimpson(begt,maxt,h:extended;n:word; var arr:array of extended;var srednee:array of extended); function funct l(k,n,koef:integer;t:extended;var arnarray of extended;c:integer) -.extended; function funct2(k,n,koef:integer;t:extended;var arr:array of extended;c:integer):extended; procedure arrCl(t:extended; n:integer); procedure arrC2 (trextended; n:integer); procedure initKl; implementation procedure initKl; var y:integer; begin for y:=l to nsize do kl[y,-0]:=0; end; function functl(k,n,koef:integer;t:extended;var arrrarray of extended;c:integer):extended; var temp2,temp:extended; kk:integer; { учитываются только элементы стоящие на главной диагонали и на двух рядом стоящих диагоналях } begin temp2::=0; for kk:= max(l,k-l) to min(k+l,n) do temp2:=temp2+arrKoefcont[k,kk]; // <суммаэлементов в столбце> temp:=-temp2*(arr[k-1 ]+kl [k,koef]/c); for kk:= max(l,k-l) to min(k+l,n) do temp:=temp+arrKoefcont[kk,k] *(arr[kk-l ]+kl [kk,koef]/c); functl:=temp; end; function funct2(k,n,koef:integer;t:extended;var arr:array of extended;c:integer):extended; var temp2,temp:extended; kk:integer; begin temp2:=0; for kk:= 1 to n do temp2:=temp2+arrKoefcont[k,kk]; // <сумма элементов в столбце> temp:=-temp2*(arr[k-l ]+kl [k,koef]/c); for kk:= 1 to n do temp:=temp+arrKoefcont[kk,k]*(arr[kk- l]+kl [kk,koef]/c); funct2:=temp; end; procedure arrC 1 (t:extended;n:integer); var xrinteger; begin forx:=l to n-1 do begin arrKoefcont[x,x+1]:= arrKoef[x,x+1 ] .result(t); arrKoefcont[x+l ,x] := arrKoef[x+l ,x].result(t); end end; procedure arrC2(t:extended;n:integer); var x,y:integer; begin for x:=l to n do for y:=l to n do arrKoefcont[x,y] := arrKoef]x,y] .result(t); end; procedure next(n:word;t,h:extended;var arr:array of extended; var arr2:array of extended);

Нахождение p(t+h) (результат заносится в arr2) используя p(t) (из arr) методом Рунге-Кутта 4 порядка h - шаг. n- число уравнений в системе

Перед использованием необходимо обнулить kl[r,0] (если отличны от 0), где г изменяется от 1 до п. Можно для этого использовать initKl. Использование указателей на типизированные массивы может привести к однократному вызову аггС (вместо трех, что есть сейчас), что ускорит вычисления (используя особенности работы с шагом) var k:word; begin arrC(t,n); for k:=l to n do kl [k, 1 ]:=h*funct(k,n,0,t,arr, 1); arrC(t+h*0.5,n); for k:=l to n do kl [k,2]:=h*funct(k,n, 1 ,t+h*0.5,arr,2); arrC(t+h*0.5,n); for k:=l to n do kl[k,3]:=h*funct(k,n,2,t+h*0.5,arr,2); arrC(t+h,n); for k:=l to n do kl [k,4]:=h*funct(k,n,3 ,t+h,arr, 1); for k:=l to n do arr2[k-l]:=arr[k-l]+(kl[k,l]+2*(kl[k,2]+kl[k,3])+kl[k,4])/6; end; procedure resultjlifurNOTsrednee(begJ,max J,h:extended;n:word; var arr:array of extended);

Начальные значения находятся в arr (p(begt)).

Приводит к изменению содержимого агг (содержит p(maxt)). h - шаг. п- число уравнений в системе } var t:extended; begin t:=begt; if begt<maxt then while h>0 do begin next(n,t,h,arr,arr); t:=t+h; if t>=maxt then h:= maxt -1; end; end; procedure resultdifurIntegralSimpson(begt,maxt,h:extended;n:word; var arr:array of extended;var srednee:array of extended);

Нахождение интеграла.

Начальные данные находятся в arr (p(begt)). Для установки в агг нужных данных можно воспользоватся процедурой resultdifurNOTsrednee.

Поиск данных осуществляется методом Симпсона. Значение интеграла (от begt до maxt) помещаются в srednee.

Приводит к изменению содержимого агг (содержит p(maxt)). h - шаг. п- число уравнений в системе

Замечание: maxt-begt должно делится на 2 (т.е. между maxt и begt должно быть четное число шагов, причем последний шаг должен заканчиватся на maxt) } var k:word;tt:extended; chet:boolean; begin chet:=false; for k:=0 to n-1 do srednee[k]:=arr[k]; tt:=begt; while (tt< maxt-h)or chet do begin next(n,tt,h,arr,arr); tt:=tt+h; if chet then for k:=0 to n-1 do srednee[k]:=srednee[k]+2*arr[k] else for k:=0 to n-1 do srednee[k]:=srednee[k]+4*arr[k]; chet:=not chet; end; for k:=0 to n-1 do srednee[k];=(srednee[k]-arr[k])*h/3; end; begin end. sum.pas

Быстрое вычисление часто используемых выражений. unit summ; interface type dat=class private l,r:dat; znak:char; chislo extended; public constructor create(st:string); destructor destroy; function result(t:extended):extended; end; implementation destructor dat. destroy; begin l.Free; r.Free; inherited; end; function dat.result(t:extended):extended; begin case znak of result:=l.result(t)+r.result(t); '-':result:-l.result(t)-r.result(t); l*,:result:=l.result(t)*r.result(t); 7':result:=::l.result(t)/r.result(t); s':result:=sin(l.result(t)); c':result:=cos(l.result(t)); e':result:=exp(l.result(t)); q':result:=sqrt(l.result(t)); ':result:=chislo; firesult:^; end; end; constructor dat.create(st:string); function coun(st:string):boolean; var count, k: integer; begin count:=0; if st[l]o'(' then begin coun:=false; exit; end else begin fork:=l to length(st)-l do begin if st[k]='(' then inc(count); if st[k]—>' then dec(count); if count=0 then begin coun:=false; exit; end; end; end; coun:=true; end; var k:word; code: integer; countenword; begin while pos(',',st)>0 do st[pos(7,st)] :='.'; counter:=0; while coun(st) do st:=copy(st,2,length(st)-2); for k:=length(st) downto 1 do begin if st[k]-)' then inc(counter); if st[k]='(' then dec(counter); if ((st[k]='+') or (st[k]--')) and (counter=0) then begin l:=dat.create(copy(st, 1 ,k-1)); r:=dat.create(copy(st,k+1 ,length(st))); znak:=st[k]; exit; end; end; for k:=length(st) downto 1 do begin if st[k]—)' then inc(counter); if st[k]- (' then dec(counter); if ((st[k]='*') or (st[k]='/')) and (counter=0) then begin l:=dat.create(copy(st, 1 ,k-1)); r:=dat.create(copy(st,k+1 ,length(st))); znak:=st[k]; exit; end; end; ifst-1'then znak:-t' else if copy(st,l,3)='sin' then begin znak:-s'; l:=dat.create(copy(st,4,length(st))); end else if copy(st,l,3)='cos' then begin znak:-c'; l:=dat.create(copy(st,4,length(st))); end else if copy(st,l,3)-expr then begin znak:-e'; l:=dat.create(copy(st,4,length(st))); end else if copy(st,l,2)='pi' then begin znak:chislo:=3.1415926535897932384626433832795; end else if copy(st,l,4)-sqrt' then begin znak:-q'; l:=dat.create(copy(st,5,length(st))); end else begin znak:- '; val(st,chislo,code); end; begin end.

Список литературы диссертационного исследования кандидат физико-математических наук Сатин, Яков Александрович, 2007 год

1. Анисимов В.В. Оценки отклонения переходных характеристик неоднородных марковских процессов. Укр. мат. ж., 1988, 40, 699706

2. Березин И.С., Жидков Н.П. Методы вычислений. Том II. Москва. 1960.

3. Бибиков Ю.Н. Курс обыкновенных дифференциальный уравнений. М.: Высшая школа, 1991.

4. Баруча-Рид А.Т. Элементы теории марковских процессов и их приложения. М.: Наука, 1969

5. Воскресенский Е. В. Асимптотическое равновесие, периодические решения и прямой метод Ляпунова // Дифференциальные уравнения, 1999. - N6. - С.729-732.

6. Гантмахер Ф. Р. Теория матриц. М.: Наука, 1966. 576с.

7. Гнеденко Б.В., Макаров И.П. (1971). Свойства решений задачи с потерями в случае периодических интенсивностей. Дифференциальные уравнения. 7, 9, 1696-1698.

8. Гнеденко Б.В.; Коваленко, И.Н. Введение в теорию массового обслуживания. М.: Наука, 1966

9. Далецкий Ю.Л. Крейн М.Г. Устойчивость решений дифференциальных уравнений в банаховом пространстве. Москва.: Наука., 1970.

10. Демидович Б.П. Лекции по математической теории устойчивости. М.: Издательство Московского Университета, 1998.- 480с.

11. И. Курош А.Г. Курс высшей алгебры. М.: ГИФЛМ. 1963.

12. Ланкастер П. Теория матриц. М.: Мир, 1978.

13. Левитан Б.М., Жиков В.В. Почти периодические функции и дифференциальные уравнения. Москва. Издательство московского университета. 1978.

14. Зейфман А.И. (1985). Общие процессы типа рождения и гибели и простейшие стохастические модели эпидемий, Автоматика и телемеханика, б, 128-135.

15. Зейфман А.И. (1989). Некоторые свойства системы с потерями в случае переменных интенсивностей. Автоматика и телемеханика, 1, 107-113.

16. Зейфман А.И. Стохастические модели. Процессы рождения и гибели. Вологда.: Издательство "Русь", 1994.

17. Калашников В.В. Качественный анализ сложных систем методом пробных функций. М.: Наука, 1978

18. Карташов H.B. Сильно устойчивые цепи Маркова. В сб. Проблемы устойчивости стохаст. моделей. М.: ВНИИСИ, 1981, 54-59.

19. Карташов Н.В. Критерии равномерной эргодичности и сильной устойчивости для цепей Маркова с общим фазовым пространством. Теория вероятн. и мат. статист. , 1984, вып 30, 65-81.

20. Карташов Н.В. Неравенства в теоремах эргодичности и устойчивости цепей Маркова с общим фазовым пространством. Теория вероятн. и ее применен. 1985, 30, 230-240, 478-485.

21. Лозинский С.М. Оценка погрешности численного интегрирования обыкновенного дифференциального уравнения. Изв. ВУЗов. Матем., 1958, N 5, 52-90

22. Понтягин JI.C. Обыкновенные дифференциальные уравнения. М.: Наука, 1974. 331с.

23. Тараскин В.Ф. Периодический режим процессов рождения, гибели и иммиграции и их приложении в здравоохранении. В кн.: Теория массового обслуживания. Тр. III Всесоюз. школы совещания. М.: МГУ, 1976, т.2 , с. 105-112.

24. Терехин М. Т.; Ретюнских Н. В. Периодические решения нелинейных неавтономных систем обыкновенных дифференциальных уравнений// Дифференц. уравнения. 2001. Т. 37, N 4. С. 566-569

25. Хайрер Э., Нёрсетт С., Ваннер Г. Решение обыкновенных дифференциальных уравнений. Нежёсткие задачи. Москва.: Мир.1990.

26. Anderson, W.J. (1991). Continuous-time Markov Chains. Springer, New York.

27. J.R. Artalejo and M. J Lopez-Herrero, Analysis of the busy period for the MfM/c queue: an algorithmic approach, J. Appl. Probab. 38 (2001) 209-222.

28. Brockwell, P.J. (1986). The extinction time of a general birth and death process with catastrophes. J. Appl. Probab. 23, 851-858.

29. Cairns, B. and Pollett, P. (2003). Persistence times for a general birth, death and catastrophe process. Preprint.

30. P. Coolen-Schrijner and E.van Doom, On the convergence to station-arity of birth-death processes, J.Appl. Probab. 38 (2001) 696-706.

31. Doom E., van. Stochastic monotonicity and queueing applications of birth-death processes. Lect. Not. Statist., v.4. p.1-118

32. Bartlett M. Stochastic population models in ecology and epidemol-ogy. L.: Metheun and Co. Ltd., 1960.

33. Dietz K. Epidemics and rumours: A survey. -J. Roy. Statist. Soc., ser. A, 1967.

34. Dietz K., Downtoun F. Carrier-borne epidemics with immigration. I. Immigration of both susceptibles and carries. J. Appl. Prob., 1968, v. 5, N 1, p. 31-42.

35. V. Giorno and A.Nobile, On some time-nonhomogeneous diffusion approximations to queueing systems, Adv. Appl. Probab. 19 (1987) 974-994.

36. Jacka, S.D. and Roberts, G.O. (1995). Weak convergence of conditioned processes on a countable state space. J. Appl. Probab. 32, 902-916.

37. Kendall D. Determenistic and stochastic epidemics in closed populations. Proc. of 3th Berkely symp. on Math. Statist, and Prob., 1956, v. 4. p. 149-165.

38. Di Crescenzo A. and Nobile A.G. Diffusion approximation to a queueing system with time dependent arrival and service rates // QUESTA. 1995. V. 19. P. 41-62.

39. Goel N., Richter-Dyn N. Stochastic models in biology. N. Y.: Acad. Press, 1974

40. B.Gnedenko and A.Soloviev, On the conditions of the existence of final probabilities for a Markov process. Math. Operationsforsh. Stat., (1973)379-390.

41. B.L.Granovsky B.L. and A.I.Zeifman, Nonstationary Markovian queues, J. Math. Sci. 99 (2000) 1415-1438.

42. Granovsky, B and Zeifman, A. (2004). Nonstationary Queues: Estimation of the Rate of Convergence. // Queueing System 46 V.46. P.363-388

43. Granovsky, B and Zeifman, A. (2004). Nonstationary Queues: Estimation of the Rate of Convergence. Queueing Systems 46, pp. 363388.

44. Griffeath D. Uniform coupling of nonhomogeneous Markov chains. J.Appl.Prob., 1975, 12, 753-763

45. Johnson J., Isaacson D. Conditions for strong ergodicity using intensity matrices. J.Appl.Prob. 1988, 25, 34-42

46. Karlin, S. and McGregor, J.L. (1957). The classification of birth and death processes. Trans. Amer. Math. Soc. 86, 366-400.

47. Margolius, B. (1999). Some path analysis of the MtfMt/c queue, Queueing Systems. 31, 59-93.

48. Mandelbaum A. and Massey W. Strong approximations for time-dependent queues // Math. Oper. Res. 1995. V. 20. P. 33-64.

49. Massey W.A. and Whitt W. On analysis of the modified offered-load approximation for the nonstationary Erlang loss model // Ann. Appl. Probab. 1994. V.4. P. 1145-1160.

50. Pakes, A.G. (1987). Limit theorems for the population size of a birth and death process allowing catastrophes. J. Math. Biol. 25. 307-325.

51. L.Saloff-Coste, 1996, Lectures on finite Markov chains, Lecture Notes in Math.,1665, 301-413.

52. Scott M., Isaacson D. Proportional intensities and strong ergodicity for Markov processes. J.Appl.Prob., 1983, 20, 185-190

53. Yang G., Chiang G. On interrival times in simple stochastic epidemic models. J. Appl. Prob., v. 19, N 4, p. 835-841.

54. Zeifman A.I. Stability for contionuous-time nonhomogeneous Markov chains // Lect. Notes Math. 1985. V. 1155. P. 401-414.

55. Zeifman A.I. Truncation Error in a Birth and Death System, U.S.S.R. Comput. Math. Math. Phys., 1988, 28, 6, 210-211.

56. Zeifman A.I. On the estimation of probabilities for birth and death processes //J. Appl. Probab. 1995. V. 32. P. 623-634.

57. Zeifman A.I. Upper and lower bounds on the rate of convergence for nonhomogeneous birth and death processes // Stoch. Proc. Appl. 1995. V. 59. P. 157-173.

58. Zeifman A.I. (1998). Stability of birth and death processes. J. Math. Sci., 1998, v.91, N3, 3023 3031.

59. Zeifman A.I On the weak ergodicity of nonhomogeneous continuous time markov chains.

60. S.Leorato, E.Orsingher, Ya.Satin, G.Shilova, A. Zeifman (2004). On some limits for nonhomogeneous birth and death processes. Trans. 24 Seminar of Stability Problems for Stochastic Models, Jurmala, Latvia, 52-53

61. S.Leorato, E.Orsingher, Ya.Satin, G.Shilova, A. Zeifman On some characteristics for nonhomogeneous birth and death processes // Труды участников международной школы-семинара' по геометрии и анализу. Ростов-на-Дону, 2004, 283 284.

62. S.Leorato, E.Orsingher, Ya.Satin, G.Shilova, A. Zeifman. Some universal limits for nonhomogeneous birth and death processes. // Queueing System, 2006, 139-151.

63. Зейфман А.И., Сатин Я.А., Шилова Г.Н., Орсингер Э. О построении двойного среднего для неоднородных процессов рождения и гибели //Современные проблемы теории функций и их приложения. Тезисы докладов зимней школы. Саратов, 2004, 283-284.

64. Зейфман А.И., Сатин Я.А. О некоторых средних характеристиках конечных марковских цепей с непрерывным временем // Стат. мет. оцен. и проверки гипотез. Пермь, ПГУ, 2005, 168-175.

65. Ya.Satin, G.Shilova, A.Zeifman On some characteristics for finite nonhomogeneous birth and death processes//Trans. 25 Seminar of Stability Problems for Stoch. Models, Salerno. Italy, 2005, 250-257

66. Зейфман А.И., Сатин Я.А., Шилова Г.Н. Оценки средних некоторых неоднородных процессов рождения и гибели // Труды участников международной школы-семинара по геометрии и анализу. Ростов-на-Дону, 2006.

67. Зейфман А.И., Сатин Я.А. Об оценках средних характеристик некоторых процессов рождения и гибели // Стат. методы оценивания и проверки гипотез. Пермь, ПГУ, 2006.

68. Сатин Я.А. Предельные средние характеристики неоднородных процессов рождения и гибели с периодическими интенсивно-стями. // Саранск: Средневолжское математическое общество, 2006, препринт N 94.

69. A.Zeifman, Ya. Satin, G. Shilova Bounds of the mean for some nonho-mogeneous birth and death processes // Trans, of 26 Seminar of Stability Problems for Stochastic Models, Sovata-Bai, Romania, 2006, 91-92.

70. Зейфман А.И., Панфилова Т. JI., Сатин Я. А., Шилова Г. Н., Лукина М. А. Исследование специальных свойств некоторых линейных систем дифференциальных уравнений // Дифференциальные уравнения. Известия РАЕН, 2006, 11, 90-93.

71. Зейфман А.И., Сатин Я.А. Средние характеристики марковских систем обслуживания // Автоматика и телемеханика, 2007, 9, 122-134

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