
Результат
Программа
/*Курсавая работа по дисцеплине моделирование систем на тему:
"Моделирование случайного процессаизменения давления"
студент группы 4-мд-6 Шумакова Алексея.
Вариант 29 */
#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=2000,sig=120,z;
float m_,D_,sig_,v_,NKF[201],sum;
int i,j,pp,L=200;
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,3);
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",2360-120*i);
outtextxy (65,50+20*i,ch);
}
settextjustify (1,2);
for (i=0;i<6;i++)
{ sprintf (ch,"%d",0+1000*i);
outtextxy (70+100*i,175,ch);
}
outtextxy (300,30,"График давления,кПа");
outtextxy (610,160,"Время,с");
outtextxy (70,30,"Давление,кПа");
/*построение графика*/
setcolor(12);
setlinestyle(0,0,1);
moveto (70,110);
for (i=1; i<501; i++)
{ pp=110-(P[i*10]-m)*20/120+0.5;
lineto (70+i,pp);
}
/*обработка результатов моделирования*/
m_=0;
for(i=0;i<5001;i++)
{ m_=P[i]+m_;
}
m_=m_/5001;
D_=0;
for(i=0;i<5001;i++)
{ D_=D_+((P[i]-m_)*(P[i]-m_));
}
D_=D_/5001;
sig_=sqrt(D_);
v_=sig_/m_*100;
/*Оценка нормараванной корреляционнойфункции*/
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);
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(320,360,ch);
getch();
} /*end*/