ВУЗ:
Составители:
Рубрика:
begin
x:= –5;
for i:=1 to 20 Do begin
Writeln(' x= ',x,' pr= ',pr(x));
x:=x+0.5;
end; readln;
Write('x0,x1?'); readln(x0,x1);
f0:=f(x0); f1:=f(x1);
if f1>f0 then begin
c:=x1; x1:=x0; x0:=c {переобозначаем точки}
end;
p:=0; { p=0 – меняем b, p=1 – меняем h}
{b:=0.4;} b:=0.3; h:=0.2; n:=0;
k:=0; {k=1 переопределяем точки x0,x1 }
repeat
if k=1 then begin
x0:=x1; x1:=x; {переопределяем точки}
end;
k:=0;
n:=n+1; {увеличиваем число итераций}
{находим следующее приближение}
x:=x1–h*pr(x1)+b*(x1–x0);
{вычисляем целевую функцию}
{для следующего приближения}
ff:=f (x);
{проскочили минимум?}
if (ff>f1) and (p=0) and (b–0.1>0) then
b:=b–0.1 else
if (b–0.1)<=0 then p:=1;
if (ff>f1) and (p=1) and (h>=eps) then h:=h/2;
if ff<f1 then k:=1;
untiL (abs(x1–x)<eps) or (h<eps);
Writeln(' x*= ',x,' min f= ',f (x),
' Df/Dx= ',pr(x),' b= ',b,' h= ',h,' n= ',n);
end.
90
begin x:= 5; for i:=1 to 20 Do begin Writeln(' x= ',x,' pr= ',pr(x)); x:=x+0.5; end; readln; Write('x0,x1?'); readln(x0,x1); f0:=f(x0); f1:=f(x1); if f1>f0 then begin c:=x1; x1:=x0; x0:=c {переобозначаем точки} end; p:=0; { p=0 меняем b, p=1 меняем h} {b:=0.4;} b:=0.3; h:=0.2; n:=0; k:=0; {k=1 переопределяем точки x0,x1 } repeat if k=1 then begin x0:=x1; x1:=x; {переопределяем точки} end; k:=0; n:=n+1; {увеличиваем число итераций} {находим следующее приближение} x:=x1h*pr(x1)+b*(x1x0); {вычисляем целевую функцию} {для следующего приближения} ff:=f (x); {проскочили минимум?} if (ff>f1) and (p=0) and (b0.1>0) then b:=b0.1 else if (b0.1)<=0 then p:=1; if (ff>f1) and (p=1) and (h>=eps) then h:=h/2; if ff