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

Змн.

Арк.

№ докум.

Підпис

Дата

Арк.

2

8.080.403.4152.01.КР



Анотація



У даній роботі розглядається моделювання неперервно-стохастичних моделей на ЕОМ.	       		

Робота викладена на 26 сторінках друкованого тексту, містить: 2додатки, 4 рисунка та список використаної літератури з 2 найменувань.

Робота виконана російскою мовою.





Аннотация

В данной работе рассматривается моделирование непрерывно-стохастической моделей на ЭВМ.

Работа изложена на 26 страницах печатного текста, содержит: 2 приложения,  4 рисунка и список использованной литературы из 2 наименований.

Работа выполнена на русском языке.







Annotation

In the given work modelling continuous - stochastic models on the computer is considered

Work is stated on 26 pages of the printed text, contains: 2 appendices, figures and the list of the used literature from 2 names.

Work is executed on Russian.




СОДЕРЖАНИЕ





	Введение	4

	1 Выбор метода моделирования дифференциальной стохастической системы и постановка задачи	6

		1.1 Выбор метода моделирования	7

	1.2 Постановка задачи	9

	2 Построение численной модели дифференциальной стохастической системы.	11

	3 Результаты моделирования	15

	Заключение	19

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

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

   Приложение Б – Проверка датчика случайных чисел……………….……..24 


Введение



Существует проблема оценки функционирования произвольной системы, то есть оценки выхода ее характеристик за определенный уровень.  

Для решения поставленной проблемы существуют две группы методов. Первая группа базируется на знании аналитического  выражения плотности вероятности, а вторая группа – не требует подобной информации. И так как нам не известна плотность вероятности,  мы должны воспользоваться второй группой, то есть выполнить математическое моделирование с использованием численных методов.

Поэтому выполним непрерывно-стохастическое моделирование на ЭВМ.

Таким образом, целью курсовой работы является моделирования  состояния системы для оценки выходов ординат случайного процесса за заданный уровень .

 Состояние системы описывается стохастическим дифференциальным уравнением: 

,

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

		   

где 

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

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





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







	



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



Для достижения этой цели необходимо решить следующие задачи: 

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

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

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

оценить количество выбросов  случайной величины за заданный уровень . 


1 Выбор метода моделирования дифференциальной стохастической системы и постановка задачи





            В данном разделе мы осуществим выбор метода моделирования дифференциальной стохастической системы с целью выявления наиболее оптимального метода по критериям – точность, простота.    

        

         Стохастическая дифференциальная система – это система с конечным вектором состояния и значениями входных и выходных сигналов, которые описываются стохастическими дифференциальными уравнениями. Для решения нелинейных систем используют численные модели.     

 Моделирование - процесс проведения экспериментов на модели вместо проведения экспериментов на самой модели.

Моделирование широко используется, так как значительно облегчает научные исследования и часто оказывается единственным средством познания сложных систем. 

	 


Выбор метода моделирования



Существует математическое и имитационное моделирование.

Имитационное моделирование – моделирование, при котором система заменяется на ее имитатора, и с ним проводится эксперимент с целью получения информации о системе. 

Математическое моделирование – моделирование, при котором мы можем заменить систему ее математической моделью и провести эксперимент с ней, а не с самой системой.

           Сущность имитационного моделирования заключается в том,

что в его основу положена методология системного анализа. Она дает возможность исследовать проектируемую либо анализируемую систему 

по технологии операционного исследования, включая такие этапы, как смысловая постановка задачи; разработка концептуальной модели; разработка и программное реализация имитационной модели;  проверка адекватности модели и оценка точности результатов моделирования; планирование экспериментов; принятие решений.  Благодаря этому имитационное моделирование можно применять как универсальный подход для принятия решений в условиях неопределенности и для учета в моделях факторов, которые тяжело формализуются, а также для введения в практику основных принципов системного подхода для решения практических задач.     

        Но для решения нашей задачи мы воспользуемся математическим моделированием, поскольку предполагаемая модель дифференциальной стохастической системы будет математической.	         

         Что же касается метода, то  выполнения поставленной задачи моделирования существуют различные методы. В первой группе этих методов требуется построить плотность вероятности в аналитическом виде, когда система описывается нелинейными стохастическими уравнениями, что невозможно при данной постановке задачи, поскольку мы не можем найти плотность вероятности в аналитическом виде. Поэтому выполним математическое моделирование непрерывно-стохастическое системы с использованием численного метода.

           В качестве численного метода для вышеуказанного моделирования воспользуемся  методом  Эйлера, так как он  наиболее оптимально подходит для решения данной  задачи, поскольку может обеспечить вполне приемлемую точность расчетов при относительной простоте. Безусловно, существует ряд других методов, которые обеспечивают более высокую точность, например метод Рунге Кутта, но они являются значительно более сложными.        

Сходимость применяемого метода (метода Эйлера) обеспечивается  среднеквадратично. В качестве критерия для выбора шага будем применять относительную погрешность среднеквадратичного отклонения.   	   

Если этот критерий менее или равен 0.05, то результат удовлетворительный, иначе необходимо уменьшить шаг интегрирования в 2 раза и по

