У вас вопросы?
У нас ответы:) SamZan.net

Лабораторная работа 1 Моделирование случайных величин с заданным законом распределения

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 6.4.2025

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

«ТВЕРСКОЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

(ГОУВПО «ТГТУ»)

Кафедра ЭВМ

Лабораторная работа № 1

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

Выполнил: Миляр А.А.

ВМКСС – 0404

Проверил: Глухов Д.Ю.

г. Тверь, 2007

Оглавление

[1] Оглавление

[2]
Задание.

[3] Теоретическая часть.

[3.1] Гиперэкспоненциальное распределение.

[3.2] Экспоненциальное распределение.

[4] Выполнение.

[4.1] Теоретический расчёт числовых характеристик случайных величин Y1, Y2 и Y.

[4.2] Экспериментальное определение числовых характеристик.

[4.3] Гистограммы плотности и функции распределения для случайных величин Y1, Y2 и Y.

[5] Вывод.

  1.  
    Задание.

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

 Y=f(Y1, Y2)=Y1+Y2, где

 Y1 – Гиперэкспонинцеальный закон распрелеления k=4

P1=0.2; a1=1.5;

    P2=0.3; a2=0.5;

    P3=0.1; a3=1.0;

    P4=0.4; a4=2.0;

 Y2 – Экспонинциальный  закон распределения а = 0.5

В отчете по лабораторной работе в качестве результатов моделирования должны быть приведены:

  1.  эмпирические оценки средних значений и дисперсии случайных величин Y1, Y2 и Y;
  2.  теоретические средние значения и дисперсии для  тех случайных величин Y1 и Y2, для которых заданы функции распределения;
  3.  гистограммы плотности и функции распределения для случайных величин Y1, Y2 и Y.

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

Гиперэкспоненциальное распределение. 

Гиперэкспоненциальным распределением порядка k  называется распределение, описывающее случайную величину, которая с вероятностью P1 распределена по экспоненциальному закону с параметром 1, с вероятностью P2 - с параметром 2,…, с вероятностью Pk - с параметром k. При этом параметр k принимает только целочисленные значения, а сумма вероятностей P1, P2, ..., Pk  равна единице. 

Функция и плотность гиперэкспоненциального распределения порядка k имеют вид:

Fk(x)=1-, x0;

fk(x)=, x0.

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

Экспоненциальное распределение. 

Распределение непрерывной случай-ной величины с функцией распределения 

F(x)=1-e-x,  x0

называется экспоненциальным распределением. Здесь >0 и называется параметром экспоненциального распределения.

Плотность экспоненциального распределения

f(x)=F/(x)= e-x, x0.

  1.  Выполнение.

Теоретический расчёт числовых характеристик случайных величин Y1, Y2 и Y.


Величина Y1:

Величина Y2:

Величина Y3:

Экспериментальное определение числовых характеристик.

Vvedite kol-vo opitov: 100

Vvedite zakon (1 - Exp, 2 - HyperExp, 3 - Combo): 2

Vvedite poriadok K: 4

Vvedite P0: 0.2

Vvedite lamda0: 1.5

Vvedite P1: 0.3

Vvedite lamda1: 0.5

Vvedite P2: 0.1

Vvedite lamda2: 1.0

Vvedite P3: 0.4

Vvedite lamda3: 2.0

Mat ogidanie: 0.0509495

Dispersia: 0.0161777

0       0.91    0.91

1       0.03    0.94

2       0.01    0.95

3       0       0.95

4       0.02    0.97

5       0       0.97

6       0       0.97

7       0.01    0.98

8       0.01    0.99

9       0.01    1

Для продолжения нажмите любую клавишу . . .

Vvedite kol-vo otrezkov: 10

Vvedite kol-vo opitov: 100

Vvedite zakon (1 - Exp, 2 - HyperExp, 3 - Combo): 1

Vvedite lamda: 0.5

Mat ogidanie: 2.51761

Dispersia: 8.23106

0       0.49    0.49

1       0.24    0.73

2       0.1     0.83

3       0.06    0.89

4       0.03    0.92

5       0.01    0.93

6       0.04    0.97

7       0.01    0.98

8       0.01    0.99

9       0.01    1

Для продолжения нажмите любую клавишу . . .

Vvedite zakon (1 - Exp, 2 - HyperExp, 3 - Combo): 3

Vvedite lamda: 0.5

Vvedite poriadok K: 4

Vvedite P0: 0.2

Vvedite lamda0: 1.5

Vvedite P1: 0.3

Vvedite lamda1: 0.5

Vvedite P2: 0.1

Vvedite lamda2: 1.0

Vvedite P3: 0.4

Vvedite lamda3: 2.0

Mat ogidanie: 1.82435

Dispersia: 2.79444

0       0.31    0.31

1       0.28    0.59

2       0.2     0.79

3       0.12    0.91

4       0.01    0.92

5       0.03    0.95

6       0.02    0.97

7       0.01    0.98

8       0       0.98

9       0.02    1

Для продолжения нажмите любую клавишу . . .

Гистограммы плотности и функции распределения для случайных величин Y1, Y2 и Y.

  1.  Вывод.

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


Приложение 1. Листинг программы.

// Laba1.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

using namespace std;

//--------------------------------------------------------------------------

double getRandFrom_0_1(void);

double getRandExp(double lamda, double x);

vector<double> getRandExp(int N, double lamda);

