Обработка результатов моделирования
⇐ ПредыдущаяСтр 2 из 2 Целью обработки полученных результатов (т. е. реализации процесса, или массива его значений в выбранные моменты времени) является получение на их основе оценок характеристик процесса. Оценками называют приближенные значения характеристик случайных величин и процессов, найденные по данным опыта (в нашем случае – по результатам моделирования). Требуется найти оценки математического ожидания , дисперсии , стандартного отклонения , коэффициента вариации и НКФ . Для оценок здесь использованы те же обозначения, что и для оцениваемых показателей, снабженные знаком «˜». Для вычисления оценок используем следующие формулы. . (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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|