Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИМЭП.doc
Скачиваний:
21
Добавлен:
02.04.2015
Размер:
543.23 Кб
Скачать

Имитационное моделирование случайных величин с усеченным нормальным распределением

Понятие усеченного нормального распределения.

Параметры распределения:

  • математическое ожидание M(Y) нормального распределения;

  • среднеквадратическое отклонение (Y) нормального распределения;

  • максимальное и минимальное значения и(точки усечения).

Функция распределения:

где ;;;.

Задача. Требуется смоделировать случайную величину Y, имеющую усеченное нормальное распределение с математическим ожиданием M(Y) нормального распределения, среднеквадратическим отклонением (Y) нормального распределения и точками усечения и, с помощью случайной величины с равномерным распределением на отрезке [0,1].

Принцип моделирования. Используется процедура имитационного моделирования нормального распределения и дополняется процедурой усечения.

Алгоритм моделирования (рис. 3).

Оператор 1 обращается к процедуре моделирования случайной величины Y, нормально распределенной с заданными параметрами M(Y) и (Y).

Оператор 2 проверяет условие попадания случайной величины Y в неусеченную область. При выполнении этого условия значение случайной величины Y с усеченным нормальным распределением считается найденным. В противном случае управление в алгоритме передается вновь на вход оператора 1, и генерируется другая случайная величина.

Имитационное моделирование случайных величин с произвольным распределением

Задача. Требуется смоделировать случайную величину Y с заданной плотностью распределения f(x) при помощи случайной величины , равномерно распределенной на отрезке [0,1].

Принцип моделирования. Плотность распределения f(x) аппроксимируется кусочно-постоянной функцией, определенной на интервале . Это значит, что данный интервал разбит наn частичных интервалов ,, плотность распределения на каждом из которых принимается постоянной. Величины,, выбираются так, чтобы вероятности попадания в любой частичный интервал были одинаковы, т.е.

, .

Попадание случайной величины Y в любой частичный интервал можно рассматривать как событие, входящее в ПГНС. А если случайная величина Y попадает в данный частичный интервал, то имеет на нем равномерное распределение.

Алгоритм моделирования.

Основные этапы моделирования.

  1. С помощью датчика случайных чисел с равномерным распределением, вырабатывающего величину , моделируют дискретную случайную величину – номер интервала k.

  2. Вторично разыгрывают случайную величину и определяют возможное значение случайной величины Y при условии ее попадания в найденный интервал k:

, .

Схема алгоритма показана на рис. 4.

Программная реализация имитационной модели случайных событий

Алгоритмы имитационного моделирования случайных факторов в форме случайных событий, описанные в п. 3, 4, реализованы в среде программирования Borland Delphi 7. Windows-окно формы программы представлено на рис. 5. Код программы приведен ниже.

unit Unit1;{Имитационное моделирование случайных событий}

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Grids;

type

TForm1 = class(TForm)

GroupBox1: TGroupBox;{ИМ прост. соб-я (верхняя панель)}

GroupBox2: TGroupBox;{ИМ ПГНС (нижняя панель)}

Label1: TLabel;{Вероятность наступления события}

Edit1: TEdit;{Вероятность наступления события}

Button1: TButton;{Реализация (на верхней панели)}

RadioGroup1: TRadioGroup;{Результат реализации}

Label2: TLabel;{ДСЧ (на верхней панели)}

Edit2: TEdit;{ДСЧ (на верхней панели)}

Label3: TLabel;{Количество событий}

Edit3: TEdit;{Количество событий}

StringGrid1: TStringGrid;{Вероятности наступления событий}

Label4: TLabel;{Вероятности наступления событий}

Label5: TLabel;{Точки разбиения единичного отрезка}

StringGrid2: TStringGrid;{Точки разбиения единичного отрезка}

Button2: TButton;{Реализация (на нижней панели)}

Label6: TLabel;{ДСЧ (на нижней панели)}

Label7: TLabel;{Происшедшее событие}

Edit4: TEdit;{ДСЧ (на нижней панели)}

Edit5: TEdit;{Происшедшее событие}

procedure Button1Click(Sender: TObject);

procedure Edit3Change(Sender: TObject);

procedure StringGrid1Exit(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const Max=1000;{Максимальное значение индекса массива}

var

PA:extended;{Вероятность наступления события}

P:array[1..Max] of extended;{Массив вер-тей наст-я событий}

L:array[1..Max] of extended; {Массив точек разб-я един. отрезка}

z:extended; {Реализация ДСЧ}

k:cardinal; {Количество событий}

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

begin{Определение реализации случайного события}

randomize;

PA:=StrToFloat(Edit1.Text);

z:=random; Edit2.Text:=FloatToStr(z);

if z<PA then RadioGroup1.ItemIndex:=0

else RadioGroup1.ItemIndex:=1;

end;

procedure TForm1.Edit3Change(Sender: TObject);

var i:cardinal;

begin{Подготовка к вводу параметров ПГНС}

k:=StrToInt(Edit3.Text);{Ввод количества событий}

StringGrid1.RowCount:=k+1; StringGrid2.RowCount:=k+1;

StringGrid1.Cells[0,0]:='Номер';

StringGrid1.Cells[1,0]:='Вероятность';

StringGrid2.Cells[0,0]:='Номер';

StringGrid2.Cells[1,0]:='Точка разбиения';

for i:=1 to k do

begin

StringGrid1.Cells[0,i]:=IntToStr(i);

StringGrid2.Cells[0,i]:=IntToStr(i);

end;

end;

procedure TForm1.StringGrid1Exit(Sender: TObject);

var i,j:cardinal;

begin{Определение точек разбиения единичного отрезка}

for i:=1 to k do

begin

P[i]:=StrToFloat(StringGrid1.Cells[1,i]);

L[i]:=0; for j:=1 to i do L[i]:=L[i]+P[j];

StringGrid2.Cells[1,i]:=FloatToStr(L[i]);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

var i:cardinal;

begin{Определение реализации ПГНС}

randomize; z:=random;

Edit4.Text:=FloatToStr(z);{Вывод реализации ДСЧ}

for i:=1 to k do

begin

if z<L[i] then

begin

Edit5.Text:=IntToStr(i);{Вывод происшедшего события}

break;

end;

end;

end;

end.

Рис. 5. Windows-окно формы программы имитационного моделирования случайных факторов в форме случайных событий