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

_n

c2(5)

e

50

3,824155

0,5

100

2,822228

0,2

200

2,384076

0,15

500

2,057461

0,1

1000

1,944111

0,1

Исследование задачи №3

f(x)=4 (1 - x )3

xÎ(0;1)

_n- число индивидуальных наблюдений

c2 – статистика хи-квадрат ракспределения

e - ошибка первого рода

_n

c2(5)

e

1

4.714166

0,5

2

0.974333

0,006

3

12.833331

0,97

Исследование задачи №4

f(x)=C x exp( ax )

xÎ(0;b)

Число индивидуальных наблюдений n = 200

Параметры

c2(5)

b

B=1; a=1 

B=3; a=3 

B=2;

B=5

18.506664

0.978333

4.714166

12.838331

1

0.06

0.5

0.975

Гипотеза принимается с малой ошибкой первого рода. 

Исследование задачи №5

f(x)=åan xn

xÎ(0;1)

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

Исследование задачи №6

f(x)=C x5/3exp( -x)

xÎ(0;b)

Число индивидуальных наблюдений n = 200

Параметры

c2(5)

b

B=1 

B=2

B=3

B=5

18.506664

4.714166

0.978333

12.838331

1

0.5

0.06

0.975

Программа:

#include <conio.h>

#include <fstream.h>

#include <stdlib.h>

#include <math.h>

const n=500;

const r=6;

int m;

/***** METHOD 1: X=(a*x0+c) mod m  *****/

void met1(int x[n])

{  int a,c;

a = 7;  c = 1;  m = 3610;  x[0]=0;

for (int i=0; i<n; i++)  x[i+1] = fmod(a*x[i]+c,m);

}

///////////////////////////////////////////

/***** hi2 *****/

float hi2(float d[n],float b)

{ int nyu[10];

float a,c,h;

h=b/(float)r;

for( int l=0;l<r;l++)

{  nyu[l]=0;

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

if ( d[i]>(float)l*h && d[i]>(float)(l+1)*h) nyu[l]++;

}

c=(float)n/r;

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

if (nyu[i]>0)

{ a=(float)nyu[i];//a=(float)nyu[i]/r;

h=h+(a-c)*(a-c);

}

h=h/c;

return h;

}

/***** hi2 *****/

/*float hi2(float d[n],float b)

{ int nyu[10];

float a,c,h;

h=(float)b/(float)r;

c=(float)r/n;

for( int l=0;l<r;l++)

{  nyu[l]=0;

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

if ( d[i]>(float)l*h && d[i]>(float)(l+1)*h) nyu[l]++;

}

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

if (nyu[i]>0)

{ a=(float)nyu[i]*r/n;//a=(float)nyu[i]/r;

h=h+a*a;

}

h=h-(float)n/r*(1-2*r);

h=h/(float)n;

return h;

} */

///////////////////////////////////////////

/***************************/

void z1(int d[n],float a[n])

{ float alfa,lamda;

cout<<"\n 1.     ";

cout<<"lamda = ";cin>>lamda;

if(lamda>0)

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

{ alfa=(float)d[i+1]/m;

a[i]=-log(alfa)/lamda;

}

else z1(d,a);

ofstream out1("z1.dat");

out1<<"Экспоненциальное, t[0]="<<lamda<<", t[1]=0.0000\n";

out1<<"0 "<<n<<"\n";

for(int i=0;i<n;i++) out1<<a[i]<<"\n";

out1.close();

}

/***************************/

void z2(int d[n],float a[n])

{ float alfa,c;

cout<<"\n 2.    ";

c=0.70588235;

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

{  alfa=(float)d[i+1]/m;

if( alfa>0 && alfa<c/2 )

a[i]=sqrt(2*alfa/c);

if( alfa>c/2 && alfa<7*c/6 )

a[i]=pow((3*alfa/(2*c)-0.75),0.33333333);

if( alfa>7*c/6 && alfa<1)