47594 (572040)

Файл №572040 47594 (Методы синтеза и оптимизации)47594 (572040)2016-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

МИHИСТЕРСТВО ОБРАЗОВАHИЯ И НАУКИ УКРАИHЫ

ДОHБАССКАЯ ГОСУДАРСТВЕHHАЯ МАШИHОСТРОИТЕЛЬHАЯ АКАДЕМИЯ

Кафедра компьютерных информационных технологий

Контрольная работа №1, 2

по дисциплине

«Методы синтеза и оптимизации»

Выполнила

студентка группы ИТ 99-1з Александрова А.Н

Проверила

Веремей О.В.

Краматорск 2002

Задание 1

ПРОГРАММИРОВАНИЕ ЧИСЛЕННЫХ МЕТОДОВ ОДНОМЕРНОЙ ОПТИМИЗАЦИИ

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

Найти максимум и минимум функции при изменении аргумента от -4 до 3 с точностью 0,0001. Функция достигает максимума при меньших значениях аргумента. Постройте график функции.

Исходные данные приведены в таблице 1.

Таблица 1

Номер варианта

A

B

С

D

6

1,5

0,4

-5,6

-10,8


Рисунок 1 – блок-схема метода

Решение задачи на ЭВМ с графиком исследуемой функции

На рисунке 2 изображено решение задачи на ЭВМ с графиком функции.

Рисунок 2- результаты работы программы, график функции


Краткие выводы по работе

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

Программа реализующая алгоритм

:

procedure TForm1.SpeedButton1Click(Sender: TObject);

var a,b,c,d,e,y,Ymax,Xmax,

x0,X,Xk,Xmin,Ymin,h,k :real;

i,n,count :integer;

status :integer; // 0-убывание, 1-возрастание

label l1;

Function MOO(x:real):real;

begin

result:=a*x*x*x + b*x*x + c*x + d;

end;

begin

Form1.Series1.Clear;

try // ввод начальных условий

with form1 do

begin

LabelXmin.Caption:='Xmin = 0';

LabelYmin.Caption:='Ymin = 0';

LabelXmax.Caption:='Xmax = 0';

LabelYmax.Caption:='Ymax = 0';

end;

a:=strtofloat(form1.Edit1.Text);

b:=strtofloat(form1.Edit2.Text);

c:=strtofloat(form1.Edit3.Text);

d:=strtofloat(form1.Edit4.Text);

e:=strtofloat(form1.Edit5.Text);

h:=strtofloat(form1.Edit6.Text);

x0:=strtofloat(form1.Edit7.Text);

xk:=strtofloat(form1.Edit8.Text);

k:=10;

Ymin:=1000000000;

Ymax:=-10000000000;

status:=1;

count:=1;

except

showMessage('Неправильно введены начальные условия');

end;

l1: n:=trunc((xk-x0)/h)+1;

x:=x0;

for i:=1 to n do

begin

y:=MOO(x);

case status of

0: if y

begin

Ymin:=y;

Xmin:=x;

X:=x+h;

end;

1: if Y>Ymax then

begin

Ymax:=y;

Xmax:=x;

X:=x+h;

end;

end;

end;

if count <= 2 then

if h <= e then

begin

with form1 do // вывод результата

begin

LabelXmin.Caption:='Xmin = '+floatTostr(Xmin);

LabelYmin.Caption:='Ymin = '+floatTostr(Ymin);

LabelXmax.Caption:='Xmax = '+floatTostr(Xmax);

LabelYmax.Caption:='Ymax = '+floatTostr(Ymax);

end;

status :=(status+1) mod 2; //Следующий экстремум

count:=count+1;

x0:=Xmin;

xk:= strtofloat(form1.Edit8.Text);

h:=strtofloat(form1.Edit6.Text);

goto l1;

end

else

begin

x0:=Xmin-h;

xk:=Xmin+h;

h:=h/k;

goto l1;

end;

x:=strtofloat(form1.Edit7.Text);

