Для публикации( СТАТИСТИЧЕСКОЕ МОДЕЛИРОВАНИЕ СЛОЖНЫХ СИСТЕМ)
.pdf21 |
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.Buttons,
shellAPi,
System.Math,
System.IOUtils,
Vcl.Grids,
Vcl.StdCtrls,
Vcl.ComCtrls,
Vcl.ExtCtrls,
System.Variants,
typeDATA, Global_ID_Data, OfflineProcess, vektor,
CopyToClipboardTextQN ;
begin
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера ShetModeli(BXStat ,BUX);
TextCopyToClipbrdN(BUX); // копирование в буфер
end.
|
|
Как создать ProjectOfflineProcess. |
|
|
|
|||||
|
Запускаем программу (например LAZARUS) и открываем OfflineProcess.PAS. Корректируем |
|||||||||
|
этот файл «под себя». Файл содержит три процедуры (пример ) |
|
|
|||||||
|
procedure ShetModeli(BX:raX; |
var BUX:raX ); |
|
|
|
|||||
|
(вспомогательные |
procedure ShetRami( BX:raX; |
var Rr :vekt); |
|
||||||
|
|
procedure ShetShini(BX:raX; |
Rressor:vekt; var Rs :vekt);) |
|
|
|||||
|
Главная – этоprocedure ShetModeli(BX:raX; |
var BUX:raX ); |
|
|
||||||
|
Остальные – вспомогательные, количество их - не ограничено. Они используются в основной |
|||||||||
|
procedure ShetModeli. Структура procedure ShetModeli(BX:raX; |
var BUX:raX ); может быть |
||||||||
|
различной, главное – НАЗВАНИЕ и ПАРАМЕТРЫ ИЗМЕНЯТЬ НЕЛЬЗЯ. |
|
||||||||
№ |
Что касается unit typeDATA; и unit Global_ID_Data. Первая – содержит описания типов |
|||||||||
переменных, вторая – понятно из названия - |
названия глобальных переменных. Можно их |
|||||||||
инв. |
менять? Можно, желательно добавлять своими, не удаляя , которые есть. |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
. |
|
|
|
|
|
|
|
|
|
|
Взаи |
Сохраняем. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
дата |
Program ProjectOfflineProcess; Сама программа содержит 3 процедуры: |
|
||||||||
…….. |
|
|
|
|
|
|
|
|
||
|
begin |
|
|
|
|
|
|
|
|
|
. и |
|
|
|
|
|
|
|
|
|
|
|
TextCopyFromClipbrdQ( BXStat,Q,Nvux); // копирование из буфера |
|
||||||||
Подп |
|
ShetModeli(BXStat ,BUX); |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|||
|
|
TextCopyToClipbrdN(BUX); // копирование в буфер |
|
|
||||||
|
end. |
Q; |
число выходов |
Nvux;) |
|
|
||||
. |
(Здесь - число входов |
|
|
|||||||
№ подл |
|
|
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
|
Инв. |
|
|
|
11.2017 |
|
|
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
20 |
||
Изм. |
Кол.уч Лист № док. |
Подп. |
Дата |
|
|
|
СЛОЖНЫХ СИСТЕМ |
|||
|
|
Копировал: |
|
|
Формат А4 |
22 |
Как видим, процедура счёта процесса ShetModeli(BXStat ,BUX);
входит в program ProjectOfflineProcess;
Кладём в папку подготовленные файлы
1.Название папки результатов счёта.rtf
2.Название входного вектора.rtf
3.Название выходного вектора.rtf
4.пусто.rtf
5.Равномерный шаг.rtf
6.Равномерное распределение.rtf
7.Нормальный закон.rtf
8.beta-распределение.rtf
9.Гамма-распределение.rtf
Кладём файлы
TYPEDATA.PAS ,
VEKTOR.PAS, (содержит процедуры для работы с векторами и матрицами)
Global_ID_Data.pas, OfflineProcess.PAS (счёт модели).
Компилируем и создаём EXE – файл.
Листинг program ObchijSTATModeling
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};
инв. № |
{$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. |
|
|
|
|
|
|
|
|
|
|
№ подл. |
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
21 |
Изм. Кол.уч Лист № док. |
Подп. |
Дата |
СЛОЖНЫХ СИСТЕМ |
||
|
Копировал: |
Формат А4 |
инв. № |
Взаи. |
Подп. и дата |
Инв. № подл. |
23 |
Файл TYPEDATA.PAS
Содержит unit typeDATA – где приводятся описания типов переменных. Там же приведены переменные типа const, предельные значения которых равны
QmaxM=100; // размерность входного вектора nNvuxM=100; // размерность выходного вектора wmaxM =100; // число интервалов для гистограммы NomerZM=6; // число законов для входного вектора
Эти значения определяют границы массивов в unit Global_ID_Data;
Чтобы изменить границы массивов (размерности векторов) надо задать новые значения QmaxM и NvuxM (допустимо только в меньшую сторону). Число интервалов для построения гистограммы WvuxM можно не изменять, значение WvuxM =100 достаточно, чтобы перекрыть возможные требования.
Листинг typeDATA
unit typeDATA; { ---- |
17 августа 1993 г. ---- |
} |
{--- статистическое моделирование параметров СНС ------------------- } interface
{--- Ограничения-макс.Nvux=100; ограничение не программное --------- }
{---- число входов Q=100; число выходов Nvux=100;
w=50-число интервалов ---- } |
|
{ --- type raX=array[1..Q=100] of extended; |
raM=array[1..Q=100,1..7] of extended; |
--- raY=array[1..Nvux= 100] of extended; |
raF=array[1..Nvux=100,1..w=50] of extended; |
---raMF=array[1..Nvux,1..6] of extended;
---raPF=array[0..w] of extended;;
---raMPRFR=array[1..Nvux=100,0..w=50] of extended; M[i,j]- i-строка; j- столбец;
----------------------- } const
QmaxM=100; // размерность входного вектора nNvuxM=100; // размерность выходного вектора wmaxM =100; // число интервалов для гистограммы NomerZM=6; // число законов для входного вектора type
raX = array [1 .. QmaxM] of extended;
// raXim = array [1 .. 10] of extended; |
|
{--- type raX=array[1..Q] of extended; |
raM=array[1..Q,1..7] of extended; |
--- raY=array[1..Nvux] of extended; |
raF=array[1..Nvux,1..w] of extended; |
--- raMF=array[1..Nvux,1..8] of extended; raF0=array[1..w+1] of extended;
--- iaK=array[1..Q] of integer; |
raPF=array[0..w] of |
extended; |
--- raMPRFR=array[1..Nvux,0..w] of extended; ----------------------- |
} |
vekt = array [1 .. 3] of extended; vektcoord = array [1 .. 24] of vekt; yCos = array [1 .. 3] of vekt;
ycoordPointY = array [1 .. 24] of extended; matrix = array [1 .. 3, 1 .. 3] of extended; raMatric3_3 = array [1 .. 3, 1 .. 3] of extended;
|
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
|
|
Лист |
|
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
|
|
|
|
|
|
|
|
|
|
22 |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
СЛОЖНЫХ СИСТЕМ |
|
|
|
Копировал: |
Формат |
|
А4 |
||||||
|
|
|
|
|
|
|
24 |
// raAB100 = array [1 .. 100, 1 .. 100] of extended; raiDPoint = array [1 .. 4, 1 .. 6] of extended; raiDVector = array [1 .. 3, 1 .. 15] of extended; raCrdNaT = array [1 .. 4, 1 .. 3] of extended;
ra5 = array [1 .. 20, 1 .. 5] of extended;
// raF = array [1 .. 100, 0 .. 100 ] of extended;
raF = array [1 .. nNvuxM, 0 .. wmaxM] of extended;
{
for m:= 1 to Nvux do begin for i:= 0 to W do
begin
strFormatMX[m ,i]:= FloatToStrF(MX[m ,i], ffGeneral,6, 2); //Xmin MX[m ,i]:= StrToFloat(strFormatMX[m ,i]);
}
dopraF = array [1 .. nNvuxM, 0 .. wmaxM+5] of extended;
//raF=array[1..Nvux,1..w] of extended;
//raF = array [1 ..nNvux= 20, 1 .. w=50] of extended;
//raMF = array [1 ..nNvux= 20, 1 .. 8] of extended;
//raMF = array [1 .. nNvuxM, 1 .. 10] of extended;
// |
--- raMF=array[1..Nvux,1..8] of extended; raF0=array[1..w+1] of extended; |
|
// |
--- iaK=array[1..Q] of integer; |
raPF=array[0..w] of extended; |
//{--- type raX=array[1..Q] of extended;
//raM=array[1..Q,1..7] of extended;
{yKolesa } vekt5 = array [1 .. 5] of extended; ra12 = array [1 .. 12] of extended;
//raF0=array[1..w+1] of extended;
raF0_100 = array [0 .. wmaxM] of extended;
|
raPF0_100 = array [0 .. wmaxM] of extended; |
|
|||
|
// raMPRFR=array[1..Nvux,0..w] of extended; |
|
|||
|
raMPRFR = array [1 .. nNvuxM, 1 .. wmaxM] of extended; |
|
|||
|
// raAPoint = array [1 .. 4] of string; |
|
|
||
|
raX0_101 = array [0 .. QmaxM+1] of extended; |
|
|||
|
raString0_101 = array [0 .. QmaxM+1] of String; |
|
|||
№ |
// BUXStatProm, BXStatProm:raX0_101; |
|
|||
// BXBUX: raX0_101; |
|
|
|
||
. инв. |
int = integer; |
|
|
|
|
rea = real; |
|
|
|
|
|
Взаи |
ext = extended; |
|
|
|
|
|
|
|
|
|
|
|
// strFormatMPR , strFormatMFR, strFormatMX :raString100_100; |
|
|||
дата |
raString100_100 = array [1 .. nNvuxM, 0 .. wmaxM] of string; |
|
|||
{ |
|
|
|
|
|
. и |
for m:= 1 to Nvux do begin |
|
|
||
Подп |
for i:= 0 to W do |
|
|
|
|
begin |
|
|
|
|
|
|
|
|
|
|
|
|
strFormatMX[m ,i]:= FloatToStrF(MX[m ,i], ffGeneral,6, 2); //Xmin |
|
|||
. |
MX[m ,i]:= StrToFloat(strFormatMX[m ,i]); |
|
|||
№ подл |
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
23 |
Изм. Кол.уч Лист № док. |
Подп. |
Дата |
СЛОЖНЫХ СИСТЕМ |
||
|
Копировал: |
Формат А4 |
25 |
strFormatMPR[m ,i]:= FloatToStrF(MPR[m ,i], ffGeneral,6, 2); //Xmin MPR[m ,i]:= StrToFloat(strFormatMPR[m ,i]);
}
raX100 = array [1 .. 100] of extended;
//strFormatMPR[m ,wmaxM]:= FloatToStrF(MPR[m ,i], ffGeneral,6, 2); //Xmin
//MPR[m ,i]:= StrToFloat(strFormatMPR[m ,i]);
raM100_10 = array [1 .. QmaxM, 1 .. 10] of extended; raStringW100 = array [1 .. wmaxM] of string;
//StrNomerZ : raString20 ;
//raString20 = array [1 .. NomerZM] of string; //массив законов raString100 = array [1 .. 100] of string;
raStringNomerZ = array [1 .. NomerZM] of string;
//var StrNomerZ :raStringNomerZ;
raStringNvux = array [1 .. nNvuxM] of string; raStringBxoda = array [1 .. QmaxM] of string; raString12 = array [1 .. 12] of string;
//Тип - динамический массива переменных. TArr = array of extended;
//StrNomerJNvux: raString100;
//var StrNomerZ :raString100;
//StrNomerJBxoda: raString100;
//StrNomerJRBuxoda: raString50;
//strFormat: raString100;
implementation
end.
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
24 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |
26 |
ЛИТЕРАТУРА
1.Михайлов Г.А. Некоторые вопросы теории методов Монте-Карло, Новосибирск, 1974г.
2.Г. Корн и Т. Корн, Справочник по математике для научных работников и инженеров., М.,1968г.
3.Р.Курант, Краткий курс дифференциального и интегрального исчисления,
т.2,изд.»Наука», Москва 1970г.
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
25 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |
27 |
Скриншоты программы
В качестве примера приведен вариант ОТЛАДКА, при ВЫХ=ВХ=2:
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
26 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |
28 |
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
27 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |
29 |
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
28 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |
30 |
инв. № |
|
|
|
|
|
|
|
Взаи. |
|
|
|
|
|
|
|
Подп. и дата |
|
|
|
|
|
|
|
№ подл. |
|
|
|
|
|
АЛГОРИТМ И ПРОГРАММА |
Лист |
Инв. |
|
|
|
|
11.2017 |
СТАТИСТИЧЕСКОГО МОДЕЛИРОВАНИЯ |
29 |
|
|
|
|
|
СЛОЖНЫХ СИСТЕМ |
||
Изм. |
Кол.уч |
Лист |
№ док. |
Подп. |
Дата |
Копировал: |
Формат А4 |