Обчислення величин ймовірності ловлі риби (язь і плотва) рибалкою (Практична робота № 3)

Страницы работы

Содержание работы

Татарченко А. С. ІН-91

Практична робота № 3

Завдання:

Один рибалка ловив рибу двох типів: язь та плотва. Ймовірність появи кожної з риб не залежать один від одної. До 20 числа кожного місяця  по парним числам ловилася тільки плотва з однаковою імовірністю, а по непарнім язь з однаковою імовірністю. Також рибалка знайшов третю величину f(x,y)=|2X-3Y|, якщо позначати імовірність вилову плотви через х, а імовірність вилову язю через у. Обчислити наступні величини: H(X), H(Y), H(f(X,Y)), H(Z,X), H(Z,Y), I(Z,X), I(Z,Y).

Програмна реалізація:

#include "stdafx.h"

#include <math.h>

using namespace System;

using namespace System::IO;

ref class inform

{public:

      template<typename T> T kol_inform(T x)

{ T l=2;

if(x>0)

return -log(x)/log(l);

}

template<typename T> T entropia(array<T>^x)

{T sum=0;

 T l=2;

      for(int i=0;i<x->Length;i++)

      {if(x[i]>0)

{sum=sum+x[i]*(log(x[i])/log(l));}}

return -sum;

}

template<typename T> T stat_nadlish(array<T>^x, T k)

{ T l=2;

 T P;

      P=1-entropia(x)/(log(l)/log(k));

return P;

}

};

int main(array<System::String ^> ^args)

{String^s;

int nx,ny,a,b,st1,st2;

Console::WriteLine("Enter nx=");

s=Console::ReadLine();

nx=Convert::ToInt32(s);

Console::WriteLine("Enter ny=");

s=Console::ReadLine();

ny=Convert::ToInt32(s);

Console::WriteLine("Enter a=");

s=Console::ReadLine();

a=Convert::ToInt32(s);

Console::WriteLine("Enter b=");

s=Console::ReadLine();

b=Convert::ToInt32(s);

Console::WriteLine("Enter st1=");

s=Console::ReadLine();

st1=Convert::ToInt32(s);

Console::WriteLine("Enter st2=");

s=Console::ReadLine();

st2=Convert::ToInt32(s);

array<double>^arr_x=gcnew array<double>(nx);

array<double>^arr_y=gcnew array<double>(ny);

array<double>^arr_px=gcnew array<double>(nx);

array<double>^arr_py=gcnew array<double>(ny);

array<double>^arr_xy=gcnew array<double>(nx*ny);

array<double>^arr_pxy=gcnew array<double>(nx*ny);

StreamReader^sr=gcnew StreamReader("G:\\4.txt");

for(double i=0;i<nx;i++)

{s=sr->ReadLine();

arr_x[i]=Convert::ToDouble(s);

Console::WriteLine("x={0}",arr_x[i]);}

for(double i=0;i<ny;i++)

{s=sr->ReadLine();

arr_y[i]=Convert::ToDouble(s);

Console::WriteLine("y={0}",arr_y[i]);}

for(double i=0;i<nx;i++)

{s=sr->ReadLine();

arr_px[i]=Convert::ToDouble(s);

Console::WriteLine("px={0}",arr_px[i]);}

for(double i=0;i<ny;i++)

{s=sr->ReadLine();

arr_py[i]=Convert::ToDouble(s);

Console::WriteLine("py={0}",arr_py[i]);}

double k=0;

for(double i=0;i<nx;i++)

{for(double j=0;j<ny;j++)

{arr_xy[k]=abs(a*pow(arr_x[i],st1))+abs(b*pow(arr_y[j],st2));

k++;}

}

for(double i=0;i<k;i++)

{Console::WriteLine("xy[{0}]={1}",i,arr_xy[i]);}

Console::WriteLine();

double pk=0;

for(double i=0;i<arr_px->Length;i++)

{for(double j=0;j<arr_py->Length;j++)

    {arr_pxy[pk]=arr_px[i]*arr_py[j];

     pk++;}

}

for(double i=0;i<pk;i++)

{Console::WriteLine("pxy[{0}]={1}",i,arr_pxy[i]);}

Console::WriteLine();

  inform^xz=gcnew inform;

Console::WriteLine("Энтропия:   H[X]={0} бит/символ",xz->entropia(arr_px));

Console::WriteLine("Энтропия:   H[Y]={0} бит/символ",xz->entropia(arr_py));

Console::WriteLine("Энтропия:   H[Z]={0} бит/символ",xz->entropia(arr_pxy));

}

Скріншоти роботи програми:

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
233 Kb
Скачали:
0