while x < strtofloat(form1.Edit8.Text) do

begin

y:=MOO(x);

form1.Series1.AddXY(x,y);

x:=x+0.1;

end;

end

;

Задание 2

РЕШЕНИЕ ОДНОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ МЕТОДАМИ ПОСЛЕДОВАТЕЛЬНОГО ПОИСКА

Цель задания: приобрести практические навыки разработки алгоритмов и программ для решения одномерных задач оптимизации методами последовательного поиска: дихотомии и золотого сечения.

Индивидуальное задание

Найти минимум функции f(x) на промежутке [a,b] с точностью . Исходные данные и номера вариантов приведены в таблице 2. Построить график минимизируемой функции.

Найдите минимум функции на промежутке [a,b] c точностью ε = 10-4 , методом «золотого сечения»постройте график минимизируемой функции.

Блок-схема метода «Золотого сечения» представлена на рисунке3.


Рисунок 3 – Блок-схема метода «Золотого сечения»

На рисунке 4 изображено решение задачи на ЭВМ и график минимизируемой функции.


Вывод: Методы последовательного поиска строятся в предположении унимодальности функции на заданном интервале. Исходя из свойств, унимодальности строится такая стратегия последовательного поиска экстремальной точки Х*, при которой любая пара вычислений f(x) позволяет сузить область поиска (интервал неопределённости).

Процедура минимизации функции:

procedure TForm1.SpeedButton2Click(Sender: TObject);

label l2;

Var a,b,e,x,x1,x2,y,y1,y2,Xmin,Ymin :real ;

n :integer;

t:string;

Function f(x:real):real;

begin

f:=tan(x)+exp(-x)+x;

{ f:=x*x+sin(x);}

end;

begin

Form1.Series1.Clear;

try // ввод начальных условий

a:=strtofloat(form1.Edit9.Text);

b:=strtofloat(form1.Edit10.Text);

e:=strtofloat(form1.Edit11.Text);

except

showMessage('Неправильно введены начальные условия');

end;

x1:=a+0.382*(b-a); x2:=b-0.382*(b-a);

y1:=f(x1); y2:=f(x2);

n:=1;

l2: n:=n+1;

if y1<= y2 then

begin

b:=x2;

if (b-a) >= e then

begin

x2:=x1;

x1:=a+0.382*(b-a);

y2:=y1;

y1:=f(x1);

goto l2;

end;

end

else

begin

a:=x1;

if (b-a)>=e then

begin

x1:=x2;

x2:=b-0.382*(b-a);

y1:=y2;

Y2:=f(x2);

goto l2;

end;

end;

Xmin:=(a+b)/2;

Ymin:=f(Xmin);

str(Xmin:10:4,t);

form1.Label20.Caption:='Xmin = '+t;

str(Ymin:10:4,t);

form1.Label21.Caption:='Ymin = '+t;

form1.Label22.Caption:='n = '+Inttostr(n);

x:=strtofloat(form1.Edit9.Text);

while x < strtofloat(form1.Edit10.Text) do

begin

y:=f(x);

form1.Series1.AddXY(x,y);

x:=x+0.1;

end;

end;

Задание 3

ГРАДИЕНТНЫЕ МЕТОДЫ РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ

Цель задания: закрепить теоретические сведения и приобрести практические навыки поиска безусловного экстремума функции многих переменных градиентным методом.

Индивидуальное задание

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

Решение

1) В точке f(X0) = = -14,5

Вычислим координаты градиента функции в точке Х0 :

.

Поскольку , то Х0 не является точкой экстремума

2) Переместимся изХ0 вдоль градиента - в новую точкуХ1 по формуле:

т.е. .

Для определения координат точки Х1 нужно выбрать значение шага . Получим :

Из соотношения ( , )=0 имеем:

(-3-3 )(-3)+(1+ )=10+10 =0

откуда =

Задание 4

