Математические методы оптимизации производственных систем и объектов

 

1. Решения алгебраических уравнений методом выделения корней


.1 Краткие теоретические сведения


1.Приращения и принимаются достаточно большими числами

.Переменные квадратного трехчлена принимаются равными , .

.Первые элементы вспомогательных векторов: , .

.До тех пор, пока и ( - точность расчетов) выполнять вычисления по следующей схеме (удобно воспользоваться циклом while):


; для ; ; для ; ; ; ; .


5.Если , то корни будут действительными, иначе - комплексно сопряженными. Необходимо предусмотреть расчет и вывод таких корней: при действительных корнях


, ;


при комплексно сопряженных корнях


,


6.Если (здесь N - порядок уравнения), то ; для ; и переходим к пункту 1. Иначе осуществляем вывод полученных значений x и завершение работы программы.


1.2 Листинг программы


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, Grids, Buttons, StdCtrls, ExtCtrls;_Form1 = class(TForm)_Label1: TLabel;_Button1: TButton;_Edit1: TEdit;_Edit2: TEdit;_Edit3: TEdit;_Edit4: TEdit;_Edit5: TEdit;_Edit6: TEdit;_Edit7: TEdit;_BitBtn1: TBitBtn;_StringGrid1: TStringGrid;: TImage;Kovalenko_Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };mas=array[1..7] of real;_Form1: TKovalenko_Form1;,B,C,xRe,xIm:mas;n,i:integer;p,q,dp,dq,d:real;e=0.001;

{$R *.dfm}TKovalenko_Form1.Kovalenko_Button1Click(Sender: TObject);1;i:integer;_StringGrid1.ColWidths[0]:=80;_StringGrid1.ColWidths[1]:=80;_StringGrid1.Cells[0,0]:=' xRe';_StringGrid1.Cells[1,0]:=' xIm';_StringGrid1.DefaultRowHeight:=10;_StringGrid1.DefaultRowHeight:=20;_StringGrid1.GridLineWidth:=2;_StringGrid1.RowCount:=2;[1]:= StrToFloat(Kovalenko_Edit1.Text);[2]:= StrToFloat(Kovalenko_Edit2.text);[3]:= StrToFloat(Kovalenko_Edit3.text);[4]:= StrToFloat(Kovalenko_Edit4.text);[5]:= StrToFloat(Kovalenko_Edit5.text);[6]:= StrToFloat(Kovalenko_Edit6.text);[7]:= StrToFloat(Kovalenko_Edit7.text);:=6;

: dp:=10000;dq:=10000;[1]:=a[1];c[1]:=b[1];:=a[2];q:=a[3];(abs(dp)>e) and (abs(dq)>e) do[2]:=a[2]-p*b[1];i:=3 to n+1 do[i]:=a[i]-p*b[i-1]-q*b[i-2];[2]:=b[2]-p*c[1];i:=3 to n-1 do[i]:=b[i]-p*c[i-1]-q*c[i-2];[n]:=-p*c[n-1]-q*c[n-2];:=sqr(c[n-1])-c[n]*c[n-2];:=(b[n]*c[n-1]-b[n+1]*c[n-2])/d;:=(b[n+1]*c[n-1]-b[n]*c[n])/d;:=p+dp; q:=q+dq;;(p*p/4)-q>0 then[1]:=-p/2+sqrt(p*p/4-q); xIm[1]:=0;[2]:=-p/2-sqrt(p*p/4-q); xIm[2]:=0;[1]:=sqrt(abs(p*p/4-q)); xRe[1]:=-p/2;[2]:=-sqrt(abs(p*p/4-q)); xRe[2]:=-p/2;;_StringGrid1.Cells[0,Kovalenko_StringGrid1.RowCount-

1]:=FloatToStrF(xRe[1],ffGeneral,3,3);_StringGrid1.Cells[1,Kovalenko_StringGrid1.RowCount-

1]:=FloatToStrF(xIm[1],ffGeneral,3,3);_StringGrid1.Cells[0,Kovalenko_StringGrid1.RowCount]:=Float

ToStrF(xRe[2],ffGeneral,3,3);

