Добавил:
kaslp1939@mail.ru Казимиров Леонид Петрович , инженер- механик по летательным аппаратам Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Для публикации( СТАТИСТИЧЕСКОЕ МОДЕЛИРОВАНИЕ СЛОЖНЫХ СИСТЕМ)-2

.pdf
Скачиваний:
20
Добавлен:
01.07.2020
Размер:
3.68 Mб
Скачать

21

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