ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²

ΠžΡ‚Ρ‡Ρ‘Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния состоит Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ. Π’ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ являСтся Π΅Π³ΠΎ «Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСчСниСм», Ссли ΠΎΠ½Π° Π΄Π΅Π»ΠΈΡ‚ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ соотносится с Π½ΠΈΠΌ самим Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ. На ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ сущСствуСт Π΄Π²Π΅ Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΈΡ… Π± (1) ΠΈ Π± (2). ΠŸΡƒΡΡ‚ΡŒ a, b — лСвая ΠΈ ΠΏΡ€Π°Π²Π°Ρ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° соотвСтствСнно, Ρ‚ΠΎΠ³Π΄Π° ΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Π“ΠžΠ‘Π£Π”ΠΠ Π‘Π’Π’Π•ΠΠΠžΠ• ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠ’Π•Π›Π¬ΠΠžΠ• Π£Π§Π Π•Π–Π”Π•ΠΠ˜Π• Π’Π«Π‘Π¨Π•Π“Πž ΠŸΠ ΠžΠ€Π•Π‘Π‘Π˜ΠžΠΠΠ›Π¬ΠΠžΠ“Πž ΠžΠ‘Π ΠΠ—ΠžΠ’ΠΠΠ˜Π―

«ΠžΠ Π•ΠΠ‘Π£Π Π“Π‘ΠšΠ˜Π™ Π“ΠžΠ‘Π£Π”ΠΠ Π‘Π’Π’Π•ΠΠΠ«Π™ Π£ΠΠ˜Π’Π•Π Π‘Π˜Π’Π•Π’»

Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ экономики ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° матСматичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ΅ ΠžΠ’Π§Π•Π’ ΠΏΠΎ ΡƒΡ‡Π΅Π±Π½ΠΎΠΉ-Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Π½Π° Π±Π°Π·Π΅ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ матСматичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π² ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ΅ Π“ΠžΠ£ ΠžΠ“Π£ 80 116.65.9011.06 П Π ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΠΎΡ‚ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹:

профСссор, Π·Π°Π²Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ММиМЭ А. Π“. Π Π΅Π½Π½Π΅Ρ€ ассистСнт ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ММиМЭ Π . М. ШаяхмСтова ассистСнт ΠΊΠ°Ρ„Π΅Π΄Ρ€Ρ‹ ММиМЭ Π’. А. Π—Π΅Π»Π΅Π½ΠΈΠ½Π° Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΠΈ:

Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚ Π³Ρ€ΡƒΠΏΠΏΡ‹ 09 ММЭ Π”. А. Π•Π²Π΄ΠΎΠΊΠΈΠΌΠΎΠ² ΠžΡ€Π΅Π½Π±ΡƒΡ€Π³ 2011

1. Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ

2. БСзусловная минимизация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…

2.1 ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вдоль Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ направлСния

2.2 Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска

2.3 ΠœΠ΅Ρ‚ΠΎΠ΄ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²

2.4 Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

2.5 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π‘Сзусловная минимизация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ»

1. Π—Π°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π΅ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ минимального значСния Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ Π΅Ρ‘ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ².

2. БСзусловная минимизация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠœΠ΅Ρ‚ΠΎΠ΄ сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² являСтся быстросходящимся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ, Π½ΠΎ ΠΎΠ½ ΡΡ…одится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ‚ΠΎΡ‡Π΅ΠΊ, достаточно Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΊ Ρ‚ΠΎΡ‡ΠΊΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ слСдуСт Π½Π°ΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вдоль Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ направлСния). Π—Π°Ρ‚Π΅ΠΌ слСдуСт ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ вдоль Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ направлСния). ΠŸΡ€ΠΈ этом Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΡΠ°ΠΌΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±Ρ‹ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ коэффициСнты ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ останова).

2.1 ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вдоль Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ направлСния ЧислСнноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

ИмССм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ направлСния. ВрСбуСтся с Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΅ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Π΄Π°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π±.

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° удвоСния шага Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится Π±min. Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° удвоСния шага состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π± (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π½ΡƒΠ»Π΅Π²ΠΎΠ΅) ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ шага h. Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±i Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ Π±i=Π±i-1+2i-1*h. Π—Π°Ρ‚Π΅ΠΌ вычисляСм Ρ…i=Ρ…0+Π±ih. Π˜Ρ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ся условиС f (Ρ…i)>f (Ρ…i-1). ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ этого условия ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ Π±min=[Π±i-2; Π±i].

