Реферат по предмету "Информатика, программирование"


Полный факторный эксперимент

/>/>Аннотация
Необходимыми идостаточными условиями для определения любой отрасли знаний как науки являетсяналичие: предмета исследования, метода исследования и средств для реализации этогометода.
Для кибернетики, какнауки, предметом исследования являются системы любой природы и ихуправляемость, методом исследования – математическое моделирование, стратегиейисследования – системный анализ, а средством исследования – вычислительные машины.Поэтому кибернетику можно определить как науку, изучающую системы любойприроды, способные воспринимать, хранить и перерабатывать информацию для целейоптимального управления.
Сейчас с каждым годомвозрастает роль средств, позволяющих рационально использовать ресурсы,выделенные для решения задач. Часть методов кибернетики предназначены дляувеличения эффективности научного эксперимента на всех стадиях разработки,исследования, проектирования и эксплуатации производств.
Кибернетика включаеттакие понятия, как системы, информация, хранение и переработка информации,управление системами и оптимизация систем. При этом кибернетика широкопользуется методом математического моделирования и стремится к получениюконкретных результатов, позволяющих анализировать и синтезировать изучаемыесистемы, прогнозировать их оптимальное поведение и обнаруживать каналы иалгоритмы управления.

/>Введение
В тех случаях, когдаинформации о рассматриваемом процессе недостаточно или процесс настолькосложен, что невозможно составить его детерминированную модель, прибегают кэкспериментально-статистическим методам. При этом процесс рассматривают как“черный ящик”. Различают пассивный и активный эксперимент.
Пассивный экспериментявляется традиционным методом, в соответствии с которым ставится большая серияопытов с поочередным варьированием каждой из переменных.
Активный экспериментставится по заранее составленному плану (планирование эксперимента), при этомпредусматривается одновременное изменение всех параметров, влияющих на процесс,что позволяет сразу установить силу взаимодействия параметров и на этомосновании сократить общее число опытов.
Использование принциповрегрессионного и корреляционного анализа при обработке опытных данных позволяетнайти зависимость между переменными и условия оптимума. В обоих случаяхматематической моделью является функция отклика, связывающая параметроптимизации, характеризующий результаты эксперимента, с переменными, которыеэкспериментатор варьирует при проведении опытов.
Регрессионный анализ –один из наиболее распространенных статистических методов. Он используется припостроении математической зависимости на основе экспериментальных данных.Благодаря регрессионному анализу возможны построения математической модели истатистический анализ результатов. В первом случае прибегают к различнымвариантам метода наименьших квадратов.
В основе регрессионногоанализа лежит несколько статистических предпосылок, выполнение которыхгарантирует достоверность анализа полученной математической модели:
Выходная переменная –случайная величина с нормальным распределением, факторы – суть не случайныевеличины; практически это означает, что ошибки в управлениями факторами, покрайней мере на порядок меньше ошибок при измерении выходной переменной.
Связь между факторамиотсутствует.
Дисперсии выходнойпеременной однородны (равноточные) в любой точке факторного пространства.
Исследуемый объектлишен динамических свойств (рассматриваются стационарные режимы объекта).

1.Описание метода и алгоритма решения
Ставится задачаопределения локального оптимума на объекте исследования, для этогопредполагается использовать математическую модель, полученную с помощью полногофакторного эксперимента.
Выбирают факторы ивыходную переменную, задают области определения факторов и выходной переменной
ymin £y £ymax
X1min £X1 £X1max
X2min£X2£X2max
........
В области определенияфакторов выбирается точка Xi0, i = 1…n (нулевой уровень факторов), которая впредварительных исследованиях была признана наилучшей с точки зрения оптимумаy. Задается интервал варьирования факторов DXi. Определяютсяверхние и нижние уровни факторов:
Xiв = Xi0 + DXi;
Xiн = Xi0 — DXi(1)
при условии, что ( Xiн ¸Xiв)
/>
Кодируются факторы(переход к новой безразмерной системе координат x1, x2, …, xn)

/>
В новой системекоординат факторы принимают значения +1 и –1.
План проведенияэксперимента (матрица планирования) записывается в виде таблицы. Фиктивнаяпеременная x0 равна единице. В матрицу также записывают результаты проведенияпараллельных опытов (m опытов в каждой строке матрицы).
/>
План экспериментадолжен обладать ортогональностью:
/>
Как следствие (4) планэксперимента обладает симметричностью:
/> и нормировкой
Расчет коэффициентовуравнения регрессии. Коэффициенты рассчитываются по уравнению
/>
где
/>и окончательно

