рефераты рефераты
Главная страница > Курсовая работа: Критерій відношення правдоподібності для великих вибірок  
Курсовая работа: Критерій відношення правдоподібності для великих вибірок
Главная страница
Банковское дело
Безопасность жизнедеятельности
Биология
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
География экономическая география
Геодезия
Геология
Госслужба
Гражданский процесс
Гражданское право
Иностранные языки лингвистика
Искусство
Историческая личность
История
История государства и права
История отечественного государства и права
История политичиских учений
История техники
История экономических учений
Биографии
Биология и химия
Издательское дело и полиграфия
Исторические личности
Краткое содержание произведений
Новейшая история политология
Остальные рефераты
Промышленность производство
психология педагогика
Коммуникации связь цифровые приборы и радиоэлектроника
Краеведение и этнография
Кулинария и продукты питания
Культура и искусство
Литература
Маркетинг реклама и торговля
Математика
Медицина
Реклама
Физика
Финансы
Химия
Экономическая теория
Юриспруденция
Юридическая наука
Компьютерные науки
Финансовые науки
Управленческие науки
Информатика программирование
Экономика
Архитектура
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
География
Кредитование
Инвестиции
Информатика
Кибернетика
Косметология
Наука и техника
Маркетинг
Культура и искусство
Менеджмент
Металлургия
Налогообложение
Предпринимательство
Радиоэлектроника
Страхование
Строительство
Схемотехника
Таможенная система
Сочинения по литературе и русскому языку
Теория организация
Теплотехника
Туризм
Управление
Форма поиска
Авторизация




 
Статистика
рефераты
Последние новости

Курсовая работа: Критерій відношення правдоподібності для великих вибірок

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, ExtCtrls, Math;

type

TFrm = class(TForm)

GrpBox_HandEnter: TGroupBox;

RdoGrp_CaseEnter: TRadioGroup;

RdBtn_FileRead: TRadioButton;

RdBtn_HandEnter: TRadioButton;

StrGrd: TStringGrid;

Lbl_LevelMean: TLabel;

Cmb_LevelMean: TComboBox;

Lbl_CountValue: TLabel;

Cmb_CountValue: TComboBox;

GrpB_Result: TGroupBox;

Memo_WriteResult: TMemo;

Button1: TButton;

OpnDg: TOpenDialog;

RdB_CompGenerate: TRadioButton;

Edt_Average: TEdit;

Edt_Dispersion: TEdit;

Lbl_Average: TLabel;

Lbl_Dispersion: TLabel;

procedure Button1Click(Sender: TObject);

procedure RdBtn_HandEnterClick(Sender: TObject);

procedure Cmb_CountValueChange(Sender: TObject);

procedure RdBtn_FileReadClick(Sender: TObject);

procedure RdB_CompGenerateClick(Sender: TObject);

procedure Edt_AverageChange(Sender: TObject);

