x-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: = TObject);. Terminate;;
4.3 Блок-схема
В В
В
В
В
В
В
4.4 Результати
В
Малюнок 4. Мінімальне значення функції на інтервалі [1; 2] -12.324
Висновок:
Метод золотого перерізу є стародавнім методом розподілу відрізка. Вперше метод був розглянутий Евклидом. Тоді цим методом ділили коло на рівні п'ять частин для побудови п'ятикутної зірки. Сьогодні цей метод застосовується на практиці для оптимізації виробничих систем та об'єктів. br/>
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]) + ...