где N – число строкматрицы планирования (число разных условий опыта); m – число параллельныхопытов на каждой строке матрицы.
/>
Построчные дисперсии попараллельным опытам на каждой строке матрицы рассчитываются по уравнению
/>
гдеfu = mu –1.
Проверка однородностидисперсий осуществляется по
/>
критерию Кохрена,расчетное значение которого определяют по уравнению:
где simax –максимальная из рассчитанных дисперсий параллельных опытов (построчныхдисперсий); знаменатель – сумма всех дисперсий по уровням фактора.
Если выполняетсяусловие
Gp
то гипотеза ободнородности дисперсий правомерна. Gт находят по таблице критерия Кохрена длястепеней свободы fi (максимальная дисперсия), f2 (число уровней) и заданногоуровня значимости q.
Вся проверкаоднородности дисперсий осуществляется при условии mi = m, p = N; индекс iзаменяется индексом 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ад, 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 ] ofreal;
матрица хранящаязначения построчных дисперсий, полеченных по формуле 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 ] of boolean;
матрица хранящаязначения значимости коэфициентов регрессии. Значение True соответствует томуфакту, что данный коэфициент значим, False – обратное утверждение.
Списокпроцедур и функций
function RandomNorm(mF, dF: real ): real;
фунция возвращаетвеличину с заданой дисперсией и мат. ожиданием и нормальным распределением.
function CalculateX(level: byte ): real;
функция возвращающаязначение х на заданном уровне эксперимента.
procedureMakeExperiment;
процедура осуществляетэксперимент при заданных условиях.
procedureCalculateYAverage;
процедура вичисляющаяпострочные средние значения Y.
procedureCalculateRegCoeficients;
процедура вычисляющаякоєфициенты регресии.
procedureCalculatedSu;
процедура подсчитываетдисперсию dSu.
procedure Check1D;
процедура проверкиоднородности дисперсий.
procedure CalculatedSo;
процедура вычисленияошибки эксперимента.
procedureCalculateRegMean;
процедура осуществяющаяпроверку значимости коэфициентов регрессии.
procedure MakeDecision;
процедура принятиярешений, по результатам проверки критерия Стьюдента.
function CalculateL:byte;
функция возвращающаяколичество значимых коефициентов регрессии, необходима для проверки адекватностиуравненя регрессии по критерию Фишера.
procedureCalculateYExp;
процедура подсчетаекспериментального значения Y. Эксперимент проводится по полученному уравнениюрегрессии.
procedure CheckRegAd;
процедура проверкиадекватности уравнения регрессии.
procedureFillPlaneMatrix;
процедура выводаданных: план эксперимента.
procedureFillExpMatrix;
процедура выводаданных: результат эксперимента.
procedure FillYAverage;
процедура выводаданных: построчние средние значения Y.
procedureFillRegCoeficient;
процедура выводаданных: коефициенты регрессии.
procedure FillDSu;
процедура выводаданных: построчные дисперсии.
procedureFillExpMistake;
процедура выводаданных: ошибка експеримента.
procedureFillRegCoeficientCritery;
процедура выводаданных: значимость коэйициентов регресии.
procedure FillYExp;
процедура выводаданных: Y полученый по уравнению регрессии.
procedure FillFCritery;
процедура выводаданных: критерий Фишера.
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
{ Private declarations}
public
{ Public declarations }
end;
var
FMain: TFMain;
implementation
uses ffe_typeconst;
{$R *.DFM}
function RandomNorm(mF, dF: real ): real;
begin
RandomNorm:= mF + dF *random;
end;
function CalculateX(level: byte ): real;
var
xResult: real;
xU: real;
i: byte;
begin
xResult:= 0;
i:= 0;
if planingMatrix[ i,level ] = 1 then
xU:= u[ i, 2 ]
else
xU:= u[ i, 1 ];
xResult:= xResult + p[i ] * xU;
for i:= 1 to 3 do
begin
if planingMatrix[ i,level ] = 1 then
xU:= u[ i, 2 ]
else
xU:= u[ i, 1 ];
xResult:= xResult + p[i ] * xU;
xResult:= xResult + p[i ] * xU * xU;
end;
CalculateX:= xResult;
end;
procedureMakeExperiment;
var
xValue: real;
i, j: byte;
begin
for i:= 1 to 8 do
begin
xValue:= CalculateX( i);
for j:= 1 to 10 do
expResult[ i, j ]:= c1* xValue + c2 * RandomNorm( mF, dF );
end;
end;
procedureCalculateYAverage;
var
i, j: byte;
begin
for i:= 1 to 8 do
begin
yAverage[ i ]:= 0;
for j:= 1 to 10 do
yAverage[ i ]:=yAverage[ i ] + expResult[ i, j ];
yAverage[ i ]:= yAverage[i ] / expNum;
end;
end;
procedureCalculateRegCoeficients;
var
i, j: byte;
begin
CalculateYAverage;
for i:= 0 to factorNumdo
begin
regCoeficient[ i ]:= 0;
for j:= 1 to planeNumdo
regCoeficient[ i ]:=regCoeficient[ i ] + planingMatrix[ i, j ] * yAverage[ j ];
regCoeficient[ i ]:=regCoeficient[ i ] / planeNum;
end;
end;
procedure CalculatedSu;
var
i, j: byte;
begin
for i:= 1 to planeNumdo
begin
dSu[ i ]:= 0;
for j:= 1 to expNum do
dSu[ i ]:= dSu[ i ] +sqr( expResult[ i, j ] — yAverage[ i ] ) / ( expNum — 1 );
end;
end;
function FindMax: real;
var
i: byte;
fResult: real;
begin
fResult:= 0;
for i:= 1 to planeNumdo
if dSu[ i ] >fResult then
fResult:= dSu[ i ];
FindMax:= fResult;
end;
procedure Check1D;
var
dSum: real;
i: byte;
begin
dSum:= 0;
for i:= 1 to planeNumdo
dSum:= dSum + dSu[ i ];
G:= FindMax / dSum;
gipotesa1D:= false;
if G
gipotesa1D:= true;
if gipotesa1D = falsethen
begin
ShowMessage ('Дисперсиине однородны');
end;
end;
procedure CalculatedSo;
var
i: byte;
begin
dSo:= 0;
for i:= 1 to planeNumdo
dSo:= dSo + dSu[ i ];
dSo:= dSo / planeNum;
end;
procedureCalculateRegMean;
var
i: byte;
begin
dSbi:= dSo / planeNum /expNum;
for i:= 0 to factorNumdo
tCritery[ i ]:= abs(regCoeficient[ i ] ) / sqrt( dSbi );
end;
procedure MakeDecision;
var
i: byte;
begin
for i:= 0 to factorNumdo
begin
decisionRegMean[ i ]:=false;
if tCritery[ i ] >2.26 then
decisionRegMean[ i ]:=true;
end;
end;
function CalculateL:byte;
var
i: byte;
xResult: byte;
begin
xResult:= 0;
for i:= 0 to 6 do
if decisionRegMean[ i ]then
inc( xResult );
CalculateL:= xResult;
end;
procedureCalculateYExp;
var
xResult: real;
level, i: byte;
begin
for level:= 1 toplaneNum do
begin
xResult:= 0;
for i:= 0 to 3 do
xResult:= xResult +regCoeficient[ i ] * planingMatrix[ i, level ];//xU;
yExpResult[ level ]:=xResult;
end;
end;
procedure CheckRegAd;
var
i: byte;
begin
CalculateYExp;
dSad:= 0;
for i:= 1 to planeNumdo
dSad:= dSad + sqr(yAverage[ i ] — yExpResult[ i ] );
dSad:= dSad * expNum /( planeNum — CalculateL );
fP:= dSad / dSo;
regAd:= false;
if fP
regAd:= true;
if regAd = false then
begin
ShowMessage('Ренресионная модельне адекватна' );
end;
end;
procedureFillPlaneMatrix;
var
i, 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 i:= 0 to factorNumdo
for j:= 1 to planeNumdo
FMain.SGridPlaneMatrix.Cells[i, j ]:= FloatToStr( planingMatrix[ i, j ] );
end;
procedureFillExpMatrix;
var
i, j: byte;
begin
for i:= 1 to expNum do
FMain.SGridY.Cells[ i,0 ]:= IntToStr( i );
for i:= 1 to planeNumdo
FMain.SGridY.Cells[ 0,i ]:= IntToStr( i );
for i:= 1 to expNum do
for j:= 1 to planeNumdo
FMain.SGridY.Cells[ i,j ]:= FloatToStrF( expResult[ j, i ], ffFixed, 6, 3 );
end;
procedure FillYAverage;
var
i: byte;
begin
for i:= 0 to 7 do
FMain.SGridYAverage.Cells[i, 0 ]:= FloatToStrF( yAverage[ i + 1 ], ffFixed, 6, 3 );
end;
procedureFillRegCoeficient;
var
i: byte;
begin
for i:= 0 to 3 do
FMain.SGridRegCoef.Cells[i, 0 ]:= FloatToStrF( regCoeficient[ i + 1 ], ffFixed, 6, 3 );
end;
procedure FillDSu;
var
i: byte;
begin
for i:= 0 to 9 do
FMain.SGridDSu.Cells[i, 0 ]:= FloatToStrF( dSu[ i + 1 ], ffFixed, 6, 3 );
end;
procedureFillExpMistake;
begin
FMain.LblExpMistake.Caption:='Ошибка опыта: ' + FloatToStr( dSo );
end;
procedureFillRegCoeficientCritery;
var
i: byte;
begin
for i:= 0 to 3 do
if decisionRegMean[ i ]then
FMain.SGridCritery.Cells[i, 0 ]:= 'значим'
else
FMain.SGridCritery.Cells[i, 0 ]:= 'не значим'
end;
procedure FillYExp;
var
i: byte;
begin
for i:= 0 to 7 do
FMain.SGridYExp.Cells[i, 0 ]:= FloatToStrF( yExpResult[ i + 1 ], ffFixed, 6, 3 );
end;
procedure FillFCritery;
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.
unit ffe_typeconst;
interface
const
planingMatrix: array[0..3, 1..8 ] of shortint =
( ( +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 ] ofreal = ( 1, 2, 0.5, -1 );
u: array[ 0..3, 1..2 ]of shortint =
( ( 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 ] ofreal;
dSo: real;
dSbi: real;
dSad: real;
fP: real;
G: real;
gipotesa1D: boolean;
regAd: boolean;
decisionRegMean: array[0..3 ] of boolean;
implementation
end.
program ffe;
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.


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.