вторить итерацию.


1.2 Постановка задачи



              Исходя из выше рассмотренного материала уточняем и формулируем постановку задачи: 

               Выполнить моделирование непрерывно-стохастической системы на ЭВМ, состояние которой описывается стохастическим дифференциальным уравнением , используя следующие данные:

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

		   

где 

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

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

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











	

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

если:

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

б) если случайное воздействие X(t) является белым шумом.



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


2 Построение численной  модели дифференциальной стохастической системы.   



Выполним математическое моделирование непрерывно-стохастической системы. 

Будем использовать нелинейное стохастическое уравнение 2-го порядка ,					 (1) 

где - случайный процесс.

Для реализации математической модели в случаях:

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



где 

 

- круговая частота;

	- коэффициент затухания корреляционной функции;

		- средняя частота  корреляционной функции.



а) если случайный процесс имеет спектральную плотность.

Белый шум - стационарный случайный процесс с нулевым математическим ожиданием и корреляционной функцией, равной дельта-функции.

 Моделирование белого шума осуществляется по следующей формуле:

,								          (3)

где 

-независимая случайная величина с нормальным законом распределения с mx=0 и Dx=1,

No -  коэффициент интенсивности белого шума или высота спектральной плотности.

		           Моделирование случайного воздействия со спектральной плотностью  осуществляется стохастическим дифференциальным уравнением второго порядка 

		

		;                                         (4)

		

		в систему уравнений 1-ого порядка, для этого введем специальные переменные:

		

			                                                                                    (5)

	В результате получим следующую систему 1-го порядка:

							 (6)

	Применяем к  каждому уравнению метод Эйлера

						 (7)

	 получим следующую численную модель:

				(8)

	

В случае а) когда случайное воздействие – белый шум, аналогично, математическая модель будет иметь вид:

                                                  (9)







При моделировании непрерывной стохастической модели следует выполнить такие действия:

		Подбор коэффициента интенсивности белого шума  (его мы осуществим с помощью табуляции функции

,

ее максимальное значение и будет требуемым шагом);

		разработать датчик случайных чисел с нормальным законом распределения.



a

b

V1

V2

fm

f(x)

x

Рисунок 1- Распределение плотности вероятности

f(V1)









		







Для этого необходимо:

сгенерировать два случайных  числа с равномерным законом распределения, 1-ое число , а второе число  

(Рисунок 1);

сравнить,  если  V1>f(V1), то все числа отбрасываются и генерация повторяется заново, иначе меньшее число принимается как верное;

        3) выбрать произвольный шаг табулирования; 

получить значения по системам уравнений (8),(9);

проверить сходимость -  проверка выполняется среднеквадратично по формуле

,								(10)	

Если погрешность среднеквадратичного отклонения менее или равна 0.05, то полученные значения считаются решением, иначе необходимо уменьшить шаг в 2 раза и повторить итерацию.

        Причем в случае, где X(t)- белый шум обеспечиваем сходимость только по x1 (8);  а в случае, где случайное воздействие имеет спектральную плотность (2),  сходимость обеспечиваем и по x1 и по x3.




3 Результаты моделирования



На основе выбранной численной модели была разработана программа по моделирования системы.

Алгоритм работы  программы следующий:

 -  находится   коэффициент интенсивности белого шума No, для этого  функция          табулируется , в диапазоне (1;120) с шагом 0,1 

Первая часть задачи, где m(t) белый шум:

	применяется генератор случайных чисел с нормальным распределением;

	выбирается произвольный шаг;

	получаются зависимости y(t) от t   и  y’(t);

	выполняется контроль среднеквадратического отклонения

по формуле  

 ,						

-если среднеквадратического отклонения менее, либо  равно 0.05 то  полученные зависимости считаются решением, иначе шаг табулирования уменьшается в два раза.      

Решение второй части задачи, где х(t)  заданная функция, выполняется по выше описанному алгоритму лишь с той разницей, что контроль среднеквадратического отклонения ведется не только по x1, но и по x3.  (из формулы (6 ) ). Полученный результат выводится в текстовый файл.

		После завершения работы программы были получены необходимые точечные оценки дифференциального стохастического уравнения. 

	Результаты представлены ниже на рисунках 1-6. 

	Программа приведена в приложении А. 



Результаты работы программ представлены в виде графиков зависимостей.



Случайный процесс является белым шумом:



Рисунок 1- Зависимость y от t







Рисунок 2 - Зависимость y’ от t


Случайное воздействие на систему- заданная функция:

Рисунок 3 – Зависимость y от t 





    Рисунок 4 – Зависимость z от t 




Заключение



Была выполнена  работа по моделированию состояния системы непрерывно-стохастической модели на ЭВМ, состояние которой описывается стохастическим дифференциальным уравнением , 

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

		   

где 

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

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



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







	



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

если:

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



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

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

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

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

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

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

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

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

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


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



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

Статистические методы для ЭВМ/ Под ред. К.Энслейна: Пер. с англ. / Под ред. М.Б.Малютова.- М.:Наука. Гл.ред. физ. Мат., лит. 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   \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;

      }