Реферат Повний факторний експеримент

Анотація

Необхідними і достатніми умовами визначення будь-якій галузі знань як науки служить наявність: предмета дослідження, методу дослідження та коштів на цього методу.

Для кібернетики, як науки, предметом дослідження є системи будь-який природи і їхнє керованість, методом дослідження – математичне моделювання, стратегією дослідження – системний аналіз, а засобом дослідження – обчислювальні машини. Тому кібернетику можна з'ясувати, як науку, вивчаючу системи будь-який природи, здатні сприймати, зберігати і переробляти інформацію з метою оптимального управління.

Зараз із кожним роком зростає роль коштів, дозволяють раціонально використовувати ресурси, виділені вирішення завдань. Частина методів кібернетики призначені збільшення ефективності наукового експерименту усім стадіях розробки, дослідження, проектування й експлуатації виробництв.

Кібернетика входять такі поняття, як системи, інформація, збереження і переробка інформації, управління системами і оптимізація систем. У цьому кібернетика широко користується методом математичного моделювання і намагається для отримання конкретних результатів, дозволяють аналізувати і синтезувати студійовані системи, прогнозувати їх оптимальне поведінку і виявляти канали і алгоритми управління.


Запровадження

Там, коли інформації про аналізованому процесі недосить, чи процес настільки складний, що організувати неможливо скласти його детерміновану модель, вдаються доекспериментально-статистическим методам. У цьому процес розглядають як “чорну скриньку”. Розрізняють пасивний і активний експеримент.

Пасивний експеримент традиційною методом, відповідно до яким ставиться велика серія дослідів з почерговим варіюванням кожної з змінних.

Активний експеримент ставиться із заздалегідь складеного плану (планування експерименту), у своїй передбачається одночасне зміна всіх параметрів, які впливають процес, що дозволяє відразу встановити силу взаємодії параметрів на цьому підставі скоротити загальна кількість дослідів.

Використання принципів регресійного і кореляційного аналізу при обробці досвідчених даних дозволяє знайти залежність між перемінними й умови оптимуму. У обох випадках математичної моделлю є функція відгуку, котра зв'язує параметр оптимізації, що характеризує результати експерименту, зі змінними, які експериментатор варіює під час проведення дослідів.

>Регрессионний аналіз – одне з найбільш поширених статистичних методів. Він використовується при побудові математичної залежності з урахуванням експериментальних даних. Завдякирегрессионному аналізу можливі побудови математичну модель і статистичний аналіз результатів. У першому випадку вдаються до різним варіантів методу найменших квадратів.

У основі регресійного аналізу лежить кілька статистичних передумов, виконання яких гарантує достовірність аналізу отриманої математичну модель:

>Виходная змінна – випадкова величина з розподілом, чинники – суть не випадкові величини; практично це, що помилки у управліннями чинниками, по крайнього заходу менше помилок виміру атмосферного явища вихідний перемінної.

Зв'язок між чинниками відсутня.

>Дисперсии вихідний перемінної однорідні (>равноточние) у будь-якій точці факторного простору.

Обстежуваний об'єкт позбавлений динамічних властивостей (розглядаються стаціонарні режими об'єкта).


1. Опис методу і алгоритму рішення

Ставиться завдання визначення локального оптимуму на об'єкті дослідження, при цьому використовувати математичну модель, отриману з допомогою повного факторного експерименту.

Вибирають чинники та вихідну зміну, задають області визначення факторів, і вихідний перемінної

>ymin yymax

>X1minX1X1max

>X2minX2X2max

........

У сфері визначення чинників вибирається точкаXi0, і =1…n (нульової рівень чинників), що у попередніх дослідженнях була визнана найкращою з погляду оптимуму y.Задается інтервал варіювання чинниківDXi. Визначаються верхні і нижні рівні чинників:

>Xiв =Xi0 +DXi;

>Xiн =Xi0 -DXi (1)

за умови, що (XiнXiв) < (XiminXimax).

>Кодируются чинники (перехід до нової безрозмірною системі координатx1,x2, …,xn)