Kovalenko_StringGrid1.Cells[1,Kovalenko_StringGrid1.RowCount]:=Float(xIm[2],ffGeneral,3,3);_StringGrid1.RowCount:=Kovalenko_StringGrid1.RowCount+2;n>2 then[1]:=1;i:=2 to n-1 do[i]:=b[i];:=n-2;1;;.


1.3 Блок-схема








1.4 Результаты


Рисунок 1


Уравнение: X6+6.5X5-14X4+14X3-17X2+21X-22.5=0


Корни уравнения: 1.39; -8.4; 0.761+0.915i; 0.761-0.915i; -0.506+1.05i; -0.506-1.05i;

Вывод: метод применяется для решения алгебраических уравнений четной степени (при решении уравнений не четной степени получается большая погрешность)



2. Решение нелинейных уравнений с одним неизвестным


.1 Метод половинного деления (дихотомии, бисекции)


Краткие теоретические сведенья

Допустим, что корень уравнения равен и расположен на отрезке .В качестве начального значения корня выбирают середину отрезка . Если , то является корнем уравнения, если нет, то далее исследуем значение функции на концах отрезков и и тот из них, на концах которого принимает значения разных знаков, содержит искомый корень и поэтому принимается в качестве нового отрезка. Таким образом, если функция меняет значение на отрезке , то переменная a не изменяется, переменная b примет значение , а переменная установится в середине нового отрезка. Этот укороченный отрезок вновь делится пополам и цикл вычислений повторяется. Итерационный процесс прекращается, если , где - текущее значение корня, а е - заданная точность.


2.2 Листинг программы

Unit1;

, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart, Grids,, BubbleCh,Math;


type_Form1 = class(TForm): TLabel;_BitBtn1: TBitBtn;_Edit2: TEdit;: TLabel;_Button1: TButton;: TImage;_Chart1: TChart;: TLineSeries;: TPointSeries;Kovalenko_Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };

_Form1: TKovalenko_Form1;

f(x:real):real;:=sin(ln(x))-cos(ln(x))+2*(ln(x));;

{$R *.dfm}

TKovalenko_Form1.Kovalenko_Button1Click(Sender: TObject);e=0.00001;a=1;b=3;ax,bx,C,i:real;:=(a+b)/2;:=a;bx:=b;abs(F(c))>e doF(c)=0 then_Edit2.Text:=FloatToStr(c)(F(ax))*(f(c))<0 then:=c;:=(ax+bx)/2;;(F(c))*(f(bx))<0 then:=c;:=(ax+bx)/2;;;_Chart1.SeriesList.Series[1].AddXY(c,F(c),' ',clblue);;_Chart1.SeriesList.Series[1].AddXY(ax,F(ax),' ',clyellow);_Chart1.SeriesList.Series[1].AddXY(bx,F(bx),' ',clyellow);_Edit2.Text:=FloatToStr(c);:=a;i<b do:=i+0.01;_Chart1.SeriesList.Series[0].AddXY(i,f(i), ' ',clRED);;


2.3 Блок-схема


2.4 Результаты


Рисунок 2


Уравнение: Sin(ln(x))-Cos(ln(x))+2ln(x)


Корни уравнения: 1.3748779Вывод: метод биссекций всегда даёт приближения к действительному значения корня С с разных концов.Комбинация двух методов биссекций и иттераций, значительно быстрей приводит к вычислению корня С с заданной точностью.



3. Аппроксимация функций методом наименьших квадратов


.1 Краткие теоретические сведенья


1. По известным значениям и , , где - порядок аппроксимирующего уравнения (в данной задаче , где количество экспериментальных точек - 6 или 7), в цикле вычисляют , ,, предварительно (до открытия цикла) определив начальное значение .

. Вычисляют , .

. Решают систему уравнений , где B - квадратная матрица коэффициентов, d - вектор правых частей уравнений, a - искомый вектор коэффициентов аппроксимирующего уравнения . Решение системы уравнений осуществляется методом Гаусса.

. Строят в одной системе координат аппроксимирующую функцию и экспериментальные точки.


