ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½ΡΠ΅Π·Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΠΠ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π° ΠΠΠ
ΠΠ»Ρ ΡΡ Π΅ΠΌΡ Π·Π°ΠΌΠΊΠ½ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ (Π ), ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² (ΡΠΈ) ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΡΠΌ. ΡΠΈΡ. 1) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Ρ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΠΠ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΡ I =. ΠΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ mT Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½ΡΠ΅Π·Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΠΠ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π° ΠΠΠ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΡΡΡΠΎΠ²Π°Ρ ΡΠ°Π±ΠΎΡΠ°
" ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½ΡΠ΅Π·Π° Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΠΠ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π° ΠΠΠ"
Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΡΠΉ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΡΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ
ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΠ²ΡΡ ΡΠ°Π±ΠΎΡΡ:
1. ΠΠ»Ρ ΡΡ Π΅ΠΌΡ Π·Π°ΠΌΠΊΠ½ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Ρ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ (Π ), ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ, ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² (ΡΠΈ) ΠΈ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (ΡΠΌ. ΡΠΈΡ. 1) Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Ρ Π·Π°ΠΊΠΎΠ½ΠΎΠΌ ΠΠΠ ΠΏΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΊΡΠΈΡΠ΅ΡΠΈΡ I =.
2. ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ:
— ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΡ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π£ΡΠ°Π²Π½Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π² ΡΠΎΡΠΌΠ΅ ΠΠΎΡΠΈ ΠΏΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΠ£.
— ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°.
— ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°ΡΡΠ΅ΡΠ° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°.
— ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»Π° I ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° q0, q1, q2.
3. Π‘ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΡΡΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ².
4. ΠΡΠΎΠ²Π΅ΡΡΠΈ ΡΠ°ΡΡΠ΅ΡΡ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΡ Π² ΠΏΠΎΡΡΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² Π·Π°ΠΌΠΊΠ½ΡΡΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°, ΠΏΡΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΌ ΡΠΊΠ°ΡΠΊΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π°Π΄Π°ΡΡΠ΅Π³ΠΎ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ².
Π ΠΈΡ. 1
ΠΠ° ΡΡ Π΅ΠΌΠ΅ (ΡΠΈΡ. 1) Π²Π²Π΅Π΄Π΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ:
Π ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ, Π€Π ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ², ΠΠ£ ΠΎΠ±ΡΠ΅ΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΈΠΌΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ (ΠΊΠ²Π°Π½ΡΠΎΠ²Π°ΡΠ΅Π»Ρ),
g (t) Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅,
?(t) ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ,
T ΡΠ°ΠΊΡ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ,
UT (t) ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π» Π² Π²ΠΈΠ΄Π΅ ΡΠ΅ΡΠ΅ΡΡΠ°ΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ,
UT*(t) ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π» Π² Π²ΠΈΠ΄Π΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ²,
f (t) Π²ΠΎΠ·ΠΌΡΡΠ°ΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅,
y (t)ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠ°Ρ Π²Π΅Π»ΠΈΡΠΈΠ½Π°.
ΠΠ΅ΡΠ΅Π΄Π°ΡΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΠΠ Π·Π°ΠΊΠΎΠ½ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
ΠΠ΅ΡΠ΅Π΄Π°ΡΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
Π³Π΄Π΅
k0 — ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (k0 =1), Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π°Π½Ρ Π² ΡΠ°Π±Π»ΠΈΡΠ΅ № 1. ΠΠΎΠΌΠ΅Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠΈΡΡΠ΅ ΡΠΈΡΡΠ°. Π£ ΠΌΠ΅Π½Ρ Π½ΠΎΠΌΠ΅Ρ ΡΠΈΡΡΠ° 2 222, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ 2-ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ΅ΡΠΎΠ΄ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΡΡ Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΉ (ΠΠ£) ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΠ΅ΡΠ΅Π΄Π°ΡΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ (ΠΠ€) ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ Π½Π° 3 Π·Π²Π΅Π½Π° 1-Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°:
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΠ€ ΠΠ£: ΠΠ°ΠΏΠΈΡΠ΅ΠΌ Π² ΡΠΎΡΠΌΠ΅ ΠΠΎΡΠΈ:
ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ Π·Π²Π΅Π½ΡΠ΅Π²:
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡΠ°Π²Π½ΡΠΌΠΈ Π½ΡΠ»Ρ. ΠΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΈΠ³Π½Π°Π» ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ ΠΎΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°, Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡΠ°Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ-Π·Π²Π΅Π½Ρ. ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π° Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠΈΡΠ°Π΅ΠΌ, Π·Π½Π°Ρ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ Π² ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΠΉΠ»Π΅ΡΠ°. Π‘ΡΡΠ½ΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, Π·Π° Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈ ΡΡΠΈΡΠ°Ρ Π΅Ρ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΠΈΡΠ°ΡΡ:
ΠΠΎΡΠΎΠΌ ΠΏΠΎ ΠΠ£ Π² ΡΠΎΡΠ΅ ΠΠΎΡΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΡΠ°Π· Π΄Π»Ρ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
ΠΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΉ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎ Π΅Π³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΡ — Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠΌΡ ΠΏΡΠΎΠΏΠΎΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎ-ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΡΠ½ΠΎ-Π΄ΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌΡ (ΠΠΠ) ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΡ. Π£ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π² Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌ Π²ΠΈΠ΄Π΅:
ΠΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°. Π£ Π½Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ Π² Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ (ΠΎΡ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ) Π·Π½Π°ΡΠΈΡ, Π½Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΠ½Π΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΠΈ. ΠΠ½Π°Π»ΠΎΠ³ΠΎΠ²ΡΡ Π±Π΅Π·ΡΠ½Π΅ΡΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠ² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠ΅Π½Π΅Π±ΡΠ΅ΡΡ ΠΈΠ½Π΅ΡΡΠΈΠΎΠ½Π½ΠΎΡΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΡΠΈΡΠ»Π΅Π½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°ΡΡΠ΅ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»ΠΎΠ² (Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ — ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²) ΠΈ Π°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠΈΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΡΡ (Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ°Π·Π½ΠΎΡΡΠ½ΡΠΌ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π½Π°Π·Π°Π΄) ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ t=mT:
(1)
ΠΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΌΠΌΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»Π° Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ°ΠΊΡΠ΅ ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°ΡΡΠ°ΡΠ½Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΈ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΡΡ ΡΠΎΡΠΌΡ. ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ (1) Π΄Π»Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ m-1:
ΠΡΡΡΠ΅ΠΌ ΠΈΠ· ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ (1) ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ (2):
ΠΡΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌΡ Π²ΠΈΠ΄Ρ:
ΠΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎ ΡΠ°Π·Π½ΠΎΡΡΠ½ΠΎΠΌΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΠΠ€ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°:
ΠΠ°ΠΏΠΈΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΡΠ΅ΠΏΠ΅Π½ΡΠΌ z:
Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² (ΠΈΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΎΡ) Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ°
ΠΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΉ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ Π²ΡΠ΄Π°Π΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ mT Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ ΠΊΠ»ΡΡΠ°. ΠΠ»Ρ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π½Π΅ΠΏΡΠ΅ΡΡΠ²Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅. ΠΠ½ΡΠ΅ΡΠΏΠΎΠ»ΡΡΠΎΡ 0-Π³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΌΠ΅ΠΆΠ΄Ρ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΠΌΠΈ ΠΊΠ»ΡΡΠ° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π½Π° ΡΠ²ΠΎΠ΅ΠΌ Π²ΡΡ ΠΎΠ΄Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ UT (t).
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»Π° I
ΠΠ°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° q0, q1, q2. Π Ρ ΠΎΠ΄Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ΅ΠΊΡΡΡΠ΅Π½ΡΠ½ΠΎ ΡΡΠΈΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π» ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ I, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ². ΠΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠ°ΠΏΠ΅ΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΡΠ°ΠΏΠ΅ΡΠΈΠΉ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠ°. ΠΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΠ΅ΡΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½Π°Ρ.. ΠΠΎΡΠ»Π΅ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ (Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎΠ΅) ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ I, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² q0-q2.
ΠΠΎΠ»ΡΡΠ°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ. ΠΠ΅Π»ΠΈΡΠΈΠ½Ρ I ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π₯ΡΠΊΠ°-ΠΠΆΠΈΠ²ΡΠ° (Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΌΠ΅ΡΠΎΠ΄Π° Π²Π·ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΈΠ· ΠΊΡΡΡΠ° «Π§ΠΈΡΠ»Π΅Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ»).
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΡΡΡΠ° ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
ΠΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π»Ρ ΡΠΈΡΠ»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΎΡΡΠ°Π²Π»Π΅Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° OptimizeD. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΠΏΠΈΡΠ°Π½Π° Π² ΡΡΠ΅Π΄Π΅ Borland C++ Builder 5. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ 1.
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°ΡΡΠ΅ΡΠΎΠ²
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°:
Π ΠΈΡ.
Π ΠΈΡ.
ΠΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈ Π΄ΡΡΠ³ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ² ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°:
q0=2,01 q0=1,82
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ MatLab Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠΌ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠΎΠΌ
ΠΠ»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΡΠ΄ΠΎΠ±Π½ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Simulink Response Optimization. (ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠ΅Π°ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ). Π‘ΠΎΡΡΠ°Π²ΠΈΠΌ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π² Simulink:
Π ΠΈΡ.
ΠΡΠΈΡΠ΅ΡΠΈΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΡΡΠΈΡΠ°Π΅ΠΌ Π² Simulink ΠΈ ΠΏΠΎΠ΄Π°Π΄ΠΈΠΌ Π½Π° Π±Π»ΠΎΠΊ Signal Constraint. ΠΠ»ΠΎΠΊ Signal Constraint ΠΏΠΎΠ΄Π±ΠΈΡΠ°Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Ρ ΡΠ°ΠΊΠΎΠΉ ΡΠ΅Π»ΡΡ (Goals), ΡΡΠΎΠ±Ρ Π»ΠΈΠ±ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ (Enforce) ΡΠ»ΠΎΠΆΠΈΡΡΡΡ ΠΏΠΎΠ΄Π°Π²Π°Π΅ΠΌΡΠΉ Π½Π° Π±Π»ΠΎΠΊ ΡΠΈΠ³Π½Π°Π» Π² Π·Π°Π΄Π°Π½Π½ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΡ (Enforce signal bounds), Π»ΠΈΠ±ΠΎ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΡ (ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ — Tracks) Π΅Π³ΠΎ ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΠΈΠ²ΠΎΠΉ (Tracks reference signal).
ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°, Π·Π°Π΄Π°Π΄ΠΈΠΌ ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ q0, q1,q2. Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΠΌ ΡΠ°ΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅) Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠΌΠ°Π½Π΄:
>> q0=0.5;
>> q1=-1;
>> q2=2;
ΠΠ°Π»Π΅Π΅ Π½Π°Π΄ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π±Π»ΠΎΠΊ Signal Constraint. Optimization->Tuned Parameters. Π£ΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· Workspace ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΡ Π³ΡΠ°Π½ΠΈΡΡ ΠΈ Π½Π°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π ΠΈΡ.
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅Π»ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π²ΡΠ±Π΅ΡΠ΅ΠΌ Tracks reference signal. ΠΠ°Π΄Π°Π΄ΠΈΠΌ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π² Ρ ΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠΎ ΡΠΎΡΠΊΠ°ΠΌ. Goals->Desired Response (ΠΆΠ΅Π»Π°Π΅ΠΌΠ°Ρ ΡΠ΅Π°ΠΊΡΠΈΡ).
Π ΠΈΡ.
ΠΡΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ. ΠΡΠ½ΠΊΡΠΈΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π§Π΅ΡΠ½ΠΎΠΉ Π»ΠΈΠ½ΠΈΠ΅ΠΉ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π°ΡΠ°ΡΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π»Π° I, Π² Ρ ΠΎΠ΄Π΅ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π₯ΠΎΡΠΎΡΠΎ Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠ°Π» ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΊ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Ρ. Π΅. ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
Π ΠΈΡ Π₯ΠΎΠ΄ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ:
max Directional First-order
Iter S-count f (x) constraint Step-size derivative optimality Procedure
0 1 182.61 0
1 15 149.619 0 0.333 685 350
2 24 98.4927 0 0.25 330 128
3 33 50.8143 0 0.172 66.2 43.8
4 40 42.7297 0 0.646 21 11.8
5 47 36.0404 0 1 -0.876 9.52
6 54 35.0789 0 1 -0.434 5.87
7 61 34.8456 0 1 0.394 3.84
8 68 34.8076 0 1 0.0233 0.734
9 75 34.7892 0 1 -0.652 0.116
Optimization terminated due to slow progress in parameter or objective values.
To optimize further, go to Optimization Options and decrease the parameter and/or function tolerances.
q0 = 1.9207
q1 = -1.9958
q2 = 0.5454
ΠΠΈΠ΄ ΠΏΠΎΠ»ΡΡΠΈΠ²ΡΠ΅Π³ΠΎΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°:
>>plot (ScopeData.time, ScopeData.signals.values)
Π ΠΈΡ.
Π‘ΡΠ°Π²Π½ΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΠΎΠ², Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠΌΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ OptimizeD:
Π’Π°Π±Π»ΠΈΡΠ°
ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ | OptimizeD | MatLab | Π Π°Π·Π»ΠΈΡΠΈΠ΅, % | |
q0 | 1,918 | 1.920 | 1,0 | |
q1 | — 2,065 | — 1.995 | — 3,3 | |
q2 | 0,614 | 0.545 | — 11 | |
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ OptimizeD
ΠΠΎΠ΄ΡΠ»Ρ MainCode. cpp ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΈ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π² ΡΠ΅Π»ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ°.
//—————————————————————————————————————;
// ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΠΎ Π¦Π‘Π£
// Π ΡΠ΅Π»ΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΈ «ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ,
// ΠΈΡΠΊΠ»ΡΡΠ΅Π½Ρ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΠΠ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΠΉΠ»Π΅ΡΠ°
//—————————————————————————————————————;
// Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ, Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ
// ΠΏΠ΅ΡΠ΅ΡΡΠ΅Ρ Π³ΡΠ°ΡΠΈΠΊΠΎΠ² Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π±ΠΎΡΠ° Π΅Ρ
// ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΡΠ΅ΠΌ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ Π² 100 ΡΠ°Π·. ΠΡΠΈ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ
// Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠ΅Π½Π΅Π΅ 1 ΡΠ΅ΠΊ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ 1000 ΡΠ°Π³ΠΎΠ².
//—————————————————————————————————————;
#include
#include
#include
#include
#pragma hdrstop
#include «MainCode.h»
//—————————————————————————————————————;
#pragma package (smart_init)
#pragma resource «*.dfm»
TMainForm *MainForm; //ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π³Π»Π°Π²Π½ΡΡ ΡΠΎΡΠΌΡ
//ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ°ΡΡΠ΅ΡΠ°. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±ΡΡΠ²Π»Π΅Π½Ρ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌΠΈ.
//ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
float dt; //ΡΠ°Π³ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
float t; //Π²ΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
//ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
float tau1; //ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 1
float tau2; //ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 2
float tau3; //ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ 3
//ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
float T; //Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΡΠ°ΠΊΡΠ° ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΠΊ.
float q0; //ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΡΠΈ z0
float q1; //ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΡΠΈ z^-1
float q2; //ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ ΠΏΡΠΈ z^-2
//ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π’ΠΎΠΆΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅.
float r; //ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ r
float I; //ΡΠ°ΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ
int NC; //ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ
//—————————————————————————————————————;
//ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ» — Π°Π»Π³ΠΎΡΠΈΡΠΌ Π₯ΡΠΊΠ°-ΠΠΆΠΈΠ²ΡΠ°
void __fastcall TMainForm: Button1Click (TObject *Sender)
{
//Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°ΡΡΠ΅ΡΠ°
LoadParam ();
//ΡΠ±ΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ° «Π₯ΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ»
NC=0;
Chart1->Series[0]->Clear ();
Chart1->Title->Text->Strings[1]="ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π°ΡΠ°ΡΠ°" ;
Button1->Enabled=false;
Button1->Caption="ΠΠ΄Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ" ;
//Π½Π°ΡΠ°Π»ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ
TDateTime Time;
Time=Time.CurrentTime ();
/*———————CΠ°ΠΌ Π°Π»Π³ΠΎΡΠΈΡΠΌ. ΠΠ·ΡΡ Π³ΠΎΡΠΎΠ²ΡΠΉ.—————————————*/
/*ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°Π΄Π°ΡΡ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π³Π° H, ΠΎΠ±ΡΠ΅Π³ΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Z[1] ΠΈ Z[2] Π² ΡΠΎΡΠΊΠ°Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΡΡΠ½ΠΊΡΠΈΠΈ F.
Π§ΠΈΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ N. ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π»ΠΈΡΡ ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅ FUNK. ΠΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π»ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π³Π° Π·Π°Π΄Π°Π΅ΡΡΡ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π² Π²ΠΈΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° if K<1E-15 …(ΡΠΌ. ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΌΠ΅ΡΠΊΠΈ 7:) */
int i, J, PS, BS, N;
float K, H, FI, FB, Z1;
float Y[10], P[10], B[10], Z[10];
H=0.1; N=3; K=H; Z[1]=q0; Z[2]=q1;Z[3]=q2;
for (i=1;i<=N;i++)
{
Y[i]=Z[i]; P[i]=Z[i]; B[i]=Z[i];
}
FUNK (Z); Z1=I;
FI=Z1; PS=0; BS=1; J=1; FB=FI;
S4:
Z[J]=Y[J]+K; FUNK (Z); Z1=I;
if (Z1
Z[J]=Y[J]-K; FUNK (Z); Z1=I;
if (Z1
Z[J]=Y[J]; goto S2;
S1:
Y[J]=Z[J];
S2:
FUNK (Z); Z1=I; FI=Z1;
if (J==N) goto S3;
J=J+1; goto S4;
S3:
if (FI<(FB-1E-6)) goto S5;
if ((PS==1)&(BS==0)) goto S6;
goto S7;
S6:
for (i=1;i<=N;i++)
{
P[i]=B[i]; Y[i]=B[i]; Z[i]=B[i];
}
FUNK (Z); Z1=I; BS=1; PS=0; FI=Z1; FB=Z1; J=1; goto S4;
S7:
K=K/10;
if (K<1E-6) goto S8;
J=1; goto S4;
S5:
for (i=1;i<=N;i++)
{
P[i]=2*Y[i]-B[i]; B[i]=Y[i]; Z[i]=P[i]; Y[i]=Z[i];
}
FUNK (Z); Z1=I; FB=FI; PS=1; BS=0; FI=Z1; J=1; goto S4;
S8:
/*——————— ΠΠ»Π³ΠΎΡΠΈΡΠΌ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ. ——————————————-*/
//ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ
Time=Time.CurrentTime ()-Time;
Chart1->Title->Text->Strings[1]=
" ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° Π·Π° «+IntToStr (NC)+» ΡΠ°Π³ΠΎΠ² ΠΈ «+Time;
Button1->Enabled=true;
Button1->Caption="ΠΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ" ;
}
//—————————————————————————————————————;
//ΡΡΠ½ΠΊΡΠΈΡ-Π°Π΄Π°ΠΏΡΠ΅Ρ FUNC. ΠΠ°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° CompProcess,
//Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΠΎΠΊΠ½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°Π»ΠΈΡΠΈΠ΅ Π΅Ρ Π²ΡΠ·Π²Π°Π½ΠΎ ΠΏΡΠΈΡΡΡΠ²ΠΈΠ΅ΠΌ
//ΡΠ΅ΠΆΠΈΠΌΠ° ΡΡΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΡΡΠΎ-Π»ΠΈΠ±ΠΎ ΠΌΠ΅Π½ΡΡΡ Π² Π³ΠΎΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅
//Π°Π»Π³ΠΎΡΠΈΡΠΌΠ° Π₯ΡΠΊΠ°-ΠΠΆΠΈΠ²ΡΠ°
void __fastcall TMainForm: FUNK (float *Z)
{
static int i;
q0=Z[1];
q1=Z[2];
q2=Z[3];
StringGrid2->Cells[1][7]=FloatToStrF (q0,ffGeneral, 4,5);
StringGrid2->Cells[1][8]=FloatToStrF (q1,ffGeneral, 4,5);
StringGrid2->Cells[1][9]=FloatToStrF (q2,ffGeneral, 4,5);
CompProcess ();
ShowOptimize ();
i++; if (!(i%10)) Application->ProcessMessages ();
}
//—————————————————————————————————————;
//ΡΠ°ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΡΠΈΡΡΠ΅ΠΌΠ΅
void __fastcall TMainForm: CompProcess (void)
{
//ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
float g; //Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
float E; //ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°ΠΊΡ E (m)
float E1; //ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π°Π΄Π΅ΡΠΆΠ°Π½Π½Π°Ρ Π½Π° 1 ΡΠ°ΠΊΡ E (m-1)
float E2; //ΠΎΡΠΈΠ±ΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΡ, Π·Π°Π΄Π΅ΡΠΆΠ°Π½Π½Π°Ρ Π½Π° 2 ΡΠ°ΠΊΡΠ° E (m-2)
float U; //Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ Π€Π ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
float x1; //Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ 1-Π³ΠΎ Π·Π²Π΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°
float x2; //Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ 2-Π³ΠΎ Π·Π²Π΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ°
float y; //Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ 3-Π³ΠΎ Π·Π²Π΅Π½Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΠΈΡΡΠ΅ΠΌΡ
float DER1; //Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ Π²ΡΠ΅Ρ Π·Π²Π΅Π½ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°,
//Ρ.ΠΊ. Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π· Π·Π°Π½ΠΎΠ²ΠΎ, Π½Π΅Ρ
//Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Ρ ΡΠ°Π½ΠΈΡΡ Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π·Π²Π΅Π½Π°
//ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ mT ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
int NSkip, NS;
//ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠ΅ΡΠ°
float rt; //ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΊ.
float qt; //Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΡΠ΅ΠΊ.
float yst; //ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ²ΡΠΈΠΉΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ
//ΡΠ°ΡΡΠ΅ΡΠ° Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π²Π²ΠΎΠ΄ΠΈΡΡΡ Π·Π°ΡΠ°Π½Π΅Π΅
float nmax;//ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡ ΡΠΈΠ³Π½Π°Π»Π°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ
//ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ
DWORD i, m; //ΡΡΠ΅ΡΡΠΈΠΊΠΈ
AnsiString str;
//Π·Π°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ°ΡΡΠ΅ΡΠ°
rt=0;nmax=0;
//Π·Π°Π΄Π°Π΅ΠΌ Π·Π°Π΄Π°ΡΡΠ΅Π΅ Π²ΠΎΠ·Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
g=1;yst=g;
//Π·Π°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
E=0;E1=0;U=0;
//Π·Π°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
x1=0;x2=0;y=0;
//Π·Π°Π΄Π°Π΅ΠΌ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΡΠΈΡΠ΅ΡΠΈΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
I=0;
//ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π³ΠΎΠ² ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ
NSkip=T/dt;NS=0;
//Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΡΠ°
StringGrid2->Cells[1][6]=FloatToStrF (NSkip*dt, ffGeneral, 7,7);
//ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΠΌ Π³ΡΠ°ΡΠΈΠΊΠΈ
for (i=0;i<5;i++) Chart->Series[i]->Clear ();
//Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π² Π³ΡΠ°ΡΠΈΠΊ ΡΠΎΠ»ΡΠΊΠΎ 1000 ΡΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ
m=t/(dt*1000); if (m==0) m=1;
//ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
while (rt
//ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π΄ΠΈΡΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ mT — Π² ΡΡΠΈ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ
if (!(NS%NSkip)){
//ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ°Π±ΠΎΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ°
//ΡΡΠΈΡΠ°Π΅ΠΌ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ — Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΡΡ-Π²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ
E2=E1;
E1=E;
E=g-y;
//Ρ Π²ΡΡ ΠΎΠ΄Π° ΡΡΡ-Π²Π° ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ΠΏΠΎΠ΄Π°Π΅ΠΌ ΡΠΈΠ³Π½Π°Π» Π½Π° ΡΠ΅Π³ΡΠ»ΡΡΠΎΡ
U=U+q0*E+q1*E1+q2*E2;
//Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π½Π° Π³ΡΠ°ΡΠΈΠΊ
Chart->Series[4]->AddXY (rt, U," «, clBlue);
}
NS++;
//Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ U Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅ΡΡΡ Π΄ΠΎ
//ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΠΊΡΠ° ΠΊΠ²Π°Π½ΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΠ΅Π»Π΅
//ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Π½Π΅Ρ.
//Ρ Π²ΡΡ ΠΎΠ΄Π° ΡΠ΅Π³ΡΠ»ΡΡΠΎΡΠ° ΠΏΠΎΠ΄Π°Π΅ΠΌ ΡΠΈΠ³Π½Π°Π» Π½Π° Π·Π²Π΅Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
//ΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠΈΡΠ°Π΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ — ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ ΠΠΉΠ»Π΅ΡΠ°
//1-ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ
DER1=(U-x1)/tau1;
x1=x1+DER1*dt;
//2-ΠΎΠ΅ Π·Π²Π΅Π½ΠΎ
DER1=(x1-x2)/tau2;
x2=x2+DER1*dt;
//Π²ΡΡ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΡ. 3-ΠΈΠ΅ Π·Π²Π΅Π½ΠΎ
DER1=(x2-y)/tau3;
y=y+DER1*dt;
//ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°
if ((y>yst*1.05)|(y
//ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅
if (y>nmax) nmax=y;
//Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠ΅ Π²ΡΡ ΠΎΠ΄Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π² Π³ΡΠ°ΡΠΈΠΊ
i++; if (!(i%m)) Chart->Series[0]->AddXY (rt, y," «, clGreen);
//ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΠΌ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π½Π° ΡΠ°Π³ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
rt=rt+dt;
//ΡΡΠΈΡΠ°Π΅ΠΌ ΠΊΡΠΈΡΠ΅ΡΠΈΠΉ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ I. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²,
//ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄Π° ΡΡΠ°ΠΏΠ΅ΡΠΈΠΉ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ, ΡΡΠΎ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ ΡΡΠ°ΠΏΠ΅ΡΠΈΠΉ ΠΎΡ
//ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π±Π΅ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΠΎΠ²ΠΈΠ½ΠΊΠ°. ΠΡΠΈ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠΈΡΠ»Π΅
//ΡΠ°Π·Π±ΠΈΠ΅Π½ΠΈΠΉ ΡΠ°Π·Π½ΠΈΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ.
I=I+E*E+r*(U-g)*(U-g);
}
I=I*dt;
//ΡΠΈΡΡΠ΅ΠΌ Π½Π° Π³ΡΠ°ΡΠΈΠΊΠ΅ Π»ΠΈΠ½ΠΈΠΈ ymax, ymin ΠΈ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΡΡ — Π²ΡΠ΅ΠΌΡ
Chart->Series[1]->AddXY (0,yst*1.05," «, clRed);
Chart->Series[1]->AddXY (t, yst*1.05," «, clRed);
Chart->Series[2]->AddXY (0,yst*0.95," «, clRed);
Chart->Series[2]->AddXY (t, yst*0.95," «, clRed);
Chart->Series[3]->AddXY (qt, 0," «, clRed);
Chart->Series[3]->AddXY (qt, yst*1.05," «, clRed);
//Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π°Π΄ΠΏΠΈΡΡ ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°
if (fabs (t-qt)<=dt*10) str="ΠΡΠ΅ΠΌΡ ΠΏ/ΠΏ — ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΠ»ΡΡ" ;
else str="ΠΡΠ΅ΠΌΡ ΠΏ/ΠΏ="+FloatToStrF (qt, ffFixed, 5,4)+" ΡΠ΅ΠΊ" ;
Chart->Title->Text->Strings[1]=str;
//ΡΡΠΈΡΠ°Π΅ΠΌ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠ΅ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
Chart->Title->Text->Strings[2]="ΠΠ΅ΡΠ΅ΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ «+
FloatToStrF ((nmax/g-1)*100,ffFixed, 5,4)+" %" ;
}
//—————————————————————————————————————;
//——————————-ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ—————————————//
//ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° TMainForm. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
//TMainForm, Ρ. Π΅. ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
__fastcall TMainForm: TMainForm (TComponent* Owner)
: TForm (Owner)
{
//ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠΊΠ½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
StringGrid2->Cells[0][0]="ΠΠΌΡ" ;
StringGrid2->Cells[1][0]="ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅" ;
StringGrid2->Cells[0][1]="dt" ;
StringGrid2->Cells[0][2]="t" ;
StringGrid2->Cells[0][3]="tau1″ ;
StringGrid2->Cells[0][4]="tau2″ ;
StringGrid2->Cells[0][5]="tau3″ ;
StringGrid2->Cells[0][6]="T" ;
StringGrid2->Cells[0][7]="q0″ ;
StringGrid2->Cells[0][8]="q1″ ;
StringGrid2->Cells[0][9]="q2″ ;
StringGrid2->Cells[0][10]="r" ;
StringGrid2->Col=1;
StringGrid2->Row=7;
//Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²
IniFile = new TIniFile (ChangeFileExt (Application->ExeName, «.ini»));
LoadParam ();
}
//—————————————————————————————————————;
//Π΄Π΅ΡΡΡΡΠΊΡΠΎΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° TMainForm. ΠΡΠ·ΡΠ²Π°Π΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°
//TMainForm, Ρ. Π΅. ΠΎΠ΄ΠΈΠ½ ΡΠ°Π· ΠΏΡΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
void __fastcall TMainForm: FormDestroy (TObject *Sender)
{
SaveParam ();
delete IniFile;
}
//—————————————————————————————————————;
//Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈΠ· ΠΎΠΊΠ½Π°, ΠΈΠ»ΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, ΠΈΠ»ΠΈ ΠΏΡΠΈ ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
void __fastcall TMainForm: LoadParam (void)
{
//Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌ ΡΠ½Π°ΡΠ°Π»Π° Π² ΠΎΠΊΠ½ΠΎ
if (StringGrid2->Cells[1][1]=="")
StringGrid2->Cells[1][1]=IniFile->ReadString («Integration» ," dt", 0.01);
if (StringGrid2->Cells[1][2]=="")
StringGrid2->Cells[1][2]=IniFile->ReadString («Integration» ," t", 10);
if (StringGrid2->Cells[1][3]=="")
StringGrid2->Cells[1][3]=IniFile->ReadString («Plant» ," tau1″, 0.3);
if (StringGrid2->Cells[1][4]=="")
StringGrid2->Cells[1][4]=IniFile->ReadString («Plant» ," tau2″, 0.2);
if (StringGrid2->Cells[1][5]=="")
StringGrid2->Cells[1][5]=IniFile->ReadString («Plant» ," tau3″, 0.7);
if (StringGrid2->Cells[1][6]=="")
StringGrid2->Cells[1][6]=IniFile->ReadString («Controller» ," T", 0.4);
if (StringGrid2->Cells[1][7]=="")
StringGrid2->Cells[1][7]=IniFile->ReadString («Controller» ," q0″, 0.5);
if (StringGrid2->Cells[1][8]=="")
StringGrid2->Cells[1][8]=IniFile->ReadString («Controller» ," q1″ ,-1);
if (StringGrid2->Cells[1][9]=="")
StringGrid2->Cells[1][9]=IniFile->ReadString («Controller» ," q2″, 2);
if (StringGrid2->Cells[1][10]=="")
StringGrid2->Cells[1][10]=IniFile->ReadString («Optimize» ," r", 0.2);
//Π° ΠΏΠΎΡΠΎΠΌ ΠΈΠ· ΠΎΠΊΠ½Π° ΡΡΠΈΡΡΠ²Π°Π΅ΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
dt=StrToFloat (StringGrid2->Cells[1][1]);
t=StrToFloat (StringGrid2->Cells[1][2]);
tau1=StrToFloat (StringGrid2->Cells[1][3]);
tau2=StrToFloat (StringGrid2->Cells[1][4]);
tau3=StrToFloat (StringGrid2->Cells[1][5]);
T=StrToFloat (StringGrid2->Cells[1][6]);
q0=StrToFloat (StringGrid2->Cells[1][7]);
q1=StrToFloat (StringGrid2->Cells[1][8]);
q2=StrToFloat (StringGrid2->Cells[1][9]);
r=StrToFloat (StringGrid2->Cells[1][10]);
}
//—————————————————————————————————————;
//ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π² ΡΠ°ΠΉΠ»
void __fastcall TMainForm: SaveParam (void)
{
IniFile->WriteString («Integration» ," dt", FloatToStrF (dt, ffGeneral, 3,4));
IniFile->WriteString («Integration» ," t", FloatToStrF (t, ffGeneral, 3,4));
IniFile->WriteString («Plant» ," tau1″, FloatToStrF (tau1,ffGeneral, 3,4));
IniFile->WriteString («Plant» ," tau2″, FloatToStrF (tau2,ffGeneral, 3,4));
IniFile->WriteString («Plant» ," tau3″, FloatToStrF (tau3,ffGeneral, 3,4));
IniFile->WriteString («Controller» ," T", FloatToStrF (T, ffGeneral, 3,4));
IniFile->WriteString («Controller» ," q0″, FloatToStrF (q0,ffGeneral, 3,4));
IniFile->WriteString («Controller» ," q1″, FloatToStrF (q1,ffGeneral, 3,4));
IniFile->WriteString («Controller» ," q2″, FloatToStrF (q2,ffGeneral, 3,4));
IniFile->WriteString («Optimize» ," r", FloatToStrF (r, ffGeneral, 3,4));
}
//—————————————————————————————————————;
//Π²ΡΠ²ΠΎΠ΄ΠΈΡ Ρ ΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π½Π° Π³ΡΠ°ΡΠΈΠΊ
void __fastcall TMainForm: ShowOptimize (void)
{
NC++;
Chart1->Series[0]->AddXY (NC, I," «, clRed);
}
//—————————————————————————————————————;
//ΡΠ±ΡΠΎΡ Π³ΡΠ°ΡΠΈΠΊΠ° Ρ ΠΎΠ΄ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ
void __fastcall TMainForm: Button2Click (TObject *Sender)
{
NC=0;
Chart1->Series[0]->Clear ();
}
//—————————————————————————————————————;
//ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΡ Π²Π²ΠΎΠ΄Π°
void __fastcall TMainForm: StringGrid2KeyPress (TObject *Sender, char &Key)
if (Key=='.') Key=',';
if (((Key<'0')
//—————————————————————————————————————;
//ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠ³Π°Π΅ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ½ΠΎΠ΅ ΠΌΠ΅Π½Ρ ΠΏΠΎΠ΄ ΠΊΡΡΡΠΎΡ ΠΌΡΡΠΈ
void __fastcall TMainForm: ChartContextPopup (TObject *Sender,
TPoint &MousePos, bool &Handled)
{
PopupMenu->Popup (MousePos.x+MainForm->Left, MousePos. y+MainForm->Top);
}
//—————————————————————————————————————;
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠ° Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
void __fastcall TMainForm: N1Click (TObject *Sender)
{
Chart->CopyToClipboardBitmap ();
}
//—————————————————————————————————————;
//ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠΊΠ½Π° Π² Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π°
void __fastcall TMainForm: N2Click (TObject *Sender)
{
Graphics:TBitmap *Bitmap = new Graphics: TBitmap ();
TRect FormRect;
FormRect = MainForm->ClientRect;
Bitmap->Height=FormRect.bottom;
Bitmap->Width=FormRect.right;
Bitmap->Canvas->BrushCopy (FormRect, Bitmap, FormRect, clWhite);
Bitmap->Canvas->CopyRect (FormRect, MainForm->Canvas, FormRect);
Clipboard ()->Assign (Bitmap);
delete Bitmap;
}
//—————————————————————————————————————;
//ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠ° «ΡΡΡΠ½Π°Ρ ΠΏΠΎΠ΄Π³ΠΎΠ½ΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²»
void __fastcall TMainForm: TrackBar1Change (TObject *Sender)
{
static float K;
static int Col, Row;
float V;
if (TrackFlag){
Col=StringGrid2->Col;
Row=StringGrid2->Row;
if (StringGrid2->Cells[Col][Row]=="") StringGrid2->Cells[Col][Row]="0,1″ ;
K=StrToFloat (StringGrid2->Cells[Col][Row]);
TrackFlag=false;}
V=TrackBar1->Position;V=V/40;V=K*exp (V);
StringGrid2->Cells[Col][Row]=FloatToStrF (V, 2,6,5);
LoadParam ();
CompProcess ();
ShowOptimize ();
}
//—————————————————————————————————————;
//ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΌΠ΅Π½ΡΡΡ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΎΠΌ
void __fastcall TMainForm: StringGrid2Click (TObject *Sender)
{
TrackFlag=true;
TrackBar1->Position=0;
}
//ΡΠ΅Π°ΠΊΡΠΈΡ Π½Π° Π½Π°ΠΆΠ°ΡΠΈΠ΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ «ΠΎΠ΄ΠΈΠ½ΠΎΡΠ½ΡΠΉ ΡΠ°ΡΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°»
//—————————————————————————————————————;
void __fastcall TMainForm: Button3Click (TObject *Sender)
{
LoadParam ();
CompProcess ();
}
//—————————————————————————————————————;
Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΎ Π½Π°