У новій системі координат чинники приймають значення +1 і –1.

План експерименту (матриця планування) записується як таблиці.Фиктивная зміннаx0 дорівнює одиниці. У матрицю також записують результати проведення паралельних дослідів (>m дослідів у кожному рядку матриці).

План експерименту повинен матиортогональностью:

Як наслідок (4) план експерименту маєсимметричностью:

 інормировкой

Розрахунок коефіцієнтів рівняння регресії. Коефіцієнти розраховуються по рівнянню

де

й остаточно


де N – число рядків матриці планування (число різних умов досвіду);m – число паралельних дослідів з кожної рядку матриці.

>Построчние дисперсії по паралельним дослідам з кожної рядку матриці розраховуються по рівнянню


деfu =mu –1.

Перевірка однорідності дисперсій здійснюється за

критеріюКохрена, розрахункове значення визначають по рівнянню:

деsimax – максимальною з розрахованих дисперсій паралельних дослідів (>построчних дисперсій); знаменник – сума всіх дисперсій за рівнями чинника.

Якщо виконується умова

>Gp<Gт (>fi =mi – 1,f2 =p,q = 0,05),

то гіпотеза про однорідності дисперсій правомірна.Gт знаходять за таблицею критеріюКохрена для ступенів свободиfi (максимальна дисперсія),f2 (число рівнів) і рівня значимостіq.

Уся перевірка однорідності дисперсій здійснюється за умовиmi =m,p = N; індекс і замінюється індексом u.

Розрахунок помилки досвіду виробляєтьсяусреднениемпострочних дисперсій

для числа ступенів свободи

>f0 = N (m – 1 )

Оцінка значимості коефіцієнтів регресії виробляється розрахункомt-критерия за такою формулою

деbi –i-й коефіцієнт регресії, розрахунком дисперсій коефіцієнтів за такою формулою з урахуванням психології та оцінкою за умовою

>tip>tт (>f0 =N0 –1,q = 0,05) (14)

Якщо якогось коефіцієнта умова (14) не виконується, то відповідний чинник можна вважати незначущим і виключити їх його з рівняння.


Перевірка адекватності рівняння регресії здійснюється за формулам.

кібернетика локальний оптимум регресія

деyu – експериментальні значення вихідний перемінної;yu – значення, розраховані по рівнянню регресії;fад = N - l, де l – число зв'язків, однакову числу коефіцієнтів рівняння, що залишилися після перевірки їхньої значимості;sад – дисперсія адекватності.

ПошукFт виробляється для ступенів свободиfад іf0.

Якщо розрахункове значення критерію Фішера

>Fp<Fт (>fад = N – l,f0 =N0 – 1,q = 0,05) (19)

для ступенів свободиfад,f0 і рівня значимості, то рівняння вважається адекватним.


2. Програмна реалізація алгоритму

 

2.1 Опис програми

 

Програма написана серед розробкиBorlandDelphi 5.0. вона є працездатною і змінюваного. Перевірка працездатності й нормально функціонувати було зроблено наIntelPentiumIII 1200 з обсягом оперативної пам'яті в 512 МБ.

Ця програма виробляє обчислення із заздалегідь закладених у неї даним. Однак точно можна легко змінити в введення даних із термінала не порушуючи загальної структури.

2.2 Опис алгоритму

 

Список використовуваних змінних

>expResult:array[ 1..8, 1..10 ] of real;

матриця що зберігає результати експерименту

>yAverage:array[ 1..8 ] of real;

матриця що зберігаєпострочние середні значення експериментальних даних У

>yExpResult:array[ 1..8 ] of real;

матриця що зберігає значення експериментальних даних Y. Експеримент побудований заполученой математичну модель.

>regCoeficient:array[ 0..3 ] of real;

матриця що зберігає значеннякоефициентов регресії,полеченних по формулам 7-8.

>tCritery:array[ 0..3 ] of real;

матриця що зберігає значенняt-критерия кожному закоефициента рівняння регресії,расчитанних за такою формулою 12.

>dSu:array[ 1..8 ] of real;

матриця що зберігає значенняпострочних дисперсій,полеченних за такою формулою 9.