.2 Листинг программы


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Buttons,,Math, jpeg;_Form1 = class(TForm)_Button1: TButton;_Chart1: TChart;: TLineSeries;_BitBtn1: TBitBtn;: TPointSeries;_StringGrid1: TStringGrid;_StringGrid2: TStringGrid;_Label4: TLabel;: TImage;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;Kovalenko_Button1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };matr=array[1..7,1..7] of real;mass=array[1..7] of real;_Form1: TKovalenko_Form1;,a,c:matr;X,Y,d,YY,XX:mass;,j,k,n,m:integer;,q,f:real;

{$R *.dfm}TKovalenko_Form1.Kovalenko_Button1Click(Sender: TObject);_Chart1.Visible:=true;_StringGrid2.Visible:=true;:=7;i:=1 to m+1 do[i]:=0; d[i]:=0;XX[I]:=0;:=0;q:=0;f:=0;[1]:=0.5; y[1]:=-5.5;[2]:=1; y[2]:=0.55;[3]:=1.5; y[3]:=-10;[4]:=2; y[4]:=11.5;[5]:=2.5; y[5]:=9.5;[6]:=3; y[6]:=-10.2;[7]:=3.5; y[7]:=11.5;j:=1 to 7do_Chart1.SeriesList.Series[1].AddXY(x[j],y[j],' ',clyellow);;RadioButton1.Checked then m:=1;RadioButton2.Checked then m:=2;RadioButton3.Checked then m:=3;RadioButton4.Checked then m:=4;RadioButton5.Checked then m:=5;RadioButton6.Checked then m:=6;[1,1]:=n;i:=1 to m+1 dok:=1 to m+1 do:=0;j:=1 to n do:=s+power(x[j],(i+k-2));[i,k]:=s;;i:=1 to m+1 do:=0;j:=1 to n do:=s+((power(x[j],i-1))*y[j]);[i]:=s;;

{Метод Гаусса}i:=1 to (m+1) do[i,i]:=1;[1,i]:=a[1,i]/a[1,1];[i,1]:=a[i,1];;[1]:=d[1]/a[1,1];i:=2 to (m+1) dok:=i to (m+1) do:=0;j:=1 to i-1 do:=s+c[k,j]*b[j,i];[k,i]:=a[k,i]-s;;k:=i+1 to (m+1) do:=0;j:=1 to i-1 do:=s+c[i,j]*b[j,k];[i,k]:=(a[i,k]- s)/c[i,i];;;i:=2 to (m+1) doj:=1 to i-1 do:=s+c[i,j]*YY[j];[i]:=(d[i]-s)/c[i,i];;[n]:=YY[n];i:=1 to n-1 do:=0;j:=n-i+1 to n do:=s+b[n-i,j]*XX[j];[n-i]:=YY[n-i]-s;;i:=1 to m+1 do_StringGrid1.Cells[Kovalenko_StringGrid1.colCount-

1,0]:='a['+FloatToStrF(i,ffGeneral,6,6)+']';_StringGrid1.Cells[Kovalenko_StringGrid1.colCount-

1,1]:=FloatToStrF(XX[i],ffGeneral,6,6);_StringGrid1.colCount:=Kovalenko_StringGrid1.colCount+1;;_stringGrid2.Cells[0,0]:='X';_stringGrid2.Cells[0,1]:='f(x)'; q:=x[1];_chart1.SeriesList.Series[0].Clear;k:=1 to 1500 doi:=1 to (m+1) do:=s+XX[i]*(power(q,i-1)); {y}:=s; q:=q+0.002;_chart1.SeriesList.Series[0].AddXY(q,s,'',clRED);_StringGrid2.Cells[Kovalenko_StringGrid2.colCount-

1,0]:=FloatToStrF(q,ffGeneral,6,6);_StringGrid2.Cells[Kovalenko_StringGrid2.colCount-

1,1]:=FloatToStrF(f,ffGeneral,6,6);_StringGrid2.ColCount:= Kovalenko_StringGrid2.ColCount+1;;;.


3.3 Блок-схема


3.4 Результаты


Рисунок 3



Стартовые точки аппроксимирующей функции:


,5;5.5, 1;0.55, 1.5;-1, 2;11.5, 2.5;9.5, 3;-10.2, 3.5;1.5.


Аппроксимирующие значения функции:


