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

ИсслСдованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ

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

Π‘Ρ€Π°Π²Π½ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’ Π”ΠŸ Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ шагС выбираСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π² Π΄Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ; всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ рассмотрСния. Π’ ΠœΠ’Π“ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ рассматриваСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, содСрТащий ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (ij) ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ (). Но, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π”ΠŸ, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ мноТСство (ij) ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ИсслСдованиС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ†

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ порядка

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ поиск

ΠŸΠ°ΡΡΠΈΠ²Π½Ρ‹ΠΉ поиск

ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния

ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠœΠ΅Ρ‚ΠΎΠ΄ Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ†

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ† рассмотрим Π·Π°Π΄Π°Ρ‡Ρƒ коммивояТСра.

ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ.

Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ N ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ извСстны. НСобходимо, Π½Π°Ρ‡Π°Π² двиТСния ΠΈΠ· ΠΏ. 1. ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈ всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠΎ ΡΠ°ΠΌΠΎΠΌΡƒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΠΏ. 1. УсловиС Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ: Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Π½Π°Π΄ΠΎ Π²ΠΎΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈΠ· Π½Π΅Π³ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ. На Ρ€ΠΈΡ. 1. ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π·Π°Π΄Π°Ρ‡ΠΈ для N = 5. На Ρ€Π΅Π±Ρ€Π°Ρ…, ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‰ΠΈΡ… Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π° (ΠΏΡƒΠ½ΠΊΡ‚Ρ‹), ΡƒΠΊΠ°Π·Π°Π½Ρ‹ расстояния.

Рис. 1.

УсловиС Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ Π²Ρ‹Π±ΠΎΡ€ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ шагС вычислСний ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠ· ΠΏΡƒΡ‚Π΅ΠΉ, приводящих Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ. РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ прямого ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… (N-1)! Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ лишь для ΠΌΠ°Π»Ρ‹Ρ… N, НСобходим ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ число рассматриваСмых Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ† (ΠœΠ’Π’).

