1.Определить
точку минимума функции с точностью
ε=0.001.Определить
число иттераций, обеспечивающих данную
точность.
I=20*x12-40*x1*x2+
20*x22-+17
(*);
2.Метод
градиента;
3.Программа:
{$N+}
var
alp,g: array[1..1000] of double;
x10,x11,x20,x21,f0,f1,z,h0,h1,min,a1,b1,a0,b0,n,m:double;
i,j,f:integer;
begin
writeln('vv/
x10 i x20');
readln(x10,x20);
f1:=20*x10*x10-40*x10*x20+20*x20*x20+17;f:=0;
repeat
f0:=f1;
h1:=1/1;
a1:=0;b1:=100;
repeat
h0:=h1;a0:=a1;b0:=b1;
for
j:=1 to 100 do begin
alp[j]:=a0+j*h0;n:=40*x10-40*x20;
m:=40*x20-40*x10;
g[j]:=20*sqr(x10-alp[j]*(n))-40*(x10-alp[j]*(n))*(x20-alp[j]* (m))+20*sqr(x20-alp[j]*(m))+17;
end;
min:=g[1];z:=0;
for
j:= 2 to 100 do
if
min>g[j] then begin min:=g[j] ;z:=alp[j]; end;
a1:=z-h0;
b1:=z+h0;
h1:=(b1-a1)/100;inc(f)
until
h0<0.01;
x11:=x10-z*(40*x10-40*x20);
x21:=x20-z*(40*x20-40*x10);
f1:=20*x11*x11-40*x11*x21+20*x21*x21+17;
until
(abs(f1-f0))<0.01);
writeln('
x1=',x11:7:5,' x2= ',x21:7:5,' f=',f1:9:8,,' itter= ',f); readln;
end.
4.Результаты:
Turbo
Pascal Version 7.0 Copyright (c) 1983,92 Borland International
vv/
x10 i x20v
12
4
x1=8.03200
x2=7.96800 f=17.08192000 itter=6
Минимальное
значение функции * будет 17 при всех
y=x;
Полученные
значения приблизительно равны.
Функция
i=x12*x22+(22-x1)2
6.Программа
{$N+}
var
alp,g: array[1..1000] of double;
x10,x11,x20,x21,f0,f1,z,h0,h1,min,a1,b1,a0,b0:double;
i,j,f:integer;n,m:real;
begin
writeln('vv/
x10 i x20');
readln(x10,x20);
f1:=x10*x10*x20*x20+sqr(22-x10);f:=0;
repeat
f0:=f1;
h1:=1/1000;
a1:=0;b1:=1;
repeat
h0:=h1;a0:=a1;b0:=b1;
for
j:=1 to 1000 do begin
alp[j]:=a0+j*h0;n:=2*x10*x20*x20-44+2*x10;
m:=2*x10*x10*x20;
g[j]:=(x10-alp[j]*(n))*(x20-alp[j]*m)+sqr(22-x10+alp[j]*(2*x10*x20*x20-44+2*x10));
end;
min:=g[1];z:=0;
for
j:= 2 to 1000 do
if
min>g[j] then begin min:=g[j] ;z:=alp[j]; end;
a1:=z-h0;
b1:=z+h0;
h1:=(b1-a1)/1000;
until
h0<0.00000001;
x11:=x10-z*(2*x10*x20*x20-44+2*x10);
x21:=x20-z*(2*x10*x10*x20);
f1:=x11*x11*x21*x21+sqr(22-x11);
inc(f);
until
(abs(f1-f0))<exp(-1500*ln(10));
writeln(x11:7:5,'
',x21:7:5,' ',f1:9:8,'itter ',f); readln;
end.
7.Результаты:
Turbo
Pascal Version 7.0 Copyright (c) 1983,92 Borland International
vv/
x10 i x20v
1
1
22.60256
-0.08026 3.65828152 itter 2
Решением
будет x=22 и y=0 .Значения приблизительно
равны.
|