# # This maple file verifies that the 14 feedback laws in # "Some remarks on real and complex output feedback" for the system # that cannot be controlled with real output feedback are indeed # feedback laws for that system # interface(quiet=true): # # Below are 14 4 X 2 complex matrices (in conjugate pairs) # K1,...,K14 # # There is also a 2 X 6 matrix of degree four real polynomials, F(X), # and 8 real points Poles := (-8,-6,-4,-2,1, 2, 3, 4). # # These points are roots of the degree 8 polynomial # # | F(X) | The leading monomials of F are: # |------| # (1) det| | | = 0 |1 0 0 0 0 0| # |Ki| I | |0 1 0 0 0 0| # | | | # # Running this file in Maple will verify equation (1) is satisfied # for Ki and X, for each i from 1 -- 14 and X in Poles. # # # We generated these data in the following manner: # # We first did a random search for matrices of polynomials F(X) and # 8 values Poles so that the 14 matrices C_i, D_i satisfying the # equation (1) would be all complex. This was done using the # software SINGULAR, to generate an eliminant polynomial, whose number # of real roots was checked using the realroot routine of MAPLE. # This part used exact integer arithmetic in SINGULAR, and Sturm # sequences in Maple. This constitutes a proof that F(X) and the # 8 values in Poles have the the properties: # 1) F(X) is non-degenerate. # 2) The 14 solutions to the system (K1 -- K14) (1) as X ranges over # Poles are all complex. # # Then we generated (also using exact arithmetic) polynomials # Poly_i,j i=1,2,3,4, j=1,2 whose roots are the components of the # matrices K1,...,K14. These polynomials are stored in the maple file # polynomials.maple, which also finds roots with 20 digit precision. # To match the roots and form the matrices, we also computed polynomials # whose roots were various sums of the coordinates of the matrices. # # Finally, they were assembled into the matrices written below. # # A note about the precision required: # # The end of this file contains code for generating the equations # that the coordinates of the matrices K1 -- K14 must satisfy. (This # is part of the verifications of equation (1) above.) These # equations are quadratic in the coordinates with coefficients as # large as 2.3 * 10^9. Since the solutions are all in the range of # 10^2 to 10^3, this necessitates a great deal of numerical precision # (23 digits) in order to verify these are indeed solutions. # # We have not been able to find another example of this phenomena # which requires less precision, despite extensive searching. # # # - Joachim Rosenthal, Dept. Math, University of Notre Dame. # - Frank Sottile, Mathematical Sciences Research Institute # (Dept. of Math, University of Toronto) # 1 June 1997 # with(linalg): Digits:=23: K1 := matrix([ [-548.1543631072859+ 539.02172783574002*I, -2966.220011381735449+1301.806890926492508*I], [227.99002317474104-195.29675914098226*I, 1189.40572416765385-428.190112835481936*I], [253.619670619102274-128.997418066861599*I, 1192.66093663708038-127.782426659628597*I], [-373.4608141108503-376.1870941851628*I, -907.2715490825303837-2040.657619029875556*I] ]): K2 := matrix([ [-548.1543631072859- 539.02172783574002*I, -2966.220011381735449-1301.806890926492508*I], [ 227.99002317474104+195.29675914098226*I, 1189.40572416765385+428.190112835481936*I], [ 253.619670619102274+128.997418066861599*I, 1192.66093663708038+127.782426659628597*I], [-373.4608141108503+376.1870941851628*I, -907.2715490825303837+2040.657619029875556*I] ]): K3 := matrix([ [ 182.1974051162797+1524.2891350121054*I, -3910.9491667600289+3319.9425134666556*I], [-92.76689536072804-494.390627883840*I, 1206.13014159582817-1171.58923461208352*I], [ 202.71121387564936- 458.78014215695346*I, 1652.30669576900037-280.820983264097575*I], [-999.496765955436554-938.918292576740638*I, 771.9810394973421-4516.958140814761213*I] ]): K4 := matrix([ [ 182.1974051162797-1524.2891350121054*I, -3910.9491667600289-3319.9425134666556*I], [-92.76689536072804+494.390627883840*I, 1206.13014159582817+1171.58923461208352*I], [ 202.71121387564936+ 458.78014215695346*I, 1652.30669576900037+280.820983264097575*I], [-999.496765955436554+938.918292576740638*I, 771.9810394973421+4516.958140814761213*I] ]): K5 := matrix([ [ 2792.9110057318105-969.00549705135278*I, 3350.9339523791667-832.762320679797284*I], [- 338.608141548768 - 31.1420684422097*I, -390.733153481711 - 71.9581835765450*I], [-858.10666480772375+463.34803831698071*I, -1047.08493981311276+448.52274247532122*I], [-1736.0182637110866+473.54602107116131*I, -2069.7786151738302+367.88390311074763*I] ]): K6 := matrix([ [ 2792.9110057318105+969.00549705135278*I, 3350.9339523791667+832.762320679797284*I], [ -338.608141548768 + 31.1420684422097*I, -390.733153481711 + 71.9581835765450*I], [-858.10666480772375-463.34803831698071*I, -1047.08493981311276-448.52274247532122*I], [-1736.0182637110866-473.54602107116131*I, -2069.7786151738302-367.88390311074763*I] ]): K7 := matrix([ [566.14047176252718- 390.1690631954798*I, 894.7573009772359-213.7664118348474*I], [ -28.9144418101747 - 8.82325220859399*I, - 31.9889032754154 - 25.1286025912621*I], [-101.611268377237 + 166.198294126534*I, - 207.075559094765 + 158.433905818864*I], [-433.109410705026 + 160.543671922194*I, - 618.358581551134 - 8.42746099774335*I] ]): K8 := matrix([ [566.14047176252718+ 390.1690631954798*I, 894.7573009772359+213.7664118348474*I], [ -28.9144418101747 + 8.82325220859399*I, - 31.9889032754154 + 25.1286025912621*I], [-101.611268377237 - 166.198294126534*I, - 207.075559094765 - 158.433905818864*I], [-433.109410705026 - 160.543671922194*I, - 618.358581551134 + 8.42746099774335*I] ]): K9 := matrix([ [-1328.31492831596508+780.43146580510958*I, 2115.8811996413627- 363.25099106004349*I], [ 277.0599315399026-134.0101686258348*I, -426.505631447159 + 38.4080785894925*I], [ 242.753288068855 - 128.748683783964*I, - 380.517275415650 + 48.1897454846160*I], [ 809.814164981704 - 420.527784827832*I, - 1263.86094232894868+149.27131835292291*I] ]): K10 := matrix([ [-1328.31492831596508-780.43146580510958*I, 2115.8811996413627+ 363.25099106004349*I], [ 277.0599315399026+134.0101686258348*I, -426.505631447159 - 38.4080785894925*I], [ 242.753288068855 + 128.748683783964*I, - 380.517275415650 - 48.1897454846160*I], [ 809.814164981704 + 420.527784827832*I, -1263.86094232894868-149.27131835292291*I] ]): K11 := matrix([ [-74.07812921055438 - 1186.0867962658997*I, 481.83814937211068-659.46539248077808*I], [131.85311577768057+223.6599712395458*I, -28.4575338243835 + 176.018708417247*I], [ 50.0398731323218 + 311.162560564792*I, - 110.484321267527 + 186.531966999705*I], [120.94035205524575+693.23751296762126*I, - 241.138619140528 + 419.709352592197*I] ]): K12 := matrix([ [-74.07812921055438 + 1186.0867962658997*I, 481.83814937211068+659.46539248077808*I], [131.85311577768057-223.6599712395458*I, -28.4575338243835- 176.018708417247*I], [ 50.0398731323218 - 311.162560564792*I, - 110.484321267527-186.531966999705*I], [120.94035205524575-693.23751296762126*I, - 241.138619140528-419.709352592197 *I] ]): K13 := matrix([ [-466.3420096818032+2560.3776496553293*I, -477.06216348936717+1505.4573962873226*I], [ 206.16217936754085 - 504.1659905544772*I, 162.819554092696 - 287.715806475160*I], [ 198.483315335125 - 690.317301079547*I, 172.179197573658 - 400.2773514799496*I], [350.2539156691074-1658.3575908118343*I, 337.47012412920796 - 971.424525500586678*I] ]): K14 := matrix([ [-466.3420096818032-2560.3776496553293*I, - 477.06216348936717-1505.4573962873226*I], [ 206.16217936754085 + 504.1659905544772*I, 162.819554092696 + 287.715806475160*I], [ 198.483315335125 + 690.317301079547*I, 172.179197573658 + 400.2773514799486*I], [350.2539156691074+1658.3575908118343*I, 337.47012412920796 + 971.424525500586678*I] ]): F := x-> transpose(matrix([ [ x^4-16*x^3+ 3*x^2+11*x , 6*x^3- 4*x^2- 9*x- 5], [ -26*x^3+10*x^2+ 7*x+16, x^4+ 3*x^3- x^2-16*x-13], [ 9*x^3-12*x^2+13*x-17, 8*x^3- 6*x^2+ 5*x+15], [ -31*x^3-16*x^2+43*x-23, 26*x^3-14*x^2-11*x+12], [ x^3-36*x^2+ 8*x-13, 11*x^3+ 5*x^2+11*x+33], [ 23*x^3- x^2+ 2*x-21, -7*x^2+11*x+ 5]])): Poles := vector([-8,-6,-4,-2,1, 2, 3, 4]): for jj from 1 to 14 do for ii from 1 to 8 do lprint(det(stack(F(Poles[ii]), concat(K.jj,band([1],4)))), od; quit