>dSo: real;

помилка експерименту, формула 11.

>dSbi: real;

>среднеквадратическое відхиленнякоефициентов регресії, необхідні перебування критеріюСтьюдента, формули 13-15.

>dSad: real;

дисперсія адекватностіматематичексой моделі.

>fP: real;

змінна що зберігає значення критерію Фішера. Перевірка адекватності математичну модель, формула 19.

G: real;

змінна що зберігає значення критеріюКохрена. Перевірка однорідності дисперсій кожному рівні чинника, формула 10.

>gipotesa1D:boolean;

змінна що зберігає значення однорідності дисперсій. ЗначенняTrue відповідає тому факту, що дисперсії однорідні,False – зворотне твердження.

>regAd:boolean;

змінна що зберігає значення адекватності математичну модель. ЗначенняTrue відповідає тому факту, що математична модель адекватна,False – зворотне твердження.

>decisionRegMean:array[ 0..3 ] ofboolean;

матриця що зберігає значення значимостікоефициентов регресії. ЗначенняTrue відповідає тому факту, що цекоефициент значущий,False – зворотне твердження.

Список процедур і державних функцій

>functionRandomNorm(mF,dF: real ): real;

>фунция повертає величину ззаданойдисперсией і мат. очікуванням і нормальним розподілом.

>functionCalculateX(level:byte ): real;

функція повертає значення x на заданому рівні експерименту.

>procedureMakeExperiment;

процедура здійснює експеримент при заданих умовах.

>procedureCalculateYAverage;

процедуравичисляющаяпострочние середні значення Y.

>procedureCalculateRegCoeficients;

процедуравичисляющаякоєфициентирегресии.

>procedureCalculatedSu;

процедура підраховуєдисперсиюdSu.

>procedureCheck1D;

процедура перевірки однорідності дисперсій.

>procedureCalculatedSo;

процедура обчислення помилки експерименту.

>procedureCalculateRegMean;

процедураосуществяющая перевірку значимостікоефициентов регресії.

>procedureMakeDecision;

процедури прийняття рішень, за результатами перевірки критеріюСтьюдента.

>functionCalculateL:byte;

функція повертає кількість значимихкоефициентов регресії, необхідна для перевірки адекватностіуравненя регресії критерієм Фішера.

>procedureCalculateYExp;

процедура підрахункуекспериментального значення Y. Експеримент проходить за одержаному рівнянню регресії.

>procedureCheckRegAd;

процедура перевірки адекватності рівняння регресії.

>procedureFillPlaneMatrix;

процедура виведення даних: план експерименту.

>procedureFillExpMatrix;

процедура виведення даних: результат експерименту.

>procedureFillYAverage;

процедура виведення даних:построчние середні значення Y.

>procedureFillRegCoeficient;

процедура виведення даних:коефициенти регресії.

>procedureFillDSu;

процедура виведення даних:построчние дисперсії.

>procedureFillExpMistake;

процедура виведення даних: помилкаексперимента.

>procedureFillRegCoeficientCritery;

процедура виведення даних: значимістькоейициентоврегресии.

>procedureFillYExp;

процедура виведення даних: Yполучений по рівнянню регресії.

>procedureFillFCritery;

процедура виведення даних: критерій Фішера.

>procedureFillresultTables;

процедураобъеденяющая висновок даних.


3. Інструкція користувача

Для управління даним програмним продуктом використовується одне кнопка “Виробити розрахунок”, оскільки програма працює із заданими початковими умовами та даними.

Відповідно, всі результати своєї роботи програми можна переглянути через закладання.

Наступні малюнки дають повну наочність програми,обеспечивающуюся завдяки графічної інтерфейсу.

Малюнок 1

Малюнок 2


Малюнок 3

Малюнок 4


4. Результати роботи програми

Малюнок 5


Список літератури

1. О.Г. Бондар, Г.А.Статюха. «Планування експерименту у хімічній технології». “>Вища школа”. Київ 1976.

