рдкрд░рд┐рдЪрдп
Habr рдкрд░ рдХрдИ рд▓реЗрдЦ [1,2,3] рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпрдХреНрд╖ рдпрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд╡рд┐рд╖рдп рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреЛрдИ рдкреНрд░рдХрд╛рд╢рди [1] рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде "рдЧрдгрд┐рдд рдкрд░ рдЕрдВрдХрди: рд░реИрдЦрд┐рдХ-рджреНрд╡рд┐рдШрд╛рдд рдирд┐рдпрд╛рдордХ" рдХреЛ рдиреЛрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдЗрд╖реНрдЯрддрдо LQR рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓реЛрдХрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрддрд╛рддрд╛ рд╣реИред
рдореИрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрд┐рд╕рдиреЗ рдбрд╛рдпрдиреЗрдорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рд╡рд┐рдзрд┐ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХреА, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдареЛрд╕ рдЙрджрд╛рд╣рд░рдг рдкрд░ред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╢рдмреНрджрд╛рд╡рд▓реА рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рдХреА рд╡рд┐рдзрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрджред
рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд╕реНрдерд┐рд░ рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдирд┐рдпрдВрддреНрд░рдг рд╡рд╕реНрддреБ рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд╣рд░реА рдФрд░ рдЖрдВрддрд░рд┐рдХ рдХрд╛рд░рдХреЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рдореЗрдВ рдирд┐рд░рдВрддрд░ рдЖрдВрджреЛрд▓рди рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдг рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдирд┐рдпрдВрддреНрд░рдг рд╕рдордп рдЯреА рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред
рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рдХреЗ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдореЗрдВ рд╕реАрдорд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд╡рд┐рддрд░рдг рд╕реЗ рдЬреБрдбрд╝реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрджреНрджреЗрд╢реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдПрдХ рдЕрднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧрдгрд┐рддреАрдп рдЙрдкрдХрд░рдг рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╣реИрдВ: рд╡рд┐рд╡рд┐рдзрддрд╛рдУрдВ рдХрд╛ рд╢рд╛рд╕реНрддреНрд░реАрдп рдХрд▓рди, рдЕрдзрд┐рдХрддрдо рдПрд▓.рдПрд╕. рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрддред рдкреЛрдВрдЯреНрд░реАрдЧрд┐рди рдФрд░ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЖрд░ рдмреЗрд▓рдореИрдиред
рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдг рд╕рдордп, рдЖрд╡реГрддреНрддрд┐ рдФрд░ рд░рд╛рдЬреНрдп рдХреЗ рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд░рд╛рдЬреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЛ рдкрд╛рдареНрдпрдХреНрд░рдо рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, SQR рдирд┐рдпрдВрддреНрд░рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рддрдХрдиреАрдХ рдХреЛ рдордЯрд▓рдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд░рд╛рдЬреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рд░реИрдЦрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдХреЗ рддрд░реАрдХреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╣реИ, рдЬреЛ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдФрд░ рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡рд┐рдорд╛рди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рдкреНрд░рд╕рд┐рджреНрдз рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐ рдХрд╛ рдЧрдгрд┐рддреАрдп рдЕрдиреБрдорд╛рди
рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рдЖрдпрд╛рдо (рдПрдордУ), рд╕рдордорд┐рдд (рд╕реАрдУ) рдФрд░ рд╕рдордЭреМрддрд╛ рдСрдкреНрдЯрд┐рдордо (рдХреЗрдУ) рдХреЗ рдорд╛рдирджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд░рд╛рдЬреНрдп рд╕реНрдерд╛рди рдореЗрдВ рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп, рд╡реЗрдХреНрдЯрд░ - рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд░реЗрдЦреАрдп рд╕реНрдерд┐рд░ рдкреНрд░рдгрд╛рд▓реА рджреА рдЬрд╛рддреА рд╣реИ:
x= fracdxdt=A cdotx+B cdotu;y=C cdotx, (1)
рдиреНрдпреВрдирддрдо рдирд┐рдпрдВрддреНрд░рдг рдКрд░реНрдЬрд╛ рдЦрдкрдд рдФрд░ рдЕрдзрд┐рдХрддрдо рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рдиреНрди рдорд╛рдирджрдВрдб рдлрдВрдХреНрд╢рдирд▓ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВ:
Jx= int infty0(xTQx+uTRu+2xTNu)dt rightarrowmin, (2)
Ju= int infty0(yTQy+uTRu+2yTNu)dt rightarrowminред (3)
рдирд┐рдпрдВрддреНрд░рдг рдХрд╛рдиреВрди рдпреВ рд░рд╛рдЬреНрдп рдЪрд░ x рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рдЪрд░ y рдкрд░ рд░реИрдЦрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ:
u= pmKx,u= pmKyрдРрд╕рд╛ рдирд┐рдпрдВрддреНрд░рдг рджреНрд╡рд┐рдШрд╛рдд рдЧреБрдгрд╡рддреНрддрд╛ рдорд╛рдирджрдВрдб (2), (3) рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рд╕рдВрдмрдВрдзреЛрдВ рдореЗрдВ (1) ├╖ (3), рдХреНрдпреВ рдФрд░ рдЖрд░ рдХреНрд░рдорд╢рдГ рдЖрдпрд╛рдо [n ├Ч n] рдФрд░ [m ├Ч m] рдХреЗ рд╕рдордорд┐рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдирд┐рд╢реНрдЪрд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИрдВ; K рдЖрдпрд╛рдо рдХреЗ рдирд┐рд░рдВрддрд░ рдЧреБрдгрд╛рдВрдХ рдХрд╛ рдПрдХ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╣реИ [m ├Ч n], рдЬрд┐рд╕рдХреЗ рдореВрд▓реНрдп рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЗрдирдкреБрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдПрди рдЫреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рд╢реВрдиреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди, рдЬрд┐рд╕реЗ рд░реИрдЦрд┐рдХ рдЕрднрд┐рдиреНрди рджреНрд╡рд┐рдШрд╛рдд рдЕрдиреБрдХреВрд▓рди (LQR- рдЕрдиреБрдХреВрд▓рди) рд╕рдорд╕реНрдпрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд░рд╛рдЬреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
u=RтИТ1BTPxрдЬрд╣рд╛рдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ P рдХреЛ рд░рд┐рдХреЗрдЯреА рд╕рдореАрдХрд░рдг рдХреЛ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
ATP+PA+PBRтИТ1BTP+Q=0рдорд╛рдирджрдВрдб (2), (3) рднреА рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕реА рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХрд╛рд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдЙрдЪреНрдЪ рд╢рдХреНрддрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рдЕрд╕реАрдо рд░реВрдк рд╕реЗ рдХрдо рд╢рдХреНрддрд┐ рдХреЗ рд╕реНрд░реЛрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
Jx= int infty0xTQxdt ред
рдЬреЛ рдЖрджрд░реНрд╢ рд╣реИ
рдореЙрдб(x) рд╡реЗрдХреНрдЯрд░ x, рдЕрд░реНрдерд╛рдд рд╡рд┐рдирд┐рдпрдорди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЗрд╕рдХреЗ рджреЛрд▓рди рдХрд╛ рдПрдХ рдЙрдкрд╛рдп рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП, рдХрдо рджреЛрд▓рди рдХреЗ рд╕рд╛рде рддреЗрдЬреА рд╕реЗ рд╕рдВрдХреНрд░рдордг рдореЗрдВ рдЫреЛрдЯреЗ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐:
Ju= int infty0uTRudtрдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдКрд░реНрдЬрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХрд╛ рдПрдХ рдорд╛рдк рд╣реИ, рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреА рдКрд░реНрдЬрд╛ рд▓рд╛рдЧрддреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рджрдВрдб рд╣реИред
рд╡рдЬрди рдХреНрдпреВ, рдЖрд░, рдФрд░ рдПрди рдЗрд╕реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреА рдмрд╛рдзрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЗрди рдореЗрдЯреНрд░рд┐рд╕реЗрд╕ рдХрд╛ рдХреЛрдИ рддрддреНрд╡ рд╢реВрдиреНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рддреЛ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдордиреНрд╡рдп рдореЗрдВ рдХреЛрдИ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореИрдЯреНрд░рд┐рд╕ рдХреНрдпреВ, рдЖрд░, рдПрди рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЪреБрдирд╛рд╡ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдЕрдиреБрдорд╛рдиреЛрдВ, рдкрд░реАрдХреНрд╖рдгреЛрдВ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдбрд┐рдЬрд╛рдЗрди рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреЗ рдЕрдиреБрднрд╡ рдФрд░ рдЬреНрдЮрд╛рди рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдРрд╕реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд MATLAB рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
startbmatrixR,S,E endbmatrix=lqr(A,B,Q,R,N) рдФрд░
startbmatrixR,S,E endbmatrix=lqry(Ps,Q,R,N) рд░рд╛рдЬреНрдп рд╡реЗрдХреНрдЯрд░ x рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╡реЗрдХреНрдЯрд░ y рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ (2), (3) рдХреЛ рдХрдо рдХрд░реЗрдВред
рдкреНрд░рдмрдВрдзрди рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓
Ps=ss(рдП,рдмреА,рд╕реА,рдбреА) рдЧрдгрдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд░рд╛рдЬреНрдп рдЪрд░ x, рд░рд┐рдХреНрдЯреНрдЯреА рд╕рдореАрдХрд░рдг S рдХреЗ рд╕рдорд╛рдзрд╛рди рдФрд░ рдмрдВрдж рд▓реВрдк рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ eigenvalues тАЛтАЛE = eiq (A-BK) рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ K рд╣реИред
рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдШрдЯрдХ:
Jx=x0TP1x0,Ju=x0TP2x0рдЬрд╣рд╛рдВ x0 рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рд╡реЗрдХреНрдЯрд░ рд╣реИ;
P1 рдФрд░
P2 - рдЕрдЬреНрдЮрд╛рдд рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдЬреЛ рдХрд┐ рд▓реНрдпрдкреБрдиреЛрд╡ рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИред рд╡реЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ;
P1=lyap(NN,Q) рдФрд░
P2=lyap(NN,KTRK) ред
рдПрдирдПрди=(рдП+рдмреАрдХреЗ)рдЯреАрдкрд╛рдпрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧрддрд┐рд╢реАрд▓ рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ
рдпрджреНрдпрдкрд┐ рдкрд╛рдпрдерди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдореНрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА [4] рдХреЗ рдХрд╛рд░реНрдп рд╣реИрдВ: control.lqr, control.lyap, рд╣рд╛рд▓рд╛рдВрдХрд┐, control.lqr рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрднреА рд╕рдВрднрд╡ рд╣реИ рдЬрдм slycot рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛ, рдЬреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ [5]ред рдХрд┐рд╕реА рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЧреАрдд рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЕрдиреБрдХреВрд▓рди рдПрдХ control.exception.ControlArgument рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ: рдХреНрдпреВ рдПрдХ рд╕рдордорд┐рдд рдореИрдЯреНрд░рд┐рдХреНрд╕ рддреНрд░реБрдЯрд┐ [6] рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рд▓рд┐рдП, lqr () рдФрд░ lyap () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ scipy.linalg рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
from numpy import* from scipy.linalg import* def lqr(A,B,Q,R): S =matrix(solve_continuous_are(A, B, Q, R)) K = matrix(inv(R)*(BT*S)) E= eig(AB*K)[0] return K, S, E P1=solve_lyapunov(NN,Ct*Q*C)
рд╡реИрд╕реЗ, рдЖрдкрдХреЛ рдХрд╛рд░реНрдп рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЫреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдЪрд░рдг (), рдкреЛрд▓ (), рдПрд╕рдПрд╕ (), рдЯреАрдПрдл (), рдлреАрдбрдмреИрдХ (), рдПрдХрд░ (), рд╕реНрдерд╛рди () рдФрд░ рдЕрдиреНрдп рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ LQR рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
(рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ [7])рдПрдХ рд░реИрдЦрд┐рдХ-рджреНрд╡рд┐рдШрд╛рдд рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬреЛ рдореИрдЯреНрд░реЗрд╕ рджреНрд╡рд╛рд░рд╛ рд░рд╛рдЬреНрдп рд╕реНрдерд╛рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдорд╛рдирджрдВрдб (2) рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИ:
A = \ start {bmatrix} & -100 & 0 & 0 \\ & 143.678 & -16.667 & -195.402 \\ & 0 & 1.046 & 0 \ end {bmatrix}; b = \ start / bmatrix} 2300 \\ 0 \\ 0 \\\ рдЕрдВрдд {bmatrix}; C = \ start {bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \ end {bmatrix}; D = 0
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд░рд╛рдЬреНрдп рдЪрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ:
x1 - рдХрдирд╡рд░реНрдЯрд░ рд╡реЛрд▓реНрдЯреЗрдЬ, рд╡реА;
x2 - рдореЛрдЯрд░ рд╡рд░реНрддрдорд╛рди, рдП;
x3 - рдХреЛрдгреАрдп рд╡реЗрдЧ
cтИТ1 ред рдпрд╣ рдПрдЪрдкреА рдХреЗ рд╕рд╛рде рдЯреАрдкреА - рдбреАрдкреАрдЯреА рдкреНрд░рдгрд╛рд▓реА рд╣реИ: рдЗрдВрдЬрди рдЖрд░ рдиреЙрдо = 30 рдХрд┐рд▓реЛрд╡рд╛рдЯ; рдпреВрдиреЛрдо = 220 рд╡реА; рдЗрдиреЛрдо = 147 рдП;
omega╧Й 0 = 169
cтИТ1 ;
omega╧Й рдЕрдзрд┐рдХрддрдо = 187
cтИТ1 ; рдирд╛рдордорд╛рддреНрд░ рдкреНрд░рддрд┐рд░реЛрдз рдХреНрд╖рдг Mnom = 150 N * m; рд╡рд░реНрддрдорд╛рди = 2 рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдмрд╣реБрд▓рддрд╛; thyristor рдХрдирд╡рд░реНрдЯрд░: Unom = 230 V; рдЙрдИ = 10 рдмреА; рдЗрдиреЛрдо = 300 рдП; рд╢реЙрд░реНрдЯ-рдЯрд╛рдЗрдо рдУрд╡рд░рдХреНрд░реЙрдлреНрдЯ рдХреА рдмрд╣реБрд▓рддрд╛ = 1.2ред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддреЗ рд╕рдордп, рд╣рдо рдореИрдЯреНрд░рд┐рдХреНрд╕ Q рд╡рд┐рдХрд░реНрдг рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдпрд╣ рдкрд╛рдпрд╛ рдЧрдпрд╛ рдХрд┐ рдореИрдЯреНрд░рд┐рдХреНрд╕ рддрддреНрд╡реЛрдВ рдХрд╛ рдиреНрдпреВрдирддрдо рдорд╛рди R = 84, рдФрд░
Q=[[0.01,0,0],[0,0.01,0],[0,0,0.01]] рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрдВрдЬрди рдХреЗ рдХреЛрдгреАрдп рд╡реЗрдЧ рдХреА рдПрдХ рдореЛрдиреЛрдЯреЛрдирд┐рдХ рд╕рдВрдХреНрд░рдордг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦреА рдЬрд╛рддреА рд╣реИ (рдЫрд╡рд┐ 1)ред рдЖрд░ = 840 рдкрд░
Q=[[0.01,0,0],[0,0.01,0],[0,0,0.01]] рдХреНрд╖рдгрд┐рдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ (рдЫрд╡рд┐ 2) рдПрдордУ рдХреЗ рдорд╛рдирджрдВрдбреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИред рдореИрдЯреНрд░рд┐рдХреНрд╕ P1 рдФрд░ P2 рдХреА рдЧрдгрдирд╛ x0 = [220 147 162] рдкрд░ рдХреА рдЧрдИ рдереАред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реВрдЪреА (рдЪрд┐рддреНрд░ 1)ред
рдЕрдВрдЬреАрд░ред 1рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реВрдЪреА (рдЪрд┐рддреНрд░ 2)ред
рдЕрдВрдЬреАрд░ред 2рдореЗрдЯреНрд░рд┐рд╕ рдЖрд░ рдФрд░ рдХреНрдпреВ рдХреЗ рдЙрдкрдпреБрдХреНрдд рдЪрдпрди рд╕реЗ, рдореЛрдЯрд░ рдХреЗ рд╢реБрд░реБрдЖрддреА рдкреНрд░рд╡рд╛рд╣ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╛рдиреЛрдВ рдХреЗ рдмрд░рд╛рдмрд░ рдХрдо рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (2-2.5) рдЗрди (рдЫрд╡рд┐ 3)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрд░ = 840 рдФрд░ рдХреЗ рд╕рд╛рде
Q = ([[[0.01,0,0]]], [0,0.88,0], [0,0,0.01]], рдЗрд╕рдХрд╛ рдореВрд▓реНрдп 292 A рд╣реИ рдФрд░ рдЗрди рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╕рдордп 1.57 s рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╕реВрдЪреА (рдЪрд┐рддреНрд░ 3)ред 
3 рдЪрд┐рддреНрд░
рд╡рд┐рдЪрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╡реЛрд▓реНрдЯреЗрдЬ рдФрд░ рд╡рд░реНрддрдорд╛рди рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдПрдВ рдирдХрд╛рд░рд╛рддреНрдордХ рд╣реИрдВ, рдФрд░ рдЧрддрд┐ рдкрд░, рд╕рдХрд╛рд░рд╛рддреНрдордХ, рдЬреЛ рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рдВрд╢реНрд▓реЗрд╖рд┐рдд рдкреНрд░рдгрд╛рд▓реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд╣реИ рдФрд░ рд▓реЛрдб рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд╛рдЬреНрдп рдЪрд░ рдХреЗ рд╕рд╛рде рд░рд╛рдЬреНрдп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдПрдХ рдкреАрдЖрдИ рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рдВрд╢реНрд▓реЗрд╖рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ
x4 - рдЗрдВрдЯреАрдЧреНрд░реЗрдЯрд░ рдХрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдЧреБрдгрд╛рдВрдХред
рд╣рдо рдореИрдЯреНрд░рд┐рд╕реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ:
A = \ start {bmatrix} & -100 & 0 & 0 \\ & 143.678 & -16.667 & -195.402 & 0 \\ & 0 & 1.046 & 0 & 0 \\ & 0 & 1 & 0 & 1 & 0 \ рдЕрдВрдд {bmatrix}; b = = \ start {bmatrix} 2300 \\ 0 \\ 0 \\ 0 \\\ end {bmatrix}; C = eye (4)); D = 0рдПрдордУ рдорд╛рдирджрдВрдб рдХреЗ рдЕрдиреБрд░реБрдк рдЯрд╛рд╕реНрдХ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ R = 100, q11 = q22 = q33 = 0.001 рдФрд░ q44 = 200 рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП рдереЗред рдЪрд┐рддреНрд░ 4 рд░рд╛рдЬреНрдп рдХреЗ рд╡реИрд░рд┐рдПрдмрд▓ рдЯреНрд░рд╛рдВрдЬрд┐рд╕реНрдЯрд░ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рдХрд╛рд░реНрдп рджреНрд╡рд╛рд░рд╛ рдФрд░ рд▓реЛрдб рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдПрд╕реНрдЯреИрдЯрд┐рдЬрд╝реНрдо рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ (рдЫрд╡рд┐ 4)ред
рдЕрдВрдЬреАрд░ред 4рдореИрдЯреНрд░рд┐рдХреНрд╕ K рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╛рдпрдерди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рджреЛ рдХрд╛рд░реНрдп рд╣реИрдВ K = acker (A, B, s) рдФрд░ K = рд╕реНрдерд╛рди (A, B, s), рдЬрд╣рд╛рдВ s рд╡реЗрдХреНрдЯрд░ рд╣реИ - рдмрдВрдж-рд▓реВрдк рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╡рд╛рдВрдЫрд┐рдд рдзреНрд░реБрд╡реЛрдВ рдХреА рдкрдВрдХреНрддрд┐ред рдкрд╣рд▓рд╛ рдХрдорд╛рдВрдб рдХреЗрд╡рд▓ n with5 рдХреЗ рд▓рд┐рдП рдпреВ рдореЗрдВ рдПрдХ рдЗрдирдкреБрдЯ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдзреНрд░реБрд╡реЛрдВ рдХреА рдмрд╣реБрд▓рддрд╛ рдореИрдЯреНрд░рд┐рдХреНрд╕ рдмреА рдХреЗ рд░реИрдВрдХ рд╕реЗ рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдПрдХрд░ () рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ рдореЗрдВ рдФрд░ (рдЫрд╡рд┐ 5) рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ (рдЫрд╡рд┐ 5)ред
рдЕрдВрдЬреАрд░ред 5рдирд┐рд╖реНрдХрд░реНрд╖
рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд LQR- рдбреНрд░рд╛рдЗрд╡ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирдП lqr () рдФрд░ lyap () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд MATLAB рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдПрдХ рд╡рд┐рдорд╛рди рдореЗрдВ рдПрд▓рдХреНрдпреВрдЖрд░ рдЕрдиреБрдХреВрд▓рди рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг (рдПрд▓рдП)
(рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрд╕реНрдЯреНрд░реЛ рдФрд░ рдореГрд░реЗрдп рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХрд╛рд╢рди рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдзреНрдпрд╛рдп 5 [8] рдФрд░ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ lqr () рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдВрддрд┐рдо рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рднрд╛рдЧ, рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд, рдПрд▓рдХреНрдпреВрдЖрд░ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдкрд╣рд▓реЗ рд╣реА рдКрдкрд░ рдорд╛рдирд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдЗрдП рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд░ рдЗрд╕реА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВ:
рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдФрд░ LQR рдирд┐рдпрдВрддреНрд░рдХ рдлрд╝рдВрдХреНрд╢рдиред from scipy.linalg import*
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдореИрдЯреНрд░рд┐рдХреНрд╕ рдП, рдмреА, рд╕реА, рдбреА рдореЙрдбрд▓ред xe = [0, 0, 0, 0, 0, 0];
рд╣рдо xy рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред рд╡реИрдХреНрдЯрд░ xd рдФрд░ yd рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рд╕реНрдерд┐рд░ рдЕрд╡рд╕реНрдерд╛ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИрдВред Matrices Cx рдФрд░ Cy рдореЙрдбрд▓ рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЖрдЙрдЯрдкреБрдЯ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡реЗрдХреНрдЯрд░-рдореИрдЯреНрд░рд┐рдХреНрд╕ рд╕рдореАрдХрд░рдгреЛрдВ рдХреА рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
\ рдмрд╛рдИрдВ \ {\ _ рд╢реБрд░реВ рдХрд░реЗрдВ {рдореИрдЯреНрд░рд┐рдХреНрд╕} xdot = Ax + Bu => xdot = (A-BK) x + xd \\ u = -K (x-xd) \\ y = Cx \\ \ end {рдореИрдЯреНрд░рд┐рдХреНрд╕} \ рд╕рд╣реАред
рдмрдВрдж рд▓реВрдк рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЛ рдЪрд░рдг () рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрдирдкреБрдЯ рд╡реИрдХреНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ K \ cdot xd рдФрд░ K \ cdot xd рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ:
xd = matrix([[1], [0], [0], [0], [0], [0]]); yd = matrix([[0], [1], [0], [0], [0], [0]]);
рд╡рд░реНрддрдорд╛рди рдирд┐рдпрдВрддреНрд░рдг 0.8.1 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП SISO Matlab рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЗ рдХреЗрд╡рд▓ рднрд╛рдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕рд▓рд┐рдП рдкрд╛рд░реНрд╢реНрд╡ -x рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ -y рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рд╡реИрдХреНрдЯрд░ lat (), alt () рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
lat = (0,2,3,5); alt = (1,4);
рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ-рдПрдХ рдХрд░рдХреЗ рд╢реЗрдбреНрдпреВрд▓ рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ред
figure(); title(" x y") plot(Tx.T, Yx.T, '-', Ty.T, Yy.T, '--'); plot([0, 10], [1, 1], 'k-'); axis([0, 10, -0.1, 1.4]); ylabel(' '); xlabel(''); legend(('x', 'y'), loc='lower right'); grid() show()
рдЕрдиреБрд╕реВрдЪреА:
рдЗрдирдкреБрдЯ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдЖрдпрд╛рдо рдХрд╛ рдкреНрд░рднрд╛рд╡ рдЕрдиреБрд╕реВрдЪреА:
рдХреНрд╖рдгрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрд╕реВрдЪреА:
рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреНрд╖рдгрд┐рдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдЕрдиреБрд╕реВрдЪреА:
рдирд┐рд╖реНрдХрд░реНрд╖:
рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рд╡рд┐рдорд╛рди рдореЗрдВ LQR рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирдП lqr () рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддреЗ рд╕рдордп рд▓рд╛рдЗрд╕реЗрдВрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд╛рд░реНрдпрдХреНрд░рдо MATLAB рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╕рдВрджрд░реНрдн
1.
рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рдЧрдгрд┐рдд: рд░реИрдЦрд┐рдХ-рджреНрд╡рд┐рдШрд╛рдд рдирд┐рдпрдВрддреНрд░рдХред2.
рдЗрд╖реНрдЯрддрдо рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд░рд╛рдЬреНрдп рдХрд╛ рд╕реНрдерд╛рдиред3.
рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред4.
рдкрд╛рдпрдерди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реАред5.
рдкрд╛рдпрдерди - рд╕реНрдкрд╛рдпрдбрд░ (RuntimeError & ImportError) рдореЗрдВ slycot рдореЙрдбреНрдпреВрд▓ рдЖрдпрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред6.
рдкрд╛рдпрдерди рдХрдВрдЯреНрд░реЛрд▓ рд╕рд┐рд╕реНрдЯрдо рд▓рд╛рдЗрдмреНрд░реЗрд░реАред7.
рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░рд┐рдХ рдбреНрд░рд╛рдЗрд╡ рдореЗрдВ рдЗрд╖реНрдЯрддрдо рдирд┐рдпрдВрддреНрд░рдг рдФрд░ lrr рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдорд╛рдирджрдВрдбред