Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Обработка результатов моделирования




Целью обработки полученных результатов (т. е. реализации процесса, или массива его значений в выбранные моменты времени) является получение на их основе оценок характеристик процесса. Оценками называют приближенные значения характеристик случайных величин и процессов, найденные по данным опыта (в нашем случае – по результатам моделирования). Требуется найти оценки математического ожидания , дисперсии , стандартного отклонения , коэффициента вариации и НКФ . Для оценок здесь использованы те же обозначения, что и для оцениваемых показателей, снабженные знаком «˜».

Для вычисления оценок используем следующие формулы.

. (16)

. (17)

. (18)

. (19)

Оценку НКФ получите для 201 значений τ, разделенных интервалами Δ t: τi =i Δ t (i= 0, 1, 2, …, 200), по формуле

. (20)

Значение всегда равно 1, поэтому вычислять его по этой формуле не обязательно. Оно оставлено для контроля.

Составление программы


/*Курсовая работа студента 4-Мд-5

Кислициной К.А. по дисциплине

"Моделирование систем" по теме

"Моделирование случайного процесса изменения давления"

вариант 8 2013г.*/

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#include <graphics.h>

#include <time.h>

#include <conio.h>

/*объявление переменных*/

float P[5001];

float ksi, A, B, dt=2.5, alf=0.02, m=450, sig=25, z;

float m_,D_,sig_,v_,NKF[201],sum;

int i,j,L=200;

int pp, ff;

char ch[80];

/*************************************************/

main ()

{

/*инициализация графического режима*/

int gdr=DETECT, gmod;

initgraph (&gdr, &gmod, " ");

/************************************************/

/*получение массива значений давления*/

randomize ();

A=exp(-alf*dt);

B=sig*sqrt(1-A*A);

P[0]=0;

for(i=1; i<5001; i++)

{ z=0;

for(j=1; j<13; j++)

{ ksi=rand()/32767.0;

z=z+ksi;

}

z=z-6.0;

P[i]=A*P[i-1]+B*z;

}

for(i=0; i<5001; i++)

P[i]=P[i]+m;

/***********************************/

/*график реализации процесса*/

/*создание фона*/

setfillstyle(1,15);

bar(0,0,640,480);

/*нанесение сетки и надписей*/

setcolor(0);

setlinestyle(0,0,1);

for(i=0;i<7;i++)

line(70,50+20*i,570,50+20*i);

for(i=0;i<6;i++)

line(70+100*i,50,70+100*i,170);

settextjustify(2,1);

for(i=0;i<7;i++)

{ sprintf(ch,"%d",525-25*i);

outtextxy(65, 50+20*i,ch);

}

settextjustify(1,2);

for(i=0;i<6;i++)

{ sprintf(ch, "%d",2500*i);

outtextxy(70+100*i,180,ch);

}

outtextxy(320,30,"график давления");

outtextxy (600,165,"t,с");

outtextxy(70,30,"P,кПа");

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

setcolor(12);

moveto(70,110);

for(i=1;i<501;i++)

{pp=110-(P[10*i]-m)*20/25+0.5;

lineto(70+i,pp);

}

/*Обработка массива значений регулируемой

величины и вывод результатов моделирования*/

/*Оценка математического ожидания P(t)*/

sum=0;

for(i=0; i<5001; i++)

sum=sum+P[i];

m_=sum/5001;

/*Оценка дисперсии и стандартного отклонения y(t)*/

sum=0;

for(i=0; i<5001; i++)

sum=sum+(P[i]-m_)*(P[i]-m_);

D_=sum/5001;

sig_=0;

sig_=sqrt(D_);

/*вычисление коэффициента вариации y(t)*/

v_=0;

v_=(sig_/m_)*100;

/*Оценка нормированной корреляционной функции НКФ y(t)*/

for(i=0;i<L+1;i++)

{sum=0;

for(j=0;j<5001-i;j++)

sum=sum+(P[j]-m_)*(P[j+i]-m_);

NKF[i]=sum/(5001-i)/D_;

}

/*нанесение сетки и надписей для графика НКФ*/

setcolor(0);

setlinestyle(0,0,1);

for(i=0; i<5; i++)

line(70, 300+25*i,270, 300+25*i);

/*сетка вертикальных линий*/

for(i=0; i<5; i++)

line(70+50*i, 300, 70+50*i,400);

/*Нанесение надписей*/

settextjustify(2, 1);

for(i=0; i<5; i++)

{ sprintf(ch, "%.1f", 1-0.5*i);

outtextxy(65, 300+25*i, ch);

}

settextjustify(1, 2);

for(i=0; i<5; i++)

{ sprintf(ch, "%.1f", 50*i*dt);

outtextxy(70+50*i, 405, ch);

}

settextjustify(1,0);

outtextxy(170, 295, "график НКФ P(t)");

outtextxy(290, 400, "t,б");

/*построение графика НКФ y(t)*/

setcolor(12);

setlinestyle(0,0,1);

moveto(70, 300);

for (i=1; i<201; i++)

{ ff=350-NKF[i]*50+0.5;

lineto(70+i,ff);

}

/*вывод числовых оценок */

setcolor(0);

settextjustify(0,1);

sprintf(ch,"математическое ожидание P(t),кПа: %.2f",m_);

outtextxy(320,300,ch);


sprintf(ch,"стандартное отклонение P(t),кПа: %.2f",sig_);

outtextxy(320,330,ch);

sprintf(ch,"коэффициент вариации P(t), процентов: %.2f",v_);

outtextxy(300,360,ch);

getch();

closegraph();

}

/*end*/

График

.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...