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

ГрафичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования

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

РСшСниСм ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ нСравСнства систСмы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π—Π›ΠŸ являСтся ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, содСрТащая Π³Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΏΠΎ ΠΎΠ΄Π½Ρƒ сторону ΠΎΡ‚ Π½Π΅Π΅. ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ полуплоскостСй, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ нСравСнством систСмы, называСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ опрСдСлСния. НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ удовлСтворяСт условиям Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ГрафичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ графичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования.

1. ВСорСтичСскиС свСдСния

НаиболСС простым ΠΈ Π½Π°Π³Π»ΡΠ΄Π½Ρ‹ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования (Π›ΠŸ) являСтся графичСский ΠΌΠ΅Ρ‚ΠΎΠ΄. Он ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ся для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π›ΠŸ с Π΄Π²ΡƒΠΌΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ.

Рассмотрим Π·Π°Π΄Π°Ρ‡Ρƒ Π›ΠŸ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅ записи:

ПолоТим n=2, Ρ‚. Π΅. рассмотрим эту Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ. ΠŸΡƒΡΡ‚ΡŒ систСма нСравСнств совмСстна (ΠΈΠΌΠ΅Π΅Ρ‚ хотя Π±Ρ‹ ΠΎΠ΄Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅).

КаТдоС нСравСнство этой систСмы гСомСтричСски опрСдСляСт ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ с Π³Ρ€Π°Π½ΠΈΡ‡Π½ΠΎΠΉ прямой ai1 x1 + ai2 x2 = bi, i=1,2,… m. Условия Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ полуплоскости, соотвСтствСнно, с Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹ΠΌΠΈ прямыми x1=0, x2 =0. БистСма совмСстна, поэтому полуплоскости, ΠΊΠ°ΠΊ Π²Ρ‹ΠΏΡƒΠΊΠ»Ρ‹Π΅ мноТСства, ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡΡΡŒ, ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ ΠΎΠ±Ρ‰ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, которая являСтся Π²Ρ‹ΠΏΡƒΠΊΠ»Ρ‹ΠΌ мноТСством ΠΈ ΠΏΡ€Π΅Π΄ΡΡ‚авляСт собой ΡΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ Ρ‚ΠΎΡ‡Π΅ΠΊ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ систСмы. Π‘ΠΎΠ²ΠΎΠΊΡƒΠΏΠ½ΠΎΡΡ‚ΡŒ этих Ρ‚ΠΎΡ‡Π΅ΠΊ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Он ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΎΡ‚Ρ€Π΅Π·ΠΊΠΎΠΌ, Π»ΡƒΡ‡ΠΎΠΌ, ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠΎΠΌ, Π½Π΅ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, гСомСтричСски Π·Π°Π΄Π°Ρ‡Π° Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования (Π—Π›ΠŸ) прСдставляСт собой отысканиС Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ†Π΅Π»ΠΈ максимальноС (минимальноС) Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ допустимыми Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ всС Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ описываСт мноТСство Ρ‚ΠΎΡ‡Π΅ΠΊ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΡ… Π½Π° ΠΎΠ΄Π½ΠΎΠΉ прямой. Π›ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ΅ нСравСнство описываСт Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π½Π° ΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΠΈ. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ плоскости описываСт нСравСнство 2Ρ…1+3Ρ…2 12. Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, построим ΠΏΡ€ΡΠΌΡƒΡŽ 2Ρ…1+3Ρ…2=12. Π­Ρ‚Π° прямая ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‡Π΅Ρ€Π΅Π· Ρ‚ΠΎΡ‡ΠΊΠΈ (6, 0) ΠΈ (0, 4). Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, какая ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ удовлСтворяСт нСравСнству Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅, Π½Π΅ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰ΡƒΡŽ прямой, ΠΈ ΠΏΠΎΠ΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ Π² Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎ. Если нСравСнство Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ, Ρ‚ΠΎ Π΄Π°Π½Π½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° являСтся допустимым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, содСрТащая Ρ‚ΠΎΡ‡ΠΊΡƒ, удовлСтворяСт нСравСнству. Π£Π΄ΠΎΠ±Π½ΠΎΠΉ для использования ΠΏΡ€ΠΈ подстановкС Π² Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎ являСтся Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚. ΠŸΠΎΠ΄ΡΡ‚Π°Π²ΠΈΠΌ Ρ…1=Ρ…2=0 Π² Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎ 2Ρ…1+3Ρ…212. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ 20+3012. Π”Π°Π½Π½ΠΎΠ΅ ΡƒΡ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ являСтся Π²Π΅Ρ€Π½Ρ‹ΠΌ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, нСравСнству 2Ρ…1+3Ρ…212 соотвСтствуСт ниТняя ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, содСрТащая Ρ‚ΠΎΡ‡ΠΊΡƒ (0.0). Π­Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ΅, ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π½ΠΎΠΌ Π½Π°. 1.

