Автор работы: Пользователь скрыл имя, 13 Сентября 2011 в 17:20, курсовая работа
Цепи Маркова названы так в честь выдающегося русского математика, Андрея Андреевича Маркова, который много занимался случайными процессами и внес большой вклад в развитие этой области. В последнее время можно услышать о применении цепей Маркова в самых разных областях: в современных веб-технологиях, при анализе литературных текстов или даже при разработке тактики игры футбольной команды. У тех, кто не знает что такое цепи Маркова, может возникнуть ощущение, что это что-то очень сложное и почти недоступное для понимания.
1) Введение 2
2) Цели работы 3
3) Постановка задачи 3
1. Исходные данные 3
2. Алгоритм имитационного моделирования динамики ЦМ 3
3. Содержание работы 4
4) Теоретическая часть 5
1. Определение цепи Маркова 5
2. Модель вычислительной системы как цепь Маркова 6
3. Классификация состояний цепей Маркова 8
4. Оценка длительности пребывания системы во множестве Т 10
5. Исследование динамики цепей Маркова при большом числе шагов 12
5) Практическая часть 15
1. Матрица переходных вероятностей Р 15
2. Векторы вероятностей X(t) 15
3. Оценка результатов тестирования программы 1 20
4. Структурирование Р 22
5. Матрица N и средняя трудоёмкость процесса 23
6. Оценка результатов тестирования программы 2 24
7. Среднеквадратичные отклонения от среднего пребывания процесса во
множестве Т и трудоёмкости 24
8. Оценка предельных вероятностей пребывания процесса во множестве Ť 25
6) Используемая литература 27
Для
того, чтобы убедится в том, что
матрица верна найдем её вторым методом.
Как было раньше упомянуто матрицу
Р можно рассматривать как
следующую структуру:
P | s | s-n |
s | Q | R |
s-n | 0 | W |
При
возведении матрицы Р в k-ую степень
структура имеет следующий вид:
Pᵏ | s | s-n |
s | Qᵏ | R(k) |
s-n | 0 | Wᵏ |
При
большом числе шагов матрица
Q стремится к нулевой матрице, а R и W –
к некоторым придельным. Таким образом,
в предельном случае:
Pпред | s | s-n |
s | 0 | Rпред |
s-n | 0 | Wпред |
Теперь
осталось найти только предельные матрицы
Rпред и
Wпред. Wпред
также можно найти прямым возведением
в степень.
Wпред
|
Данная
матрицы вообще не
изменяется при возведении
её в натуральную степень.
Rпред
|
Rпред совпадает с той, которая входит в состав Рпред, вычисленной возведением в степень. Поэтому можно сказать, что верно определена матрица Рпред. Также и с Wпред.
Оценив полученную матрицу можно сказать, что система переходит в одно из эргодических состояний с единичной вероятностью, то доказывает правильность определения нами множества невозвратных состояний. Но поглощающим состоянием здесь является только S7. Средняя вероятность перехода системы в поглощающее состояние = 0,224544073.
После
вычисления Рпред становится возможным
определения вектора Xпред.
Xпред
0 | 0 | 0 | 0 | 0,465805471 | 0,465805471 | 0,068389058 |
Используемая литература
1) Г.А.Доррер «Методы
моделирования дискретных систем»: Красноярск,
2004, СибГТУ - 202с.
Приложение
(Листинг программы)
//----------------------------
#include <vcl.h>
#include <time.h>
#pragma hdrstop
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const int stat=7;
int P[stat][stat],j0,tk,N,X[100][
float V[100][stat];
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//----------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
srand(time(NULL));
mps->Cells[0][0]="P";
for(int i=1; i<stat+1; i++){mps->Cells[0][i]=i;
mps->Cells[i][0]=i;}//
for(int i=1; i<stat+1; i++)
for(int j=1; j<stat+1; j++) mps->Cells[i][j]=0;
//исходные данные
mps->Cells[1][3]=4;
mps->Cells[2][1]=3;
mps->Cells[3][1]=4; mps->Cells[3][2]=3; mps->Cells[3][4]=2;
mps->Cells[4][2]=3; mps->Cells[4][4]=5;
mps->Cells[5][1]=3; mps->Cells[5][2]=4; mps->Cells[5][3]=3; mps->Cells[5][5]=5; mps->Cells[5][6]=5;
mps->Cells[6][3]=3; mps->Cells[6][5]=5; mps->Cells[6][6]=5;
mps->Cells[7][4]=3; mps->Cells[7][7]=10;
//цвет каждого состояния
CL[0][0]=0; CL[0][1]=0; CL[0][2]=255;
CL[1][0]=255; CL[1][1]=0; CL[1][2]=255;
CL[2][0]=255; CL[2][1]=255; CL[2][2]=0;
CL[3][0]=0; CL[3][1]=255; CL[3][2]=255;
CL[4][0]=150; CL[4][1]=50; CL[4][2]=150;
CL[5][0]=190; CL[5][1]=90; CL[5][2]=40;
CL[6][0]=0; CL[6][1]=150; CL[6][2]=50;
st1->Brush->Color=RGB(CL[0][0]
st2->Brush->Color=RGB(CL[1][0]
st3->Brush->Color=RGB(CL[2][0]
st4->Brush->Color=RGB(CL[3][0]
st5->Brush->Color=RGB(CL[4][0]
st6->Brush->Color=RGB(CL[5][0]
st7->Brush->Color=RGB(CL[6][0]
koord->Click();
}
//----------------------------
//прочтение исходных данных
void __fastcall TForm1::datareaderClick(
{
j0=StrToInt(nss->Text);
tk=StrToInt(chvsh->Text);
N=StrToInt(chse->Text);
for(int i=0; i<stat; i++)
for(int j=0; j<stat; j++) P[i][j]=StrToInt(mps->Cells[j+
}
//----------------------------
void __fastcall TForm1::imitationClick(TObject *Sender)
{
int st,r;
for(int n=0; n<N; n++){
//обнуление матрицы У
for(int i=0; i<stat; i++)
for(int j=0; j<100; j++) Y[j][i]=0;
st=j0-1;
Y[0][j0-1]=1;
for(int i=0; i<tk; i++){
int d=0;
r=1+rand()%10;
for(int j=0; j<stat; j++){
if(P[st][j]>0){
}
}
//if(st==7) break;
}
for(int i=0; i<stat; i++) for(int j=0; j<tk+1; j++) X[j][i]+=Y[j][i];
}
vyvod->Lines->Add("---Оценки
среднего числа пребывания
int Z[stat];
for(int i=0; i<stat; i++)
Z[i]=0;
AnsiString B="";
for(int i=0; i<stat; i++)
for(int j=0; j<tk+1; j++) Z[i]+=X[j][i];
for(int i=0; i<stat; i++)
B+=FloatToStr((float)(int)((
vyvod->Lines->Add(B);
vyvod->Lines->Add("---
for(int j=0; j<tk+1; j++){
AnsiString A="t"+IntToStr(j)+": ";
int S=0;
for(int i=0; i<stat; i++) S+=X[j][i];
for(int i=0; i<stat; i++){
V[j][i]=(float)(int)((float)X[
A+=FloatToStr((float)(int)((
}
vyvod->Lines->Add(A);
}
vyvod->Lines->Add("");
}
//----------------------------
//главая функция тестирования
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i=0; i<stat; i++)
for(int j=0; j<100; j++) X[j][i]=0;
datareader->Click();
imitation->Click();
grafik->Click();
}
//----------------------------
void __fastcall TForm1::koordClick(TObject *Sender)
{
gr->Picture=NULL;
gr->Canvas->Pen->Width=1;
gr->Canvas->Pen->Color=RGB(
gr->Canvas->MoveTo(20,20); gr->Canvas->LineTo(490,20);
gr->Canvas->MoveTo(20,85); gr->Canvas->LineTo(490,85);
gr->Canvas->MoveTo(20,150); gr->Canvas->LineTo(490,150);
gr->Canvas->MoveTo(20,215); gr->Canvas->LineTo(490,215);
gr->Canvas->Pen->Color=RGB(0,
gr->Canvas->Pen->Width=2;
gr->Canvas->MoveTo(20,280); gr->Canvas->LineTo(20,15);
gr->Canvas->MoveTo(20,280);
gr->Canvas->LineTo(490,280);
gr->Canvas->TextOutA(5,282,"0"
gr->Canvas->TextOutA(5,20,"1")
gr->Canvas->TextOutA(1,152,"0,
gr->Canvas->MoveTo(17,20); gr->Canvas->LineTo(24,20);
gr->Canvas->MoveTo(17,150);
gr->Canvas->LineTo(24,150);
for(int i=0; i<15; i++){
gr->Canvas->TextOutA(40+30*i,
gr->Canvas->MoveTo(45+30*i,
}
}
//----------------------------
void __fastcall TForm1::grafikClick(TObject *Sender)
Информация о работе Моделирование динамики систем на основе цепи Маркова с дискретным временем