2. О.Г. Бондар, Г.А.Статюха, І.А.Потяженко. «Планування експерименту при оптимізації процесів хімічної технології». “>Вища школа”. Київ 1980.

3. В.В.Кафаров. «Методи кібернетики в хімії та хімічної технології».


Додаток

>Листинг програми

>unitmain;

>interface

>uses

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

>Menus,ComCtrls,Buttons,StdCtrls,Grids,Tabnotbk;

>type

>TFMain =class(TForm)

>MainMenu1:TMainMenu;

>F1:TMenuItem;

>Exit1:TMenuItem;

>SpeedButton1:TSpeedButton;

>TNotebook:TTabbedNotebook;

>Label1:TLabel;

>SGridPlaneMatrix:TStringGrid;

>SGridY:TStringGrid;

>SGridYAverage:TStringGrid;

>Label2:TLabel;

>SGridRegCoef:TStringGrid;

>Label3:TLabel;

>Label4:TLabel;

>SGridDSu:TStringGrid;

>LblExpMistake:TLabel;

>Label5:TLabel;

>SGridCritery:TStringGrid;

>LblFCritery:TLabel;

>SGridYExp:TStringGrid;

>Label6:TLabel;

>StatusBar1:TStatusBar;

>procedureExit1Click(Sender:TObject);

>procedureSpeedButton1Click(Sender:TObject);

>procedureFormCreate(Sender:TObject);

private

{Privatedeclarations }

public

{ Publicdeclarations }

end;

>var

>FMain:TFMain;

>implementation

>usesffe_typeconst;

{$R *.>DFM}

>functionRandomNorm(mF,dF: real ): real;

>begin

>RandomNorm:=mF +dF *random;

end;

>functionCalculateX(level:byte ): real;

>var

>xResult: real;

>xU: real;

і:byte;

>begin

>xResult:= 0;

і:= 0;

>ifplaningMatrix[ і,level ] = 1then

>xU:= u[ і, 2 ]

>else

>xU:= u[ і, 1 ];

>xResult:=xResult +p[ і ] *xU;

>for і:= 1 to 3do

>begin

>ifplaningMatrix[ і,level ] = 1then

>xU:= u[ і, 2 ]

>else

>xU:= u[ і, 1 ];

>xResult:=xResult +p[ і ] *xU;

>xResult:=xResult +p[ і ] *xU *xU;

end;

>CalculateX:=xResult;

end;

>procedureMakeExperiment;

>var

>xValue: real;

і, j:byte;

>begin

>for і:= 1 to 8do

>begin

>xValue:=CalculateX( і );

>for j:= 1 to 10do

>expResult[ і, j ]:=c1 *xValue +c2 *RandomNorm(mF,dF );

end;

end;

>procedureCalculateYAverage;

>var

і, j:byte;

>begin

>for і:= 1 to 8do

>begin

>yAverage[ і ]:= 0;

>for j:= 1 to 10do

>yAverage[ і ]:=yAverage[ і ] +expResult[ і, j ];

>yAverage[ і ]:=yAverage[ і ] /expNum;

end;

end;

>procedureCalculateRegCoeficients;

>var

і, j:byte;

>begin

>CalculateYAverage;

>for і:= 0 tofactorNumdo

>begin

>regCoeficient[ і ]:= 0;

>for j:= 1 toplaneNumdo

>regCoeficient[ і ]:=regCoeficient[ і ] +planingMatrix[ і, j ] *yAverage[ j ];

>regCoeficient[ і ]:=regCoeficient[ і ] /planeNum;

end;

end;

>procedureCalculatedSu;

>var

і, j:byte;

>begin

>for і:= 1 toplaneNumdo

>begin

>dSu[ і ]:= 0;

>for j:= 1 toexpNumdo

>dSu[ і ]:=dSu[ і ] +sqr(expResult[ і, j ] -yAverage[ і ] ) / (expNum - 1 );

end;

end;

>functionFindMax: real;

>var

і:byte;

>fResult: real;

>begin

>fResult:= 0;

>for і:= 1 toplaneNumdo

>ifdSu[ і ] >fResultthen

>fResult:=dSu[ і ];

