БЕСПЛАТНОЕ РЕШЕНИЕ ЗАДАЧ

Оптимизация методом золотого сечения

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

program DifurEllips;
uses Crt;
var 
x,Aa,Bb,a,b,Fx,F1,F2,X1,X2,E:Real;
k:integer;
log:Boolean;
Ch:Char;
function F(x:Real):real;
begin
F:=3*sqr(sqr(X))-16*X*sqr(X)+25*X;
end;
Begin
ClrScr;
repeat
log:=True;
Writeln(' Vvedite dannie ');
Writeln(' Nachalo intervala = ');
readln(Aa);
Writeln(' Konec intervala = ');
readln(Bb);
Writeln(' Zadat tochnost = ');
read(E);
writeln('*************Rezyltati scheta**************');
a:=Aa;
b:=Bb;
k:=0;
X1:=a+0.382*(b-a);
F1:=F(X1);
writeln('X1=',X1:8:3,'F1=',F1:8:3,';');
X2:=a+0.618*(b-a);
F2:=F(X2);
writeln('X2=',X2:8:3,'F2=',F1:8:3,';');
while abs(b-a)>E do begin
if F1>=F2 then begin
a:=X1;
X1:=X2;
F1:=F2;
X2:=a+0.618*(b-a);
F2:=F(X2);
writeln(k:4,'-9 ITERACHIYA X2=',X2:8:3,'F2=',F2:8:3,';');
end
else if F1 < F2 then begin
b:=X2;
X2:=X1;
F2:=F1;
X1:=a+0.382*(b-a);
F1:=F(X1);
writeln(k:4,'-9 ITERACHIYA X1=',X1:8:3,'F1=',F1:8:3,';');
end;
Inc(k);
end;
X:=(b+a)/2;
Fx:=F(X);
writeln('Reshenie : minF(x)=',Fx:8:5,' ,x iz[',Aa:6:4,',',Bb:6:4,'].');
writeln('X=',X:8:3);
writeln('Zadana tochnost dostignyta na',k:4,'-u iterachii.');
write('Xotite prodolshat (Y/N) Y');
GoToXY(WhereX-1,WhereY);
Ch:=readkey;
writeln(Ch);
if (Ch <> 'N')and(Ch<>'n') then
log:=false;
until log;
End.

Скрин выполнения программы

Оставить комментарий

Вы должны быть авторизованы , чтобы оставить или оценить комментарий.

Онлайн всего: 13
Гостей: 13
Пользователей: 0

STUDLAB Сообщить про опечатку на сайте