.15, 2281.1, -3643.52, 2768.05, -1075.68, 206.173, -15.4311;


Вывод: при расчете данным методом достигается высокая степень точности для аппроксимации различных функций. Метод может применяться для решения инженерных задач всевозможных видов.

аппроксимация золотой сечение градиентный


4. Одномерная оптимизация многоэкстремальных функций. Метод золотого сечения


.1 Краткие теоретические сведенья


Если на заданном интервале функция не унимодальная, то при использовании этого метода вначале исходный интервал существования функции сужают до интервала унимодальности (существования одного экстремума). Золотым сечением отрезка называется деление отрезка на две неравные части так, отношение длины всего отрезка к длине большей его части равно отношению длины большей части к меньшей .

Очевидно, что существует два варианта разбиения:



С учетом использования счетчика итераций в точке


, .


Алгоритм реализации метода:

.Принимают базовые значения интервала унимодальности , , счетчик .

.Задают значения точности .

.Вычисляют вспомогательные значения


,


4.Если , то , , . Иначе , , .

.Вычисляют длину сужаемого интервала .

.Если , то оптимальной точкой будет . Иначе вычисления продолжают, начиная с пункта 3.

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


4.2 Листинг программы


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, TeEngine, Series, ExtCtrls, TeeProcs, Chart, StdCtrls, Buttons,,Math, jpeg;_Form1 = class(TForm)_Button1: TButton;_Chart1: TChart;: TLineSeries;_BitBtn1: TBitBtn;: TPointSeries;_StringGrid1: TStringGrid;_StringGrid2: TStringGrid;__Label4: TLabel;: TImage;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TPointSeries;: TLabel;: TLabel;: TEdit;: TEdit;: TLabel;Kovalenko_Button1Click(Sender: TObject);Kovalenko_BitBtn1Click(Sender: TObject);

{ Private declarations }

{ Public declarations };matr=array[1..7,1..7] of real;mass=array[1..7] of real;_Form1: TKovalenko_Form1;,a,c:matr;X,Y,d,YY,XX:mass;,j,k,n,m:integer;,q,f,L,X1,X2,XXX,YYY,G1,G2,ax,bx:real;

{$R *.dfm}TKovalenko_Form1.Kovalenko_Button1Click(Sender: TObject);r=0.000001; a0=1; b0=2;_Chart1.Visible:=true;_StringGrid2.Visible:=true;:=7;i:=1 to m+1 do[i]:=0; d[i]:=0;XX[I]:=0;:=0;q:=0;f:=0;[1]:=0.5; y[1]:=-5.5;[2]:=1; y[2]:=0.55;[3]:=1.5; y[3]:=-10;[4]:=2; y[4]:=11.5;[5]:=2.5; y[5]:=9.5;[6]:=3; y[6]:=-10.2;[7]:=3.5; y[7]:=11.5;j:=1 to 7 do_Chart1.SeriesList.Series[1].AddXY(x[j],y[j],' ',clyellow);;RadioButton1.Checked then m:=1;RadioButton2.Checked then m:=2;RadioButton3.Checked then m:=3;RadioButton4.Checked then m:=4;RadioButton5.Checked then m:=5;RadioButton6.Checked then m:=6;[1,1]:=n;i:=1 to m+1 dok:=1 to m+1 do:=0;j:=1 to n do:=s+power(x[j],(i+k-2));[i,k]:=s;;i:=1 to m+1 do:=0;j:=1 to n do:=s+((power(x[j],i-1))*y[j]);[i]:=s;;