>FindMax:=fResult;

end;

>procedureCheck1D;

>var

>dSum: real;

і:byte;

>begin

>dSum:= 0;

>for і:= 1 toplaneNumdo

>dSum:=dSum +dSu[ і ];

G:=FindMax /dSum;

>gipotesa1D:=false;

>if G < 0.2926then

>gipotesa1D:=true;

>ifgipotesa1D =falsethen

>begin

>ShowMessage ('>Дисперсии не однорідні');

end;

end;

>procedureCalculatedSo;

>var

і:byte;

>begin

>dSo:= 0;

>for і:= 1 toplaneNumdo

>dSo:=dSo +dSu[ і ];

>dSo:=dSo /planeNum;

end;

>procedureCalculateRegMean;

>var

і:byte;

>begin

>dSbi:=dSo /planeNum /expNum;

>for і:= 0 tofactorNumdo

>tCritery[ і ]:=abs(regCoeficient[ і ] ) /sqrt(dSbi );

end;

>procedureMakeDecision;

>var

і:byte;

>begin

>for і:= 0 tofactorNumdo

>begin

>decisionRegMean[ і ]:=false;

>iftCritery[ і ] > 2.26then

>decisionRegMean[ і ]:=true;

end;

end;

>functionCalculateL:byte;

>var

і:byte;

>xResult:byte;

>begin

>xResult:= 0;

>for і:= 0 to 6do

>ifdecisionRegMean[ і ]then

>inc(xResult );

>CalculateL:=xResult;

end;

>procedureCalculateYExp;

>var

>xResult: real;

>level, і:byte;

>begin

>forlevel:= 1 toplaneNumdo

>begin

>xResult:= 0;

>for і:= 0 to 3do

>xResult:=xResult +regCoeficient[ і ] *planingMatrix[ і,level ];//>xU;

>yExpResult[level ]:=xResult;

end;

end;

>procedureCheckRegAd;

>var

і:byte;

>begin

>CalculateYExp;

>dSad:= 0;

>for і:= 1 toplaneNumdo

>dSad:=dSad +sqr(yAverage[ і ] -yExpResult[ і ] );

>dSad:=dSad *expNum / (planeNum -CalculateL );

>fP:=dSad /dSo;

>regAd:=false;

>iffP <fisherCritery[planeNum -CalculateL ]then

>regAd:=true;

>ifregAd =falsethen

>begin

>ShowMessage( '>Ренресионнаямодельне адекватна' );

end;

end;

>procedureFillPlaneMatrix;

>var

і, j:byte;

>begin

>FMain.SGridPlaneMatrix.Cells[ 0, 0 ]:= '>x0';

>FMain.SGridPlaneMatrix.Cells[ 1, 0 ]:= '>x1';

>FMain.SGridPlaneMatrix.Cells[ 2, 0 ]:= '>x2';

>FMain.SGridPlaneMatrix.Cells[ 3, 0 ]:= '>x3';

>for і:= 0 tofactorNumdo

>for j:= 1 toplaneNumdo

>FMain.SGridPlaneMatrix.Cells[ і, j ]:=FloatToStr(planingMatrix[ і, j ] );

end;

>procedureFillExpMatrix;

>var

і, j:byte;

>begin

>for і:= 1 toexpNumdo

>FMain.SGridY.Cells[ і, 0 ]:=IntToStr( і );

>for і:= 1 toplaneNumdo

>FMain.SGridY.Cells[ 0, і ]:=IntToStr( і );

>for і:= 1 toexpNumdo

>for j:= 1 toplaneNumdo

>FMain.SGridY.Cells[ і, j ]:=FloatToStrF(expResult[ j, і ],ffFixed, 6, 3 );

end;

>procedureFillYAverage;

>var

і:byte;

>begin

>for і:= 0 to 7do

>FMain.SGridYAverage.Cells[ і, 0 ]:=FloatToStrF(yAverage[ і + 1 ],ffFixed, 6, 3 );

end;

>procedureFillRegCoeficient;

>var

і:byte;

>begin

>for і:= 0 to 3do