procedure Edt_DispersionChange(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Frm: TFrm;

List:TStringList;

implementation

{$R *.dfm}

Function Factorial(N:Integer):Integer;

var s:Integer;

begin

s:=1;

if(N>0) then

while (N>0) do

begin

s:=N*s;

N:=N-1;

end;

Result:=s;

end;

function FactorialHalf(N:Integer):Double;

var s:Double;

begin

s:=1;

if(N>=0) then

begin

while (N>=0) do

begin

s:=(1./2+N)*s;

N:=N-1;

end;

end;

Result:=s;

end;

Function Abs(s:Double):Double;

begin

if(s>0) then

Abs:=s

else

Abs:=-s;

end;

function FindCriticalPoint(N: Integer): Double;

var Gamma,Integral,c, h,level_mean: Double;

i: Integer; NumPointsIntegrate:LongInt;

begin

c:=0.1; i:=0; Integral:=0;h:=c/2;

level_mean:= StrToFloat(Frm.Cmb_LevelMean.Text);

NumPointsIntegrate:=1000;

if(((N-1) mod 2)=1) then

Gamma:=Power(ArcCos(-1),1./2)*FactorialHalf(((N-1)div 2)-1)

else

Gamma:=Factorial(((N-1) div 2)-1);

while(Abs(((1-level_mean) -Integral/(Gamma*Power(2,0.5*(N-1)))))>0.00001) do

begin

Integral:=0;

for i:=1 to NumPointsIntegrate do

Integral:=Integral+ (c/(NumPointsIntegrate))*Power(i*c/(NumPointsIntegrate),(0.5*N-1.5))*exp(-i*c/(2*NumPointsIntegrate));

if ((((1-level_mean) )-Integral/(Gamma*Power(2,0.5*(N-1)))))>0 then

begin

c:=c+h ;

NumPointsIntegrate:=NumPointsIntegrate+100;

end

else

begin

c:=c-h;

h:=h/10;

c:=c+h;

end;

end;

FindCriticalPoint:=c;

end;

function EvaluteStatistic(aOfValues:Array of Double; aOfProbabil:Array of Double; CountVal:Integer; f:Boolean):Double;

var i,n:Integer;

s,sum,s_2,disp,aver:Double;

begin

s:=0; n:=0;

sum:=0;

if(not f) then

begin

for i:=0 to CountVal-1 do

sum:=sum+aOfValues[i];

for i:=0 to CountVal-1 do

s:=s+2*aOfValues[i]*LnXP1(aOfValues[i]/(sum*aOfProbabil[i])-1);

Result:=s;

end

else

begin

for i:=1 to Frm.StrGrd.ColCount-1 do

if(Frm.StrGrd.Cells[i,2]<>'') then

begin

s:=s+Power(StrToFloat(Frm.StrGrd.Cells[i,1]),2);

sum:=sum+StrToFloat(Frm.StrGrd.Cells[i,1]);

n:=n+StrToInt(Frm.StrGrd.Cells[i,2]);

end;

s_2:=(s/n)-Power(sum/n,2);

disp:= StrToFloat(Frm.Edt_Dispersion.Text);

aver:= StrToFloat(Frm.Edt_Average.Text);

Result:=n*LnXP1((disp/s_2)-1)-n+s/disp-2*sum*aver/disp+n*Power(aver,2)/disp;//n*LnXP1((disp/s_2)-1);

end;

end;

procedure TFrm.Button1Click(Sender: TObject);

var ValArr:array of Double; ProbArray:array of Double;

i:Integer; s:TStringList; st,critical_point:Double;

begin

if(RdBtn_HandEnter.Checked ) then

begin

SetLength(ValArr,StrGrd.ColCount-1);

SetLength(ProbArray,StrGrd.ColCount-1);

For i:=0 to StrGrd.ColCount-2 do

begin

try

ValArr[i]:=StrToFloat(StrGrd.Cells[i+1,1]);

ProbArray[i]:= StrToFloat(StrGrd.Cells[i+1,2]);

finally end;

end;

end

else

if (RdBtn_FileRead.Checked ) then

begin

s:= TStringList.Create;

s.Text:=StringReplace(List[0],' ',#13#10,[rfReplaceAll]);

SetLength(ValArr,s.Count);

Cmb_CountValue.Text := IntToStr(s.Count );

RdBtn_HandEnter.Checked :=false;

for i:=0 to s.Count-1 do

ValArr[i]:=StrToFloat(s[i]);

s.Text:=StringReplace(List[1],' ',#13#10,[rfReplaceAll]);

SetLength(ProbArray,s.Count);

for i:=0 to s.Count -1 do

ProbArray[i]:=StrToFloat(s[i]);

end;

Memo_WriteResult.Lines.Clear();

Memo_WriteResult.Lines.Add('Значення статистики критерію:');

if(RdBtn_HandEnter.Checked ) then

begin

st:=EvaluteStatistic(ValArr, ProbArray, StrGrd.ColCount-1,false);

Memo_WriteResult.Lines.Add(FloatToStr(st));

end

else

if (RdBtn_FileRead.Checked ) then

begin

st:=EvaluteStatistic(ValArr, ProbArray,s.Count,false );

Memo_WriteResult.Lines.Add(FloatToStr(st));

end

else

begin

st:=EvaluteStatistic(ValArr, ProbArray,0,true);

Memo_WriteResult.Lines.Add(FloatToStr(st));

end;

Memo_WriteResult.Lines.Add('Значення критичної точки:');

if(RdB_CompGenerate.Checked )then

critical_point:=FindCriticalPoint(3)

else

critical_point:=FindCriticalPoint(StrToInt(Frm.Cmb_CountValue.Text));

Memo_WriteResult.Lines.Add(FloatToStr(critical_point));

if(st<critical_point) then

Memo_WriteResult.Lines.Add('Висновок: гіпотеза не суперечить реалізації вибірки.')

else

Memo_WriteResult.Lines.Add('Висновок: гіпотеза суперечить реалізації вибірки.');

end;

procedure TFrm.RdBtn_HandEnterClick(Sender: TObject);

var i:Integer;

begin

Memo_WriteResult.Lines.Clear();

Edt_Average.Visible:=false; Lbl_Average.Visible:=false;Cmb_CountValue.Visible:=true;

Edt_Dispersion.Visible: = false; Lbl_Dispersion. Visible: = false;Lbl_CountValue.Visible :=true;

StrGrd.ColCount:=StrToInt(Cmb_CountValue.Text )+1;

for i:=1 to StrGrd.ColCount do

StrGrd.Cols[i].Text:='x'+IntToStr(i);

StrGrd.RowCount:=3;

StrGrd.Rows[1].Text:='Частоти';

StrGrd.Rows[2].Text:='Ймовірності';

end;

procedure TFrm.Cmb_CountValueChange(Sender: TObject);

begin

RdBtn_HandEnterClick( Sender);

RdBtn_HandEnter.Checked:=true;

end;

procedure TFrm.RdBtn_FileReadClick(Sender: TObject);

begin

Memo_WriteResult.Lines.Clear();

Edt_Average.Visible:=false; Lbl_Average.Visible:=false;Cmb_CountValue.Visible:=false;

Edt_Dispersion.Visible:= false; Lbl_Dispersion.Visible:=false;Lbl_CountValue.Visible :=false;

List:= TStringList.Create;

if OpnDg.Execute then

List.LoadFromFile(OpnDg.FileName );

end;

function SetGaussNumber(a:String):Boolean;

var i:Integer;

begin

SetGaussNumber:=false;

for i:=1 to Frm.StrGrd.ColCount-1 do

begin

if( Frm.StrGrd.Cells[i,0]<>'') then

begin

if(Frm.StrGrd.Cells[i,2]='') then

Frm.StrGrd.cells[i,2]:='1';

if(Frm.StrGrd.Cells[i,1]=a) then

begin

Frm.StrGrd.cells[i,2]:=IntToStr(StrToInt(Frm.StrGrd.cells[i,2])+1);

SetGaussNumber:=true;

end

end;

end;

end;

procedure TFrm.RdB_CompGenerateClick(Sender: TObject);

var i:Integer;

begin

Memo_WriteResult.Lines.Clear();

Randomize;

StrGrd.Rows[1].Text:='Значення';

StrGrd.Rows[2].Text:='Частоти';

Edt_Average.Visible:=true; Lbl_Average.Visible:=true;Cmb_CountValue.Visible:=false;

Edt_Dispersion.Visible:= true; Lbl_Dispersion.Visible:=true;Lbl_CountValue.Visible :=false;

for i:=0 to 50 do

begin

if StrGrd.Col <i+1 then

StrGrd.ColCount:=StrGrd.ColCount+1;

if(not(SetGaussNumber(FloatToStr(StrToFloat(Frm.Edt_Average.Text)+RandG(0 ,1)*Power(StrToFloat(Frm.Edt_Dispersion.Text),1./2))))) then //StrToFloat(Frm.Edt_Average.Text) ,StrToFloat(Frm.Edt_Dispersion.Text )

begin

StrGrd.Cells[i+1,0]:='x'+IntToStr(i+1);

StrGrd.Cells[i+1,1]:=FloatToStr(StrToFloat(Frm.Edt_Average.Text)+RandG(0 ,1)*Power(StrToFloat(Frm.Edt_Dispersion.Text),1./2));

StrGrd.Cells[i+1,2]:='1';

end;

end;

end;

procedure TFrm.Edt_AverageChange(Sender: TObject);

begin

RdB_CompGenerate.Checked:=false;

RdB_CompGenerate.Checked:=true;

end;

procedure TFrm.Edt_DispersionChange(Sender: TObject);

begin

RdB_CompGenerate.Checked:=false;

RdB_CompGenerate.Checked:=true;

end;

end.


Додаток C. Результати виконання програми

Результати одержані при ручному вводі:

Описание: C:\Documents and Settings\Admin\Рабочий стол\2011-01-06_140433.png

Результати отримані при зчитуванні з файлу:

Описание: C:\Documents and Settings\Admin\Рабочий стол\2011-01-06_140453.png

Дані згенеровані комп’ютером:

Описание: C:\Documents and Settings\Admin\Рабочий стол\2011-01-06_140511.png

Страницы: 1, 2, 3, 4, 5, 6, 7

рефераты
Новости