ОсновноС содСрТаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ строятся Π½ΠΈΠΆΠ½ΠΈΠ΅ ΠΎΡ†Π΅Π½ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ†Π΅Π»ΠΈ (Π€Π¦), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΡ‚Π±Ρ€Π°ΠΊΠΎΠ²Π°Ρ‚ΡŒ мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ², для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π€Π¦ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Ρ…ΡƒΠΆΠ΅. По ΠΌΠ΅Ρ€Π΅ рассмотрСния Π½ΠΎΠ²Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π³Ρ€Π°Π½ΠΈΡ†Π° пСрСмСщаСтся Π²Π½ΠΈΠ· (Π² Π·Π°Π΄Π°Ρ‡Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° число Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π΅ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ся Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ сдСлан нСпосрСдствСнным сравнСниСм.

РСшСниС Π·Π°Π΄Π°Ρ‡ΠΈ.

Π—Π°ΠΏΠΈΡˆΠ΅ΠΌ исходныС Π΄Π°Π½Π½Ρ‹Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ C0 = (Cij). Π’ Π½Π΅ΠΉ i ΠΈ j — Π½ΠΎΠΌΠ΅Ρ€Π° ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ², Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈΠ· i Π² j, Π΄Π»ΠΈΠ½Π° этого шага ΠΏΡƒΡ‚ΠΈ Cij, крСстиками ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹. ΠŸΡƒΡΡ‚ΡŒ Π‘i = min Cij. НайдСм Π‘i Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i (Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ эти значСния ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹), послС Ρ‡Π΅Π³ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π‘0 ΠΊ C01 ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌ, Π³Π΄Π΅ Cij1 Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ Cij1 = Cij — Ci. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ d01 = Ci. ΠΈ Cj1 = min Cij. НайдСм Cj Π΄Π»Ρ всСх j ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ C01 ΠΏΠΎ ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ всС Π‘j = 0, поэтому C02 = C01, константа привСдСния ΠΏΠΎ ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌ d02 = 0, d0 = d01 + d02 = 23.

МоТно ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Ρ‡Π°ΠΌ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ C0 ΠΈ C01 соотвСтствуСт ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚. Π”Π»ΠΈΠ½Π° любого ΠΏΡƒΡ‚ΠΈ LS (C0) ΠΈ LS (C02) связаны Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΎΠΉ LS (C0) = LS (C02) + d0. Ρ‡Ρ‚ΠΎ слСдуСт ΠΈΠ· ΡƒΡΠ»ΠΎΠ²ΠΈΡ. Π’ΠΎΠ³Π΄Π° любой ΠΏΡƒΡ‚ΡŒ ΠΏΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ прСдставляСт Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΊΠ»Π΅Ρ‚ΠΊΠ°ΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ столбцС ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ±Ρ‹Π²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·.

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ d0 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ ΠΎΡ†Π΅Π½ΠΊΠ΅ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ.

Рассмотрим ΠΏΡƒΡ‚ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· i Π² j. Для Π½Π΅Π³ΠΎ LS ij = d0 + Cij. Π’Π°ΠΊΠΎΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ всСгда Π΅ΡΡ‚ΡŒ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² ΡΡ‚Ρ€ΠΎΠΊΠ΅ — Π½ΡƒΠ»Π΅Π²ΠΎΠΉ. Выбирая ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…, ΠΌΡ‹ Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ шага ΠΏΡƒΡ‚ΠΈ (самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг). ΠŸΡ€ΠΈ этом, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ это отразится Π½Π° Π΄Π»ΠΈΠ½Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΏΡƒΡ‚ΠΈ. ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ (ij) мноТСство ΠΏΡƒΡ‚Π΅ΠΉ, Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΡ… нСпосрСдствСнный ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· i Π² j. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΈΠ· i Π½Π°Π΄ΠΎ ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ Π²Ρ‹ΠΉΡ‚ΠΈ, Π° Π² j ΠΎΡ‚ΠΊΡƒΠ΄Π°-Ρ‚ΠΎ ΠΏΡ€ΠΈΠΉΡ‚ΠΈ, Ρ‚ΠΎ ΡΡ‚ΠΎΠΌΡƒ мноТСству соотвСтствуСт ΠΎΡ†Π΅Π½ΠΊΠ°:

LS (ij) = d0 + ij, Π³Π΄Π΅ ij =

Π’ΠΎΠ³Π΄Π° Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΎΠΉ для мноТСства ΠΏΡƒΡ‚Π΅ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ 2 = d0 + ij. ΠœΡ‹ Π·Π°ΠΈΠ½Ρ‚СрСсованы Π² Π²Ρ‹Π±ΠΎΡ€Π΅ Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ij, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ эта ΠΎΡ†Π΅Π½ΠΊΠ° являСтся самой высокой. Π­Ρ‚ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ, отыскав срСди Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… элСмСнтов i ΡΡ‚Ρ€ΠΎΠΊΠΈ Ρ‚Π°ΠΊΠΎΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт 2 = max ij. Π’Ρ‹Π±ΠΎΡ€ΠΎΠΌ ΠΏΠ°Ρ€Ρ‹ (ij) всС мноТСство Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ разбиваСтся Π½Π° Π΄Π²Π° подмноТСства. Одно ΠΈΠ· Π½ΠΈΡ… содСрТит ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (ij) (Π΅ΠΌΡƒ соотвСтствуСт ΠΎΡ†Π΅Π½ΠΊΠ° 1 = d0 + 1), Π΄Ρ€ΡƒΠ³ΠΎΠ΅ (ij) (Π΅ΠΌΡƒ соотвСтствуСт ΠΎΡ†Π΅Π½ΠΊΠ° 2 = d0 + 2).

Π’ Π½Π°ΡˆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ шагом ΠΏΡƒΡ‚ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΈΠ· ΠΏ. 1. Π‘ij= 0 для i, j = 1,2. ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ Ρ€Π°Π·Π±ΠΈΠ²Π°Π΅ΠΌ Π½Π° Π΄Π²Π°: содСрТащих ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (12) ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (12). Π‘Ρ‚Ρ€ΠΎΠΈΠΌ для Π½ΠΈΡ… Π½ΠΈΠΆΠ½ΠΈΠ΅ ΠΎΡ†Π΅Π½ΠΊΠΈ. 1 = d0 = 23. Для ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π°, Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰Π΅Π³ΠΎ (12), соотвСтствуСт ΠΏΡƒΡ‚ΡŒ, содСрТащий ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρ‹ (14) ΠΈ (32). На ΡΡ‚ΠΎΠΌ пСрвая итСрация Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса заканчиваСтся. ΠŸΡ€ΠΈ дальнСйшСм Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π·Π° ΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π΅Ρ€Π΅Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² (рис.2).

Рис. 2.

Рассмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ подмноТСство. Π’ Π½Π΅ΠΌ ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (12), поэтому Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π‘02 строку 1 ΠΈ ΡΡ‚ΠΎΠ»Π±Π΅Ρ† 2 удаляСм (Π²Ρ‹Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°Π΅ΠΌ) ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ рассмотрСния. Π‘02 прСобразуСтся Π² Π‘1, Π° ΠΏΠΎΡΠ»Π΅ привСдСния — Π² Π‘12. Π’ Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ Π»Π΅Π²ΠΎΠΌ ΡƒΠ³Π»Ρƒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π‘1 ставим крСстик, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (21) Π² Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π΅ΠΌΠΎΠΌ подмноТСствС (12) ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ Π½ΠΎΠ²ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ ΠΏΡ€ΠΎΠ΄Π΅Π»Ρ‹Π²Π°Π΅ΠΌ Ρ‚Π΅ ΠΆΠ΅ Π΄Π΅ΠΉΡΡ‚вия, Ρ‡Ρ‚ΠΎ ΠΈ Π½Π°Π΄ Π‘2. Для Π‘12 константа привСдСния 1 = 2. Π”Π°Π»Π΅Π΅ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… рассмотрим подмноТСства, содСрТащиС ΠΏΡƒΡ‚ΠΈ (23) ΠΈ (), ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΠΈΡ… ΠΎΡ†Π΅Π½ΠΊΡƒ:

(23) 23 = 1 = (d0 + d1) + с23 = 23 + 2 + 0 = 25.

() = 2 = (d0 + d1) + 23 = 25 + 5 = 30,

Π³Π΄Π΅ 23 = = C24 + C 43 = 3+2 = 5.

ПослС вычСркивания ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ C12 строки i = 2 ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Π° j = 3 получаСтся ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π‘2 Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 3×3. ΠžΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² пСрСмСщСния Π½Π° ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π΅ (34) ΠΈ () Π΄Π°Π΅Ρ‚ ΠΎΡ†Π΅Π½ΠΊΠΈ 34 = 26 ΠΈ =27.

ПослС ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ³ΠΎ сокращСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ‚Π°Π±Π»ΠΈΡ†Π° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ 2×2 ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСт ΠΏΡƒΡ‚ΡŒ: Π½Π°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° 4, конСчная — 1, ΠΏΡƒΡ‚ΡŒ (451). Он ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 6. По Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΏΡƒΡ‚ΡŒ Π΄ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Π”Π»ΠΈΠ½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ (123 451) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 32. Аналогично мноТСство () содСрТит СдинствСнный ΠΏΡƒΡ‚ΡŒ (3541) Π΄Π»ΠΈΠ½ΠΎΠΉ 2. ΠŸΡƒΡ‚ΡŒ (123 541) ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π»ΠΈΠ½Ρƒ 27, Π΅Π³ΠΎ Π΄Π»ΠΈΠ½Π° мСньшС, Ρ‡Π΅ΠΌ Ρƒ ΠΏΡƒΡ‚ΠΈ, содСрТащСго ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (34). Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½ΠΈΠΆΠ½Π΅ΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ слСдуСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ 27. Π›ΡŽΠ±ΠΎΠ΅ мноТСство, ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π΅ ΠΎΡ†Π΅Π½ΠΊΡƒ большС 27, слСдуСт ΠΎΡ‚Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ. Если ΠΆΠ΅ ΠΎΡ†Π΅Π½ΠΊΠ° мСньшС 27, Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡƒΡ‚ΡŒ ΠΏΠΎΠ΄Π»Π΅ΠΆΠΈΡ‚ исслСдованию. Если, пройдя ΠΏΠΎ Π½ΠΎΠ²ΠΎΠΌΡƒ ΠΏΡƒΡ‚ΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ мСньшС 27, Ρ‚ΠΎ ΡΡ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ слСдуСт Π²Π·ΡΡ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π½ΠΎΠ²ΠΎΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ. Π˜Ρ‚Π°ΠΊ, ΠΌΡ‹ ΠΏΡ€ΠΎΡˆΠ»ΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π΄ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ Π΄Π»ΠΈΠ½Ρƒ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΡ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΡ†Π΅Π½ΠΊΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ².

ВозвращаСмся Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ Π²Π²Π΅Ρ€Ρ… Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠ΅Π³ΠΎ ΡƒΠ·Π»Π° (12). НС Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½Π°Ρ Π²Π΅Ρ‚Π²ΡŒ Π΄Π΅Ρ€Π΅Π²Π° () ΠΈΠΌΠ΅Π΅Ρ‚ ниТнюю ΠΎΡ†Π΅Π½ΠΊΡƒ 30, Ρ‡Ρ‚ΠΎ Ρ…ΡƒΠΆΠ΅ достигнутого Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π—Π½Π°Ρ‡ΠΈΡ‚, эту Π²Π΅Ρ‚Π²ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π»Π΅Π΅ Π½Π΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ Π²Π΅Ρ‚Π²ΠΈ (). ΠžΡ†Π΅Π½ΠΊΠ° для этой Π²Π΅Ρ‚Π²ΠΈ Π½ΠΈΠΆΠ΅ 27, поэтому Π΄Π°Π½Π½ΠΎΠ΅ мноТСство слСдуСт Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ исслСдования ΠΏΡ€ΠΈΠ΄Π΅ΠΌ ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ (123 541).

Π‘Ρ€Π°Π²Π½ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π’ Π”ΠŸ Π½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ шагС выбираСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, Π²Π΅Π΄ΡƒΡ‰ΠΈΠΉ Π² Π΄Π°Π½Π½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ; всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ рассмотрСния. Π’ ΠœΠ’Π“ ΠΏΡ€ΠΈ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ рассматриваСтся самый ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ, содСрТащий ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ (ij) ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ (). Но, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ ΠΎΡ‚ Π”ΠŸ, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ мноТСство (ij) ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΈΠ· Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π³ΠΎ рассмотрСния. Π’ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ разбиСния, двигаясь ΠΎΡ‚ ΠΊΠΎΡ€Π½Ρ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡƒΠ·Π»ΠΎΠ² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° мноТСства Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΉ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π΅ ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΊ ΠΊΠΎΡ€Π½ΡŽ Π΄Π΅Ρ€Π΅Π²Π°. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠœΠ’Π“ вСсьма экономичСн с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ памяти. Если Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ† ΠΏΡ€Π΅Ρ€Π²Π°Ρ‚ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ ΠΈΡΡ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ), Ρ‚ΠΎ Ρ…отя ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнуто, Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ получаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ шагС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСсса (ΠΎΠ½ΠΎ ΠΆΠ΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅).

Из ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ слСдуСт ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠœΠ’Π“ — вСсьма эффСктивный ΠΌΠ΅Ρ‚ΠΎΠ΄, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ с Π°Π΄Π΄ΠΈΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

var

Way:TVector;

LengthOfWay:real;

HightLimitWasSeted:boolean;

function Addiction (var Matrix: Tarray;SizeOfMatrix:integer):real;

var

MinInRow, MinInCol: real;

i, j: integer;

d1,d2,d:real;

function MinElInRow (NumRow:integer):real;

var

i:integer;

min:real;

index:integer;

begin

index:=0;min:=1e38;

for i:=1 to SizeOfMatrix do

if (Matrix[NumRow, i]

min:=Matrix[NumRow, i]; index:=i

end;

if index=0 then raise Error;

MinElInRow:=min

end;

function MinElInCol (NumCol:integer):real;

var

i:integer;

min:real;

index:integer;

begin

index:=0;min:=1e38;

for i:=1 to SizeOfMatrix do

if (Matrix[i, NumCol]

min:=Matrix[i, NumCol]; index:=i

end;

if index=0 then raise Error;

MinElInCol:=min

end;

begin

d1:=0;

for i:=1 to SizeOfMatrix do

begin

MinInRow:=MinElInRow (i);

d1:=d1+MinInRow;

for j:=1 to SizeOfMatrix do

Matrix[i, j]: =Matrix[i, j]-MinInRow;

end;

d2:=0;

for i:=1 to SizeOfMatrix do

begin

MinInCol:=MinElInCol (i);

d2:=d2+MinInCol;

for j:=1 to SizeOfMatrix do

Matrix[j, i]: =Matrix[j, i]-MinInCol;

end;

d:=d1+d2;

Addiction:=d

end;

procedure FindBestWay (var matrix: TArray;SizeOfMatrix:integer;basis:integer;LowLimit:real);

var

LessMatrix:Tarray;

LowLimit1,LowLimit2:real;

i:integer;

d:real;

NextPoint:integer;

SpareDistance:real;

Row, Column: integer;

min1,min2,min:extended;

procedure Print;

var

i, j: integer;

number:integer;

s:string;

begin

for i:=1 to SizeOfMatrix do

begin

for j:=1 to SizeOfMatrix do

begin

if Matrix[i, j]>Maxint then s:=' X '

else Str (Round (Matrix[i, j]):3,s);

Text:=Text+s+' '

end;

Text:=Text+#13+#10

end;

Text:=Text+#13+#10

end;

procedure FindNextPoint (var BestPointAfterBasis: integer;var SpareDistance: real);

var

min1,min2:real;

i:integer;

RowOfBasis, BestColumn: integer;

begin

for i:=1 to SizeOfMatrix do

if Round (Matrix[i, 0])=basis then

begin

RowOfBasis:=i;

break

end;

for i:=1 to SizeOfMatrix do

if Matrix[RowOfBasis, i]=0 then

begin

BestColumn:=i;

BestPointAfterBasis:=Round (Matrix[0,i]);

break

end;

min1:=1e38;

for i:=1 to SizeOfMatrix do

if (i<>BestColumn) and (Matrix[RowOfBasis, i]

min1:=Matrix[RowOfBasis, i];

min2:=1e38;

for i:=1 to SizeOfMatrix do

if (i<>RowOfBasis) and (Matrix[i, BestColumn]

min2:=Matrix[i, BestColumn];

SpareDistance:=min1+min2;

end;

procedure FormLessMatrix (From, T0: integer);

var

i, j: integer;

ii, jj: integer;

RowOfFrom, ColumnOfTo, Row: integer;

begin

for i:=1 to SizeOfMatrix do

if Round (Matrix[i, 0])=From then

begin

RowOfFrom:=i;

break

end;

for i:=1 to SizeOfMatrix do

if Round (Matrix[0,i])=T0 then

begin

ColumnOfTo:=i;

break

end;

for i:=0 to SizeOfMatrix-1 do

for j:=0 to SizeOfMatrix-1 do

begin

if i>=RowOfFrom then ii:=i+1

else ii:=i;

if j>=ColumnOfTo then jj:=j+1

else jj:=j;

LessMatrix[i, j]: =Matrix[ii, jj]

end;

for i:=1 to SizeOfMatrix-1 do

if Round (LessMatrix[i, 0])=T0 then

begin

Row:=i;

break

end;

if Row<=SizeOfMatrix-1 then LessMatrix[Row, 1]: =1e38

end;

begin

Print;

if SizeOfMatrix=2 then

begin

min1:=Matrix[1,2]+Matrix[2,1];

min2:=Matrix[1,1]+Matrix[2,2];

if min1

else min:=min2;

LengthOfWay:=LowLimit+min;

if LengthOfBestway>LengthOfWay then

begin

inc (Way.CountOfPoints);

Way.Points[Way.CountOfPoints]: =Round (Matrix[0,2]);

LengthOfBestWay:=LengthOfWay;

BestWay:=Way;

dec (Way.CountOfPoints);

end;

if not (HightLimitWasSeted) then

begin

HightLimitWasSeted:=true;

HightLimit:=LengthOfWay

end;

end

else if SizeOfMatrix>2 then

begin

inc (Way.CountOfPoints);

repeat

FindNextPoint (NextPoint, SpareDistance);

Way.Points[Way.CountOfPoints]: =NextPoint;

FormLessMatrix (Basis, NextPoint);

d:=Addiction (LessMatrix, SizeOfMatrix-1);

LowLimit1:=d+LowLimit;

LowLimit2:=LowLimit+SpareDistance;

FindBestway (LessMatrix, SizeOfMatrix-1,NextPoint, LowLimit1);

if LengthOfBestWay>=LowLimit2 then

begin

for i:=1 to SizeOfMatrix do

if Round (Matrix[i, 0])=Basis then

begin

Row:=i;

break

end;

for i:=1 to SizeOfMatrix do

if Round (Matrix[0,i])=NextPoint then

begin

Column:=i;

break

end;

Matrix[Row, Column]: =1e38;

Addiction (Matrix, SizeOfMatrix);

LowLimit:=LowLimit2

end

until LengthOfBestWay<=LowLimit2;

dec (Way.CountOfPoints);

end

else raise Error

end;

begin

LengthOfBestWay:=1e38;

Way.CountOfPoints:=1;

Way.Points[1]: =1;

Text:='';

d0:=Addiction (MatrixOfLinking, n);

HightLimitWasSeted:=false;

FindBestWay (MatrixOfLinking, n,1,d0)

end;

end.

ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ порядка

Π’ ΡΡ‚ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Xk+1=Xk-hkf (Xk). ΠžΡ‡Π΅Ρ€Π΅Π΄Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° выбираСтся Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ убывания Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π¨Π°Π³ hk Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ достаточно ΠΌΠ°Π»Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎΠ± Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ f (Xk+1)< f (Xk)(рис 3).

Рис. 3 Рис.4

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага Π΄ΠΎΠ»ΠΆΠ½Π° ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ приблиТСния ΠΊ X0. Ρ‚ΠΎΠ³Π΄Π° Ρƒ Π½Π°Ρ происходит Π΄Ρ€ΠΎΠ±Π»Π΅Π½ΠΈΠ΅ шага. Π¨Π°Π³ hk Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ± Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΎΡΡŒ нСравСнство

f (Xk+1) — f (Xk)? — Π΅ hk// f (Xk)//2

Π³Π΄Π΅ 0 < Π΅ < 1 — ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ выбранная константа.

На ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΌ шагС процСсса провСряСтся нСравСнство. Если ΠΎΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ — шаг сохраняСтся, Ссли Π½Π΅Ρ‚ — шаг ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡŒ нСравСнство. ГСомСтричСская интСрпрСтация прСдставлСна Π½Π° Ρ€ΠΈΡ. 4. траСктория двиТСния аппроксимируСт Π»ΠΎΠΌΠ°Π½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½ΡƒΡŽ ΠΊΡ€ΠΈΠ²ΡƒΡŽ, ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ X0 ΠΈ X0. Если Π²Ρ‹Π±Ρ€Π°Π½Π° постоянная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° шага, Ρ‚ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‡Π΅Π½ΡŒ большим.

Π Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒΡŽ являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠΎΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½ΠΎΠ³ΠΎ спуска (рис.5). Π”Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΊ X0 осущСствляСтся ΠΏΠΎ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°ΠΌ прямых, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π½Ρ‹ΠΌ осям.

Π“Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ просты Π² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎΡΡ‚ΠΎΠΌΡƒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Но ΠΏΡ€ΠΈ слоТной структурС f (Xk) ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠ»ΠΎΡ…ΠΎ сходится. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Ρ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ f (Xk).

Рис.5

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ порядка

Рис.6

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ порядка ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΡŒΡŽΡ‚ΠΎΠ½Π°. На Ρ€ΠΈΡ. 6 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° гСомСтричСская интСрпрСтация отыскания корня уравнСния (X)=0 ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. Π Π°Π·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (X) Π² ΠΎΠΊΡ€Π΅ΡΡ‚ности Xk Π΄Π°Π΅Ρ‚

(X) = (Xk) + (Xk)(X — Xk) + 0(| X — Xk |)

ΠžΡ‚Π±Ρ€Π°ΡΡ‹Π²Π°Ρ ΠΌΠ°Π»Ρ‹Π΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка ΠΈ ΠΏΠΎΠ»ΠΎΠ³Π°Ρ, Ρ‡Ρ‚ΠΎ (X)=0,ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ

X = Xk+1 = Xk — (Xk) / (Xk).

ΠŸΡƒΡΡ‚ΡŒ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ (X) — функция n-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π Π°Π·Π»ΠΎΠΆΠΈΠΌ Π΅Π΅ Π² Ρ€ΡΠ΄ Π’Π΅ΠΉΠ»ΠΎΡ€Π°, отбросив ΠΌΠ°Π»Ρ‹Π΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ порядка

(Xk) + (Xk)(X — Xk)., ΠΎΡ‚ΠΊΡƒΠ΄Π° Xk+1 = Xk — (Xk) / (Xk).

Π’Π΅ΠΏΠ΅Ρ€ΡŒ считаСм (X)Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠΌ f (X), Ρ‚. Π΅. = f. ΠŸΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Ρ f=0, Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ стационарныС Ρ‚ΠΎΡ‡ΠΊΠΈ f (X). Π€ΠΎΡ€ΠΌΡƒΠ»Π° для вычислСния ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ этих Ρ‚ΠΎΡ‡Π΅ΠΊ прСобразуСтся ΠΊ Π²ΠΈΠ΄Ρƒ:

Xk+1 = Xk — f (Xk) / f (Xk).

НСдостатки ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΡŒΡŽΡ‚ΠΎΠ½Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ f, ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°, ΠΈΠ½Π°Ρ‡Π΅ процСсс ΠΌΠΎΠΆΠ΅Ρ‚ расходится.

ΠœΠ΅Ρ‚ΠΎΠ΄ вСсьма эффСктивСн, Π½ΠΎ Π΅Π³ΠΎ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΊ X0 подошли достаточно Π±Π»ΠΈΠ·ΠΊΠΎ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π² Ρ€Π°ΠΉΠΎΠ½Π΅ X0 функция сильно Π²Ρ‹ΠΏΡƒΠΊΠ»Π°.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ 1Π³ΠΎ ΠΈ 2Π³ΠΎ порядков

function f (x:real):real;

begin

// result:=sin (x);

result:=(x-3)*(x-3)*(x-3)*(x-3);

end;

function df (x:real):real;

begin

// result:=cos (x);

result:=4*(x-3)*(x-3)*(x-3);

end;

function ddf (x:real):real;

begin

//result:=-sin (x);

result:=12*(x-3)*(x-3);

end;

procedure TForm1. Button1Click (Sender: TObject);

var e, h, xk, xk1, d:real;

i:integer;

begin

e:=StrToFloat (Edit3.Text);

xk1:=StrToFloat (Edit1.Text);

h:=StrToFloat (Edit4.Text);

Memo1.Clear;

Memo1.Text:='Поиск с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ f''(x)'#13#10#13#10;

i:=0;

repeat

xk:=xk1;

repeat

xk1:=xk-h*df (xk);

if df (xk)*df (xk1)>0 then h:=h*2;

if f (xk)

until (df (xk)*df (xk1)<=0) and (abs (f (xk))>=abs (f (xk1)));

Memo1.Lines.Add (Format ('X (%d)= %4.4f f (%1:4.4f) = %2:4.4f f''(%1:4.4f)=%3:4.4f h=%4:4.4f',[i, xk, f (xk), df (xk), h]));

Inc (i);

until (abs (xk1-xk)

Memo1.Lines.Add (Format (#13#10'НайдСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ f (%4.4f)=%4.4f с ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ e=%4.4f',[xk, f (xk), e]));

end;

procedure TForm1. Button2Click (Sender: TObject);

var e, h, xk, xk1, d:real;

i:integer;

begin

e:=StrToFloat (Edit3.Text);

xk1:=StrToFloat (Edit1.Text);

h:=StrToFloat (Edit4.Text);

Memo1.Clear;

Memo1.Text:='Поиск с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ f''(x)'#13#10#13#10;

i:=0;

repeat

xk:=xk1;

repeat

xk1:=xk-h*df (xk)/ddf (xk);

if df (xk)*df (xk1)>0 then h:=h*2;

if f (xk)

until (df (xk)*df (xk1)<=0) and (f (xk)>=f (xk1));

Memo1.Lines.Add (Format ('X (%d)= %4.4f f (%1:4.4f) = %2:4.4f f''(%1:4.4f)=%3:4.4f h=%4:4.4f',[i, xk, f (xk), df (xk), h]));

Inc (i);

until (abs (xk1-xk)

Memo1.Lines.Add (Format (#13#10'НайдСно Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ f (%4.4f)=%4.4f с ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒΡŽ e=%4.4f',[xk, f (xk), e]));

end;

end.

ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ поиск

функция ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡Π°

Рассмотрим класс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ y = f (X) ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

1. f (X) Π·Π°Π΄Π°Π½Π° Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ [a, b]. 2. ΠΏΡƒΡΡ‚ΡŒ X1 ΠΈ X2 Π΅ [a, b], ΠΏΡ€ΠΈΡ‡Π΅ΠΌ X1 < X2 ΠΏΡƒΡΡ‚ΡŒ X0 — Ρ‚ΠΎΡ‡ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ f (X) достигаСт ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° (максимума); Ρ‚ΠΎΠ³Π΄Π° ΠΈΠ· X1 > X0 слСдуСт f (X2) > f (X1), Π° ΠΈΠ· X2 < X0 слСдуСт f (X1) > f (X2).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½Π° Ρ€ΠΈΡ. 7. Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠ½ΠΈΠΌΠΎΠ΄Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ участков f (X) с ΠΏΠΎΡΡ‚оянным Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ

рис. 7

ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ f (X) ΠΌΠΎΠΆΠ΅Ρ‚ находится Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ [a, b] ΠΈΠ»ΠΈ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π΅. ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ X0 Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ, X0 Π΅ [a, b]. [a, b] ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠΌ нСопрСдСлСнности.

Π’Ρ‹Π±ΠΎΡ€ Xi ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠ΅ F (Xi) называСтся экспСримСнтом. Π’ΠΎ Π²ΡΠ΅Ρ… случаях послС выполнСния Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… экспСримСнтов ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ нСопрСдСлСнности становится ΡƒΠΆΠ΅. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅ экспСримСнтов ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π½ΡƒΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° нСопрСдСлСнности мСньшСй, Ρ‡Π΅ΠΌ любоС Π½Π°ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ Π΅ > 0. ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° Xi Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ся стратСгиСй. ΠžΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ называСтся стратСгия, которая ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ X0 (с Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ Π΄ΠΎ Π΅) Π·Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ число шагов (экспСримСнтов).

ΠžΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Π΄Π»ΠΈΠ½Ρƒ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° нСопрСдСлСнности Ln (X1, X2,.. ., Xn), Π³Π΄Π΅ n — число экспСримСнтов;

f (Xk) = min f (Xi), 1? i? n,

Π³Π΄Π΅ K — Π½ΠΎΠΌΠ΅Ρ€ экспСримСнта, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ соотвСтствуСт минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ f (Xi). Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

X2 — X1, k=1;

Ln (X1, X2,.. ., Xn, ΠΊ) = Xk+1 — Xk-1, 1? k? n;

Xn — Xn-1, k=n.

Π’.ΠΎ., Ln Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΊΠ°ΠΊ ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° способа разбиСния [a, b], Ρ‚Π°ΠΊ ΠΈ ΠΎΡ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ f (X).

ΠŸΠ°ΡΡΠΈΠ²Π½Ρ‹ΠΉ поиск

Π’ ΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠΌ поискС всС экспСримСнты проводятся ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π‘Π΅Π· ограничСния общности ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ X1 = a = 0; Xn = b = 1;

Рассмотрим n = 4; 0 < X2 < X3 < 1

Π’ΠΎΠ³Π΄Π° Ln = max { X2 — 0, X3 — 0, 1 — X2, 1 — X3}= max { X3, 1 — X2}

1? k? 4

Ln = min max { X3, 1 — X2}

0 < X2 < X3 < 1 k= 2,3

Π’Π°ΠΊ ΠΊΠ°ΠΊ X2 < X3, Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ стратСгиСй Π±ΡƒΠ΄Π΅Ρ‚ X2 = Π… - Π” /2, X3 = Π… + Π” /2, Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ln = Π… + Π” /2 (рис. 8,Π°).

Под Π” > 0 ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ минимальноС число, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ 2 экспСримСнта X2 ΠΈ X3 Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ.

ΠŸΡ€ΠΈ рассмотрСнии n = 5 ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ (рис 8, Π±), Ρ‡Ρ‚ΠΎ Ln ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΎΡΡŒ Π½Π° Π” /2, Ρ‡Ρ‚ΠΎ заставляСт ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎΠ³ΠΎ числа экспСримСнтов.

ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ Ρ‡Π΅Ρ‚Π½ΠΎΠΌ n Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ°Ρ стратСгия составляСтся ΠΏΠ°Ρ€Π°ΠΌΠΈ Π” — экспСримСнтов (Xi Ρ€Π°Π·Π½Π΅ΡΠ΅Π½Ρ‹ Π½Π° Ρ€Π°ΡΡΡ‚ояниС Π”).

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС Ln? 2/n + Π” /2.

рис.8

ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠΈ

БущСствуСт довольно очСвидная Ρ‚Π΅ΠΎΡ€Π΅ΠΌΠ°: «Π•ΡΠ»ΠΈ нСпрСрывная функция Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈΠΌΠ΅Π΅Ρ‚ значСния Ρ€Π°Π·Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ², Ρ‚ΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ этого ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Ρƒ Π½Π΅Π΅ Π΅ΡΡ‚ΡŒ ΠΊΠΎΡ€Π΅Π½ΡŒ (ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ, ΠΎΠ΄ΠΈΠ½, Π½ΠΎ ΠΌ.Π±. ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ)». Π’ΠΎΡ‚ Π½Π° Π±Π°Π·Π΅ этой Ρ‚Π΅ΠΎΡ€Π΅ΠΌΡ‹ ΠΈ ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΎ числСнноС Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ значСния корня Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½ΠΎ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся «Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠ΅ΠΉ», Ρ‚. Π΅. «Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° Π½Π° Π΄Π²Π΅ части». ΠžΠ±ΠΎΠ±Ρ‰Π΅Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ выглядит Ρ‚Π°ΠΊ:

Π·Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» [a;b];

ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ†Π°Ρ… функция ΠΈΠΌΠ΅Π΅Ρ‚ Ρ€Π°Π·Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ

< 0.;

ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠ΅

x0 = .

ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Ρ‚ΠΎΡ‡ΠΊΡƒ X;

ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π·Π½Π°ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² Ρ‚ΠΎΡ‡ΠΊΠ΅ X ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· ΠΊΠΎΠ½Ρ†ΠΎΠ²;

Ссли совпадаСт, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° Π² Ρ‚ΠΎΡ‡ΠΊΡƒ X,

ΠΈΠ½Π°Ρ‡Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ Π² Ρ‚ΠΎΡ‡ΠΊΡƒ X Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Π΅Ρ† ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π°;

ПослС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ, содСрТащий ΠΊΠΎΡ€Π΅Π½ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π²Π΄Π²ΠΎΠ΅;

ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ достигнута нуТная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ.

" НуТная Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ" опрСдСляСтся условиями Π·Π°Π΄Π°Ρ‡ΠΈ. Иногда трСбуСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΎ мСньшС Π½Π΅ΠΊΠΎΠΉ Π½Π°ΠΏΠ΅Ρ€Π΅Π΄ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π½ΠΎ ΡΡ‚ΠΎ Ρ€Π΅Π΄ΠΊΠΎ — Ρ‡Π°Ρ‰Π΅ всСго трСбуСтся ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ корня с ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΎΡ‚ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΠ³ΠΎ Π² Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…. Π›ΡƒΡ‡ΡˆΠ΅ всСго, Ссли ΠΌΠΎΠΆΠ½ΠΎ с ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ находится ΠΊΠΎΡ€Π΅Π½ΡŒ.

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния

ΠœΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния позволяСт ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹, вычисляя Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π΄Π²ΡƒΡ… рассмотрСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ опрСдСляСтся ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ. Π­Ρ‚ΠΎΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅ΠΌΡƒΡŽ симмСтрично Π΅ΠΉ. Π’ΠΎΡ‡ΠΊΠ° Π΄Π΅Π»ΠΈΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» Π½Π° Π΄Π²Π΅ части Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ ΠΊ Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΉ части Ρ€Π°Π²Π½ΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ большСй части ΠΊ ΠΌΠ΅Π½ΡŒΡˆΠ΅ΠΉ, Ρ‚. Π΅. Ρ€Π°Π²Π½ΠΎ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ «Π·ΠΎΠ»ΠΎΡ‚ΠΎΠΌΡƒ ΡΠ΅Ρ‡Π΅Π½ΠΈΡŽ».

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ

Lj-1 = Lj + Lj+1.

Π‘ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ постоянными ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π΄Π»ΠΈΠ½ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ²

Lj-1 / Lj = Lj / Lj+1 = Ρ„.

Π­Ρ‚ΠΎ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ СдинствСнный ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΡ€Π΅Π½ΡŒ Ρ„ = (1+51/2) / 2= 1.618 (рис.9). ΠΏΠ΅Ρ€Π²Ρ‹Π΅ 2 экспСримСнта Рис.9

находятся Π½Π° Ρ€Π°ΡΡΡ‚оянии 0.618 ΠΎΡ‚ ΠΊΠΎΠ½Ρ†ΠΎΠ² ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°. По Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ экспСримСнтов сохраняСтся 1 ΠΈΠ· ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², ΠΈ Π²ΡΠ΅ повторяСтся. ПослС n ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΎΠ²

Ln = 1/ Ρ„n-1.

Поиск с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния являСтся асимптотичСски Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивным способом Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ минимаксной стратСгии поиска, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ наимСньшСго числа ΠΎΡ†Π΅Π½ΠΊΠΈ значСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для достиТСния Π·Π°Π΄Π°Π½Π½ΠΎΠΉ точности ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ².

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ пассивного поиска, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ Π΄ΠΈΡ…ΠΎΡ‚ΠΎΠΌΠΈΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρƒ «Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния», ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ поиску

function TMyForm. F (x:real):real;

begin

Result:=(2*x-2)*(2*x-2)+2

end;

function TMyForm. PasPoisk (XMax, XMin, Eps, D: Real):string;

var

N: word;

i: word;

Index: word;

temp: real;

x: array[word] of real;

begin

n:=trunc ((2*(XMax-XMin))/Epsilon);

if (frac ((2*(XMax-XMin))/Epsilon)<>0) then inc (N);

if odd (N) then inc (N);

x[1]: =XMin;

x[N]:=XMax;

temp:=XMin;

for i:=1 to (N div 2 — 1) do

begin

temp:=temp+(XMax-XMin)/(N/2);

x[2*i]: =temp-D;

x[2*i+1]:=temp+D

end;

Index:=1;

for i:=2 to N do

if (f (x[Index])>f (x[i])) then Index:=i;

for i:=1 to N do chGraph. Series[0]. AddXY (x[i], f (x[i]),'', clBlue);

chGraph.Series[1].AddXY (x[Index], f (x[Index]),'', clRed);

Result:=FloatToStr (x[Index])+'; ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ = '+IntToStr (N)+'.'

end;

function TMyForm. Dihotomy (XMax, XMin, Eps, D: Real):string;

var

N: word;

x: array [1.4] of real;

begin

x[1]: =XMin;

x[4]:=XMax;

N:=2;

chGraph.Series[0].AddXY (x[1], f (x[1]),'', clAqua);

chGraph.Series[0].AddXY (x[4], f (x[4]),'', clAqua);

while ((abs (x[4]-x[1])/2)>Eps) do

begin

x[2]: =((x[4]-x[1])/2)-D;

x[3]:=((x[4]-x[1])/2)+D;

inc (N, 2);

chGraph.Series[0].AddXY (x[2], f (x[2]),'', clAqua);

chGraph.Series[0].AddXY (x[2], f (x[3]),'', clAqua);

if (f (x[3])>f (x[2])) then x[4]: =x[3]

else x[1]: =x[2]

end;

chGraph.Series[1].AddXY ((x[1]+x[4])/2,f ((x[1]+x[4])/2),'', clRed);

Result:=FloatToStr ((x[1]+x[4])/2)+'; ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ = '+IntToStr (N)

end;

function TMyForm. GoldSection (XMax, XMin, Eps, D: Real):string;

const Tau=0.618;

var

i: byte;

N: word;

x: array[1.4] of Real;

y: array[1.4] of Real;

begin

x[1]: =XMin;

x[4]:=XMax;

x[2]:=XMax-Tau*(XMax-XMin);

x[3]:=XMin+Tau*(XMax-XMin);

for i:=1 to 4 do y[i]: =f (x[i]);

for i:=1 to 4 do chGraph. Series[0]. AddXY (x[i], f (x[i]),'', clRed);

N:=4;

while (abs (x[4]-x[1])/2)>Eps do

if y[3]>y[2] then

begin

x[4]: =x[3]; y[4]: =y[3];

x[3]:=x[2]; y[3]: =y[2];

x[2]:=x[4]-Tau*(x[4]-x[1]);

y[2]:=f (x[2]);

chGraph.Series[0].AddXY (x[2], y[2],'', clRed);

inc (N)

end

else

begin

x[1]:=x[2]; y[1]: =y[2];

x[2]:=x[3]; y[2]: =y[3];

x[3]:=x[1]-Tau*(x[4]-x[1]);

y[3]:=f (x[3]);

chGraph.Series[0].AddXY (x[3], y[3],'', clRed);

inc (N)

end;

chGraph.Series[1].AddXY ((x[1]+x[4])/2,f ((x[1]+x[4])/2),'', clBlue);

Result:=FloatToStr ((x[4]+x[1])/2)+'; ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ = '+IntToStr (N)

end;

function TMyForm. OptPoisk (XMax, XMin, Eps, D: Real):string;

var fb: array[byte] of word;

x: array[1.4] of real;

L: array[byte] of real;

i: byte;

N: word;

begin

x[1]: =XMin;

fb[0]:=1;

x[4]:=XMax;

fb[1]:=1;

N:=1;

while (fb[N]<((XMax-XMin)/Eps)) do

begin

inc (N);

fb[N]: =fb[N-1]+fb[N-2]

end;

L[N]:=((XMax-XMin)-fb[N-2]*D)/fb[N];

for i:=1 to N-1 do

L[i]: =fb[N-i+1]*L[N]-fb[N-i-1]*D;

for i:=1 to N do

begin

x[2]: =x[4]-L[i];

x[3]:=x[1]+L[i];

chGraph.Series[0].AddXY (x[2], f (x[2]),'', clBlue);

chGraph.Series[0].AddXY (x[3], f (x[3]),'', clBlue);

if f (x[3])>f (x[2]) then

begin

x[4]: =x[3];

x[3]:=x[2]

end

else

begin

x[1]:=x[2];

x[2]:=x[3]

end;

end;

chGraph.Series[1].AddXY ((x[1]+x[4])/2,f ((x[1]+x[4])/2),'', clRed);

Result:=FloatToStr ((x[4]+x[1])/2)+'; ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ = '+IntToStr (N)

end;

procedure TMyForm. ExitClick (Sender: TObject);

begin

close

end;

procedure TMyForm. btExecClick (Sender: TObject);

begin

try

XMin:=StrToFloat (edMin.Text);

XMax:=StrToFloat (edMax.Text);

Epsilon:=StrToFloat (edEps.Text);

delta:=0.25*Epsilon

except

ShowMessage ('Π”Π°Π½Π½Ρ‹Π΅ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹');

end;

edMin.Enabled:=False;

edMax.Enabled:=False;

edEps.Enabled:=False;

btExec.Enabled:=False;

rbM1.Enabled:=False;

rbM2.Enabled:=False;

rbM3.Enabled:=False;

rbM4.Enabled:=False;

MyForm.Width:=500;

MyForm.Height:=310;

chGraph.Show;

pnAnswer.Show;

if rbM1. Checked=true then lbX. Caption:=lbX.Caption+(PasPoisk (XMax, XMin, Epsilon, Delta));

if rbM2. Checked=true then lbX. Caption:=lbX.Caption+(Dihotomy (XMax, XMin, Epsilon, Delta));

if rbM3. Checked=true then lbX. Caption:=lbX.Caption+(GoldSection (XMax, XMin, Epsilon, Delta));

if rbM4. Checked=true then lbX. Caption:=lbX.Caption+(OptPoisk (XMax, XMin, Epsilon, Delta));

end;

end.

ДинамичСскоС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅

ΠœΠ΅Ρ‚ΠΎΠ΄ динамичСского программирования — ΡˆΠΈΡ€ΠΎΠΊΠΎ извСстный ΠΈ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ матСматичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ соврСмСнной Ρ‚Π΅ΠΎΡ€ΠΈΠΈ управлСния.

Рассмотрим ΡƒΠΏΡ€Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ систСму, состояниС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ характСризуСтся n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ x Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ x1, …, xn. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ врСмя t ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ‚ся дискрСтно ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ цСлочислСнныС значСния 0, 1, … Π’Π°ΠΊ, для процСссов Π² ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ΅ ΠΈ ΡΠΊΠΎΠ»ΠΎΠ³ΠΈΠΈ дискрСтным значСниям Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π΄Π½ΠΈ, мСсяцы ΠΈΠ»ΠΈ Π³ΠΎΠ΄Ρ‹, Π° Π΄Π»Ρ процСссов Π² ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½Ρ‹Ρ… устройствах ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ сосСдними дискрСтными ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π²Π½Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ срабатывания устройства. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΡƒ оказываСтся ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ воздСйствиС ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ m-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° управлСния u Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ u1, …, um. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ t ΡΠΎΡΡ‚ояниС систСмы характСризуСтся Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ x (t), Π° ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ воздСйствиС — Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ u (t). На Π²Ρ‹Π±ΠΎΡ€ управлСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ Π½Π°Π»ΠΎΠΆΠ΅Π½Ρ‹ ограничСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² Π΄ΠΎΡΡ‚Π°Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅

u (t) k U, t = 0, 1, …

Π—Π΄Π΅ΡΡŒ U — Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ мноТСство Π² n-ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС.

Под влияниСм Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ t ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ (принятого Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ) систСма ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² Π½ΠΎΠ²ΠΎΠ΅ состояниС. Π­Ρ‚ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ΠΌ

x (t + 1) = f (x (t), u (t)), t = 0, 1, …

Π—Π΄Π΅ΡΡŒ f (x, u) — n-мСрная функция ΠΎΡ‚ n-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° x ΠΈ m-ΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° u, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰Π°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΡƒ рассматриваСмой систСмы. Π­Ρ‚Π° функция прСдполагаСтся извСстной (Π·Π°Π΄Π°Π½Π½ΠΎΠΉ) ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ принятой матСматичСской ΠΌΠΎΠ΄Π΅Π»ΠΈ рассматриваСмого управляСмого процСсса.

Π—Π°Π΄Π°Π΄ΠΈΠΌ Π΅Ρ‰Π΅ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС систСмы

x (0) = x0,

Π³Π΄Π΅ x0 — Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ n-ΠΌΠ΅Ρ€Π½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠ½ΠΎΠ³ΠΎΡˆΠ°Π³ΠΎΠ²Ρ‹ΠΉ процСсс управлСния описываСтся ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ (1)-(3). ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° расчСта ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ процСсса сводится ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ. ΠŸΡƒΡΡ‚ΡŒ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ t ΡΠΎΡΡ‚ояниС систСмы x (t) извСстно. Π’ΠΎΠ³Π΄Π° для опрСдСлСния состояния x (t + 1) Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

1) Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ допустимоС ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ u (t), ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰Π΅Π΅ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ (1);

2) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ состояниС x (t + 1) Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ согласно (2). Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС систСмы Π·Π°Π΄Π°Π½ΠΎ, Ρ‚ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ для всСх t = 0, 1, … ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ состояний x (0), x (1), … часто называСтся Ρ‚Ρ€Π°Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠ΅ΠΉ систСмы.

Π—Π°ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π±ΠΎΡ€ управлСния Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС содСрТит Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ». Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ» исчСзаСт, Ссли Π·Π°Π΄Π°Ρ‚ΡŒ Ρ†Π΅Π»ΡŒ управлСния Π² Π²ΠΈΠ΄Π΅ трСбования ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ (ΠΈΠ»ΠΈ максимизации) Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ критСрия ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΏΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ управлСния.

Π—Π°Π΄Π°Ρ‡Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ управлСния ΠŸΡƒΡΡ‚ΡŒ Π·Π°Π΄Π°Π½ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ качСства процСсса управлСния (ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ) Π²ΠΈΠ΄Π° Π—Π΄Π΅ΡΡŒ R (x, u) ΠΈ F (x) — Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ скалярныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ своих Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², N — ΠΌΠΎΠΌΠ΅Π½Ρ‚ окончания процСсса, N > 0. ΠŸΡ€ΠΈ этом функция R ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ°Ρ‚ΡŒ расход срСдств ΠΈΠ»ΠΈ энСргии Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ шагС процСсса, Π° Ρ„ункция F — Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ†Π΅Π½ΠΊΡƒ ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ состояния систСмы ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ привСдСния Π² Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ состояниС.

Π—Π°Π΄Π°Ρ‡Π° ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ управлСния формулируСтся ΠΊΠ°ΠΊ Π·Π°Π΄Π°Ρ‡Π° опрСдСлСния допустимых ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ u (0), u (1), …, u (N — 1), ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‰ΠΈΡ… ограничСниям (1), ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Ρ€Π°Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ x (0), x (1), …, x (N), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΠΈ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡŽ (4) для процСсса (2), (3).

ΠœΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ критСрия (4) ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€Ρƒ управлСния, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ наимСньшиС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ срСдств, рСсурсов, энСргии, наимСньшСС ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ‚ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ†Π΅Π»ΠΈ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Ρ€Π°Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ процСсса. Наряду с ΡΡ‚ΠΈΠΌ часто ставится Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Ρ‡Π° ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ критСрия Π²ΠΈΠ΄Π° (4), Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄ΠΎΡ…ΠΎΠ΄Π° ΠΈΠ»ΠΈ объСма производства. Однако Π½Π΅Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ максимизация критСрия J ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ критСрия (- J). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ простая Π·Π°ΠΌΠ΅Π½Π° Π·Π½Π°ΠΊΠ° Ρƒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ R ΠΈ F Π² (4) ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ критСрия ΠΊ Π·Π°Π΄Π°Ρ‡Π΅ ΠΎ Π΅Π³ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π”Π°Π»Π΅Π΅ Π²ΡΡŽΠ΄Ρƒ для опрСдСлСнности рассматриваСм Π·Π°Π΄Π°Ρ‡Ρƒ ΠΎ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ критСрия (4).

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

type

ElType = string[3];

TVector = array of ElType;

const FORBIDDEN: ElType = 'x';

var

Form1: TForm1;

D: Array of TVector; // ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° вСсов ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΎΠ²

P: Array of TVector; // ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° ΡƒΠ·Π»ΠΎΠ²

implementation

{$R *.dfm}

procedure TForm1. Button2Click (Sender: TObject);

var

i, j: integer;

_Width, _Height: Integer;

Weight1, Weight2: integer;

X, Y: Integer;

S: string;

begin

_Width := 5;

_Height := 4;

SetLength (D, _Width);

for i := Low (D) to High (D) do

SetLength (D[i], 2 * _Height — 1);

D[0,0] := '4'; D[1,0] := '5'; D[2,0] := '3';

D[0,1] := '5'; D[1,1] := '4'; D[2,1] := '6';

D[0,2] := '4'; D[1,2] := '5'; D[2,2] := '5';

D[0,3] := '4'; D[1,3] := '5'; D[2,3] := '6';

D[0,4] := '6'; D[1,4] := '5'; D[2,4] := '5';

D[0,5] := '7'; D[1,5] := '5'; D[2,5] := '7';

D[0,6] := '6'; D[1,6] := '8'; D[2,6] := '7';

D[3,0] := '5'; D[4,0] := FORBIDDEN;

D[3,1] := '6'; D[4,1] := '7';

D[3,2] := '5'; D[4,2] := FORBIDDEN;

D[3,3] := '6'; D[4,3] := '8';

D[3,4] := '7'; D[4,4] := FORBIDDEN;

D[3,5] := '8'; D[4,5] := '9';

D[3,6] := '7'; D[4,6] := FORBIDDEN;

SetLength (P, _Width);

for i := Low (P) to High (P) do

SetLength (P[i], _Height);

for i := Low (P) to High (P) do

for j := Low (P[i]) to High (P[i]) do begin

if (i=0) and (j=0) then begin

P[i, j] := '0';

Continue;

end;

if (i=0) then begin

P[i, j] := IntToStr (StrToInt (P[i, j-1]) + StrToInt (D[i, 2*j-1]));

Continue;

end;

if (j=0) then begin

P[i, j] := IntToStr (StrToInt (P[i-1,j]) + StrToInt (D[i-1,2*j]));

Continue;

end;

Weight1 := StrToInt (P[i, j-1]) + StrToInt (D[i, 2*j-1]);

Weight2 := StrToInt (P[i-1,j]) + StrToInt (D[i-1,2*j]);

if Weight1

P[i, j] := IntToStr (Weight1);

D[i-1,2*j] := FORBIDDEN;

end

else

begin

P[i, j] := IntToStr (Weight2);

D[i, 2*j-1] := FORBIDDEN;

end;

end;

for i := Low (P) to High (P) do begin

S := '';

for j := Low (P[i]) to High (P[i]) do

S := S + P[i, j] + #9;

Memo1.Lines.Add (S);

end;

X := _Width;

Y := _Height;

S := '(' + IntToStr (X) + ';' + IntToStr (Y) + ')';

while (X<>1) and (Y<>1) do begin

if D[X-1−1,2*Y-1−1]<>FORBIDDEN then X := X — 1

else Y := Y — 1;

S := '(' + IntToStr (X) + ';' + IntToStr (Y) + ') -> ' + S;

end;

S := '(1;1) -> ' + S;

ShowMessage (S);

end;

end.

Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. ΠœΠ΅Ρ‚ΠΎΠ΄ Π”ΠΆΠΎΡ€Π΄Π°Π½Π°-Гаусса

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования — числСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡, cводящихся ΠΊ Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ модСлям Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования.

Как извСстно, любая Π·Π°Π΄Π°Ρ‡Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° ΠΊ ΠΊΠ°Π½ΠΎΠ½ΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ с Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌΠΈ ограничСниями Ρ‚ΠΈΠΏΠ° равСнств. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ число ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Π·Π°Π΄Π°Ρ‡Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования большС числа ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ (n > m), Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, приравняв Π½ΡƒΠ»ΡŽ (n — m) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… свободными. ΠžΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ m ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… базисными, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠ· ΡΠΈΡΡ‚Π΅ΠΌΡ‹ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ-равСнств ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Π°Π»Π³Π΅Π±Ρ€Ρ‹. Если Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ сущСствуСт, Ρ‚ΠΎ ΠΎΠ½ΠΎ называСтся базисным. Если базисноС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ допустимо, Ρ‚ΠΎ ΠΎΠ½ΠΎ называСтся базисным допустимым. ГСомСтричСски, базисныС допустимыС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ (ΠΊΡ€Π°ΠΉΠ½ΠΈΠΌ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌ) Π²Ρ‹ΠΏΡƒΠΊΠ»ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠ³Ρ€Π°Π½Π½ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ мноТСство допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Если Π·Π°Π΄Π°Ρ‡Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚ΠΎ ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π½ΠΈΡ… являСтся базисным.

ΠœΠ΅Ρ‚ΠΎΠ΄ Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса (Jordan) ΠΏΠΎΡ‡Ρ‚ΠΈ Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ ΠΎΡ‚личаСтся ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° систСмы приводится Π½Π΅ ΠΊ Ρ‚Ρ€Π΅ΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ, Π° ΠΊ Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ. Если ΠΎΡ‚Π²Π»Π΅Ρ‡ΡŒΡΡ ΠΎΡ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‚Π°Π½ΠΎΠ²ΠΊΠΈ строк ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠ² для Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°ΠΈΠ²Ρ‹Π³ΠΎΠ΄Π½Π΅ΠΉΡˆΠ΅Π³ΠΎ Π²Π΅Π΄ΡƒΡ‰Π΅Π³ΠΎ элСмСнта, Ρ‚ΠΎ ΠΏΡ€ΠΎΡ†Π΅ΡΡ выглядит Ρ‚Π°ΠΊ. ΠŸΡƒΡΡ‚ΡŒ Π½Π°ΠΌ Π΄Π°Π½Π° систСма n Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с Ρ‚Π°ΠΊΠΈΠΌ ΠΆΠ΅ количСством нСизвСстных. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ коэффициСнты этой систСмы ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Ρ‹Π΅ Ρ‡Π»Π΅Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ n*(n+1). Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Ρ‚ΡŒ a[i, j]. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ i ΠΎΡ‚ 1 Π΄ΠΎ n: .

| для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ k ΠΎΡ‚ n+1 Π΄ΠΎ 1 с ΡˆΠ°Π³ΠΎΠΌ (-1): .

| | a[i, k] <- a[i, k]/a[i, i] .

| для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ j ΠΎΡ‚ 1 Π΄ΠΎ n, Π½Π΅ Ρ€Π°Π²Π½ΠΎΠ³ΠΎ i: .

| | для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ k ΠΎΡ‚ n+1 Π΄ΠΎ i Ρ ΡˆΠ°Π³ΠΎΠΌ (-1): .

| | | a[j, k] <- a[j, k] - a[j, i]*a[i, k] .

ПослС этого послСдний столбСц ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A Π΄Π°ΡΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ. По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΊΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса здСсь отсутствуСт ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄, Π½ΠΎ ΠΎΠ±Ρ‰Π΅Π΅ число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ большС (хотя порядок ΠΏΠΎ n ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΉ — n3).

ОсобСнно ΡƒΠ΄ΠΎΠ±Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π–ΠΎΡ€Π΄Π°Π½Π°-Гаусса для обращСния ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹. Если ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ систСмы Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ Π½Π΅ ΡΡ‚ΠΎΠ»Π±Ρ†ΠΎΠΌ свободных Ρ‡Π»Π΅Π½ΠΎΠ², Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ порядка, Ρ‚ΠΎ ΠΏΠΎΡΠ»Π΅ описанной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ Π½Π° Π΅Π΅ ΠΌΠ΅ΡΡ‚Π΅ получится ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, обратная Π·Π°Π΄Π°Π½Π½ΠΎΠΉ.

Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

function Divide (var V: Vector; D: real): boolean;

var

I: Integer;

begin

Result := true;

for I := Low (V) to High (V) do

if (V[I]=0) and (D=0) then V[I] := 0 else

if D<>0 then

V[I] := V[I] / D

else Result := false;

end;

procedure Multiply (var V: Vector; K: real);

var

I: Integer;

begin

for I := Low (V) to High (V) do

V[I] := V[I] * K;

end;

procedure Subtract (var V1, V2: Vector);

var

I: Integer;

begin

for I := Low (V1) to High (V1) do

V1[I] := V1[I] - V2[I];

end;

procedure TForm1. Button2Click (Sender: TObject);

var

M: Matrix;

i, j: integer;

k: real;

Report: TStringList;

begin

SetLength (M, StringGrid1. RowCount-1);

for I := Low (M) to High (M) do

SetLength (M[I], StringGrid1. ColCount-1);

for I := Low (M) to High (M) do

for J := Low (M[I]) to High (M[I]) do

M[I, J] := StrToInt (StringGrid1.Cells[J+1,I+1]);

Report := TStringList. Create;

Report.Add ('

');

Report.Add ('

    Данная БЛАУ:');

    MatrixToHTML (Report, M);

    for I := Low (M) to High (M) do begin

    Report.Add ('

  1. ИзбавляСмся ΠΎΡ‚ ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π΄ x' + IntToStr (I+1) + ':');

    if M[i, i]<>1 then

    if not Divide (M[I], M[I, I]) then begin // ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ строки

    MessageBox (Handle, 'Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ»ΡŒ: …', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', MB_OK + MB_ICONWARNING);

    Report.Free;

    Exit;

    end;

    for j := Low (M) to High (M) do begin

    if I=j then Continue;

    k := 1;

    if M[I, I]<>M[J, I] then begin

    k := M[J, I];

    if not Divide (M[J], k) then begin

    MessageBox (Handle, 'Π”Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ»ΡŒ: …', 'Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅', MB_OK + MB_ICONWARNING);

    Report.Free;

    Exit;

    end;

    end;

    Subtract (M[j], M[I]);

    if (k<>1) and (I>j) then Multiply (M[j], k);

    end;

    MatrixToHTML (Report, M);

    end;

    Report.SaveToFile (ExtractFilePath (Application.ExeName) + 'result.html');

    Report.Free;

    MessageBox (Handle, PChar ('Π‘ΠΎΠ·Π΄Π°Π½ Ρ„Π°ΠΉΠ» ΠΎΡ‚Ρ‡Π΅Ρ‚Π°: ' + ExtractFilePath (Application.ExeName) + 'result.html'),

    'РСшСниС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ', MB_OK + MB_ICONINFORMATION);

    WebBrowser1.Navigate (ExtractFilePath (Application.ExeName) + 'result.html');

    end;

    procedure TForm1. Button1Click (Sender: TObject);

    var

    N: Integer;

    begin

    N := StrToInt (LabeledEdit1.Text);

    StringGrid1.RowCount := N+1;

    StringGrid1.ColCount := N + 2;

    end;

    end.

    Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

    Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Π΄Π°Π½Π½ΠΎΠΉ курсовой Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΏΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈΠ·ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π² ΡΡ‚ΠΎΠΌ сСмСстрС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠ΅, Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.

    Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹:

    — ΠœΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Ρ‚Π²Π΅ΠΉ ΠΈ Π³Ρ€Π°Π½ΠΈΡ† Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΎ ΠΊΠΎΠΌΠΌΠΈΠ²ΠΎΡΠΆΠΎΡ€Π΅;

    — ΠŸΠΎΠΈΡΠΊΠΈ 1-ΠΎΠ³ΠΎ ΠΈ 2-ΠΎΠ³ΠΎ порядка;

    — Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ симплСксного ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

    1. Π“Π°Π»ΠΊΠΈΠ½ А. А. ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΈ Π·Π°Π΄Π°Ρ‡Π°Ρ…: Π£Ρ‡Π΅Π±. ПособиС. — Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: Π’ΠŸΠ˜, 1989. — 96 с.

    2. Π–ΠΈΡ€ΠΊΠΎΠ² Π’. Π€. ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ производствСнных процСссов с Π΄ΠΈΡΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΎΠΌ управлСния: Π£Ρ‡Π΅Π±. ПособиС. — Π’Π»Π°Π΄ΠΈΠΌΠΈΡ€: НПИ, 1984. — 84 с.

    3. Π§Π΅Ρ€Π½ΠΎΡƒΡΡŒΠΊΠΎ Π€. Π›., Π‘Π°Π½ΠΈΡ‡ΡƒΠΊ Н. Π’. Π’Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠΊΠΈ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ: ЧислСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. М.: Наука, 1973. 238 с.

    4. Internet.

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