Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
20
Добавлен:
02.05.2014
Размер:
156.67 Кб
Скачать

2. Практическая часть

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

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

c = 4

l = 2

a = 0

b = 8

    1. Блок-схема алгоритма.

Начало

Определение переменных

Разбиение на интервалы

Генерация чисел из базовой последовательности

Проверка по гистограмме

t:=t+1

q:=q+simpson(10,3,x1)*0.001;

x1:=x1+0.001;

n[t]:=nn[t]+1;

a[i]:=x1-0.001;

i:=i+1;

deltas:=0; ll:=q1;

ob_ploshtr:=0;

ploshpr:=nn[i]/m

i:=i+1

z1:=random;z2:=random;

i:=random(n+1); j:=j+1;

y[j]:=a[i]+z2*(a[i+1]-a[i]);

ploshtr:=((simpson(10,3,ll)+

simpson(10,3,ll+l))*l)/2;

ll:=ll+l; ob_ploshtr:=ob_ploshtr+ploshtr;

deltas:=deltas+abs(ploshpr-ploshtr);

l:=(q2-q1)/n;

c[i]:=q1+l*i; nn[i]:=0;

гистограмма

2.2 Результаты исследования работы генератора.

Генерацию случайных чисел распределенных по закону Симпсона проводили с помощью метода Бусленко. Генерировалось 4000 случайных чисел распределенных на интервале от 0 до 16. Заданный отрезок разбивали на 30 интервалов. Результаты, выдаваемые программой следующие. На рисунке 1 приведены результаты работы генератора.

Рисунок 1

Расчет точности:

- теоретическая площадь.

- практическая площадь.

- разность между практической и теоретической площадью.

- погрешность.

Погрешность этого генератора не превышает 10%. Зависимость случайных чисел и процента погрешности приведены на рисунке 2.

Рисунок 2

Зависимость представлена в виде графика, где по горизонтальной оси отложены количество чисел, а по вертикальной оси проценты погрешности. Исследование проводилось при количестве интервалов равному 30.

Из графика видно, что при увеличении чисел точность генератора улучшается.

Вывод

При исследовании предметной области было установлено, что точность генератора зависит от количества чисел и интервалов. При написании программы был использован встроенный генератор случайных чисел. Но нужно отметить, что он генерирует псевдослучайные числа. Это отражается на точности генератора. Учитывая результаты данной работы по моделированию, можно построить первоначальную модель и проанализировать её некоторые аспекты. Более точное моделирование требует других аппаратных и программных средств.

Список литературы

  1. Вентцель Е.С., Овчаров Л.А. Теория вероятностей и её инженерные приложения, М: Наука, 1988.

  2. Вентцель Е.С. Исследование операций, М:Наука, 1980.

  3. Лифшиц А.Л. Статистическое моделирование СМО, М., 1978.

4. Гмурман В.Е. Теория вероятностей и математическая статистика, М: Высшая школа, 2001.

Приложение

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

const

n=30; {Chislo otrezkov}

m=4000; {Chislo tochek}

var

ob_ploshtr,deltas,ploshtr,ploshpr,ll,delta_s,

l,p,q1,q2:real;

c,y:array [0..m] of real;

a,zi,f_zi:array[0..n] of real;

NN,WI:array [1..n] of integer;

xi,yi,S,i,j,t:integer;

q:extended;

function simpson(c:real; l:real; x:real):extended;

begin

if ((x<=c-2*l) or (x>c+2*l)) then

simpson:=0;

if ((x>c-2*l) and (x<=c)) then

simpson:=(x-(c-2*l))/(4*sqr(l));

if ((x>c) and (x<=c+2*l)) then

simpson:=((c+2*l)-x)/(4*sqr(l));

end;

begin

paintbox1.Canvas.Brush.color:=clwhite;

paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);

p:=0;

q1:=4;

q2:=16;

x1:=q1;

p:=0.999999;

a[0]:=q1;

q:=0;

x1:=q1;

for i:=1 to n do

begin

repeat

q:=q+simpson(10,3,x1)*0.001;

x1:=x1+0.001;

until (q>(p*i)/n) ;

a[i]:=x1-0.001;

end;

randomize;

for j:=1 to m do

begin

z1:=random;

z2:=random;

i:=random(n+1);

y[j]:=a[i]+z2*(a[i+1]-a[i]);

end;

l:=(q2-q1)/n;

for i:=0 to n do BEGIN c[i]:=q1+l*i; nn[i]:=0;end;

for i:=1 to m do

begin

t:=-1;

repeat t:=t+1; until y[i]<=c[t];

nn[t]:=nn[t]+1;

end;

j:=0;

for i:=0 to n do j:=j+nn[i];

for i:=1 to n do wi[i]:=trunc(m*f_Zi[i]*l);

deltas:=0;

ll:=q1;

ob_ploshtr:=0;

for i:=1 to n do

begin

ploshpr:=nn[i]/m;

ploshtr:=((simpson(10,3,ll)+simpson(10,3,ll+l))*l)/2;

ll:=ll+l;

ob_ploshtr:=ob_ploshtr+ploshtr;

deltas:=deltas+abs(ploshpr-ploshtr);

end;

deltas:=deltas*100;

j:=0;

for i:=0 to n do

begin

paintbox1.Canvas.Rectangle(i*10,200,i*10+11,200-trunc(nn[i]*kh/(m*l)))

end;

for i:=1 to n*10 do

begin

xi:=i;

xx:=4+xi/(10*n/12);

yy:=simpson(10,3,xx);

yi:=trunc(kh*yy);

paintbox1.Canvas.Pixels[10+xi,200-yi]:=clred;

end;

Edit1.text:=copy(floattostr(deltas),1,4)+'%';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

paintbox1.Canvas.Brush.color:=clwhite;

paintbox1.Canvas.Rectangle(0,0,paintbox1.Width,paintbox1.Height);

end;

end.

Соседние файлы в папке Симпсона