Рис. 1. НСравСнству 2Ρ…1+3Ρ…212 соотвСтствуСт ниТняя ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ.

Аналогично ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚ΡŒ графичСски ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования.

РСшСниСм ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ нСравСнства систСмы ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π—Π›ΠŸ являСтся ΠΏΠΎΠ»ΡƒΠΏΠ»ΠΎΡΠΊΠΎΡΡ‚ΡŒ, содСрТащая Π³Ρ€Π°Π½ΠΈΡ‡Π½ΡƒΡŽ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΠΏΠΎ ΠΎΠ΄Π½Ρƒ сторону ΠΎΡ‚ Π½Π΅Π΅. ΠŸΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠ΅ полуплоскостСй, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… опрСдСляСтся ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ нСравСнством систСмы, называСтся ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ опрСдСлСния. НСобходимо ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ удовлСтворяСт условиям Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (xj 0, j=1,…, n). ΠšΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ любой Ρ‚ΠΎΡ‡ΠΊΠΈ, ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ области опрСдСлСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ допустимым Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π·Π°Π΄Π°Ρ‡ΠΈ.

Для нахоТдСния ΡΠΊΡΡ‚Ρ€Π΅ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈ графичСском Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°Ρ‡ Π›ΠŸ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€-Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚, ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠ²Π»ΡΡŽΡ‚ΡΡ частными ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΌΠΈ Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Ρ‚. Π΅.

.

Π­Ρ‚ΠΎΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ измСнСния Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΡ€ΡΠΌΠ°Ρ, состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ смСщСнии Π»ΠΈΠ½ΠΈΠΈ Π² ΠΎΠ΄Π½Ρƒ сторону ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ пСрпСндикулярная Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ-Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρƒ, являСтся Π»ΠΈΠ½ΠΈΠ΅ΠΉ уровня Ρ†Π΅Π»Π΅Π²ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’ Π»ΡŽΠ±ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π»ΠΈΠ½ΠΈΠΈ уровня цСлСвая функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎ ΠΆΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΈΡ€Π°Π²Π½ΡΠ΅ΠΌ Ρ†Π΅Π»Π΅Π²ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ постоянной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ «a». МСняя Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ «a», ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сСмСйство ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… прямых, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… являСтся Π»ΠΈΠ½ΠΈΠ΅ΠΉ уровня.

Π’Π°ΠΆΠ½ΠΎΠ΅ свойство Π»ΠΈΠ½ΠΈΠΈ уровня Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ возрастаСт, Π° ΠΏΡ€ΠΈ смСщСнии Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ сторону — ΡƒΠ±Ρ‹Π²Π°Π΅Ρ‚.

Π‘ Π³Π΅ΠΎΠΌΠ΅Ρ‚ричСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Π² Π·Π°Π΄Π°Ρ‡Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования ищСтся такая угловая Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ Π½Π°Π±ΠΎΡ€ Ρ‚ΠΎΡ‡Π΅ΠΊ ΠΈΠ· Π΄ΠΎΠΏΡƒΡΡ‚ΠΈΠΌΠΎΠ³ΠΎ мноТСства Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ достигаСтся самая вСрхняя (ниТняя) линия уровня, располоТСнная дальшС (Π±Π»ΠΈΠΆΠ΅) ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ Π½Π°ΠΈΡΠΊΠΎΡ€Π΅ΠΉΡˆΠ΅Π³ΠΎ роста.

ГрафичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π—Π›ΠŸ состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… этапов:

Бтроится ΠΌΠ½ΠΎΠ³ΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ допустимых Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ Π—Π›ΠŸ — ΠžΠ”Π , Бтроится Π²Π΅ΠΊΡ‚ΠΎΡ€-Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ Π¦Π€ Π² ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π₯0 ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠžΠ”Π  ;

.

3. Линия уровня C1x1+C2x2 = Π° (Π°-постоянная Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°) — прямая, пСрпСндикулярная Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ — Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρƒ — пСрСдвигаСтся Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ этого Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΡΠ»ΡƒΡ‡Π°Π΅ максимизации f (x1,x2) Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠΊΠΈΠ½Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»ΠΎΠ² ΠžΠ”Π . ΠŸΡ€Π΅Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° (ΠΈΠ»ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ) области ΠΏΡ€ΠΈ этом Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΈ ΡΠ²Π»ΡΠ΅Ρ‚ся Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ максимума f (x1,x2).

4. Для нахоТдСния Π΅Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ достаточно Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π΄Π²Π° уравнСния прямых, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹Ρ… ΠΈΠ· ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ ΠΈ Π΄Π°ΡŽΡ‰ΠΈΡ… Π² ΠΏΠ΅Ρ€Π΅ΡΠ΅Ρ‡Π΅Π½ΠΈΠΈ Ρ‚ΠΎΡ‡ΠΊΡƒ максимума. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ f (x1,x2), Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅ Π² ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅, являСтся ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

ΠŸΡ€ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ f (x1,x2) линия уровня пСрСмСщаСтся Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ, ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ-Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Ρƒ. Если прямая ΠΏΡ€ΠΈ своСм Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ‚ ΠžΠ”Π , Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ максимум ΠΈΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ f (x1,x2) Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΠ΅Ρ‚.

Если линия уровня ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π° ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡŽ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π¦Π€ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΡΡ‚ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠ΅ этого ограничСния, Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΡƒΠ³Π»ΠΎΠ²Ρ‹ΠΌΠΈ Ρ‚ΠΎΡ‡ΠΊΠ°ΠΌΠΈ, ΠΈ, соотвСтствСнно, любая ΠΈΠ· ΡΡ‚ΠΈΡ… Ρ‚ΠΎΡ‡Π΅ΠΊ являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π—Π›ΠŸ.

3. ОписаниС интСрфСйса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ графичСский ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ программирования:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ графичСский интСрфСйс Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΌ являСтся Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса, ΠΊΠΎΠ³Π΄Π° основныС области: ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π²Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΈ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ построСния располоТСны Π² ΠΎΠ΄Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области. ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»ΠΎΠ², Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΌ располоТСнии основных областСй, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½ ΡΠΎΠ²Π΅Ρ€ΡˆΠ°Ρ‚ΡŒ лишниС пСрСмСщСния ΠΌΡ‹ΡˆΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ областями ΠΈ Π»ΠΈΡˆΠ½ΠΈΠ΅ ΠΊΠ»ΠΈΠΊΠΈ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅ΠΉ области, ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс являСтся Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ‚Π½Ρ‹ΠΌ, позволяСт ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² Π² Π±ΠΎΠ»ΡŒΡˆΠ΅ΠΌ ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅, поэтому данная рСализация интСрфСйса являСтся Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, рСорганизация Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ интСрфСйса Π½Π΅ Ρ†Π΅Π»Π΅ΡΠΎΠΎΠ±Ρ€Π°Π·Π½Π°.

Π‘ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс являСтся ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ, Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈ ΠΏΡ€ΠΎΡΡ‚Ρ‹ΠΌ Π² ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.

3. Листинг

Класс «Line»

public class Line {

public float a, b, c;

public Line () {

}

public Line (float a, float b, float c) {

this.a = a;

this.b = b;

this.c = c;

}

Line (Point p1, Point p2) {

this (p1.y — p2. y, p2. x — p1. x, p1. x*p2.y — p2. x*p1.y);

}

Line (float A, float B, Point point) {

this (new Point (point.x + B, point. y — A), point);

}

public boolean isParalellWithLine (Line line) {

float k = a * line. b — line. a * b;

return MathUtil. isEqualWithEplsilon (k, 0);

}

public Point getIntersection (Line line) {

if (isParalellWithLine (line))

return null;

float znam = 1 / (a * line. b — line. a * b);

float x = (b * line. c — line. b * c) * znam;

float y = (c * line. a — line. c * a) * znam;

return new Point (x, y);

}

public double getDistanceToPoint (Point p) {

return (a * p. x + b * p. y + c) / Math. sqrt (a*a + b*b);

}

public float getA () {

return — a;

}

public void setA (float a) {

this.a = - a;

}

public float getB () {

return — b;

}

public void setB (float b) {

this.b = - b;

}

public float getC () {

return c;

}

public void setC (float c) {

this.c = c;

}

public String getView () {

return (a < 0? — a: a) + «* x1 +» + (b < 0? — b: b) + «* x2 <=» + c;

}

}

Класс «Polygon»

public class Polygon {

private ArrayList points = new ArrayList ();

private ArrayList infinity = new ArrayList ();

private ArrayList values = new ArrayList ();

private Rect viewBox;

public Rect getViewBox () {

return viewBox;

}

public ArrayList getPoints () {

return points;

}

public Point getPoint (int i) {

return points. get (i);

}

public boolean getInfinity (int i) {

return infinity. get (i);

}

public float getValue (int i) {

return values. get (i);

}

private void clear () {

points.clear ();

infinity.clear ();

values.clear ();

viewBox = null;

}

private void addPoint (Point p, boolean inf) {

points.add (p);

values.add (0.0f);

infinity.add (inf);

}

public Polygon () {

}

private Polygon (BoundingBox bb, boolean b) {

Point h = bb. getHigh ();

Point l = bb. getLow ();

addPoint (new Point (h), b);

addPoint (new Point (l.x, h. y), b);

addPoint (new Point (l), b);

addPoint (new Point (h.x, l. y), b);

}

public Polygon (ArrayList lines) {

// this. lines = lines;

BoundingBox bb = new BoundingBox ();

for (Line li: lines) {

for (Line lj: lines) {

Point p = li. getIntersection (lj);

if (p == null)

continue;

boolean PointIn = true;

for (Line l: lines) {

if (l≠ li && l≠ lj && l. getDistanceToPoint (p) < 0) {

PointIn = false;

break;

}

}

if (PointIn) {

bb.addPoint (p);

}

}

}

if (! bb. isEmpty ()) {

bb.extend (1.0f);

viewBox = new Rect (bb);

}

cutPolygonWithLines (new Polygon (bb, true), lines);

}

private void cutPolygonWithLines (Polygon p, ArrayList lines) {

points = p. points;

infinity = p. infinity;

values = p. values;

for (Line l: lines) {

cutWithLine (l);

}

}

public List getBoundingPoints (Rect viewRec) {

return points;

}

private void cutWithLine (Line l) {

Polygon p = new Polygon ();

Point crossingPt = null;

for (int i = 0; i < points. size (); i++) {

int next = nextPointIndex (i);

boolean orgIsInside = (l.getDistanceToPoint (points.get (i)) > 0);

boolean destIsInside = (l.getDistanceToPoint (points.get (next)) > 0);

boolean infEdge = infinity. get (i);

if (orgIsInside≠ destIsInside) {

crossingPt = l. getIntersection (new Line (points.get (i), points. get (next)));

}

if (orgIsInside && destIsInside) {

p.addPoint (points.get (i), infinity. get (i));

} else if (! orgIsInside && destIsInside) {

if (! MathUtil. isEqualWithEplsilon (points.get (i), crossingPt)) {

p.addPoint (crossingPt, infEdge);

}

} else if (! orgIsInside &&! destIsInside) {

} else {

if (! MathUtil. isEqualWithEplsilon (points.get (i), crossingPt)) {

p.addPoint (points.get (i), infinity. get (i));

}

p.addPoint (crossingPt, false);

}

}

this.points = p. points;

this.infinity = p. infinity;

this.values = p. values;

}

public int nextPointIndex (int i) {

if (i == points. size () — 1) {

return 0;

} else {

return i+1;

}

}

public int prevPointIndex (int i) {

if (i == 0) {

return points. size () — 1;

} else {

return i-1;

}

}

void setTargetLine (float A, float B, boolean max) {

if (points.isEmpty ()) {

extremums = null;

}

for (int i = 0; i < points. size (); i++) {

infinity.get (i);

Point p = points. get (i);

float value = p. x * A + p. y * B;

values.set (i, value);

}

LinkedList extrList = new LinkedList ();

extrList.add (0);

for (int i = 1; i < values. size (); i++) {

if (max) {

float extr = values. get (extrList.getLast ());

if (MathUtil.isEqualWithEplsilon (extr, values. get (i))) {

if (values.get (i) > extr) {

extrList.add (i);

} else {

extrList.addFirst (i);

}

} else if (extr < values. get (i)) {

extrList.clear ();

extrList.add (i);

}

} else {

float extr = values. get (extrList.getLast ());

if (MathUtil.isEqualWithEplsilon (extr, values. get (i))) {

if (values.get (i) < extr) {

extrList.add (i);

} else {

extrList.addFirst (i);

}

} else if (extr > values. get (i)) {

extrList.clear ();

extrList.add (i);

}

}

}

extremums = extrList;

}

private LinkedList extremums;

LinkedList getExtremums () {

return extremums;

}

}

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

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

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

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