ПРИМЕНЕНИЕ ГРАДИЕНТНЫХ МЕТОДОВ ДЛЯ ОПТИМИЗАЦИИ НА ЭВМ МАТЕМАТИЧЕСКИХ МОДЕЛЕЙ ОБЪЕКТОВ

Цель задания: приобрести практические навыки разработки алгоритмов и программ оптимизации математических моделей градиентным методом.

Индивидуальное задание

Найдите минимум функции f(x1,х2) методом наискорейшего спуска, выбрав в качестве начальной точки сначала Хо, а затем точку из противоположного квадраниа. Сравните число итераций. Для определения оптимального шага путём одномерной минимизации вдоль антиградиентного направления примите метод дихотомии в программе, предусмотрите отрисовку траектории наискорейшего спуска.

, при Хо(2,4).

Блок-схема алгоритма решения изображена на рисунке 5


Рисунок 5- блок-схема алгоритма решения методом наискорейшего спуска


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

Рисунок 6- Решение задачи на ЭВМ и траектория поиска оптимальных значений (при Хо(2,4))

Рисунок 7 Решение задачи на ЭВМ и траектория поиска оптимальных значений (при Хо(-2,-4))


Вывод: Особенностью метода наискорейшего спуска является то, что поиск решения выполняется с оптимальным шагом, который рассчитывается с помощью одномерной минимизации функции. Градиенты в двух соседних точках ортогональны и поэтому траектория к оптимальному решению в виде зигзага с поворотом под прямым углом. При Хо(2,4) количество итераций – 5, а при Хо(-2,-4) количество итераций уменьшилось до 4,а значение целевой функции осталось прежним – F(x)=0,61370564.
Листинг подпрограммы метода.

unit Opt1_4;

interface

uses

Messages, SysUtils, Graphics, Forms, Dialogs;

const n=2;

type Artype =array[1..n] of real;

Funop=function(xi:Artype):real;

ProcMin=Procedure(a,b,e:real; var xm,ym:real);

type

TForm2 = class(TForm)

private

public

procedure Optimiz(k: integer);

end;

var

Form2: TForm2;

Nmax,prn,NN:integer;

e,Fopt:real;

X0,G:artype;

f1:funop;

Pmin:ProcMin;

kAntGrad:real;

function model1(x: Artype): real;

implementation

uses Main,UnitGraph;

// Подпрограмма вычисления заданной функции

function model(x:Artype):real;

begin

model:= exp(x[1])+sqr(x[2])-2*x[1];

end;

{main program}

procedure Grad(n: integer; e: real; x: artype; var g: Artype;

F: Funop);

Var i:integer; fp,fo:real;

begin

for i:=1 to n do

begin

x[i]:=x[i]+e;

fp:=F(x);

x[i]:=x[i]-2*e;

fo:=F(x);

x[i]:=x[i]+e;

g[i]:=(fp-fo)/2/e;

end;

end;

procedure Opgrad(n: integer; e: real; var xk: Artype; Nmax: integer;

prn: byte; var Fopt: real; var nn: integer; F: Funop);

Label 1;

Var dk:Artype;//Градиент

od{норма вектор-градиента},

lambda{шаг},s,sf:real;

i:integer;

Function FF(x:real):real;

Var i:integer;

begin

for i:=1 to n do

xk[i]:=xk[i]+abs(x)*dk[i]/od;

FF:=F(xk);

for i:=1 to n do

xk[i]:=xk[i]-abs(x)*dk[i]/od;

end;

Procedure Min(a0,b0,e:real; Var xm,ym:real);// Метод Дихотомии

Label 1,2;

Var x1,x2,y1,y2,delta,a,b:real;

k,n:integer;

begin

a:=a0; b:=b0;

delta:=e/2;

1: n:=2*k;

x1:=(a+b-delta)/2;

x2:=(a+b+delta)/2;

y1:=ff(x1); y2:=ff(x2);

if y1<=y2 then b:=x2

else a:=x1;

if (b-a)

begin

xm:=(a+b)/2;

ym:=ff(xm);

end

else

begin