{Метод Гаусса}i:=1 to (m+1) do[i,i]:=1;[1,i]:=a[1,i]/a[1,1];[i,1]:=a[i,1];;[1]:=d[1]/a[1,1];i:=2 to (m+1) dok:=i to (m+1) do:=0;j:=1 to i-1 do:=s+c[k,j]*b[j,i];[k,i]:=a[k,i]-s;;k:=i+1 to (m+1) do:=0;j:=1 to i-1 do:=s+c[i,j]*b[j,k];[i,k]:=(a[i,k]- s)/c[i,i];;;i:=2 to (m+1) do:=0;j:=1 to i-1 do:=s+c[i,j]*YY[j];[i]:=(d[i]-s)/c[i,i];;[n]:=YY[n];i:=1 to n-1 do:=0;j:=n-i+1 to n do:=s+b[n-i,j]*XX[j];[n-i]:=YY[n-i]-s;;i:=1 to m+1 do_StringGrid1.Cells[Kovalenko_StringGrid1.colCount-

1,0]:='a['+FloatToStrF(i,ffGeneral,6,6)+']';_StringGrid1.Cells[Kovalenko_StringGrid1.colCount-

1,1]:=FloatToStrF(XX[i],ffGeneral,6,6);_StringGrid1.colCount:=Kovalenko_StringGrid1.colCount+1;;_stringGrid2.Cells[0,0]:='X';_stringGrid2.Cells[0,1]:='f(x)';:=x[1];_chart1.SeriesList.Series[0].Clear;k:=1 to 1500 do:=0;i:=1 to (m+1) do:=s+XX[i]*(power(q,i-1)); f:=s;:=q+0.002;_chart1.SeriesList.Series[0].AddXY(q,s,'',clRED);_StringGrid2.Cells[Kovalenko_StringGrid2.colCount-

1,0]:=FloatToStrF(q,ffGeneral,6,6);_StringGrid2.Cells[Kovalenko_StringGrid2.colCount-

1,1]:=FloatToStrF(f,ffGeneral,6,6);_StringGrid2.ColCount:= Kovalenko_StringGrid2.ColCount+1;

end;

{Метод золотого сечения}

ax:=1;bx:=2; X1:=0;X2:=0;abs(bx-ax)>=r do:=ax+0.382*(bx-ax);:=ax+0.618*(bx-ax);:=0;s:=0;i:=1 to n do:=s+XX[i]*(power(X1,i-1)); G1:=s;:=0;s:=0;i:=1 to n do:=s+XX[i]*(power(X2,i-1)); G2:=s;(G1)<=(G2) then:=ax;:=X2;else:=X1;:=bx;;;:=(ax+bx)/2;:=0;i:=1 to n do:=YYY+XX[i]*(power(XXX,i-1));.Text:= FloatToStr(XXX);.Text:= FloatToStr(YYY);_chart1.SeriesList.Series[2].AddXY(XXX,YYY);;TKovalenko_Form1.Kovalenko_BitBtn1Click(Sender: TObject);.Terminate;;



4.3 Блок-схема












4.4 Результаты


Рисунок 4. Минимальное значение функции на интервале [1; 2] -12.324

Вывод:

Метод золотого сечения является древним методом деления отрезка. Впервые метод был рассмотрен Евклидом. Тогда этим методом делили окружность на равные пять частей для построения пятиконечной звезды. Сегодня этот метод применяется на практике для оптимизации производственных систем и объектов.



5. Многомерная оптимизация градиентным методом с переменным шагом


.1 Краткие теоретические сведения


Все методы многомерной оптимизации строят последовательность точек ,,…таких, что ,т.е. чтобы функция убывала. Перед началом расчетов необходимо задать начальную точку, остальные будут вычислены автоматически. Направление движения при поиске точек выбирается по антиградиенту функции - вектору, показывающему направление наиболее быстрого убывания функции. Точки вычисляются по формуле:


,


где - предыдущее значение; - следующее значение; - переменная величина шага; - значение градиента в точке ; - длина вектора-градиента.

Значение градиента вычисляется по формуле:


,


где ,

;

;

- достаточно малая положительная величина, используемая для приближенного вычисления градиента.


5.2 Листинг программы


unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Buttons, Series;_Form1 = class(TForm)_Image1: TImage;_Memo1: TMemo;_Button1: TButton;_BitBtn1: TBitBtn;_Edit1: TEdit;_Chart1: TChart;: TLineSeries;: TPointSeries;: TPointSeries;_Chart3: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TPointSeries;: TRadioButton;: TRadioButton;: TRadioButton;_Chart2: TChart;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TLineSeries;: TPointSeries;Kovalenko_Button1Click(Sender: TObject);RadioButton1Click(Sender: TObject);RadioButton2Click(Sender: TObject);RadioButton3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };n=2;e=0.0001;mass=array[1..2] of real;XK,G:mass;_Form1: TKovalenko_Form1;