vector<double> getRandHyperExp(

 int N, int k, vector<double> lamda, vector<double> p

);

vector<double> getCombo(

 int N, int k, vector<double> lamda, vector<double> p, double expLamda

);

//--------------------------------------------------------------------------

int _tmain(int argc, _TCHAR* argv[])

{

system("cls");

srand((unsigned)time(NULL));

 

cout<<"Vvedite kol-vo otrezkov: "; int n; cin>>n;

cout<<"Vvedite kol-vo opitov: "; int N; cin>>N;

vector<int> counters(n);

vector<double> mass_y(N);

cout<<"Vvedite zakon (1 - Exp, 2 - HyperExp, 3 - Combo): ";

 int mode; cin>>mode;

 

 double sum=0, sumq=0, maxy;

 switch(mode){

 case 1: //Моделирование Экспоненты

  //Ввод исх данных

  cout<<"Vvedite lamda: "; double lamda; cin>>lamda;   

  //Разыграем N величин

  mass_y=getRandExp(N, lamda);

  maxy=*max_element(mass_y.begin(),mass_y.end());

 break;

 

 case 2:{ //Моделирование Гиперэкспоненты

  cout<<"Vvedite poriadok K: "; int k; cin>>k;  

  //Ввод исх данных

  vector<double> lamda(k), p(k);

  double tmp;

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

   cout<<"Vvedite P"<<i<<": "; cin>>tmp;

   p[i]=tmp;

   cout<<"Vvedite lamda"<<i<<": "; cin>>tmp;

   lamda[i]=tmp;

  }

  //Разыграем N величин

  mass_y=getRandHyperExp(N, k, lamda, p);

  maxy=*max_element(mass_y.begin(),mass_y.end());     

 }

 break;

 

 case 3:{ //Моделирование комбинированного закона

  

  //Ввод от первого закона

  cout<<"Vvedite lamda: "; double explamda; cin>>explamda;

  //Ввод от второго закона

  cout<<"Vvedite poriadok K: "; int k; cin>>k;

  double tmp;

  vector<double> lamda(k), p(k);

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

   cout<<"Vvedite P"<<i<<": "; cin>>tmp;

   p[i]=tmp;

   cout<<"Vvedite lamda"<<i<<": "; cin>>tmp;

   lamda[i]=tmp;

  }

  //Разыграем

  mass_y=getCombo(N, k, lamda, p, explamda);

  maxy=*max_element(mass_y.begin(),mass_y.end());

 }

 break;

 

 default:

  cout<<"Error: Net takogo regima";

}

 

 //Щитаем попадания

 int i, j; double tmp;

 

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

 for (j=0, tmp=maxy/n; j < n; j++, tmp+=maxy/n){

  if (mass_y[i] <= tmp){

   counters[j]++; break;

  }

 }

 sum+=mass_y[i]; sumq+=mass_y[i]*mass_y[i];

}

cout<<"Mat ogidanie: "<<sum/N<<endl;

cout<<"Dispersia: "<<(sumq/N)-((sum*sum)/(N*N))<<endl<<endl;

 

sum=0;

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

 sum+=(double)counters[i]/N;

 cout<<i<<"\t"<<(double)counters[i]/N<<"\t"<<sum<<endl;

}

 

system("pause");

 return 0;

}

//--------------------------------------------------------------------------

double getRandFrom_0_1(void)

{

 return (double)rand()/RAND_MAX;

}

//--------------------------------------------------------------------------

double getRandExp(double lamda, double x)

{

 return -1/lamda * log(1 - x);

}

//--------------------------------------------------------------------------

vector<double> getRandExp(int N, double lamda)

{

vector<double> mass_y(N);

 

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

 mass_y[i]=getRandExp(lamda, getRandFrom_0_1());

 

 return mass_y;

}

//--------------------------------------------------------------------------

vector<double> getRandHyperExp(

 int N, int k, vector<double> lamda, vector<double> p

)

{

vector<double> mass_y(N);

 double randnum, resultlamda, l=p[0], lastl=0;

 

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

 randnum=getRandFrom_0_1();

 for (int j=0; j<k; j++){

  if ( randnum > lastl && randnum <= l){

   resultlamda=lamda[j];

  }

  lastl=l;

  l+=p[j];

 }

 mass_y[i]=getRandExp(l, getRandFrom_0_1());

}

 

 return mass_y;

}

//--------------------------------------------------------------------------

vector<double> getCombo(

 int N, int k, vector<double> lamda, vector<double> p, double expLamda

)

{

vector<double>  mass_y1(N),  mass_y2(N);

 

mass_y1=getRandExp(N, expLamda);

mass_y2=getRandHyperExp(N, k, lamda, p);

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

 mass_y1[i]+=mass_y2[i];

}

 return mass_y1;

}

//--------------------------------------------------------------------------




1. Получить практические навыки в определении передаточных функций одноконтурных и многоконтурных систем упр
2. Контрольная работа- Правила построения авиационных тарифов
3. Лекция 2 Нуклеиновые кислоты АТФ и другие органические соединения клетки Типы нуклеинов
4.  Правовое регулирование независимости судей в Российской Федерации
5. фатум ~судьба и волюнтаризм от лат.
6. План счетов бухгалтерского учета
7. Пептидные антибиотики животных как биохимические факторы противоинфекционной защиты
8. Школе НЕВЕСТ 2013 Анкета участников 1
9. Дипломная работа Правовые формы функционирования политических партий
10. Основы системного анализ