Příklady k přednášce 19 - Polynomiální metody Michael Šebek Automatické řízení 013 7-4-14
Opakování: Dělení polynomů: e zbytkem a bez Polynomy tvoří okruh, ale ne těleo (Okruh tvoří také celá číla, těleo naopak racionální číla, racionální funkce, atp.) Obecně tedy není možné dělit polynomy beze zbytku Beze zbytku dělí každý polynom jen tzv. jednotky, což jou tu polynomy tupně 0, tedy nenulová reálná číla Někdy ale beze zbytku dělit jde: Pokud a() dělí c() beze zbytku, značíme to a () c () Pak exituje b() takové, že c () = ab ()() Pak také říkáme a() je dělitelem c(), a že c() je náobkem a() Pokud a() dělí c() i d(), pak je a() polečným dělitele c() i d() Největším polečným dělitelem je ten, který má nejvyšší tupeň Příklad Pro c ( ) = ( + 1)( 1) a () = + 1 d () = + je a () c () d () c () Michael Šebek Pr-ARI-17-013
Opakování: Největší polečný dělitel greatet (left) common divior = největší polečný dělitel Pro je ap () () + bq ()() = g () av ()() + bw () () = 0 a přitom matice je unimodulární (= její determinant je nenulová kontanta) ( a b) g ( ) = gcd (), () p () q () U() = v () w () >> pformat rootr >> a=(+1)^*(-1)*(+) a = (+)(^++1)(-1) >> b=(+1)*(-1)*(-) b = (+1)(-1)(-) >> g=grd(a,b) g = (+1)(-1) >> [g,u]=grd(a,b) g = (+1)(-1) U = 0.0833-0.0833(+5.0000) -0.94(-) 0.94(+)(+1) >> U*[a; b] an = (+1)(-1) 0 Michael Šebek Pr-ARI-17-013 3
Euklide z Alexandrie ( ~ 300 před n.l. ) zavedl ještě dělení e zbytkem Pro dané polynomy a(), b()ǂ0 exitují polynomy q(), r() takové, že a = bq + r, deg r < deg b Opakování: Dělení e zbytkem podíl zbytek Proto polynomy tvoří tzv. euklidovký okruh >> a=prand(5,'int'),b=prand(3,'int') a = -8-7 + 3^ - ^3 + 3^4 + 4^5 b = 6 + 3 + 6^ - 6^3 >> [q,r] = rdiv(a,b) q = -1. - 1. - 0.67^ r = -1 + 3.5 + 18^ >> a-(b*q+r) an = 0 Michael Šebek Pr-ARI-17-013 4
Věta: Rovnice má řešení, právě když Nutná a potačující podmínka řešitelnoti ax ()() + by () () = c () gcd ( ab, ) c Důkaz Nutnot ( jen když ): Nechť ax ' + by ' = c a označme gcd( a, b) = g, a = ga, b = gb Pak g( ax ' + by ') = c a tudíž g c Potačitelnot ( když ) Nechť ( ab, ) c a označme ( a, b) = g, c = gc Pak vždy exituje p, q takové, že ap + bq = g Vynáobením c dotaneme a( pc ) + b( qc ) = c a tím jme zkontruovali řešení x = pc, y = qc Michael Šebek Pr-ARI-17-013 5
Příklady: řešitelnot >> c=(+1)*(+); >> a=(+1)^*(-1); b=(+1)*(-); >> g=gld(a,b) g = (+1) >> pol(c/g) an = (+.0000) >> [x,y]=axbyc(a,b,c) x = 1.3333 y = -1.3333(+1.500) >> a*x+b*y-c an = 0 >> c=(-1)*(+) c = (+)(-1) >> c/g an = (+)(-1)/(+1) >> pol(c/g)??? Error uing ==> frac.pol Argument i not convertible to polynomial. Michael Šebek Pr-ARI-17-013 6
přeno bez krytých módu (bez krácení) 1 ( + 3) y () = u () ( 1)( + ) ( + 3) b () a ( ) = ( 1)( + )( + 3) y () = u () a () b ( ) = ( + 3) charakteritický polynom je ax ()() + by () () = ( 1)( + )( + 3)() x + ( + 3) y() = ( + 3) d () tedy žádný ZV regulátor nezmění neřiditelnou čát Obecné řešení 1 ( 1)( + ) Michael Šebek 7 u 1 ( + 3) >> pformat rootr >> a=(-1)*(+)*(+3),b=+3 a = (+3.0000)(+.0000)(-1.0000), b = (+3) >> x=prand();y=prand();c=a*x+b*y c = 0.877(+3.069)(+3.0000)(+1.6799)(^-3.307+3.0550) >> x=prand();y=prand();c=a*x+b*y c = 0.758(+3.0000)(+1.4780)(+1.1711)(^-1.9064+1.4597) >> x=prand();y=prand();c=a*x+b*y c = -0.833(+3.0000)(+.411)(+0.806)(-0.6043)(-1.4946) y
Obecné řešení Věta: Obecné řešení Obecné řešení x = x bt kde t je libovolný rovnice má tvar y = y + at polynomiální parametr Důkaz: 1) Je to řešení pro každé t: Protě ho doadíme do rovnice ax + by = ax abt + by + bat = ax + by + ( ba ab ) t = c ) Neexituje žádné jiné řešení: pro libovolná řešení x, y a x,y platí ax + by = c, ax ' + by ' = c Odečtením ax ( x') + by ( y') = 0 a z toho ax ( x') = ( y y') b Přitom polynomy ab, definované dříve jou neoudělné a platí ab = ab Tudíž, takže pro nějaký polynom t platí b x x' a y y' x x ' = bt y y ' = at Libovolné řešení zíkáme tak, že necháme t probíhat množinu všech reálných polynomů Michael Šebek Pr-ARI-17-013 8
Příklad: Obecné řešení Nějaké řešení a=(+1)^*(-1) a = -1 - + ^ + ^3 >> b=(+1)*(-) b = - - + ^ >> c=(+1)*(+) c = + 3 + ^ >> [x,y]=axbyc(a,b,c) x = 1.3333 y = -1.7-1.3 >> [x,y,v,w]=axbyc(a,b,c) x = 1.3333 y = -1.7-1.3 v = 0.76-0.38 w = -0.38 + 0.38^ Jiné řešení >> t=1- t = 1 >> xnew=x+v*t,ynew=y+w*t xnew =.1-1.1 + 0.38^ ynew = - - 0.96 + 0.38^ - 0.38^3 >> a*xnew+b*ynew-c an = 0 x () = x'() + rt ()() new y () = y'() + vt ()() new r () = b () v () = a () x () = x'() b()() t y () = y'() + at ()() Michael Šebek Pr-ARI-17-013 9
Vezmeme obecné řešení x = x ' bt y = y ' + at a algoritmem dělení redukujeme x' modulo b : Pak je x= r bt ( q) y = y ' + at Volbou t = q dotaneme řešení x, y minimálního tupně v x x= r deg x< deg b y = y ' + aq Podobně bychom dokázali exitenci a unicitu řešení minimálního tupně v y Tato dvě řešení jou obecně různá Řešení minimálního tupně x ' = bq + r deg r < deg b Michael Šebek Pr-ARI-17-013 10
Data Příklad: řešení minimálního tupně >> a=prand(3),b=prand(),c=prand(5) a = 0.6 - + 1.5^ + 0.43^3 b = 0.47 + 1.3 + 0.64^ c = 1.3-0.91 -.3^ + 1.8^3 + 0.39^4 + 0.0^5 >> [x,y,b_bar,a_bar]=axbyc(a,b,c); b_bar,a_bar b_bar = -0.19-0.51-0.5^ a_bar = 0.5-0.4 + 0.61^ + 0.17^3 Řešení min. tupně y Řešení min. tupně x >> [x,y]=axbyc(a,b,c) x = 1.9 +.4 + 0.047^ y = 0.34-1.9-1.1^ >> [x,y]=axbyc(a,b,c,'miny') x = 1.9 +.4 + 0.047^ y = 0.34-1.9-1.1^ >> [x,y]=axbyc(a,b,c,'minx') x = 1.8 +.3 y = 0.38 - - ^ + 0.03^3 Michael Šebek Pr-ARI-17-013 11
Koincidence Důležitý zvláštní případ natane, když deg c< deg a+ deg b Vyvětlení (předpokládáme neoudělná a, b ) x y c ax + by = c + = triktně ryzí, když platí b a ab triktně ryzí, když řeš. min deg x triktně ryzí, když řeš. min deg y Pravá trana triktně ryzí buď oba zlomky na levé traně jou triktně ryzí nebo žádný Pravá trana není triktně ryzí vždy pouze jeden zlomek na levé může být triktně ryzí když deg c< deg a+ deg b, pak obě řešení minimálních tupňů koincidují a exituje jediné řešení minimálního tupně (které je minimální v obou neznámých oučaně) když deg c deg a+ deg b, pak kutečně exitují dvě různá řešení minimálního tupně (jedno v x a druhé v y) Michael Šebek Pr-ARI-17-013 1
Příklad: koincidence Ano Obě jou tejná! Tedy exituje jediné řešení minimálního tupně (v obou oučaně) Ne Jou různá >> a=prand(3),b=prand(),c1=1, c=prand(6) a = -1.5 + 0. - 1.4^ - 0.84^3 b = 0.76 + 0.38-1.3^ c1 = 1 >> [x,y]=axbyc(a,b,c1,'minx') x = -0.43 + 0.11 y = 0.45 + 0.13-0.071^ >> [x,y]=axbyc(a,b,c1,'miny') x = -0.43 + 0.11 y = 0.45 + 0.13-0.071^ >> c=prand(6) c = -0.71+0.51-0.4^+0.3^3-0.96^4-0.15^5+0.74^6 >> [x,y]=axbyc(a,b,c,'minx') x = 0.49-0.8 y = 0.064-0.064 + 0.56^ - 0.046^3-0.55^4 >> [x,y]=axbyc(a,b,c,'miny') x = -0.8-0.16 + 1.6^ - 0.89^3 y = -1.5 + 1. - 0.99^ Michael Šebek 13
Elementární operace na polynomiální matici Řádkové operace - 3 základní náobení řádku 1 nenulovou kontantou výměna dvou řádků 1 přičtení řádku náobeného 1 polynomem k jinému řádku 1. řádek 3 výměna řádků 1. řádek +.řád. 3 3 1 1+ + 3 Sloupcové operace jou duální Elementární operace zachovávají až na náobení kontantou determinant odpovídají náobení unimodulární maticí (tj. maticí kontantním nenulovým determinantem) Michael Šebek Pr-ARI-17-013 14
Potup řešení polynomiálními redukcemi Řešení rovnice polynomiálními redukcemi Krok 1 Utvoř loženou matici Krok Redukuj ji elementárními řádkovými operacemi na tvar a () 1 0 b () 0 1 g () p () q () 0 v () w () Pak je pa ()() + qb ()() = g () va ()() + wb ()() = 0 kde ( a (), b ()) ( v (), w ()) gcd = g ( ) gcd = 1 Krok 3 Extrahuj g() z c() a dotaň Když to nejde, rovnice nemá řešení! c () = cg () () Michael Šebek Pr-ARI-17-013 15
Potup řešení polynomiálními redukcemi Výledek: jako řešení vezmi x () = cp () () y () = cq ()() Navíc, všechna řešení jou vyjádřena takto x () = cp () () + vt ()() y () = c()() q + wt ()() volný polynomiální parametr Potup výpočtu plyne z rovnoti p q a 1 0 g p q v w b 0 1 = 0 v w Michael Šebek Pr-ARI-17-013 16
Příklad: Řešení rovnice redukcemi ( ) ( ) + 1 x () + 1 y () = Krok 1 a + 1 1 0 1 0 1 Krok 3 + 1 1 0 1 1 g () = 1 c() 1 ½ ½ + 1 1 0 = 1 0 1 1 1 1+ Krok 4 x () = y () = 1 x () = + t () 1+ y () = + t () Michael Šebek Pr-ARI-17-013 17
Potup řešení Sylvetrovou maticí Ukážeme na příkladu. tupně, kdy je dáno a() = a0 + a 1 + a a hledáme x() = x0 + x 1, y() = y0 + y b() = b 1 0 + b 1 + b c() = c0 + c 1 + c Krok1: Doadíme polynomy neurčitými koeficienty do rovnice, a + a+ a x + x + b + b+ b y + y = c + c+ c ( )( ) ( )( ) 0 1 0 1 0 1 0 1 0 1 ax + by = c porovnáme koeficienty u tejných mocnin, ax + by + ax + by = c nebo maticově a ax + by + ax + by = c 0 a1 a 0 b ax 1+ by 1= 0 0 b1 b 0 [ x0 y0 x1 y1] = [ c0 c1 c 0] 0 a0 a1 a 0 b0 b1 b 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 1 1 Vyřešíme tuto maticovou rovnici, čímž dotaneme x0, y0, x1, y1a z nich etavíme hledané x() = x + x, y() = y + y 0 1 0 1 Michael Šebek Pr-ARI-17-013 18
( ) ( ) + 1 x () + 1 y () = a () = 1+ b () = 1+ c () = x () = x y () = y Dotali jme řešení minimálního tupně (v obou neznámých), které je jiné než partikulární řešení zíkané dříve To z minulého příkladu dotaneme z obecného řešení volbou t() = 1 Příklad: Řešení Sylvetrovou maticí 0 0 [ x y ] 0 0 1 1 = [ x y ] = [ 0 1] 0 0 1 1 1 1 1 x () = + t () 1+ y () = + t () 1 1 x () =, y () = Michael Šebek Pr-ARI-17-013 19
Pozor na špatný odhad Pro rovnici hledáme i tady řešení tupňů 0 ( vědomím, že to ai je špatný odhad) a tak řešíme maticovou rovnice která ale nemá žádné řešení. Přeto polynomiální rovnice řešení má, ale vyšších tupňů, např. Toto je typický případ a = 1 +, b = (1 + ) = 1+ +, c = 1+ + [ x y ] = [ 1 ] 0 0 1 0 1 1 1 x= 0.5 y, = 1+ 0.5 >> a=1+^,b=(1+)^,c=a+b-1 a = 1 + ^ b = 1 + + ^ c = 1 + + ^ >> S=ylv([a;b],0),C=c{0:} S = 1 0 1 1 1 C = 1 >> XY=C/S XY = 0.5000 1.0000 >> XY*S==C an = 0 0 0 >> [x,y]=axbyc(a,b,c) x = -0.5 y = 1 + 0.5 Michael Šebek Pr-ARI-17-013 0
Příklad: přiřazení pólů Soutava motor přeno vtupního napětí Dříve navržený PI regulátor dává nulovou odchylku na kok ale ne dobrou dynamiku tak zkume lepší c b = 0.0670 a = 0.017 + 0.0079 + 0.0011^ p = q = 15 + 3 c1 = a*p + b*q c1 = 1 + 0. + 0.0079^ + 0.0011^3 >> root(c1) an = -1.1476 +13.653i -1.1476-13.653i -4.8866 + 0.0000i >> c=(+5)*(+1+j)*(+1-j) c = 10 + 1 + 7^ + ^3 Michael Šebek Pr-ARI-17-013 1
řešením je obecný regulátor 1. řádu zajití dobrou dynamiku, ale >> [x1,y1]=axbyc(a,b,c) x = -1.7e+0 + 9.1e+0 y = 1.9e+0-3 nemá integrační charakter a tedy nezajití nulovou odchylku zkume tam tedy dát integrátor natvrdo (při řešení rovnice z něj uděláme čát outavy) dotaneme regulátor dobrou dynamikou a nulovou odchylkou ale je PID, což e dalo čekat Poučení: máme dobrou kontrolu nad dynamikou (vhodným výběrem CL pólů) dokážeme zajitit i další požadavky ale nemáme kontrolu nad řádem regulátoru ten protě vyjde pokračování >> [x,y]=axbyc(a*,b,c) x = 909.0909 y = 1.5e+0-5 -.7^ >> p = x*, q =y p = 9.1e+0 q = 1.5e+0-5 -.7^ Michael Šebek Pr-ARI-17-013
Příklad: Ryzot regulátoru Příklad: Pokud nemá pravá trana rovnice dotatečně vyoký tupeň ryzí regulátor exituje jen náhodou (není to generický případ) >> a=(-1)^,b=,c=(+1)^ a = 1 - + ^ b = c = 1 + + ^ >> [x,y]=axbyc(a,b,c) x = 1.0000 y = 4.0000 Jiný příklad: ryzí regulátor neexituje, to je generický případ >> c=prand(,'ta') c = 0.86 +.6 + ^ >> [x,y]=axbyc(a,b,c) x = 0.8573 y = 4.4 + 0.14 Michael Šebek Pr-ARI-17-013 3
Všechny tabilizující regulátory Jak vypadá výledný charakteritický polynom? Pro t () = 0, d () = 1 q () y () = ap () () + bq ()() = ax ()() + by () () = c () p () x () Pro t () libovolné, d () libovolné tabilní (bez krácení ve reg. ) q () yd () () at ()() = p () xd () () + bt ()() ( ) ( ) ( ax ()() by () ()) d () ( ab ()() ba ()()) t () cd () () ap () () + bq ()() = a () xd () () + bt ()() + b () yd () () at ()() = + + = Je tam tedy vždy faktor c ()? To by přece nebyl obecný tabilní charakteritický polynom? Není: V některých případech dojde k jeho vykrácení už v regulátoru Michael Šebek Pr-ARI-17-013 4
Pokračování: Krácení Pro parametry takové, že dojde k vykrácení q () ( yd () () at ()()) c () = p () ( xd () () + bt ()()) c () ( yd () () at ()()) ( xd () () + bt ()()) ap () () + bq ()() = a () + b () c () c () ( + ) + ( ) ax ()() by () () d () ab ()() ba ()() t () cd () () = = = d () c () c () Tedy je výledný char. polynom opravdu libovolný tabilní Kdy k tomu dojde či jak to zařídit? Muí být + = = Řešíme jednu z rovnic =, + druhá vyjde = Výledný regulátor ( po vykrácení ) q () v () yd () () at ()() cv ()() xd () () bt ()() cw () () yd () () cv ()() at ()() xd () () cw () () bt ()() = p () w () Michael Šebek Pr-ARI-17-013 5
Soutavu b () a () = 1 Zřejmě tabilizuje regulátor y1() x1() = 1= výledných char. polynomem ax () 1() + by () 1() = + a také regulátor y() x() = 11= 1 výledných char. polynomem ax () () + by () () = + 1 Vyjděme třeba z prvního a napišme parametrizaci všech ve tvaru Teď volme parametry tak, aby e první char. Polynom vykrátil K tomu řešíme rovnici Po doazení vykrátíme a dotaneme kutečně q() d() t() = p () d () + t () y1 () d () = cv ()() + at ()() ( + 1) = ( + ) v() + t() v () = t () = 1 q () ( + 1) + 1 = = = p () + 1+ 1 + 1 ( ) Příklad Michael Šebek Pr-ARI-17-013 6
Příklad: Sledování DOF ( )( ) a () = 1+ 1 b () = + f() = f () = ( )( ) m () = + 1+ >> a=(1+)*(1-), b=+, f=^, m=(+)*(+1)^ >> [p,q]=axbyc(a,b,m,'miny') p = -, q = + >> [t,r]=axbyc(f,b,m,'miny'); r r = 1 + >> T=coprime(b*r/(a*p+b*q)) T = 0.3 + 0.6 / 0.3 + 0.6 + 0.3^ >> tep(tf(t/),tf(1/),5) ap () () + bq ()() = m () f ()() t + br ()() = m () p () = q () = + r () = 1+ Michael Šebek Pr-ARI-17-013 7
Sledování - 1DOF Navrhněme pro tejné zadání regulátor 1DOF, tedy řízení odchylkou Potup výběrem z DOF regulátorů p () = + w ()( + ) Z obecného řešení předchozí úlohy vybereme takové, aby q () = r () q () = + w ()(1 ) r () = 1+ v () ( ) ( ) Volbou w = 1 +, v = dotaneme nevyhovující p1 () = 0 q1() = 1+ + = r1() Jinou volbou u = 1, v = 1 dotaneme ( ) ( ) ( ) 4 p () = +, q () = 1+ + = r () Toto řešení ice není ryzí, ale jinak vyhovuje. Ryzí řešení tady neexituje. Podle očekávání obahuje jmenovatel 1DOF regulátoru faktor Michael Šebek Pr-ARI-17-013 8
1DOF regulátor můžeme navrhnout i přímo řešením rovnice a () f ()() x + bq ()() = m () a položením p () = f ()() x Protože řešení minimálního tupně x3() = p3() = 0 q () = 1+ + 3 tu opět nevyhovuje, muíme najít jiné pomocí obecného řešení x () = 0 + w ()( + ) q () = 1+ + + w ()(1 ) Pro w =1 dotáváme x4() = +, p4() = + 4 q () = 1+ + 4 Sledování - 1DOF >> [x3,q3]=axbyc(a*f,b,m), p3=x3*f x3 = 0 q3 = 1 + + ^ p3 = 0 >> w=1;x4=x3+w*b; p4=x4*f,q4=q3-w*a*f p4 = ^ + ^3 q4 = 1 + + ^4 ( ) Michael Šebek Pr-ARI-17-013 9
Porovnání ledování DOF a 1DOF Povšimněte i, že DOF regulátor vyšel ryzí ale 1DOF regulátor ryzí není To e projeví na CL přenoech v na odezvě na rampu q () + r () 1+ =, = p () p () q4() 1+ + = p () 4 ( + ) 4 >> TDOF= r*coprime(b/m) TDOF = 1 + / 1 + + ^ >> T1DOF= q4*coprime(b/m) T1DOF = 1 + + ^4 / 1 + + ^ >> perdof=tf((tdof)/^); per1dof=tf(t1dof/^); impule(perdof,per1dof,tf(1/ ^),3) Michael Šebek Pr-ARI-17-013 30
Příklad: Model matching b ( ) ( + 1)( 1) a ( ) ( + )( ) Soutava = a požadovaný přeno Neoudělné faktory Volíme a řešíme rovnici t () = 1 b ( ) ( + 1)( 1) ( + 1) b( ) = = = g () ( 1) 1 g () g () 1 = f( ) ( + ) Řešení p ( ) 3( 1), q ( ) ( ). Feedforward je Tedy vychází regulátor Zkouška + p + + q = + + ( )( ) ( ) ( 1)( 1) ( ) ( ) ( 1) = + = + r () = 1 ( + ) 1 u = y+ u 3( + 1) 3( + 1) ( + 1)( 1) ( + 1)( 1) ( 1) = = 3( + )( )( + 1) + ( + 1)( 1)( + ) ( + ) ( + 1) ( + ) new Michael Šebek Pr-ARI-17-013 31