со следующими параметрами:
где
и - параметры спектральной плотности, , , и -коэффициенты уравнения, и начальными условиями:и временем моделирования 120 сек, относительная погрешность среднеквадратического отклонения,
если:
а) случайное воздействие имеет спектральную плотность
;б) если случайный процесс является белым шумом.
В данной работе:
- выбрали метод моделирования стохастической дифференциальной системы;
- построили численную модель состояния системы;
- выполнили моделирование по построенной численной модели;
- оценили выброс случайной величины за уровень
;- Выполнили проверку датчика сл.чис.с помощью критерия Хи квадрат.
(Приложение Б)
Моделирование выполнялось с целью вычисления количества ординат случайного процесса y(t), которые выходят за уровень и подсчет количества выхода значений за этот уровень – ни одно значение не вышло за уровень .
1. Томашевский В. М., Жданова В. Г., Жолдаков О.О.. Вирішення практичних завдань методами комп’ютерного моделювання: Навч. посібник.- К.:”Корнійчук”,2001.-268с.
2. Статистические методы для ЭВМ/ Под ред. К.Энслейна: Пер. с англ. / Под ред. М.Б.Малютова.- М.:Наука. Гл.ред. физ. Мат., лит. 1986.-464с.
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(){
int const k=1000;
double t,y,z;
int i,j;
int n=120;
int n0=1;
double w=1;
double b1=0.5;
double b2=1.5;
double c1=1.2;
double c3=-1.5;
double M=0.03;
double h=0.1;
t=0;
double t1=0;
z=0;
double z1=0;
y=0.15;
double y1=0.15;
double y_max,y_rez,eps,eps1;
double mas1[1200];
double mas[1200];
double e;
FILE *stream;
printf(" t | y | z \n");
/// fprintf(stream, " t | y | z \n");
i=0;
/* open a file for update */
stream = fopen("DUMMY.FIL", "w+");
while (t<120)
{
double j1, j2, r1, r2, s;
j1 = -1.0 + 2.0*rand()/((double)RAND_MAX - 1.0);
j2 = -1.0 + 2.0*rand()/((double)RAND_MAX - 1.0);
s = j1*j1 + j2*j2;
if (s < 1)
{
r1 = j1 * sqrt(-2*log(s)/s);
r2 = j2 * sqrt(-2*log(s)/s);
};
e=r1;
t=t+h;
y=y+h*z;
z=z+h*(e*pow((n0/h),1/2)-b1*z-b2*fabs(z)*z-c1*y-c3*pow(y,3));
mas[i]=y;
printf("%f | %f | %f \n",t,y,z);
/* write some data to the file */
fprintf(stream, "%f | %f | %f \n",t,y,z);
t1=t1+h/2;
y1=y+((h/2)*z1);
z1=z1+((h/2)*(e*pow((n0/h),1/2)-b1*z-b2*fabs(z)*z-c1*y-c3*pow(y,3)));
mas1[i]=y1;
i=i+1;
}
/* close the file */
// fclose(stream);
y_rez=0;
y_max=mas1[0];
for (i=0; i<=119;i++)
{
y_rez=y_rez+(pow((mas1[i]-mas[i]),2));
if (mas1[i]>y_max)
y_max=mas1[i];
}
eps=pow(y_rez/n,0.5)/fabs(y_max);
printf("%f epsilon for our operations\n",eps);
fprintf(stream, "%f epsilon for our operations\n",eps);
fclose(stream);
return 0;
}