- Код: Выделить всё
(*************************************************************************
Процедура минимизации значения функции методом золотого сечения.
Оптимизирует функцию одного переменного F.
Параметры:
A,B - отрезок [A,B], на котором ищется минимум функции F.
N - число шагов метода
После выхода переменные A и B содержат границы отрезка, на котором
находится решение задачи.
Алгоритм проводит 2+N вычислений функции F.
*************************************************************************)
procedure GoldenSectionOptimize(var A : Double;
var B : Double;
const N : Integer);
var
i : Integer;
S1 : Double;
S2 : Double;
U1 : Double;
U2 : Double;
FU1 : Double;
FU2 : Double;
begin
S1 := (3-Sqrt(5))/2;
S2 := (Sqrt(5)-1)/2;
U1 := A+S1*(B-A);
U2 := A+S2*(B-A);
FU1 := F(U1); <--- как это понимать ? :unsure:
FU2 := F(U2);
i:=1;
while i<=N do
begin
if FU1<=FU2 then
begin
B := U2;
U2 := U1;
FU2 := FU1;
U1 := A+S1*(B-A);
FU1 := F(U1);
end
else
begin
A := U1;
U1 := U2;
FU1 := FU2;
U2 := A+S2*(B-A);
FU2 := F(U2);
end;
Inc(i);
end;
end;
Что ето такое? Inc(i);
В конце перед предпоследним end.
Только отвечать просьба как для средних умов)))))
Заранее спасибо за ответы.