Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






по лабораторной работе № 3

ОТЧЕТ

на тему «Моделирование Пуассоновской СВ»

 

 

  Выполнил: студент гр.651Брянский А.М.
  Проверила: Олзоева С.И.

 

Улан-Удэ

 

 

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

На основе созданного датчика БСВ, смоделировать генератор пуассоновской с.в., получить гистограмму частот.

 

Теоретическая часть:

БСВ (базовая случайная величина) – непрерывная случайная величина z равномерно распределенная на интервале (0; 1).

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

Моделирование пуссоновской с.в.:

Пуассоновская с.в. может принимать значения {0, 1,..., K,...}, вероятности которых определяются по формуле:

где а – параметр распределения, а> 0.

Генератор пуассоновской с.в. создается по следующему алгоритму:


Практическая часть:

Листинг программы:

#include " stdio.h"

#include " conio.h"

#include " iostream"

#include " math.h"

void main(){

setlocale(0, " ");

long long int A0, A1, N, M, K;

long double g, h, Sum=0, Ma, Di, Ma1, Sum1=0, Ma2;

long double Z[100000];

int n[14]={0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

int d[10000];

K= 85481;

N=0;

printf(" Введите количество генереруемых чисел \n");

scanf(" %d", & N);

M= 865449;

A0=22131;

printf(" Случайные величины \n");

for(int i=0; i< N; i++){

A1=(K*A0)%M;

g=A1;

h=M;

Z[i]=g/h;

A0=A1;

if(i%9==0){printf(" \n"); }

printf(" %.4f ", Z[i]);

}

int k1=0;

float a=5;

float G=exp(-a);

float P=G;

for (int i=0; i< N; i++)

{

while (Z[i]> G)

{

P=a/(k1+1)*P;

G=G+P;

k1++;

}

d[i]=k1;

k1=0;

G=exp(-a);

P=G;

printf(" d[%i]=%i", i, d[i]);

if(i%7==0){printf(" \n"); }

}

for(int i=1; i< N; i++){

if(Z[0]==Z[i]){

printf(" \nПериод=%i", i);

break;

}

}

for(int i=0; i< N; i++)

{

if (d[i]< =0){n[0]++; }else

if (d[i]< =1){n[1]++; }else

if (d[i]< =2){n[2]++; }else

if (d[i]< =3){n[3]++; }else

if (d[i]< =4){n[4]++; }else

if (d[i]< =5){n[5]++; }else

if (d[i]< =6){n[6]++; }else

if (d[i]< =7){n[7]++; }else

if (d[i]< =8){n[8]++; }else

if (d[i]< =9){n[9]++; }else

if (d[i]< =10){n[10]++; }else

if (d[i]< =11){n[11]++; }else

if (d[i]< =12){n[12]++; }else

if (d[i]< =13){n[13]++; }

}

printf(" \nКоличество вхождений");

for(int i=0; i< 14; i++)

{

printf(" \nn[%d]=%d", i, n[i]);

}

printf(" \n\nЧастоты: \n\n");

for(int i=0; i< 14; i++){

printf(" n[%d] %.5f \n", i, (float)n[i]/N);

}

for(int i=0; i< N; i++){

Sum=Sum+d[i];

Sum1=Sum1+(d[i]*d[i]);

}

Ma=Sum/N;

Ma1=Sum1/N;

printf(" \n\nМат. ожидание: %f\n", Ma);

Sum=0;

Di=Sum1/N-Ma*Ma;

printf(" Дисперсия: %f\n", Di);

getch();

}

Гистограмма частот для N=10000:

 

 

Вывод:

 

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

<== предыдущая лекция | следующая лекция ==>
Психотерапия» пәнінен V курс студенттеріне арналған тест сұрақтары «КДС» медициналық факультеті | Пустырник лечебные свойства и противопоказания.
Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал