Π”ΠΈΠΏΠ»ΠΎΠΌ, курсовая, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π°
ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ бСзусловной ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. 
Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΉ РП ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ РП Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³

Лабораторная Ρ€Π°Π±ΠΎΡ‚Π°ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ h Ρ€Π°Π²Π½ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ЦРП ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ эффСктивнСС, Ρ‡Π΅ΠΌ ПРП. А ΠΏΡ€ΠΈ h Ρ€Π°Π²Π½ΠΎΠΌ ΠΈ, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ точности Ρƒ ΠŸΠ ΠŸ, количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ использовании ЦРП мСньшС Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ПРП. Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ΄ ΠœΠ‘Π“ понимаСтся количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ΄ ОМ — количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄ Π—Π‘ — количСство… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ бСзусловной ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΉ РП ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ РП Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²Ρƒ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ государствСнноС Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования

«Π’олгоградский государствСнный унивСрситСт»

(Π’ΠΎΠ»Π“Π£) Π˜Π½ΡΡ‚ΠΈΡ‚ΡƒΡ‚ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Лабораторная Ρ€Π°Π±ΠΎΡ‚Π° № 3

ΠΏΠΎ ΠΊΡƒΡ€ΡΡƒ «Π§ΠΈΡΠ»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ»

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ бСзусловной ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π²ΠΎΠΉ Π ΠŸ ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π ΠŸ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ:

Π‘Ρ‚ΡƒΠ΄Π΅Π½Ρ‚Ρ‹ 3-Π³ΠΎ курса Π³Ρ€ΡƒΠΏΠΏΡ‹ ПМ-101

Π‘Π°ΠΌΠΎΡ€ΠΎΠ΄ΠΎΠ² Π•. А.

Гусынин О. Π‘.

Π‘ΠΎΠ»ΠΎΡ‚ΠΈΠ½ А. Π’.

ΠŸΡ€ΠΈΠ½ΡΠ»:

Яновский В.А.

Π’ΠΎΠ»Π³ΠΎΠ³Ρ€Π°Π΄ 2013

Π—Π°Π΄Π°Π½ΠΈΠ΅:

Π‘Ρ€Π°Π²Π½ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π·Π½ΠΎΡΡ‚Π½ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡƒΡŽ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ². Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ взята функция ΠŸΠ°ΡƒΡΠ»Π»Π°.

ΠœΠ΅Ρ‚ΠΎΠ΄:

ΠœΠ΅Ρ‚ΠΎΠ΄ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² (ΠΌΠ΅Ρ‚ΠΎΠ΄ Π€Π»Π΅Ρ‚Ρ‡Π΅Ρ€Π°-Ривса) Π’ ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π»Π΅ΠΆΠΈΡ‚ построСниС Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ поиска ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ°, ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌΠΈ комбинациями Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΉ поиска. ΠŸΡ€ΠΈ этом вСсовыС коэффициСнты Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ направлСния сопряТСнными ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ГСссС. Для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ скорости сходимости ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅ ΠΊΠ²Π°Π΄Ρ€Π°Ρ‚ΠΈΡ‡Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ рСстарт: Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ n Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ поиска замСняСтся Π½Π° ΠΠ°Ρ€ΡΠ΄Ρƒ с Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π°ΠΏΡ€ΠΈΠΎΡ€Π½ΠΎΠ³ΠΎ задания ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° точности поиска Π΅ > 0 .

Алгоритм:

Ѐункция:

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π‘Ρ‹Π» ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ ряд расчСтов с Ρ†Π΅Π»ΡŒΡŽ опрСдСлСния ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΉ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π ΠŸ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ Π ΠŸ. Для этой Ρ†Π΅Π»ΠΈ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΈ взяты eps1 ΠΈ h. Π“Π΄Π΅ eps1 — максимальная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π½ΠΎΡ€ΠΌΡ‹ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ продолТаСтся расчСт, h — шаг ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π ΠŸ для нахоТдСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ взят ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

ΠŸΡ€ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° использован постоянный шаг 0.01. Для Ρ†Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ½ Π½Π΅ Π²Π°ΠΆΠ΅Π½, ΠΊΠ°ΠΊ ΠΈ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ alfa ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ для расчСта Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΡƒΡŽ РП.

Π—Π΄Π΅ΡΡŒ ΠΏΠΎΠ΄ ΠœΠ‘Π“ понимаСтся количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ сопряТСнных Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ², ΠΏΠΎΠ΄ ОМ — количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΏΠΎΠ΄ Π—Π‘ — количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π·ΠΎΠ»ΠΎΡ‚ΠΎΠ³ΠΎ сСчСния.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ ΠŸΡ€Π°Π²ΡƒΡŽ РП.

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ЦРП ΠΈ ΠŸΠ ΠŸ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ЦРП Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π°ΠΉΠ΄Π΅Π½ Ρ‡ΡƒΡ‚ΡŒ быстрСС. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ eps1 ΠΈ h. Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ eps1 = 0.1, h =0.001. Π‘ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π ΠŸ:

Π‘ ΠΏΡ€Π°Π²ΠΎΠΉ Π ΠŸ:

ΠžΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ использованиС ЦРП, ΠΏΡ€ΠΈ Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΡƒΠ±ΠΎΠΌ шагС h ΠΈ Π½ΠΈΠ·ΠΊΠΎΠΉ точности eps1, способствуСт Π±Ρ‹ΡΡ‚Ρ€Π΅ΠΉΡˆΠ΅ΠΌΡƒ ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Π΅ΠΉΡˆΠ΅ΠΌΡƒ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠŸΠ ΠŸ.

Π’Ρ‹Π²ΠΎΠ΄Ρ‹ Π­ΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ для Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ эффСктивноС количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ n, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ рСстарт. ΠŸΡ€ΠΈ использовании n = 6 достигаСтся трСбуСмая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ нахоТдСния ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° ΠΏΡ€ΠΈ наимСньшСм количСствС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° количСств ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… n ΠΈ h, ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… точностях (,), ΠΏΡ€ΠΈ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π ΠŸ ΠΈ ΠΏΡ€Π°Π²ΠΎΠΉ Π ΠŸ (ЦРП/ПРП).

ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ минимизация производная функция

n

h

49 / 49*

48 / 55*

48 / 172

48 / 51

31 / 71*

31 / 49*

31 / 34

31 / 26

24 / 37*

24 / 31*

24 / 28

24 / 26

37 / 71*

35 / 42*

35 / 40

35 / 49

40 / 49*

43 / 64*

43 / 59

43 / 55

30 / 46*

30 / 36*

30 / 48

30 / 37

42 / 31*

42 / 50*

42 / 45

42 / 42

36 / 34*

36 / 34*

36 / 37

36 / 41

38 / 49*

39 / 48*

39 / 39

39 / 37

37 / 53*

38 / 52*

38 / 43

38 / 40

37 / 43*

37 / 57*

37 / 43

37 / 51

41 / 46*

42 / 75*

42 / 48

42 / 43

35 / 49*

35 / 66*

35 / 37

35 / 35

41 / 52*

40 / 51*

40 / 55

40 / 41

41 / 37*

44 / 90*

42 / 45

43 / 44

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ правая Π ΠŸ Π±ΠΎΠ»Π΅Π΅ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π° ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡŽ шага h Ρ‡Π΅ΠΌ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ. Из ΡΡ‚ΠΎΠ³ΠΎ слСдуСт, Ρ‡Ρ‚ΠΎ ЦРП ΠΈΠΌΠ΅Π΅Ρ‚ мСньшСю ΠΏΠΎΠ³Ρ€Π΅ΡˆΠ½ΠΎΡΡ‚ΡŒ нахоТдСния ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ, Ρ‡Π΅ΠΌ ПРЦ.

К Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅, ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… значСния h ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ПРП, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΡ€ΠΈΠ²ΠΈΠ»ΠΎ ΠΊ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ°Π»ΠΎΠΌΡƒ измСнСнию Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Ρ‚. Π΅. ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ (*) ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½ΠΎ Ρ‚ΠΎ ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ, Π³Π΄Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ПРП ΠΏΡ€ΠΈΠ²Π΅Π»ΠΎ ΠΊ Π·Π°Ρ†ΠΈΠΊΠ»ΠΈΠ²Π°Π½ΠΈΡŽ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ точности (ΠΈΠ·-Π·Π° этого значСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… чисСл Ρƒ ΠŸΠ ΠŸ мСньшС Ρ‡Π΅ΠΌ Ρƒ Π¦Π ΠŸ).

МоТно ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ h Ρ€Π°Π²Π½ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ЦРП эффСктивнСС Ρ‡Π΅ΠΌ ПРП.

Для сравнСния ПРП ΠΈ Π¦Π ΠŸ ΠΏΡ€ΠΈ большом шагС h Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ для останова сдСлаСм Π±ΠΎΠ»Π΅Π΅ Π³Ρ€ΡƒΠ±ΠΎΠΉ. Π’ΠΎΠ³Π΄Π° ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ:

n

h

22 / 21*

20 / 36*

20 / 24

20 / 21

13 / 25*

15 / 19*

15 / 26

15 / 18

20 / 29*

19 / 29*

19 / 23

19 / 19

Π’ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ h Ρ€Π°Π²Π½ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ЦРП ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ эффСктивнСС, Ρ‡Π΅ΠΌ ПРП. А ΠΏΡ€ΠΈ h Ρ€Π°Π²Π½ΠΎΠΌ ΠΈ, Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ Π½Π΅ Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠΉ точности Ρƒ ΠŸΠ ΠŸ, количСство ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€ΠΈ использовании ЦРП мСньшС Ρ‡Π΅ΠΌ ΠΏΡ€ΠΈ использовании ПРП.

МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΉ Π ΠŸ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Π΅ΠΉ, ΠΊΠ°ΠΊ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния эффСктивной Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊ ΠΈ Ρ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния быстроты получСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Код ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π‘ΠΈ:

#include

#include

#include

#define EPS 0.2

#define f function

#define nv the_number_of_variables

#define CENTRAL 0

#define RIGHT 1

#define LEFT 2

const int the_number_of_variables = 4;

double function (double * x){

return pow (x[0]+10*x[1], 2)+5*pow (x[2]-x[3], 2)+pow (x[1]-2*x[2], 4)+10*pow (x[0]-x[3], 4);

}

char * ToRus (const char text []);

double * gradient (double * x, double h, int ds);

double CentralDS (double * x, double h, int i);

double RightDS (double * x, double h, int i);

double LeftDS (double * x, double h, int i);

double (*DS[3])(double * x, double h, int i) = {CentralDS, RightDS, LeftDS};

double NormaV (double * x, int n);

double * minimi (double * x, double * p, double dx);

double zoloto (double * x, double * p, double a, double b, double eps);

double argminf (double * x, double * g, double eps);

int main (){

int i, k, n, ds;

double *g, *g_old, *x, *p, yI, yII;

double eps1, eps2, h, Sc, Sz, betta, alfa;

x = (double *)malloc (nv*sizeof (double));

p = (double *)malloc (nv*sizeof (double));

k = 1;

n = 6;//Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π½ΠΎΡΡ‚ΡŒ (Ρ‡Π΅Ρ€Π΅Π· сколько ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ рСстарт)

eps1 = 0.001;

eps2 = 1e-6;

h =1e-6;//шаг ΠΏΡ€ΠΈ вычислСния Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° Π² Π Π‘

ds = CENTRAL;//RIGHT

printf («%s «, ToRus («ΠŸΡ€ΠΈ расчСтах использована»));

switch (ds+1){

case 1: printf («%s», ToRus («Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Π°Ρ»));break;

case 2: printf («%s», ToRus («ΠΏΡ€Π°Π²Π°Ρ»));break;

case 3: printf («%s», ToRus («Π»Π΅Π²Π°Ρ»));break;

}

printf («%sn», ToRus («Ρ€Π°Π·Π½ΠΎΡΡ‚ная схСма нахоТдСния Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°»));

printf («%s:tx0 = („, ToRus (“ ΠΠ°Ρ‡Π°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ°»));

for (i = 0; i < nv; i ++){

x[i] = 1;printf («%.0lf,», x[i]);

}

printf («), t f (x0) = %.6lfn», function (x));

printf («%s:teps1 = %.3lfn», ToRus («ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° Π½ΠΎΡ€ΠΌΡ‹ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΈ остановС»), eps1);

printf («%s:teps2 = %lfn», ToRus («Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ вычислСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° alfa Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ»), eps2);

printf («%s:th = %lfn», ToRus («Π¨Π°Π³ Π² Ρ€Π°Π·Π½ΠΎΡΡ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ»), h);

g_old = gradient (x, h, ds);

for (i = 0; i < nv; i ++)p[i] = - g_old[i];

printf («n%sttt %sttt %sn», ToRus («ΠœΠ‘Π“ [ОМ/Π—Π‘]»), ToRus («ΠΡ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹»), ToRus («Π€ΡƒΠ½ΠΊΡ†ΠΈΡ»));

puts («—————————————————————————————————————-»);

printf («%2d «, k);

yI = f (x);

alfa = argminf (x, p, eps2);

for (i = 0; i < nv; i ++){x[i] += alfa*p[i]; }

for (i = 0; i < nv; i ++){printf («x%d=%.4lf «, i+1,x[i]);}

printf («f=%.6lfn», f (x));

k ++;yII = f (x);

do{

g = gradient (x, h, ds);

Sc = 0;

Sz = 0;

for (i = 0; i < nv; i ++){

Sc += g[i]*g[i];

Sz += g_old[i]*g_old[i];

}

betta = Sc/Sz;

if (k%n==1){

betta = 0;

if (fabs (yI-yII)

eps1 = NormaV (g, nv)+1.;

printf («t%sn», ToRus («ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° ΠΏΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ Ρ‡Π΅Ρ€Π΅Π·Π²Ρ‹Ρ‡Π°ΠΉΠ½ΠΎ ΠΌΠ°Π»ΠΎΠ³ΠΎ измСнСния y (x)»));

}

}

for (i = 0; i < nv; i ++){

g_old[i] = g[i];

p[i] = betta*p[i] - g[i];

}

printf («%2d «, k);

alfa = argminf (x, p, eps2);

for (i = 0; i < nv; i ++){x[i] += alfa*p[i]; }

for (i = 0; i < nv; i ++){printf («x%d=%.4lf «, i+1,x[i]);}

yII = yI;

yI = f (x);

printf («f=%.6lfn», yI);

k ++;

}while (NormaV (g, nv) > eps1);

puts («—————————————————————————————————————-»);

printf («%s: f („, ToRus (“ Π˜Ρ‚ΠΎΠ³ расчСтов»));

for (i = 0; i < nv; i ++){printf («%.4lf,», x[i]);}

printf («) = %.6lfn», f (x));

free (x);

free (g);

free (g_old);

free (p);

return 0;

}

double CentralDS (double * x, double h, int i){

int j;

double * y;

double df;

y = (double *)malloc (nv*sizeof (double));

for (j=0;j

y[j] = x[j];

}

y[i] += 0.5*h;

df = f (y);

y[i] -= h;

df -= f (y);

df /= h;

free (y);

return df;

}

double RightDS (double * x, double h, int i){

int j;

double * y;

double df;

y = (double *)malloc (nv*sizeof (double));

for (j=0;j

y[j] = x[j];

}

y[i] += h;

df = (f (y) — f (x))/h;

free (y);

return df;

}

double LeftDS (double * x, double h, int i){

int j;

double * y;

double df;

y = (double *)malloc (nv*sizeof (double));

for (j=0;j

y[j] = x[j];

}

y[i] -= h;

df = (f (x) — f (y))/h;

free (y);

return df;

}

double * gradient (double * x, double h, int ds){

int i;

if (ds > 2 || ds < 0) ds = 0;

double * g;

g = (double *)malloc (nv*sizeof (double));

for (i=0;i

g[i] = DS[ds](x, h, i);

}

return g;

}

double NormaV (double * x, int n){

int i;

double Sk = 0;

for (i = 0; i < n; i++){

Sk += x[i]*x[i];

}

return sqrt (Sk);

}

double argminf (double * x, double * p, double eps){

double alfa;

double * ab = minimi (x, p,0.01);//0.01 — ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ шаг (ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ)

alfa = zoloto (x, p, ab[0], ab[1], eps);

free (ab);

return alfa;

}

double * minimi (double * x, double * p, double dx){

int i;

double m=0, a, b, k=1, alfa = 0;

double * xda = (double*)malloc (nv*sizeof (double));

double * xdb = (double*)malloc (nv*sizeof (double));

for (i=0;i

xda[i] = x[i] + alfa*p[i];

xdb[i] = x[i] + (alfa+dx)*p[i];

}

if (f (xda) < f (xdb))m =- 1;

else m = 1;

dx *= m;

a = alfa+dx;

b = alfa+3*dx;

int j=1;

do{

for (i=0;i

xdb[i] = x[i] + b*p[i];

xda[i] = x[i] + a*p[i];

}

k*=2;

b += k*dx;

a = b-2*k*dx;

j++;

}while (f (xda) > f (xdb));

printf («[%2d/», j);

free (xda);

free (xdb);

b -= k*dx;

a = b-2*k*dx;

double *s;

s = (double*)malloc (2*sizeof (double));

if (m==1){ s[0] = a; s[1] = b;}

else {s[0] = b; s[1] = a;}

return s;

}

double zoloto (double * x, double * p, double a, double b, double eps){

int i;

double x1, x2, tau, A, B;

double * xd1 = (double*)malloc (nv*sizeof (double));

double * xd2 = (double*)malloc (nv*sizeof (double));

tau = (sqrt (5.)+1.)/2.;

x1 = a+(b-a)/(tau*tau);

x2 = a+(b-a)/tau;

for (i=0;i

xd1[i] = x[i] + x1*p[i];

xd2[i] = x[i] + x2*p[i];

}

B = f (xd2);

A = f (xd1);

int j=0;

do{

if (A <= B){

b = x2;

x2 = x1;

x1 = a + b — x2;

B = A;

for (i=0;i

xd1[i] = x[i] + x1*p[i];

}

A = f (xd1);

}

else{

a = x1;

x1 = x2;

x2 = a + b — x1;

A = B;

for (i=0;i

xd2[i] = x[i] + x2*p[i];

}

B = f (xd2);

}

j++;

}while (fabs (b-a) > eps);

printf («%2d]t», j);

free (xd1);

free (xd2);

return (b+a)/2.;

}

char * ToRus (const char text []){

char * buf = (char*)malloc (strlen (text)+1);

CharToOem (text, buf);

return buf;

}

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