Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
29.03.2016
Размер:
2.04 Кб
Скачать
function f(x:real):real; {Исходная функция}
begin
f:=(x-3)*(x-3)-1+sin(x);
end;
var x0,x1,ksi,x2,x3,eps,minxold,xnew1,xnew2,xnew3,xnew0,xnewline:real;
i:integer;
begin
writeln('wwedi a ');
readln(x0);
writeln('wwedi b ');
readln(x3);
writeln('wwedi epsilon ');
readln(eps);
ksi:=2/(3+sqrt(5));
x1:=x0+ksi*(x3-x0);
x2:=x3-ksi*(x3-x0);
xnew0:=x0;
xnew3:=x3;
while abs(xnew0-xnew3)>eps do
begin
//ищем минимальный х
//if f(x0)<f(x1) and f(x0)<f(x2) and f(x0)<f(x3) then i:=0;
//if f(x1)<f(x0) and f(x1)<f(x2) and f(x1)<f(x3) then i:=1;
//if f(x2)<f(x1) and f(x2)<f(x0) and f(x2)<f(x3) then i:=2;
//if f(x3)<f(x0) and f(x3)<f(x2) and f(x3)<f(x1) then i:=3;
if f(x0)=Min(f(x0),f(x1)) then if f(x0)=Min(f(x0),f(x2)) then if f(x0)=Min(f(x0),f(x3)) then i:=0;
if f(x1)=Min(f(x1),f(x0)) then if f(x1)=Min(f(x1),f(x2)) then if f(x1)=Min(f(x1),f(x3)) then i:=1;
if f(x2)=Min(f(x2),f(x0)) then if f(x2)=Min(f(x2),f(x1)) then if f(x0)=Min(f(x2),f(x3)) then i:=2;
if f(x3)=Min(f(x3),f(x0)) then if f(x3)=Min(f(x3),f(x1)) then if f(x0)=Min(f(x3),f(x2)) then i:=3;
//11111
if f(xnew0)=Min(f(xnew0),f(xnew1)) then if f(xnew0)=Min(f(xnew0),f(xnew2)) then if f(xnew0)=Min(f(xnew0),f(xnew3)) then i:=0;
if f(xnew1)=Min(f(xnew1),f(xnew0)) then if f(xnew1)=Min(f(xnew1),f(xnew2)) then if f(xnew1)=Min(f(xnew1),f(xnew3)) then i:=1;
if f(xnew2)=Min(f(xnew2),f(xnew0)) then if f(xnew2)=Min(f(xnew2),f(xnew1)) then if f(xnew0)=Min(f(xnew2),f(xnew3)) then i:=2;
if f(xnew3)=Min(f(xnew3),f(xnew0)) then if f(xnew3)=Min(f(xnew3),f(xnew1)) then if f(xnew0)=Min(f(xnew3),f(xnew2)) then i:=3;
//назначаем новые х
if i<=1 then
begin
xnew0:=x0;
xnew3:=x2;
xnew1:=x1;
xnew2:=xnew0+xnew3-xnew1;
end
else
begin
xnew0:=x1;
xnew3:=x3;
xnew1:=x1;
xnew2:=xnew0+xnew3-xnew1;
end;
end;
//11111
if k<=1 then
begin
xnew0:=x0;
xnew3:=x2;
xnew1:=x1;
xnew2:=xnew0+xnew3-xnew1;
end
else
begin
xnew0:=x1;
xnew3:=x3;
xnew1:=x2;
xnew2:=xnew0+xnew3-xnew1;
end;
end;
end;
writeln('+++++');
writeln(xnew2);
readln;
end.
Соседние файлы в папке Задание 5