ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ½ΡΠ΅Π·Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
ΠΡΠ²ΠΎΠ΄: ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΡΡΡΡ Π² ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ², ΡΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠΎΠΈΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π₯*, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΡΠ±Π°Ρ ΠΏΠ°ΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ f (x) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ·ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° (ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΡΡΠΈ). Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ½ΡΠ΅Π·Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠHΠΠ‘Π’ΠΠ Π‘Π’ΠΠ ΠΠΠ ΠΠΠΠΠHΠΠ― Π ΠΠΠ£ΠΠ Π£ΠΠ ΠΠHΠ« ΠΠHΠΠΠ‘Π‘ΠΠΠ― ΠΠΠ‘Π£ΠΠΠ Π‘Π’ΠΠHHΠΠ― ΠΠΠ¨ΠHΠΠ‘Π’Π ΠΠΠ’ΠΠΠ¬HΠΠ― ΠΠΠΠΠΠΠΠ― ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ
ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° № 1, 2
ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅
«ΠΠ΅ΡΠΎΠ΄Ρ ΡΠΈΠ½ΡΠ΅Π·Π° ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ»
ΠΡΠΏΠΎΠ»Π½ΠΈΠ»Π° ΡΡΡΠ΄Π΅Π½ΡΠΊΠ° Π³ΡΡΠΏΠΏΡ ΠΠ’ 99−1Π· ΠΠ»Π΅ΠΊΡΠ°Π½Π΄ΡΠΎΠ²Π° Π. Π ΠΡΠΎΠ²Π΅ΡΠΈΠ»Π° ΠΠ΅ΡΠ΅ΠΌΠ΅ΠΉ Π.Π.
ΠΡΠ°ΠΌΠ°ΡΠΎΡΡΠΊ 2002
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 1
ΠΠ ΠΠΠ ΠΠΠΠΠ ΠΠΠΠΠΠ Π§ΠΠ‘ΠΠΠΠΠ«Π₯ ΠΠΠ’ΠΠΠΠ ΠΠΠΠΠΠΠ ΠΠΠ ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ
Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΠΠ.
ΠΠ°ΠΉΡΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΎΡ -4 Π΄ΠΎ 3 Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ 0,0001. Π€ΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΡΡΠΈΠ³Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΏΡΠΈ ΠΌΠ΅Π½ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°. ΠΠΎΡΡΡΠΎΠΉΡΠ΅ Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 1.
Π’Π°Π±Π»ΠΈΡΠ° 1
ΠΠΎΠΌΠ΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ° | A | B | Π‘ | D | |
1,5 | 0,4 | — 5,6 | — 10,8 | ||
Π ΠΈΡΡΠ½ΠΎΠΊ 1 — Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄Π°
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΌ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 2 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ.
Π ΠΈΡΡΠ½ΠΎΠΊ 2- ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π³ΡΠ°ΡΠΈΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠ°ΡΠΊΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Ρ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅
ΠΠ°Π΄Π°ΡΠ° ΡΠ΅ΡΠ΅Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π²Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° Ρ ΡΡΠΎΡΠ½Π΅Π½ΠΈΠ΅ΠΌ, Ρ. Π΅. Π²Π½Π°ΡΠ°Π»Π΅ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠΈΡΠΊ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ, Π° ΠΏΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌΠ° ΠΏΠΎΠΈΡΠΊ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ Π² Π·ΠΎΠ½Π΅ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌΠ° Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ°Π³ΠΎΠΌ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌ
:
procedure TForm1. SpeedButton1Click (Sender: TObject);
var a, b, c, d, e, y, Ymax, Xmax,
x0,X, Xk, Xmin, Ymin, h, k :real;
i, n, count :integer;
status :integer; // 0-ΡΠ±ΡΠ²Π°Π½ΠΈΠ΅, 1-Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΠ΅
label l1;
Function MOO (x:real):real;
begin
result:=a*x*x*x + b*x*x + c*x + d;
end;
begin
Form1.Series1.Clear;
try // Π²Π²ΠΎΠ΄ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ
with form1 do
begin
LabelXmin.Caption:='Xmin = 0';
LabelYmin.Caption:='Ymin = 0';
LabelXmax.Caption:='Xmax = 0';
LabelYmax.Caption:='Ymax = 0';
end;
a:=strtofloat (form1.Edit1.Text);
b:=strtofloat (form1.Edit2.Text);
c:=strtofloat (form1.Edit3.Text);
d:=strtofloat (form1.Edit4.Text);
e:=strtofloat (form1.Edit5.Text);
h:=strtofloat (form1.Edit6.Text);
x0:=strtofloat (form1.Edit7.Text);
xk:=strtofloat (form1.Edit8.Text);
k:=10;
Ymin:=1 000 000 000;
Ymax:=-10 000 000 000;
status:=1;
count:=1;
except
showMessage ('ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ');
end;
l1: n:=trunc ((xk-x0)/h)+1;
x:=x0;
for i:=1 to n do
begin
y:=MOO (x);
case status of
0: if y
begin
Ymin:=y;
Xmin:=x;
X:=x+h;
end;
1: if Y>Ymax then
begin
Ymax:=y;
Xmax:=x;
X:=x+h;
end;
end;
end;
if count <= 2 then
if h <= e then
begin
with form1 do // Π²ΡΠ²ΠΎΠ΄ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°
begin
LabelXmin.Caption:='Xmin = '+floatTostr (Xmin);
LabelYmin.Caption:='Ymin = '+floatTostr (Ymin);
LabelXmax.Caption:='Xmax = '+floatTostr (Xmax);
LabelYmax.Caption:='Ymax = '+floatTostr (Ymax);
end;
status :=(status+1) mod 2; //Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌ
count:=count+1;
x0:=Xmin;
xk:= strtofloat (form1.Edit8.Text);
h:=strtofloat (form1.Edit6.Text);
goto l1;
end
else
begin
x0:=Xmin-h;
xk:=Xmin+h;
h:=h/k;
goto l1;
end;
x:=strtofloat (form1.Edit7.Text);
while x < strtofloat (form1.Edit8.Text) do
begin
y:=MOO (x);
form1.Series1.AddXY (x, y);
x:=x+0.1;
end;
end;ΠΠ°Π΄Π°Π½ΠΈΠ΅ 2
Π ΠΠ¨ΠΠΠΠ ΠΠΠΠΠΠΠ ΠΠ«Π₯ ΠΠΠΠΠ§ ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ ΠΠΠ’ΠΠΠΠΠ ΠΠΠ‘ΠΠΠΠΠΠΠ’ΠΠΠ¬ΠΠΠΠ ΠΠΠΠ‘ΠΠ
Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°: Π΄ΠΈΡ ΠΎΡΠΎΠΌΠΈΠΈ ΠΈ Π·ΠΎΠ»ΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠ°ΠΉΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ f (x) Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ [a, b] Ρ ΡΠΎΡΠ½ΠΎΡΡΡΡ. ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΈ Π½ΠΎΠΌΠ΅ΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ 2. ΠΠΎΡΡΡΠΎΠΈΡΡ Π³ΡΠ°ΡΠΈΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ [a, b] c ΡΠΎΡΠ½ΠΎΡΡΡΡ Π΅ = 10-4, ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ «Π·ΠΎΠ»ΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ"ΠΏΠΎΡΡΡΠΎΠΉΡΠ΅ Π³ΡΠ°ΡΠΈΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄Π° «ΠΠΎΠ»ΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅3.
Π ΠΈΡΡΠ½ΠΎΠΊ 3 — ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄Π° «ΠΠΎΠ»ΠΎΡΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ»
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ΅ 4 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ ΠΈ Π³ΡΠ°ΡΠΈΠΊ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ.
ΠΡΠ²ΠΎΠ΄: ΠΠ΅ΡΠΎΠ΄Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΡΡΠΎΡΡΡΡ Π² ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π΅. ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡΠ², ΡΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠΎΠΈΡΡΡ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΊΡΡΡΠ΅ΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π₯*, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Π»ΡΠ±Π°Ρ ΠΏΠ°ΡΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ f (x) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ·ΠΈΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠΎΠΈΡΠΊΠ° (ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΡΡΠΈ).
ΠΡΠΎΡΠ΅Π΄ΡΡΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ:
procedure TForm1. SpeedButton2Click (Sender: TObject);
label l2;
Var a, b, e, x, x1,x2,y, y1, y2,Xmin, Ymin: real ;
n :integer;
t:string;
Function f (x:real):real;
begin
f:=tan (x)+exp (-x)+x;
{ f:=x*x+sin (x);}
end;
begin
Form1.Series1.Clear;
try // Π²Π²ΠΎΠ΄ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ
a:=strtofloat (form1.Edit9.Text);
b:=strtofloat (form1.Edit10.Text);
e:=strtofloat (form1.Edit11.Text);
except
showMessage ('ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ');
end;
x1:=a+0.382*(b-a); x2:=b-0.382*(b-a);
y1:=f (x1); y2:=f (x2);
n:=1;
l2: n:=n+1;
if y1<= y2 then
begin
b:=x2;
if (b-a) >= e then
begin
x2:=x1;
x1:=a+0.382*(b-a);
y2:=y1;
y1:=f (x1);
goto l2;
end;
end
else
begin
a:=x1;
if (b-a)>=e then
begin
x1:=x2;
x2:=b-0.382*(b-a);
y1:=y2;
Y2:=f (x2);
goto l2;
end;
end;
Xmin:=(a+b)/2;
Ymin:=f (Xmin);
str (Xmin:10:4,t);
form1.Label20.Caption:='Xmin = '+t;
str (Ymin:10:4,t);
form1.Label21.Caption:='Ymin = '+t;
form1.Label22.Caption:='n = '+Inttostr (n);
x:=strtofloat (form1.Edit9.Text);
while x < strtofloat (form1.Edit10.Text) do
begin
y:=f (x);
form1.Series1.AddXY (x, y);
x:=x+0.1;
end;
end;
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 3
ΠΠ ΠΠΠΠΠΠ’ΠΠ«Π ΠΠΠ’ΠΠΠ« Π ΠΠ¨ΠΠΠΠ― ΠΠΠΠΠΠΠΠ ΠΠ«Π₯ ΠΠΠΠΠ§ ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ
Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΡ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π°ΠΈΡΠΊΠΎΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΡΠΊΠ°, Π²ΡΠ±ΡΠ°Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ .ΠΠ°ΡΡ Π³Π΅ΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ»Π»ΡΡΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅
1) Π ΡΠΎΡΠΊΠ΅ f (X0) = = -14,5
ΠΡΡΠΈΡΠ»ΠΈΠΌ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Π² ΡΠΎΡΠΊΠ΅ Π₯0 :
.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ, ΡΠΎ Π₯0 Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌΠ°
2) ΠΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌΡΡ ΠΈΠ·Π₯0 Π²Π΄ΠΎΠ»Ρ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ° — Π² Π½ΠΎΠ²ΡΡ ΡΠΎΡΠΊΡΠ₯1 ΠΏΠΎ ΡΠΎΡΠΌΡΠ»Π΅:
Ρ.Π΅. .
ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ ΡΠΎΡΠΊΠΈ Π₯1 Π½ΡΠΆΠ½ΠΎ Π²ΡΠ±ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π³Π°. ΠΠΎΠ»ΡΡΠΈΠΌ :
ΠΠ· ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ (,)=0 ΠΈΠΌΠ΅Π΅ΠΌ:
(-3−3)(-3)+(1+)=10+10=0
ΠΎΡΠΊΡΠ΄Π° =
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 4
ΠΠ ΠΠΠΠΠΠΠΠ ΠΠ ΠΠΠΠΠΠ’ΠΠ«Π₯ ΠΠΠ’ΠΠΠΠ ΠΠΠ― ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ ΠΠ ΠΠΠ ΠΠΠ’ΠΠΠΠ’ΠΠ§ΠΠ‘ΠΠΠ₯ ΠΠΠΠΠΠΠ ΠΠΠͺΠΠΠ’ΠΠ
Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ.
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ f (x1,Ρ 2) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π°ΠΈΡΠΊΠΎΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΡΠΊΠ°, Π²ΡΠ±ΡΠ°Π² Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ ΡΠ½Π°ΡΠ°Π»Π° Π₯ΠΎ, Π° Π·Π°ΡΠ΅ΠΌ ΡΠΎΡΠΊΡ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°Π½ΠΈΠ°. Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ. ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π³Π° ΠΏΡΡΡΠΌ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²Π΄ΠΎΠ»Ρ Π°Π½ΡΠΈΠ³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΈΠΌΠΈΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄ Π΄ΠΈΡ ΠΎΡΠΎΠΌΠΈΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΠΈ Π½Π°ΠΈΡΠΊΠΎΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΡΠΊΠ°.
ΠΏΡΠΈ Π₯ΠΎ (2,4).
ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 5
Π ΠΈΡΡΠ½ΠΎΠΊ 5- Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π°ΠΈΡΠΊΠΎΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΡΠΊΠ°
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 6- Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ ΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (ΠΏΡΠΈ Π₯ΠΎ (2,4))
Π ΠΈΡΡΠ½ΠΎΠΊ 7 Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ ΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ (ΠΏΡΠΈ Π₯ΠΎ (-2,-4))
ΠΡΠ²ΠΎΠ΄: ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Π½Π°ΠΈΡΠΊΠΎΡΠ΅ΠΉΡΠ΅Π³ΠΎ ΡΠΏΡΡΠΊΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠ°Π³ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ°Π΄ΠΈΠ΅Π½ΡΡ Π² Π΄Π²ΡΡ ΡΠΎΡΠ΅Π΄Π½ΠΈΡ ΡΠΎΡΠΊΠ°Ρ ΠΎΡΡΠΎΠ³ΠΎΠ½Π°Π»ΡΠ½Ρ ΠΈ ΠΏΠΎΡΡΠΎΠΌΡ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΌΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ Π·ΠΈΠ³Π·Π°Π³Π° Ρ ΠΏΠΎΠ²ΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄ ΠΏΡΡΠΌΡΠΌ ΡΠ³Π»ΠΎΠΌ. ΠΡΠΈ Π₯ΠΎ (2,4) ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ — 5, Π° ΠΏΡΠΈ Π₯ΠΎ (-2,-4) ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΌΠ΅Π½ΡΡΠΈΠ»ΠΎΡΡ Π΄ΠΎ 4, Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΠ°Π»ΠΎΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΠΌ — F (x)=0,61 370 564.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°.
unit Opt14;
interface
uses
Messages, SysUtils, Graphics, Forms, Dialogs;
const n=2;
type Artype =array[1.n] of real;
Funop=function (xi:Artype):real;
ProcMin=Procedure (a, b, e:real; var xm, ym: real);
type
TForm2 = class (TForm)
private
public
procedure Optimiz (k: integer);
end;
var
Form2: TForm2;
Nmax, prn, NN: integer;
e, Fopt: real;
X0,G:artype;
f1:funop;
Pmin:ProcMin;
kAntGrad:real;
function model1(x: Artype): real;
implementation
uses Main, UnitGraph;
// ΠΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ
function model (x:Artype):real;
begin
model:= exp (x[1])+sqr (x[2])-2*x[1];
end;
{main program}
procedure Grad (n: integer; e: real; x: artype; var g: Artype;
F: Funop);
Var i: integer; fp, fo: real;
begin
for i:=1 to n do
begin
x[i]: =x[i]+e;
fp:=F (x);
x[i]: =x[i]-2*e;
fo:=F (x);
x[i]: =x[i]+e;
g[i]: =(fp-fo)/2/e;
end;
end;
procedure Opgrad (n: integer; e: real; var xk: Artype; Nmax: integer;
prn: byte; var Fopt: real; var nn: integer; F: Funop);
Label 1;
Var dk: Artype;//ΠΡΠ°Π΄ΠΈΠ΅Π½Ρ
od{Π½ΠΎΡΠΌΠ° Π²Π΅ΠΊΡΠΎΡ-Π³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ°},
lambda{ΡΠ°Π³}, s, sf:real;
i:integer;
Function FF (x:real):real;
Var i: integer;
begin
for i:=1 to n do
xk[i]: =xk[i]+abs (x)*dk[i]/od;
FF:=F (xk);
for i:=1 to n do
xk[i]: =xk[i]-abs (x)*dk[i]/od;
end;
Procedure Min (a0,b0,e:real; Var xm, ym: real);// ΠΠ΅ΡΠΎΠ΄ ΠΠΈΡ ΠΎΡΠΎΠΌΠΈΠΈ
Label 1,2;
Var x1, x2,y1,y2,delta, a, b:real;
k, n: integer;
begin
a:=a0; b:=b0;
delta:=e/2;
1: n:=2*k;
x1:=(a+b-delta)/2;
x2:=(a+b+delta)/2;
y1:=ff (x1); y2:=ff (x2);
if y1<=y2 then b:=x2
else a:=x1;
if (b-a)
begin
xm:=(a+b)/2;
ym:=ff (xm);
end
else
begin
k:=k+1;
goto 1
end;
end;
{main prcvedure}
BEGIN
nn:=0; lambda:=0;
if prn=0 then
begin
for i:=1 to n do
form1.ListBox1.Items.Add ('x'+inttostr (i)+'='+Floattostr (xk[i])+' ');
form1.ListBox1.Items.Add (#13 + 'Π¦Π΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ = '+ Floattostr (F (xk))+#13);
end;
repeat
Grad (n, e/2,xk, dk, F);
for i:=1 to n do
dk[i]: =-dk[i]; sf:=F (xk);
if prn=1 then
begin
form1.ListBox1.Items.Add ('ΠΡΠ΅ΡΠ°ΡΠΈΡ β'+inttostr (nn)+ #13 +' Π¨Π°Π³ = '+Floattostrf (lambda, ffGeneral, 8,5));
form1.ListBox1.Items.Add ('Π’Π΅ΠΊΡΡΠ°Ρ ΡΠΎΡΠΊΠ° ');
for i:=1 to n do
begin
form1.ListBox1.Items.Add ('X'+inttostr (i)+'='+floattostrf (xk[i], ffGeneral, 8,5));
formGraph.imGraph.Canvas.LineTo (round (mx* xk[1]+ Sx), round (-my* xk[2]+ Sy));
end;
form1.ListBox1.Items.Add (#13+'Π’Π΅ΠΊΡΡΠΈΠΉ Π°Π½ΡΠΈΠ³ΡΠ°Π΄ΠΈΠ΅Π½Ρ');
for i:=1 to n do
form1.ListBox1.Items.Add ('g'+inttostr (i)+'='+Floattostrf (dk[i], ffGeneral, 8,5)+' ');
form1.ListBox1.Items.Add (' Π¦Π΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ F = '+Floattostrf (sf, ffGeneral, 8,5));
form1.ListBox1.Items.Add ('—————————————————————-');
end;
od:=0;
for i:=1 to n do
od:=od+sqr ((dk[i]));
od:=sqrt (od); if od
nn:=nn+1;
if nn>Nmax then
begin
nn:=nn-1;
showmessage ('ΠΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ !!!'+ #13+' ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΡΡΠ°'+Inttostr (Nmax));
Fopt:=F (xk);
Exit
end;
Min (0,10,e, lambda, s);
for i:=1 to n do
xk[i]: =xk[i]+lambda*dk[i]/od;
Until (lambda
1: Fopt:=F (xk);
with form1. ListBox1.Items do
begin
Add (' ΠΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π·Π° '+inttostr (nn)+' ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ');
for i:=1 to n do
Add ('X'+inttostr (i)+'*'+'='+floattostrf (xk[i], ffGeneral, 8,5));
Add (' Π¦Π΅Π»Π΅Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ F (X*) = '+Floattostrf (fopt, ffGeneral, 8,5));
end;
end;
function model1(x: Artype): real;
begin
end;
procedure TForm2. Optimiz (k: integer);
begin
try // Π²Π²ΠΎΠ΄ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ
with form1 do
begin
X0[1]: =strtofloat (form1.Edit12.Text);
X0[2]: =strtofloat (form1.Edit13.Text);
end
except
showMessage ('ΠΠ΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ Π²Π²Π΅Π΄Π΅Π½Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ');
end;
with FormGraph do //ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ½Π°Ρ ΠΏΠ»ΠΎΡΠΊΠΎΡΡΡ
begin
{Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠ° ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΈ}
Xb:=-abs (X0[1])-5; Xe:=abs (X0[1])+5; Ymin:=-abs (X0[2])-5;Ymax:=abs (X0[2])+5;
GrafOrt;
end;
Nmax:=500; e:=0.1;prn:=1;
formGraph.imGraph.Canvas.Pen.Color:=clRed;
formgraph.imGraph.Canvas.Pen.Width:=2;
formgraph. imGraph.Canvas.TextOut (round (mx* x0[1]+ Sx),
round (-my* x0[2]+ Sy),'0');
formGraph.imGraph.Canvas.MoveTo (round (mx* x0[1]+ Sx), round (-my* x0[2]+ Sy));
F1:=Model;
Grad (n, 0.1,X0,g, f1);
Opgrad (n, e, X0,Nmax, prn, fopt, NN, f1);
formgraph.imGraph.Canvas.Pen.Width:=1;
end;
end.
ΠΠ°Π΄Π°Π½ΠΈΠ΅ 5
ΠΠΠ’ΠΠΠ« ΠΠ£ΠΠΠΠΠΠ ΠΠΠ Π―ΠΠΠ Π ΠΠ¨ΠΠΠΠ― ΠΠΠΠΠΠΠΠ ΠΠ«Π₯ ΠΠΠΠΠ§ ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ
Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°.
Π ΠΈΡΡΠ½ΠΎΠΊ 8 — Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°Ρ Π±Π°Π·ΠΈΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΈ Π ΠΈΡΡΠ½ΠΎΠΊ 9 — ΠΠ»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°, Π²ΡΠ±ΡΠ°Π² Π² Π₯ΠΎ (3, -1, 2), Π° ΠΏΠΎΡΠΎΠΌ Π₯ΠΎ (-3, 1, -2).
ΠΠ»Π³ΠΎΡΠΈΡΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Π° Π½Π° ΡΠΈΡΡΠ½ΠΊΠ°Ρ 8, 9 Π² Π²ΠΈΠ΄Π΅ Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌ.
Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ.
ΠΠ° ΡΠΈΡΡΠ½ΠΊΠ°Ρ 10, 11 ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° ΠΠΠ ΠΏΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΡΡ Π ΠΈΡΡΠ½ΠΎΠΊ 10 — ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Π±Π°Π·ΠΈΡΠ° ΠΏΡΠΈ Π₯ΠΎ (3, -1, 2)
Π ΠΈΡΡΠ½ΠΎΠΊ 11 — ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΏΡΠΈ Π₯ΠΎ (-3,1, -2)
ΠΡΠ²ΠΎΠ΄: Π Ρ ΠΎΠ΄Π΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ Π±ΡΠ»ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠΉ ΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
procedure Poisk (n:integer; zb: Artype; delta: real;
Var z1: Artype; Var w: real;
Var l: integer; F: Funop);
Var
z:Artype; i: integer; y: real;
begin
w:=f (zb);
z:=zb; z1:=zb; l:=0;
for i:=1 to n do
begin
z[i]: =zb[i]+delta; y:=f (z);
if y
begin
z1[i]: =z[i]; l:=l+1; w:=y
end
else begin
z[i]: =zb[i]-delta; y:=f (z);
if y
begin
z1[i]: =z[i]; l:=l+1; w:=y
end
end;
end;
w:=f (z1);
end;
procedure MyClass. OptPoisk (n, m: integer;
delta, eps: real; xo: Artype; Var xb: Artype;
Var Yopt: real; Var ip: integer; F: Funop);
Label 6,7,10;
Var x1, x2,x3:Artype;
d, wo, y1, y2,y3:real; i, l: integer;
a, b: string;
Procedure Outt (x:Artype; y: real);
Var i: integer;
begin
for i:=1 to n do
begin
str (x[i]: 8:3,a); str (y:9:3,b);
form1.ListBox2.Items.Add ('X'+inttostr (i)+'='+a);
with formgraph do
begin
imGraph.Canvas.Pen.Color:=clRed;
imgraph.Canvas.LineTo (round (mx* x[1]+ Sx),
round (-my* x[2]+ Sy));
imGraph13.Canvas.Pen.Color:=clBlue;
imgraph13.Canvas.LineTo (round (mx* x[1]+ Sx),
round (-my* x[3]+ Sy));
imGraph23.Canvas.Pen.Color:=clBlack;
imgraph23.Canvas.LineTo (round (mx* x[2]+ Sx),
round (-my* x[3]+ Sy));
end;
end;
str (y:9:1,b);
form1.ListBox2.Items.Add ('——————————- F='+b+'—————-');
end;
Begin
f:=model;
d:=delta;
wo:=f (xo);
ip:=0;
with formGraph do
begin
imGraph.Canvas.Pen.Width:=2;
imGraph13.Canvas.Pen.Width:=2;
imGraph23.Canvas.Pen.Width:=2;
for i:=1 to n do
begin //ΠΠ΅ΡΠΎ Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ
imGraph.Canvas.TextOut (round (mx* xo[1]+ Sx),
round (-my* xo[2]+ Sy), inttostr (ip));
imGraph.Canvas.MoveTo (round (mx* xo[1]+ Sx),
round (-my* xo[2]+ Sy));
imGraph13.Canvas.TextOut (round (mx* xo[1]+ Sx),
round (-my* xo[3]+ Sy), inttostr (ip));
imGraph13.Canvas.MoveTo (round (mx* xo[1]+ Sx),
round (-my* xo[3]+ Sy));
imGraph23.Canvas.TextOut (round (mx* xo[2]+ Sx),
round (-my* xo[3]+ Sy), inttostr (ip));
imGraph23.Canvas.MoveTo (round (mx* xo[2]+ Sx),
round (-my* xo[3]+ Sy));
end;
end;
Outt (xo, wo);
xb:=xo;
10: Poisk (n, xb, d, x1,y1,l, F);
ip:=ip+1;
if l=0 then goto 6;
7: for i:=1 to n do
x2[i]: =2*x1[i]-xb[i];
y2:=f (x2);
Poisk (n, x2, d, x3, y3,l, F);
ip:=ip+1;
if ip>m then
begin
ShowMessage ('Π§ΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ > '+inttostr (m)+#13+'ΠΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½!!!');
xb:=x3;
Yopt:=f (xb);
Exit
end;
if y3
begin
xb:=x1; wo:=f (xb);
Outt (xb, wo);
x1:=x3; y1:=y3;
goto 7
end
else
begin
xb:=x1; wo:=f (xb);
Outt (xb, wo);
goto 10
end;
6: if d>=eps then
begin
d:=d/5;
goto 10
end
else Yopt:=f (xb);
form1.ListBox2.Items.Add ('Π§ΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ — '+InttoStr (ip));
for i:=1 to n do
begin
str (xb[i]: 8:3,a);
form1.ListBox2.Items.Add ('X'+inttostr (i)+'ΠΎΠΏΡ'+'='+a);
end;
form1.listbox2.Items.Add ('ΠΠΈΠ½ΠΈΠΌΡΠΌ — '+FloatToStr (opt15.Yopt));
end;
function model (x:Artype): real;
begin
model:={25*sqr (x[1]+3)+4*sqr (x[3]-4)+10*sqr (x[1]-x[2])+10;}
{3*sqr (x[1]-4)+50*sqr (x[2]-3)+16*sqr (x[1]-x[3])+12;}
16*sqr (x[1]+2)+4*sqr (x[2]-3)+5*sqr (x[3]-x[2])-8;
end;ΠΠ°Π΄Π°Π½ΠΈΠ΅ 6
ΠΠΠ’ΠΠΠ« Π‘ΠΠ£Π§ΠΠΠΠΠΠ ΠΠΠΠ‘ΠΠ Π ΠΠ¨ΠΠΠΠ― ΠΠΠΠΠΠΠΠ ΠΠ«Π₯ ΠΠΠΠΠ§ ΠΠΠ’ΠΠΠΠΠΠ¦ΠΠ Π¦Π΅Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ: ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π½Π°Π²ΡΠΊΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π½Π° ΠΠΠ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΡΡΡΠ΅ΠΌΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Ρ ΠΏΠ΅ΡΠ΅ΡΡΠ΅ΡΠΎΠΌ.
ΠΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅.
ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ°, Π²ΡΠ±ΡΠ°Π² Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π₯ΠΎ (0, 0, 0) ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Xi Π² ΠΏΡΠ΅Π΄Π΅Π»Π°Ρ [ai, bi]. ΠΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠΈΡΠ΅ ΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° Π² ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΠ°Ρ x1Ox2, x1Ox3, x2Ox3.
ΠΡΠΎΠ²Π΅Π΄ΠΈΡΠ΅ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎ ΡΠΈΡΠ»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°Π΄Π°Π²Π°Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π=10, 15, 20 ΠΏΡΠΈ ΡΠ°Π³Π΅ Π=20 ΠΈ, Π·Π°Π΄Π°Π²Π°Ρ Π=0,5; 1; 2 ΠΏΡΠΈ Π=15
Π ΠΈΡΡΠ½ΠΎΠΊ 12 — Π±Π»ΠΎΠΊ-ΡΡ Π΅ΠΌΠ° ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Ρ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΌ.
Π ΠΈΡΡΠ½ΠΎΠΊ 13 ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° ΠΠΠ ΠΈ ΡΡΠ°Π΅ΠΊΡΠΎΡΠΈΡ ΠΏΠΎΠΈΡΠΊΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½Ρ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ 13.
ΠΡΠ²ΠΎΠ΄: Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΈΡΠΊΠ° Π»Π΅ΠΆΠΈΡ Π²Π½Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ»ΡΡΠ°Ρ Π² ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ±Π½ΡΡ ΡΠΎΡΠ΅ΠΊ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠΈΡΠΊΠ°. ΠΠ°Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π΅Π½ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΡΡΡΡ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π°Π½ΡΠΈΠ³ΡΠ°Π΄ΠΈΠ΅Π½ΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ±Π½ΡΡ ΡΠΎΡΠ΅ΠΊ.
ΠΠΈΡΡΠΈΠ½Π³ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠ΅ΡΠΎΠ΄Π°
unit Opt16;
interface
uses
Dialogs, SysUtils, Graphics;
Const n=3;
Type Artype=array[1.n] of real;
Funop=function (xi:Artype):real;
type MyClass=class
public
procedure slpoisk (n, m, mf:integer;
h, hmin: real; xmin, xmax: Artype;
Var xo: Artype; Var Yopt: real; F: Funop);
end;
var opt6: MyClass;
var
F:FUNOP;
i, m, mf, im: integer;
h, hmin: real;
xmin, xmax: Artype;
xo, x: Artype;
Yopt:real;
function model (x:Artype): real;
implementation
uses main, unitGraph;
function model (x:Artype): real;
begin
model:={25*sqr (x[1]+3)+4*sqr (x[3]-4)+10*sqr (x[1]-x[2])+10;}
{10*sqr (x[1]-x[2])+4*sqr (x[1]-2)+25*sqr (x[3]+x[2])+8;}
16*sqr (x[1]+2)+4*sqr (x[2]-3)+5*sqr (x[3]-x[2])-8;
end;
procedure Myclass. slpoisk (n, m, mf:integer;
h, hmin: real; xmin, xmax: Artype;
Var xo: Artype; Var Yopt: real; F: Funop);
Label 9,10;
Var x, d, s:Artype; b, hr, y0, y, qsi: real; i, l, k:integer;
Procedure Outt (x:Artype; y: real; kod: integer);
Var i: integer;a, b, c:string;
begin
for i:=1 to n do
begin
str (x[i]: 8:3,a); str (y:9:3,b);
form1.ListBox3.Items.Add ('X'+inttostr (i)+
'='+a);
if (kod=1) then
with formgraph do
begin
imGraph.Canvas.Pen.Color:=clRed;
imgraph.Canvas.LineTo (round (mx* x[1]+ Sx),
round (-my* x[2]+ Sy));
imGraph13.Canvas.Pen.Color:=clBlue;
imgraph13.Canvas.LineTo (round (mx* x[1]+ Sx),
round (-my* x[3]+ Sy));
imGraph23.Canvas.Pen.Color:=clBlack;
imgraph23.Canvas.LineTo (round (mx* x[2]+ Sx),
round (-my* x[3]+ Sy));
end;
end;
case Kod of
0: c:='ΠΠ°ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΊΠ°';
1: c:='Π€ΡΠ½ΠΊΡΠΈΡ ΡΠ±ΡΠ²Π°Π΅Ρ';
2: c:='ΠΡΠΎΠ±Π½Π½Π°Ρ ΡΠΎΡΠΊΠ°';
end;
form1.ListBox3.Items.Add ('—————- '+c+' ———'+' F='+b);
end;
// main
begin
f:=model;
b:=-1e20;
for i:=1 to n do
begin
d[i]: =xmax[i]-xmin[i];
if d[i]>b then
b:=d[i];
end;
for i:=1 to n do
s[i]: =d[i]/b;
hr:=h; y0:=f (xo); im:=1;
with formGraph do
begin
imGraph.Canvas.Pen.Width:=2;
imGraph13.Canvas.Pen.Width:=2;
imGraph23.Canvas.Pen.Width:=2;
for i:=1 to n do
begin //ΠΠ΅ΡΠΎ Π² Π½Π°ΡΠ°Π»ΡΠ½ΡΡ ΡΠΎΡΠΊΡ
imGraph.Canvas.TextOut (round (mx* xo[1]+ Sx),
round (-my* xo[2]+ Sy), inttostr (im));
imGraph.Canvas.MoveTo (round (mx* xo[1]+ Sx),
round (-my* xo[2]+ Sy));
imGraph13.Canvas.TextOut (round (mx* xo[1]+ Sx),
round (-my* xo[3]+ Sy), inttostr (im));
imGraph13.Canvas.MoveTo (round (mx* xo[1]+ Sx),
round (-my* xo[3]+ Sy));
imGraph23.Canvas.TextOut (round (mx* xo[2]+ Sx),
round (-my* xo[3]+ Sy), inttostr (im));
imGraph23.Canvas.MoveTo (round (mx* xo[2]+ Sx),
round (-my* xo[3]+ Sy));
end;
end;
Outt (xo, y0,0);
randomize;
9: k:=0;
10: l:=0;
for i:=1 to n do
begin
qsi:=2*random-1;
x[i]: =xo[i]+hr*s[i]*qsi;
if x[i]>xmax[i] then
begin
x[i]: =xmax[i]; l:=l+1
end
else if x[i]
begin
x[i]: =xmin[i]; l:=l+1
end
end;
if l
begin
y:=f (x);
outt (x, y,2);
if y
im:=im+1;
if im>mf then
begin
showMessage ('Π§ΠΈΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ > '+IntTostr (mf)+#13+'ΠΠΈΠ½ΠΈΠΌΡΠΌ Π½Π΅ Π½Π΅ΠΉΠ΄Π΅Π½ !!!');
Yopt:=y0;
Exit
end;
if y
begin
y0:=y;xo:=x;
goto 9;
end
end;
k:=k+1;
if k
else
begin
hr:=hr/2;
if hr
begin
Yopt:=y0;
for i:=1to n do
form1.ListBox3.Items.Add ('X'+inttostr (i)+'ΠΎΠΏΡ'+'='+floattostrf (x[i], ffGeneral, 5,2)) ;
form1.ListBox3.Items.Add ('YΠΎΠΏΡ = '+floattostrf (Yopt, ffGeneral, 5,2));
form1.ListBox3.Items.Add ('Π§ΠΈΡΠ»ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ = '+InttoStr (im)) ;
Exit end
else goto 9;
end;
end;
end.