{$R *.dfm}f(x:mass):real;:=exp(x[1])+sqr(x[1])+sqr(x[2]);;gradient;i:integer;fp,fo:real;i:=1 to N do[i]:=XK[i]+E;fp:=f(XK);[i]:=XK[i]-2*E;fo:=f(XK);[i]:=XK[i]+E;[i]:=(fp-fo)/(2*E);;;TKovalenko_Form1.Kovalenko_Button1Click(Sender: TObject);gamma,Y,OD,xx1,xx2,yy:real;i,k:integer;XX:mass;:=1; ;k:=0;[1]:=-2;XK[2]:=2_Memo1.Lines.Add('X[1]='+FloatToStr(XK[1]));_Memo1.Lines.Add('X[2]='+FloatToStr(XK[2]));_Chart1.SeriesList.Series[0].AddXY(XK[1],XK[2]);gamma>E do;:=0;i:=1 to N do:=OD+sqr(G[i]);:=sqrt(OD);:=F(XK);i:=1 to N do[i]:=XK[i]-gamma*G[i]/OD;_Memo1.Lines.Add('X['+IntToStr(i)+']='+FloatToStr(XK[i]));;_Memo1.Lines.Add('Предыдущее f='+FloatToStr(Y));_Memo1.Lines.Add('Новое f='+FloatToStr(F(XK)));_Memo1.Lines.Add('Шаг gamma='+FloatToStr(gamma));_Chart1.SeriesList.Series[0].AddXY(XK[1],XK[2]);f(XK)<Y then k:=k+1i:=1 to N do[i]:=XK[i]+gamma*G[i]/OD;:=gamma/2;_Memo1.Lines.Add('Уменьшение шага

gamma='+FloatToStr(gamma));:=k+1;;;_Chart2.SeriesList.Series[5].AddXY(XK[1],Y);_Chart3.SeriesList.Series[5].AddXY(XK[2],Y);

Kovalenko_Chart1.SeriesList.Series[1].AddXY(XK[1],XK[2]);_Edit1.Text:='';

Kovalenko_Edit1.Text:='X1='+FloatToStr(XK[1])+'

'+'X2='+FloatToStr(XK[2])+' '+Kovalenko_Edit1.Text+'Y='+FloatToStr(Y);[1]:=-0.5;XK[2]:=0.2;k:=0 to 4 doi:=0 to 400 do:=-2*XK[1]+0.01*XK[1]*i;[1]:=xx1;XX[2]:=(k-2)*XK[2];_Chart2.SeriesList.Series[k].AddXY(xx1,f(XX));;k:=0 to 4 doi:=0 to 400 do:=-8*XK[2]+0.01*XK[2]*i;[1]:=(k-2)*XK[1];XX[2]:=xx2;_Chart3.SeriesList.Series[k].AddXY(xx2,f(XX));;;TKovalenko_Form1.RadioButton1Click(Sender: TObject);_Chart1.Visible:=True;_Chart2.Visible:=False;_Chart3.Visible:=False;;TKovalenko_Form1.RadioButton2Click(Sender: TObject);_Chart2.Visible:=True;_Chart1.Visible:=False;_Chart3.Visible:=False;;TKovalenko_Form1.RadioButton3Click(Sender: TObject);_Chart3.Visible:=True;_Chart1.Visible:=False;_Chart2.Visible:=False;;.



5.3 Блок-схема





































5.4 Результаты


Рисунок 5.1

Рисунок 5.2


Рисунок 5.3


Исходная функция:


exp(x1)+x22 +x12


Оптимальные точки:

1=-0.3517 X2=1.7918 Y=0.8271


Вывод:

Данная задача основана на следующих свойствах градиента скалярного поля:

1)направление в котором производная скалярного поля имеет наибольшее выражение совпадает с направлением градиентом скалярного поля.

2)Наибольшее значение производной скалярного поля в точке М0 равна модулю градиента скалярного поля в этой точке.


1. Решения алгебраических уравнений методом выделения корней .1 Краткие теоретические сведения 1.Приращения и принимаются достаточно большими чи

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