k:=k+1;

goto 1

end;

end;

{main prcvedure}

BEGIN

nn:=0; lambda:=0;

if prn=0 then

begin

for i:=1 to n do

form1.ListBox1.Items.Add('x'+inttostr(i)+'='+Floattostr(xk[i])+' ');

form1.ListBox1.Items.Add(#13 + 'Целевая функция = '+ Floattostr(F(xk))+#13);

end;

repeat

Grad(n,e/2,xk,dk,F);

for i:=1 to n do

dk[i]:=-dk[i]; sf:=F(xk);

if prn=1 then

begin

form1.ListBox1.Items.Add('Итерация №'+inttostr(nn)+ #13 +' Шаг = '+Floattostrf(lambda,ffGeneral,8,5) );

form1.ListBox1.Items.Add('Текущая точка ');

for i:=1 to n do

begin

form1.ListBox1.Items.Add('X'+inttostr(i)+'='+floattostrf(xk[i],ffGeneral,8,5));

formGraph.imGraph.Canvas.LineTo(round( mx* xk[1]+ Sx),round( -my* xk[2]+ Sy));

end;

form1.ListBox1.Items.Add(#13+'Текущий антиградиент');

for i:=1 to n do

form1.ListBox1.Items.Add('g'+inttostr(i)+'='+Floattostrf(dk[i],ffGeneral,8,5)+' ');

form1.ListBox1.Items.Add(' Целевая функция F = '+Floattostrf(sf,ffGeneral,8,5));

form1.ListBox1.Items.Add('-------------------------------------------');

end;

od:=0;

for i:=1 to n do

od:=od+sqr((dk[i]));

od:=sqrt(od); if od

nn:=nn+1;

if nn>Nmax then

begin

nn:=nn-1;

showmessage('Минимум не найден !!!'+ #13+' Необходимое числоитераций больше выделенного ресурса'+Inttostr(Nmax));

Fopt:=F(xk);

Exit

end;

Min(0,10,e,lambda,s);

for i:=1 to n do

xk[i]:=xk[i]+lambda*dk[i]/od;

Until(lambda

1: Fopt:=F(xk);

with form1.ListBox1.Items do

begin

Add(' Оптимальные значения за '+inttostr(nn)+' итерации');

for i:=1 to n do

Add('X'+inttostr(i)+'*'+'='+floattostrf(xk[i],ffGeneral,8,5));

Add(' Целевая функция F(X*) = '+Floattostrf(fopt,ffGeneral,8,5));

end;

end;

function model1(x: Artype): real;

begin

end;

procedure TForm2.Optimiz(k: integer);

begin

try // ввод начальных условий

with form1 do

begin

X0[1]:=strtofloat(form1.Edit12.Text);

X0[2]:=strtofloat(form1.Edit13.Text);

end

except

showMessage('Неправильно введены начальные условия');

end;

with FormGraph do //координатная плоскость

begin

{Установка максимума и минимума функции}

Xb:=-abs(X0[1])-5; Xe:=abs(X0[1])+5; Ymin:=-abs(X0[2])-5;Ymax:=abs(X0[2])+5;

GrafOrt;

end;

Nmax:=500; e:=0.00001;prn:=1;

formGraph.imGraph.Canvas.Pen.Color:=clRed;

formgraph.imGraph.Canvas.Pen.Width:=2;

formgraph. imGraph.Canvas.TextOut(round( mx* x0[1]+ Sx),

round( -my* x0[2]+ Sy),'0');

formGraph.imGraph.Canvas.MoveTo(round( mx* x0[1]+ Sx),round( -my* x0[2]+ Sy));

F1:=Model;

Grad(n,0.1,X0,g,f1);

Opgrad(n,e,X0,Nmax,prn,fopt,NN,f1);

formgraph.imGraph.Canvas.Pen.Width:=1;

end;

end.

Задание 5

МЕТОДЫ НУЛЕВОГО ПОРЯДКА РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ

Цель задания: приобрести практические навыки разработки алгоритмов и программ оптимизации многомерных функций методами ненулевого порядка, в частности методом прямого поиска.


Рисунок 8 – блок-схема подпрограммы циклического изменения координат базисной точки


Рисунок 9 – Блок-схема метода прямого поиска

Индивидуальное задание.

Найдите минимум функции методом прямого поиска, выбрав в Хо(3, -1, 2), а потом Хо(-3, 1, -2).

Алгоритм с помощью которого проводилась оптимизация функции изображена на рисунках 8, 9 в виде блок-схем.

Решение задачи на ЭВМ.

На рисунках 10, 11 изображены результаты оптимизации на ЭВМ при различных начальных условиях

Рисунок 10 – результаты и траектория движения базиса при Хо(3, -1, 2)

Рисунок 11 – результаты при Хо(-3,1, -2)

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

procedure Poisk(n:integer; zb:Artype; delta:real;

Var z1:Artype; Var w:real;

Var l:integer; F:Funop);

Var

z:Artype; i:integer; y:real;

begin

w:=f(zb);

z:=zb; z1:=zb; l:=0;

for i:=1 to n do

begin

z[i]:=zb[i]+delta; y:=f(z);

if y

begin

z1[i]:=z[i]; l:=l+1; w:=y

end

else begin

z[i]:=zb[i]-delta; y:=f(z);

if y

begin

z1[i]:=z[i]; l:=l+1; w:=y

end

end;

end;

w:=f(z1);

end;

procedure MyClass.OptPoisk(n,m:integer;

delta,eps:real; xo:Artype; Var xb:Artype;

Var Yopt:real; Var ip:integer; F:Funop);

Label 6,7,10;

Var x1,x2,x3:Artype;

d,wo,y1,y2,y3:real; i,l:integer;

a,b:string;

Procedure Outt(x:Artype; y:real);

Var i:integer;

begin

for i:=1 to n do

begin

str( x[i]:8:3,a); str(y:9:3,b);

form1.ListBox2.Items.Add('X'+inttostr(i)+'='+a);

with formgraph do

begin

imGraph.Canvas.Pen.Color:=clRed;

imgraph.Canvas.LineTo(round( mx* x[1]+ Sx),

round( -my* x[2]+ Sy));

imGraph1_3.Canvas.Pen.Color:=clBlue;

imgraph1_3.Canvas.LineTo(round( mx* x[1]+ Sx),

round( -my* x[3]+ Sy));

imGraph2_3.Canvas.Pen.Color:=clBlack;

imgraph2_3.Canvas.LineTo(round( mx* x[2]+ Sx),

round( -my* x[3]+ Sy));

end;

end;

str(y:9:1,b);

form1.ListBox2.Items.Add('--------------------- F='+b+'-----------');

end;

Begin

f:=model;

d:=delta;

wo:=f(xo);

ip:=0;

with formGraph do

begin

imGraph.Canvas.Pen.Width:=2;

imGraph1_3.Canvas.Pen.Width:=2;

imGraph2_3.Canvas.Pen.Width:=2;

for i:=1 to n do

begin //Перо в начальную точку

imGraph.Canvas.TextOut(round( mx* xo[1]+ Sx),

round( -my* xo[2]+ Sy),inttostr(ip));

imGraph.Canvas.MoveTo(round( mx* xo[1]+ Sx),

round( -my* xo[2]+ Sy));

imGraph1_3.Canvas.TextOut(round( mx* xo[1]+ Sx),

round( -my* xo[3]+ Sy),inttostr(ip));

imGraph1_3.Canvas.MoveTo(round( mx* xo[1]+ Sx),

round( -my* xo[3]+ Sy));

imGraph2_3.Canvas.TextOut(round( mx* xo[2]+ Sx),

round( -my* xo[3]+ Sy),inttostr(ip));

imGraph2_3.Canvas.MoveTo(round( mx* xo[2]+ Sx),

round( -my* xo[3]+ Sy));

end;

end;

Outt(xo,wo);

xb:=xo;

10: Poisk(n,xb,d,x1,y1,l,F);

ip:=ip+1;

if l=0 then goto 6;

7: for i:=1 to n do

x2[i]:=2*x1[i]-xb[i];

y2:=f(x2);

Poisk(n,x2,d,x3,y3,l,F);

ip:=ip+1;

if ip>m then

begin

ShowMessage('Число итераций > '+inttostr(m)+#13+'Минимум не найден!!!');

xb:=x3;

Yopt:=f(xb);

Exit

end;

if y3

begin

xb:=x1; wo:=f(xb);

Outt(xb,wo);

x1:=x3; y1:=y3;

goto 7

end

else

begin

xb:=x1; wo:=f(xb);

Outt(xb,wo);

goto 10

end;

6: if d>=eps then

begin

d:=d/5;

goto 10

end

else Yopt:=f(xb);

form1.ListBox2.Items.Add('Число итераций - '+InttoStr(ip));

for i:=1 to n do

begin

str( xb[i]:8:3,a);

form1.ListBox2.Items.Add('X'+inttostr(i)+'опт'+'='+a);

end;

form1.listbox2.Items.Add('Минимум - '+FloatToStr(opt1_5.Yopt));

end;

function model(x:Artype): real;

begin

model:={25*sqr(x[1]+3)+4*sqr(x[3]-4)+10*sqr(x[1]-x[2])+10;}

{3*sqr(x[1]-4)+50*sqr(x[2]-3)+16*sqr(x[1]-x[3])+12;}

16*sqr(x[1]+2)+4*sqr(x[2]-3)+5*sqr(x[3]-x[2])-8;

end

;

Задание 6

МЕТОДЫ СЛУЧАЙНОГО ПОИСКА РЕШЕНИЯ МНОГОМЕРНЫХ ЗАДАЧ ОПТИМИЗАЦИИ

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

Индивидуальное задание.

Найдите минимум функции методом случайного поиска, выбрав начальной точкой Хо(0, 0, 0) при изменении аргументов Xi в пределах [ai, bi]. Предусмотрите отрисовку поиска минимума в координатах x1Ox2, x1Ox3, x2Ox3.

Проведите сравнительный анализ по числу вычислений функции задавая параметр М=10, 15, 20 при шаге Н=20 и, задавая Н=0,5; 1; 2 при М=15


Рисунок 12 – блок-схема метода случайного поиска с перечётом.

Рисунок 13 решение задачи на ЭВМ и траектория поиска оптимальных значений функции

Результаты работы программы изображены на рисунке 13.

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

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

unit Opt1_6;

interface

uses

Dialogs, SysUtils,Graphics;

Const n=3;

Type Artype=array[1..n] of real;

Funop=function(xi:Artype):real;

type MyClass=class

public

procedure slpoisk(n,m,mf:integer;

h,hmin:real; xmin,xmax:Artype;

Var xo:Artype; Var Yopt:real; F:Funop);

end;

var opt6:MyClass;

var

F:FUNOP;

i,m,mf,im:integer;

h,hmin:real;

xmin,xmax:Artype;

xo,x:Artype;

Yopt:real;

function model(x:Artype): real;

implementation

uses main,unitGraph;

function model(x:Artype): real;

begin

model:={25*sqr(x[1]+3)+4*sqr(x[3]-4)+10*sqr(x[1]-x[2])+10;}

{10*sqr(x[1]-x[2])+4*sqr(x[1]-2)+25*sqr(x[3]+x[2])+8;}

16*sqr(x[1]+2)+4*sqr(x[2]-3)+5*sqr(x[3]-x[2])-8;

end;

procedure Myclass.slpoisk(n,m,mf:integer;

h,hmin:real; xmin,xmax:Artype;

Var xo:Artype; Var Yopt:real; F:Funop);

Label 9,10;

Var x,d,s:Artype; b,hr,y0,y,qsi:real; i,l,k:integer;

Procedure Outt(x:Artype; y:real; kod:integer);

Var i:integer;a,b,c:string;

begin

for i:=1 to n do

begin

str( x[i]:8:3,a); str(y:9:3,b);

form1.ListBox3.Items.Add('X'+inttostr(i)+

'='+a);

if (kod=1) then

with formgraph do

begin

imGraph.Canvas.Pen.Color:=clRed;

imgraph.Canvas.LineTo(round( mx* x[1]+ Sx),

round( -my* x[2]+ Sy));

imGraph1_3.Canvas.Pen.Color:=clBlue;

imgraph1_3.Canvas.LineTo(round( mx* x[1]+ Sx),

round( -my* x[3]+ Sy));

imGraph2_3.Canvas.Pen.Color:=clBlack;

imgraph2_3.Canvas.LineTo(round( mx* x[2]+ Sx),

round( -my* x[3]+ Sy));

end;

end;

case Kod of

0: c:='Начальная точка';

1: c:='Функция убывает';

2: c:='Пробнная точка';

end;

form1.ListBox3.Items.Add('----------- '+c+' ------'+' F='+b);

end;

// main

begin

f:=model;

b:=-1e20;

for i:=1 to n do

begin

d[i]:=xmax[i]-xmin[i];

if d[i]>b then

b:=d[i];

end;

for i:=1 to n do

s[i]:=d[i]/b;

hr:=h; y0:=f(xo); im:=1;

with formGraph do

begin

imGraph.Canvas.Pen.Width:=2;

imGraph1_3.Canvas.Pen.Width:=2;

imGraph2_3.Canvas.Pen.Width:=2;

for i:=1 to n do

begin //Перо в начальную точку

imGraph.Canvas.TextOut(round( mx* xo[1]+ Sx),

round( -my* xo[2]+ Sy),inttostr(im));

imGraph.Canvas.MoveTo(round( mx* xo[1]+ Sx),

round( -my* xo[2]+ Sy));

imGraph1_3.Canvas.TextOut(round( mx* xo[1]+ Sx),

round( -my* xo[3]+ Sy),inttostr(im));

imGraph1_3.Canvas.MoveTo(round( mx* xo[1]+ Sx),

round( -my* xo[3]+ Sy));

imGraph2_3.Canvas.TextOut(round( mx* xo[2]+ Sx),

round( -my* xo[3]+ Sy),inttostr(im));

imGraph2_3.Canvas.MoveTo(round( mx* xo[2]+ Sx),

round( -my* xo[3]+ Sy));

end;

end;

Outt(xo,y0,0);

randomize;

9: k:=0;

10: l:=0;

for i:=1 to n do

begin

qsi:=2*random-1;

x[i]:=xo[i]+hr*s[i]*qsi;

if x[i]>xmax[i] then

begin

x[i]:=xmax[i]; l:=l+1

end

else if x[i]

begin

x[i]:=xmin[i]; l:=l+1

end

end;

if l

begin

y:=f(x);

outt(x,y,2);

if y

im:=im+1;

if im>mf then

begin

showMessage('Число вычислений функции > '+IntTostr(mf)+#13+'Минимум не нейден !!!');

Yopt:=y0;

Exit

end;

if y

begin

y0:=y;xo:=x;

goto 9;

end

end;

k:=k+1;

if k

else

begin

hr:=hr/2;

if hr

begin

Yopt:=y0;

for i:=1to n do

form1.ListBox3.Items.Add('X'+inttostr(i)+'опт'+'='+floattostrf(x[i],ffGeneral,5,2)) ;

form1.ListBox3.Items.Add( 'Yопт = '+floattostrf(Yopt,ffGeneral,5,2));

form1.ListBox3.Items.Add('Число вычислений функции = '+InttoStr(im)) ;

Exit end

else goto 9;

end;

end;

end

.

Характеристики

Тип файла
Документ
Размер
3,96 Mb
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

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

Список файлов ответов (шпаргалок)

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6392
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее