Смекни!
smekni.com

Моделирование непрерывно-стохастической модели на ЭВМ (стр. 3 из 3)

со следующими параметрами:

где

и
- параметры спектральной плотности,

,
,
и
-коэффициенты уравнения,

и начальными условиями:

и временем моделирования 120 сек, относительная погрешность среднеквадратического отклонения,

если:

а) случайное воздействие имеет спектральную плотность

;

б) если случайный процесс является белым шумом.

В данной работе:

- выбрали метод моделирования стохастической дифференциальной системы;

- построили численную модель состояния системы;

- выполнили моделирование по построенной численной модели;

- оценили выброс случайной величины за уровень

;

- Выполнили проверку датчика сл.чис.с помощью критерия Хи квадрат.

(Приложение Б)

Моделирование выполнялось с целью вычисления количества ординат случайного процесса y(t), которые выходят за уровень

и подсчет количества выхода значений за этот уровень – ни одно значение не вышло за уровень
.


Список использованной литературы:

1. Томашевский В. М., Жданова В. Г., Жолдаков О.О.. Вирішення практичних завдань методами комп’ютерного моделювання: Навч. посібник.- К.:”Корнійчук”,2001.-268с.

2. Статистические методы для ЭВМ/ Под ред. К.Энслейна: Пер. с англ. / Под ред. М.Б.Малютова.- М.:Наука. Гл.ред. физ. Мат., лит. 1986.-464с.


Приложение А – Текст программы 1

#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 &bsol;n");

/// fprintf(stream, " t | y | z &bsol;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 &bsol;n",t,y,z);

/* write some data to the file */

fprintf(stream, "%f | %f | %f &bsol;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&bsol;n",eps);

fprintf(stream, "%f epsilon for our operations&bsol;n",eps);

fclose(stream);

return 0;

}