- •1. Переменные 5
- •2. Массивы 6
- •3. Автономно запрограммированная процедура 6
- •Постановка задачи
- •Инструкция по пользованию программой
- •1. Переменные
- •2. Массивы
- •3. Автономно запрограммированная процедура
- •Описание программы
- •Листинг программы приведен ниже.
- •Последовательность выполнения программы.
- •Процедура ogr
- •Процедура mcch
- •Процедура ctatobr
- •Описание работы с программой
- •В каждом из файлов – даётся краткая характеристика закона распределения
- •Использование буфера обмена (бо)
- •Пояснение как создать необходимый exe-файл к программе «Оболочка» прилагается папка «Создание ехе Процесс».
- •Как создать ProjectOfflineProcess.
- •Файл typedata.Pas
- •Литература
- •Скриншоты программы
Описание программы
Блок-схема программы представлена на рис.1. Основными элементами программы являются рабочие процедуры MCCH (моделирование случайного числа с заданным законом распределения) и ctatobr (обработка результатов), и обслуживающая процедура OGR. Оператор Ф(х), или исследуемая модель, представлен в программе в виде автономно запрограммированной процедуры F(X, Y, П), что обеспечивает большую оперативность в использовании программы.
Листинг программы приведен ниже.
program ObchijSTATModeling;
uses
Vcl.Forms,
VEKTOR in 'VEKTOR.PAS',
TYPEDATA in 'TYPEDATA.PAS',
Global_ID_Data in 'Global_ID_Data.pas',
ServisProcess in 'ServisProcess.PAS',
Unit1graf in 'Unit1graf.pas' {Form1Graf},
STATUNITProcess in 'STATUNITProcess .PAS',
Start in 'Start.pas' {Form1Start},
Strexplode in 'Strexplode.pas',
ProOtladka in 'ProOtladka.PAS',
Unit1TT in 'Unit1TT.pas' {Form1},
CopyToClipboardTextQN in 'CopyToClipboardTextQN.pas',
MainStatProcess in 'MainStatProcess.pas' {IdStatMode},
ShellAdd in 'ShellAdd.pas';
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1Start, Form1Start);
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm1Graf, Form1Graf);
Application.CreateForm(TIdStatMode, IdStatMode);
Application.Run;
end.
Последовательность выполнения программы.
Последовательность выполнения программы описана ниже.
В начале счёта выполняется процедура OGR(MBX,MBUX,Q,NMAX, MK);
Далее счёт ведется в цикле
for N:=1 to Nmax do begin
MCCH(MBUX,MK,N,Q, BXStat);
//+++++++++++++++++++++++++++++++++++++++
Ф(х)
//+++++++++++++++++++++++++++++++++++++++
ctatobr(BUX,F,MPR,MFR,MX1,MF, MXBux,N,Nmax,W,Nvux);
end;
Результаты счёта сохраняются процедурой SaveFile.
// MF[k,5] iMF:string; nameiMF:string;
// var F,MF, MPR,MFR,MX1:raF;
for i:=1 to Nvux do begin
iNvux :=IntToStr(i);
nameMXBux:=(iNvux+' Параметры выходного вектора ');
nameMPR:=(iNvux+' Нормированная плотность распределения ');
nameF:=(iNvux+' Ненормированная Функция распределения ');
nameMFR:=(iNvux+' Нормированная Функция распределения ');
nameMX1:=(iNvux+' Координата Х функции распределения');
// Nvux
SaveFile(i,MXBux,nameMXBux,TFile );
SaveFile(i,MX1,nameMX1,TFile );
SaveFile(i,MPR,nameMPR,TFile );
SaveFile(i,MFR,nameMFR,TFile );
SaveFile(i,F,nameF,TFile );
end;
Процедура ogr
Процедура OGR служит для проверки исходных данных и вычисления констант.
procedure OGR( M:raM100_10;var MBUX:raM100_10;Q,NMAX:integer;var MK:raX);
// вычисляется интервал изменения i-й величины Xmax-Xmin
М - массив, описан на стр.4,
Q - количество элементов случайного вектора X;
Nmax заданное число реализаций;
MK - массив констант, используемых при работе MCCH (выходной массив процедуры OQR.).
входной вектор M заменяется на MBUX
вектор M - формируется при вводе исходных данных,
в procedure OGR эти данные пересчитываются в соответствии с законом распределения и запоминаются в MBUX.
По меткам 10,0,1,2,3,4 разделены операции в соответствии с законом распределения.
Метка 10 используется для вектора const.
10: if ABS(M[j,1]-10)<1.0E-4 then begin
//вектор const
// if round(M[j,1])=10 then begin
//вектор const, интервал изменения не задаётся M[j,4], M[j,5]
MK[j]:= 0; //MBUX[j,5]; //Xmax-Xmin = 0
0: if M[j,1]<1.0E-4 then begin
//равномерная выборка интервал изменения задан M[j,4], M[j,5]
MK[j]:=NMAX;
// MK[j]:=MBUX[j,5]; //Xmax-Xmin
1: if ABS(M[j,1]-1)<1.0E-4 then begin MBUX[j,2]:=0;
//равномерный закон интервал изменения задан M[j,4], M[j,5]
MBUX[j,3]:=0; MK[j]:=MBUX[j,5]; //Xmax-Xmin
// M[j,4]//Xmin
2: if ABS(M[j,1]-2)<1.0E-4 then begin
//нормальное распределение интервал изменения вычисляется
MBUX[j,4]:=M[j,2]-3*M[j,3]; //Xmin
MBUX[j,5]:=6*M[j,3];
MK[j]:=MBUX[j,5]; //Xmax-Xmin
3: if ABS(M[j,1]-3)<1.0E-4 then begin
//бета- распределение интервал изменения вычисляется
// M[j,2]//alfa M[j,3]//beta
//MK[j]:=вычисляется коэффициент А для нормализации функции f(x)
// MBUX[j,5]; //Xmax-Xmin
// MK[j] -нормирующий коэффициент для плотности рапределения
MBUX[j,4]:=MBX[j,4]; //Xmin
MBUX[j,5]:=X; //Xmax-Xmin
4: if ABS(M[j,1]-4)<1.0E-4 then begin
//гамма- распределение интервал изменения Х вычисляется
// для заданной Pdov-доверительной вероятности.
Для этого используется процедура
ChetPdovFgamma (teta,lambda, Pdov, X );
lambda := M[j,2]; teta:= M[j,3]; Pdov:= M[j,5];