Π—Π°Ρ‚Π΅ΠΌ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΠΌ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° (ΠΈ, соотвСтствСнно, ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΡ‘Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π±Ρ‹ΡΡ‚росходящихся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². НапримСр, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

Π‘ΡƒΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния состоит Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠΈΠΌΡ‘Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΏΠΎΡ€Ρ†ΠΈΠΈ. Π’ΠΎΡ‡ΠΊΠ° Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ являСтся Π΅Π³ΠΎ «Π·ΠΎΠ»ΠΎΡ‚Ρ‹ΠΌ сСчСниСм», Ссли ΠΎΠ½Π° Π΄Π΅Π»ΠΈΡ‚ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ большая Ρ‡Π°ΡΡ‚ΡŒ соотносится с Π½ΠΈΠΌ самим Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ ΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Ρ‡Π°ΡΡ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ. На ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ сущСствуСт Π΄Π²Π΅ Ρ‚Π°ΠΊΠΈΡ… Ρ‚ΠΎΡ‡ΠΊΠΈ. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΈΡ… Π± (1) ΠΈ Π± (2). ΠŸΡƒΡΡ‚ΡŒ a, b — лСвая ΠΈ ΠΏΡ€Π°Π²Π°Ρ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° соотвСтствСнно, Ρ‚ΠΎΠ³Π΄Π° ΠΈΡ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹. Находя Ρ… (1)=Ρ…0+Π± (1)h ΠΈ Ρ… (2)=Ρ…0+Π± (2)h, сравниваСм f (Ρ… (1)) ΠΈ f (Ρ… (2)). Если f (Ρ… (1))>f (Ρ… (2)), Ρ‚ΠΎ. Если f (Ρ… (1))

2.2 Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска ИмССм ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:, Π³Π΄Π΅. КаТдоС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅. Если Π²Π΅ΠΊΡ‚ΠΎΡ€ hk Ρ€Π°Π²Π΅Π½ Π°Π½Ρ‚ΠΈΠ³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ Ρ…k, Π° Π±k Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ся ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΡ, Ρ‚ΠΎ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. К Π³Ρ€ΡƒΠΏΠΏΠ΅ Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² относятся Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ спуска, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ убывания выбираСтся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π½Ρ‚ΠΈΠ³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:-grad

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ критСрия останова ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ нСравСнство (ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ сильной сходимости) ΠΈΠ»ΠΈ Β¦gradΒ¦. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ критСрия останова ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ, Π»ΠΈΠ±ΠΎ .

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ вдоль Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ направлСния осущСствляСтся поиск ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° направлСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ Π°Π½Ρ‚ΠΈΠ³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Ρ‚. Π΅. ΠΈΠ· Ρ‚ΠΎΡ‡ΠΊΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π°Π½Ρ‚ΠΈΠ³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠ³Π½Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΡΡ‚ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

Π‘Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска зависит ΠΎΡ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ максимального ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ собствСнных чисСл Π² ΠΎΠΊΡ€Π΅ΡΡ‚ности Ρ‚ΠΎΡ‡ΠΊΠΈ экстрСмума. Π§Π΅ΠΌ большС это ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅, Ρ‚Π΅ΠΌ Ρ…ΡƒΠΆΠ΅ ΡΡ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ΠΈ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ процСсс продолТаСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ся Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ останова.

ГСомСтричСская ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 1.

Рисунок 1 — гСомСтричСская ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска

2.3 ΠœΠ΅Ρ‚ΠΎΠ΄ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠœΠ΅Ρ‚ΠΎΠ΄ сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² — ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для бСзусловной ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ достоинством ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π° ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ΅ число шагов. Однако, этот Ρ€Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ этого ΠΌΠ΅Ρ‚ΠΎΠ΄Π° зависит ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ приблиТСния. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² находят Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ приблиТСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ спуска.

Рассмотрим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

Π—Π΄Π΅ΡΡŒ — симмСтричная ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ опрСдСлённая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π°. Вакая Π·Π°Π΄Π°Ρ‡Π° ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ называСтся ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ. ИмССм ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ Ρ…i=Ρ…i-1+Π±di-1, Π³Π΄Π΅ Π± выбираСтся ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΡ, Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ d — ΠΏΠΎ ΠΏΡ€Π°Π²ΠΈΠ»Ρƒ, Π³Π΄Π΅. Для ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ сопряТённых Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² сходится Π·Π° n ΡˆΠ°Π³ΠΎΠ², Π³Π΄Π΅ n — число ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС (нСквадратичная функция) для Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅ΠΌ, Ссли ΠΈ, Ссли

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎΠ³ΠΎ критСрия останова ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ нСравСнство (ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ сильной сходимости) ΠΈΠ»ΠΈ Β¦gradΒ¦. Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ критСрия останова ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Π»ΠΈΠ±ΠΎ, Π»ΠΈΠ±ΠΎ .

Рисунок 2 — ГСомСтричСская ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ²

2.4 Π‘Π»ΠΎΠΊ-схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

2.5 Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ «Π‘Сзусловная минимизация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ»

Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ сопряТСнный Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ минимизация

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, XPMan;

type

TForm1 = class (TForm)

Button1: TButton;

Label1: TLabel;

Edit2: TEdit;

XPManifest1: TXPManifest;

Label2: TLabel;

Edit3: TEdit;

Button4: TButton;

Button5: TButton;

Label3: TLabel;

Edit4: TEdit;

edt1: TEdit;

lst1: TListBox;

lbl1: TLabel;

edt2: TEdit;

lst2: TListBox;

btn1: TButton;

btn2: TButton;

lbl2: TLabel;

lst3: TListBox;

btn3: TButton;

btn4: TButton;

edt3: TEdit;

Label4: TLabel;

procedure Button4Click (Sender: TObject);

procedure Button5Click (Sender: TObject);

procedure Button1Click (Sender: TObject);

procedure btn1Click (Sender: TObject);

procedure btn3Click (Sender: TObject);

procedure btn2Click (Sender: TObject);

procedure btn4Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

const nvar=5;

var x, x0, x00,xleft, d: array [0.(nvar-1)] of real;

eps, h, lam0: real;

n:integer;

macht, tipich: array [0.nvar-1] of real; //ΠšΠΎΡΡ„-Ρ‚Ρ‹ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Π΅ значСния Ρ… ΠΈ Ρ„-Ρ†ΠΈΠΈ

Form1: TForm1;

implementation

{$R *.dfm}

function myfunc (x: array of real):real;

begin

myfunc:=sqr (x[0])+2*x[0]+2*sqr (x[1])+4*x[1]+5;

end;

procedure FindAlpha (x0,d:array of Real; h, eps: real; n: integer; var lam0: real);

var lam: array [1.3] of real;

i:integer;

Procedure newlam;

begin

lam[1]: =lam[2];

lam[2]:=lam[3];

lam[3]:=lam[3]+h;

h:=2*h;

end;

Procedure newx;

var i: integer;

begin

newlam;

for i:=0 to (n-1) do

x[i]: =x0[i]+d[i]*lam[3];

end;

procedure FindInterval;

var i: Integer;

begin

if myfunc (x)>myfunc (x0) then begin

h:=-h;

newx;

end;

while myfunc (x)

for i:=0 to (n-1) do begin

xleft[i]: =x0[i];

x0[i]:=x[i];

end;

newx;

end;

end;

procedure MakeItAccurate;

var i: integer;

lam1,lam2:real; //Π—ΠΎΠ»ΠΎΡ‚ΠΎΠ΅ сСчСниС

x1,x2: array [0.(nvar-1)] of real;

chosen: byte; //1 — ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [a, lam2], 2 — ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [lam1, b], 1 — ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [lam1, lam2]

procedure choose (lam1,lam2:real); //Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ

var i: integer;

u, v: real; //Π§Ρ‚ΠΎΠ±Ρ‹ постоянно Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π½Π΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ

begin

for i:=0 to (n-1) do begin

x1[i]: =x0[i]+lam1*d[i];

x2[i]:=x0[i]+lam2*d[i];

end;

u:=myfunc (x1);

v:=myfunc (x2);

if u

if u>v then chosen:=2;

if u=v then chosen:=3;

end;

procedure zollam; //Π‘Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹Π΅ лямбда

begin

if chosen=1 then begin

lam[3]: =lam2;

lam2:=lam1;

lam1:=lam[3]-0.618*(lam[3]-lam[1]);

end;

if chosen=2 then begin

lam[1]: =lam1;

lam1:=lam2;

lam2:=lam[1]+0.618*(lam[3]-lam[1]);

end;

if chosen=3 then begin

lam[1]: =lam1;

lam[3]:=lam2;

lam1:=lam[3]-0.618*(lam[3]-lam[1]);

lam2:=lam[1]+0.618*(lam[3]-lam[1]);

end;

end;

function makestop: boolean;

var norm: real;

i:integer;

function relxnorm (x1,x2:array of real):real;

var relx: array [0.nvar-1] of real;

k:integer;

norme:real;

begin

for k:=0 to (n-1) do begin

relx[k]: =abs (x2[k]-x1[k]);

if abs (x2[k])>tipich[k] then relx[k]: =relx[k]/abs (x2[k])

else relx[k]: =relx[k]/tipich[k];

end;

norme:=0;

for k:=0 to (n-1) do

norme:=norme+sqr (relx[k]);

norme:=sqrt (norme);

relxnorm:=norme;

end;

begin

choose (lam1,lam2);

for i:=0 to (n-1) do begin

xleft[i]: =x0[i]+d[i]*lam[1];

x[i]:=x0[i]+d[i]*lam[3];

end;

if relxnorm (xleft, x)

else makestop:=false;

end;

begin

for i:=0 to (n-1) do x0[i]: =x00[i+1];

lam1:=lam[3]-0.618*(lam[3]-lam[1]);

lam2:=lam[1]+0.618*(lam[3]-lam[1]);

while not makestop do zollam;

end;

begin

lam[1]: =0;

lam[2]:=0;

lam[3]:=0;

newx;

FindInterval;

MakeItAccurate;

for i:=1 to n do

x[i]: =(xleft[i]+x[i])/2;

lam0:=(lam[3]+lam[1])/2;

end;

Procedure spusken (x0:array of real; eps, h: real; n: integer; var x1: array of real);

var xo, xn, agrad: array [0.(nvar-1)] of Real; //xold, xnew, antigrad.

alpha, gradnorm: Real;

j:integer;

procedure grads (x:array of Real; var agrad: array of Real);

var i: integer;

g:real;

gradtole: array [0.(nvar-1)] of Real;

begin

agrad[0]: =-(2*x[0]+2);

agrad[1]:=-(4*x[1]+4);

g:=myfunc (x);

if abs (g)>tipich[n] then g:=abs (g)

else g:=tipich[n];

for i:=0 to (n-1) do begin

gradtole[i]: =abs (-agrad[i]);

if abs (x[i])>tipich[i] then gradtole[i]: =gradtole[i]*abs (x[i])

else gradtole[i]: =gradtole[i]*tipich[i];

gradtole[i]:=gradtole[i]/g;

end;

gradnorm:=gradtole[0];

for i:=0 to (n-1) do

if gradnorm

end;

procedure xnew (alpha:real; x0: array of Real; var x: array of Real);

var i: integer;

begin

for i:=0 to (n-1) do

x[i]: =x0[i]+alpha*agrad[i];

end;

function stop (norm, eps: Real):Boolean;

begin

if norm

else stop:=false;

end;

begin

for j:=0 to (n-1) do xo[j]: =x0[j];

repeat

grads (xo, agrad);

FindAlpha (xo, agrad, h, eps, n, alpha);

xnew (alpha, xo, xn);

for j:=0 to (n-1) do xo[j]: =xn[j];

until stop (gradnorm, eps);

for j:=0 to (n-1) do x1[j]: =xn[j];

end;

procedure soprgrad (x0:array of Real; eps, h: real; n: Integer; var x: array of real);

var xold, xnew, nd, antigrad, predd: array [0.(nvar-1)] of real; //predd — ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ d, newd — Π½ΠΎΠ²ΠΎΠ΅ d

beta, teknorm, prednorm, alpha: Real; //Ρ‚Π΅ΠΊΡƒΡˆΠ°Ρ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π°Ρ Π½ΠΎΡ€ΠΌΡ‹

k, counter: integer;

procedure grads (x:array of Real; var agrad: array of Real; gradnorm: real);

var g: real;

i:integer;

gradtole: array [0.(nvar-1)] of Real;

begin

agrad[0]: =-(2*x[0]+2);

agrad[1]:=-(4*x[1]+4);

g:=myfunc (x);

if abs (g)>tipich[n] then g:=abs (g)

else g:=tipich[n];

for i:=0 to (n-1) do begin

gradtole[i]: =abs (-agrad[i]);

if abs (x[i])>tipich[i] then gradtole[i]: =gradtole[i]*abs (x[i])

else gradtole[i]: =gradtole[i]*tipich[i];

gradtole[i]:=gradtole[i]/g;

end;

gradnorm:=gradtole[0];

for i:=1 to (n-1) do

if gradnorm

end;

function newbeta (ti:Integer; norm, prednorm: real):Real; //ti — тСкущая итСрация

begin

if ((ti mod n)=0) then newbeta:=0

else newbeta:=Sqr (norm/prednorm);

end;

procedure newd (agrad, d: array of Real; beta: Real; var nd: array of real);

var i: integer;

begin

for i:=0 to (n-1) do

nd[i]: =agrad[i]+beta*d[i];

end;

function theend (norm, eps: real):boolean;

begin

if norm<(eps/1000) then theend:=true

else theend:=false;

end;

procedure findx (alpha:real; d, x0: array of Real; var x: array of Real);

var i: integer;

begin

for i:=0 to (n-1) do

x[i]: =x0[i]+alpha*d[i];

end;

begin

for k:=0 to (n-1) do xold[k]: =x0[k];

spusken (xold, eps, h, n, xnew);

grads (xnew, antigrad, prednorm);

for k:=0 to (n-1) do xold[k]: =xnew[k];

counter:=0;

repeat

beta:=newbeta (counter, teknorm, prednorm);

newd (antigrad, predd, beta, nd);

FindAlpha (xold, nd, h, eps, n, alpha);

findx (alpha, nd, xold, xnew);

for k:=0 to (n-1) do xold[k]: =xnew[k];

prednorm:=teknorm;

counter:=counter+1;

until theend (teknorm, eps);

for k:=0 to (n-1) do x[k]: =xnew[k];

end;

procedure TForm1. Button4Click (Sender: TObject);

var g: real;

begin

Lst1.AddItem (Edit3.Text, Edit3);

try

g:=StrToFloat (Edit3.Text);

except

ShowMessage ('Enter real number!');

Lst1.Items.Delete (Lst1.Items.Count-1);

end;

end;

procedure TForm1. Button5Click (Sender: TObject);

begin

Lst1.Items.Delete (Lst1.ItemIndex);

end;

procedure TForm1. Button1Click (Sender: TObject);

var i: integer;

g:real;

begin

try

eps:=StrToFloat (Edit4.Text);

h:=StrToFloat (Edt1.Text);

except

ShowMessage ('Enter real number!');

Edit4.Text:='';

edt1.Text:='';

end;

n:=Lst1.Items.Count;

for i:=0 to (n-1) do begin

x0[i]: =StrToFloat (Lst1.Items[i]);

macht[i]:=StrToFloat (Lst2.Items[i]);

tipich[i]:=StrToFloat (Lst3.Items[i]);

end;

g:=myfunc (tipich);

tipich[n]:=g;

soprgrad (x0,eps, h, n, x);

Edit2.Text:='';

for i:=0 to (n-1) do

Edit2.Text:=Edit2.Text+FloatToStr (x[i])+'; ';

end;

procedure TForm1. btn1Click (Sender: TObject);

var g: real;

begin

Lst2.AddItem (Edt2.Text, Edt2);

try

g:=StrToFloat (Edt2.Text);

except

ShowMessage ('Enter real number!');

Lst2.Items.Delete (Lst2.Items.Count-1);

end;

end;

procedure TForm1. btn3Click (Sender: TObject);

var g: real;

begin

Lst3.AddItem (Edt3.Text, Edit3);

try

g:=StrToFloat (Edt3.Text);

except

ShowMessage ('Enter real number!');

Lst3.Items.Delete (Lst1.Items.Count-1);

end;

end;

procedure TForm1. btn2Click (Sender: TObject);

begin

Lst2.Items.Delete (Lst2.ItemIndex);

end;

procedure TForm1. btn4Click (Sender: TObject);

begin

Lst3.Items.Delete (Lst3.ItemIndex);

end;

end.

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