ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ синтСза ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Ρ‹Π²ΠΎΠ΄: ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска строятся Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅. Π˜ΡΡ…ΠΎΠ΄Ρ ΠΈΠ· ΡΠ²ΠΎΠΉΡΡ‚Π², ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ строится такая стратСгия ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ поиска ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ Π₯*, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ любая ΠΏΠ°Ρ€Π° вычислСний 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.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