>FMain.SGridRegCoef.Cells[ і, 0 ]:=FloatToStrF(regCoeficient[ і + 1 ],ffFixed, 6, 3 );

end;

>procedureFillDSu;

>var

і:byte;

>begin

>for і:= 0 to 9do

>FMain.SGridDSu.Cells[ і, 0 ]:=FloatToStrF(dSu[ і + 1 ],ffFixed, 6, 3 );

end;

>procedureFillExpMistake;

>begin

>FMain.LblExpMistake.Caption:= 'Помилка досвіду: ' +FloatToStr(dSo );

end;

>procedureFillRegCoeficientCritery;

>var

і:byte;

>begin

>for і:= 0 to 3do

>ifdecisionRegMean[ і ]then

>FMain.SGridCritery.Cells[ і, 0 ]:= 'значущий'

>else

>FMain.SGridCritery.Cells[ і, 0 ]:= 'не значущий'

end;

>procedureFillYExp;

>var

і:byte;

>begin

>for і:= 0 to 7do

>FMain.SGridYExp.Cells[ і, 0 ]:=FloatToStrF(yExpResult[ і + 1 ],ffFixed, 6, 3 );

end;

>procedureFillFCritery;

>begin

>FMain.LblFCritery.Caption:= 'Критерій Фішера: ' +FloatToStr(fP );

end;

>procedureFillresultTables;

>begin

>FillPlaneMatrix;

>FillExpMatrix;

>FillYAverage;

>FillRegCoeficient;

>FillDSu;

>FillExpMistake;

>FillRegCoeficientCritery;

>FillYExp;

>FillFCritery;

end;

>procedureTFMain.Exit1Click(Sender:TObject);

>begin

>Close;

end;

>procedureTFMain.SpeedButton1Click(Sender:TObject);

>begin

>MakeExperiment;

>CalculateRegCoeficients;

>CalculatedSu;

>Check1D;

>CalculatedSo;

>CalculateRegMean;

>MakeDecision;

>CheckRegAd;

>FillResultTables;

end;

>procedureTFMain.FormCreate(Sender:TObject);

>begin

>FillPlaneMatrix;

end;

end.

>unitffe_typeconst;

>interface

>const

>planingMatrix:array[ 0..3, 1..8 ] ofshortint =

( ( +1, +1, +1, +1, +1, +1, +1, +1 ),

( +1, +1, +1, +1, -1, -1, -1, -1 ),

( +1, +1, -1, -1, +1, +1, -1, -1 ),

( +1, -1, +1, -1, +1, -1, +1, -1 )

);

>fisherCritery:array[ 1..6 ] of real =

( 5.12, 4.26, 3.86, 3.63, 3.48, 3.37 );

>p:array[ 0..3 ] of real = ( 1, 2, 0.5, -1 );

u:array[ 0..3, 1..2 ] ofshortint =

( ( 1, 1 ),

( -5, 10 ),

( -7, 2 ),

( 2, 13 ) );

>mF: real = 0;

>dF: real = 0.8;

>expNum:byte = 10;

>planeNum:byte = 8;

>factorNum:byte = 3;

>c1: real = 1.2;

>c2: real = -0.8;

>var

>expResult:array[ 1..8, 1..10 ] of real;

>yAverage:array[ 1..8 ] of real;

>yExpResult:array[ 1..8 ] of real;

>regCoeficient:array[ 0..3 ] of real;

>tCritery:array[ 0..3 ] of real;

>dSu:array[ 1..8 ] of real;

>dSo: real;

>dSbi: real;

>dSad: real;

>fP: real;

G: real;

>gipotesa1D:boolean;

>regAd:boolean;

>decisionRegMean:array[ 0..3 ] ofboolean;

>implementation

end.

>programffe;

>uses

>Forms,

>main in '>main.pas' {>FMain},

>ffe_typeconst in '>ffe_typeconst.pas';

{$R *.>RES}

>begin

>Application.Initialize;

>Application.CreateForm(TFMain,FMain);

>Application.Run;

end.


Схожі реферати:

Нові надходження

Замовлення реферату

Реклама

Навігація