Chapter 47
Glossary For System Hamiltonian Calculations

This glossary contains expressions available for manipulation, functions available for evaluation, and substitution rules all prefaced by ru.

Hamiltonians
These formulas contain mixed state and dual variables (IA systems, sec 5.2):  
HWUY  = Hamiltonian for the system in SYSDefIA.m .  
HWU = HWUY/.Y->G2[x,W,U];  
HWY = HWUY/.U->g[z,Y];  
HW = HWY/.Y->G2[x,W,U];  
 
These formulas contain state variables only (IA systems):  
sHWUY = HWUY/.ruxz;  
sHWU = HWU/.ruxz;  
sHWY = HWY/.ruxz;  
sHW = HW/.ruxz;  
 
These formulas contain dual variables only (IA systems):  
dHWUY = HWUY//.rudual;  
dHWU = HWU//.rudual;  
dHWY = HWY//.rudual;  
dHW = HW//.rudual;  

Extremizing Hamiltonians
 
ricd = Riccati from bounded real lemma for SISO systems (sec 5.1)  
 
CritW[x_,z_,b_] = value of W which makes Grad[sHW,W]=0(both IA and WIA systems).  
 
sHWo  = max sHW (IA systems)  
            W  
 
sHWoWIA  = max sHW (WIA systems)  
               W  
 
CritU[x_,z_] = value of U which makes Grad[sHWU,U]=0 (IA systems).  
 
RULES FOR CRITICAL VALUES:  
 
ruCritW = {W -> tp[B1[x]] ** tp[GEx[x, z]] +  
                tp[D21[x]] ** tp[b[z]] ** tp[GEz[x, z]]};  
 
ruCritU = {U -> -inv[e1[x]] ** tp[B2[x]] ** tp[GEx[x, z]] -  
                             inv[e1[x]] ** tp[D12[x]] ** C1[x]}  
 
 

Nonlinear Riccatis

THE DGKF RICCATIS

IAX[x_] = XX[x] ** (A[x] - B2[x] ** inv[e1[x]] ** tp[D12[x]] ** C1[x])+  
   (-tp[C1[x]] ** D12[x] ** inv[e1[x]] ** tp[B2[x]] + tp[A[x]]) **  
   tp[XX[x]] + tp[C1[x]] ** C1[x] +  
    XX[x] ** (B1[x] ** tp[B1[x]] - B2[x] ** inv[e1[x]] ** tp[B2[x]]) **  
    tp[XX[x]] - tp[C1[x]] ** D12[x] ** inv[e1[x]] ** tp[D12[x]] ** C1[x]  
 
IAYI[x_] = YYI[x] ** (A[x] - B1[x] ** tp[D21[x]] ** inv[e2[x]]**C2[x]) +  
(-tp[C2[x]]**inv[e2[x]]**D21[x]**tp[B1[x]] + tp[A[x]])**tp[YYI[x]] +  
      tp[C1[x]] ** C1[x] + YYI[x] **  
       (B1[x]** tp[B1[x]] - B1[x]**tp[D21[x]] ** inv[e2[x]] ** D21[x] **  
          tp[B1[x]]) ** tp[YYI[x]] - tp[C2[x]] ** inv[e2[x]] ** C2[x]  
 
 
k[x_,z_]   = minimum in b of sHWo evaluated at a* and c* (see [BHW])  
                  This is the 2 variable generalization of DGKF Riccati.  
 
 
Hopt[x,z,a,b]  = min max sHWU, where you can specify functions a[z],b[z]  
                   U   W  

The Central Controller
    ruc = c[z_]:> -inv[e1[z]]**(tp[B2[z]]**XX[z] + tp[D12[z]]**C1[z]);  
    rua = a[z_]:> A[z] + B2[z]**c[z] - b[z]**C2[z] +  
                         (B1[z]- b[z]**D21[z])**tp[B1[z]]**XX[z]//.ruc ;  
    rublin= the rule in the linear case for the b in the central soln  
                to the H-infinity control problem.  
    ruaWIA = a[z_]:> AB[z,c[z]] - b[z]**C2[z] +  
                         (B1[z]- b[z]**D21[z])**tp[B1[z]]**XX[z];  
 
Plug rua and ruc into the main Hamiltonian sHWo to get  
     sHWo= k[x,z]  +  tp[bterm]**bterm  
        which defines bterm.  
 

Special Systems

Linear Systems

Linear systems satisfying the DGKF simplifying assumption are special cases of an IA system. To take an expression in H control which has been derived for an IA system and specialize it to linear systems apply

          SubSym[expr,rulinearall]

where rulinearall is a long list of rules for specializing IA systems formulas described below:

 
ruGEXY={ruGEXY1,ruGEXY2};  
                      where ruGEXY1=tp[GEx[x_,0]]:>tp[x]**inv[YY];  
                            ruGEXY2=tp[GEx[x_,x_]]:>tp[x]**XX;  
 
rulinearall=Union[rulinearsys,ruGE1, ruGEXY,rulinearXY];  
              where rulinearsys={A[x_]:>A**x, B1[x_]:>B1,  
                                         B2[x_]:>B2,C1[x_]:>C1**x,C2[x_]:>C2**x,  
                                 D21[x_]:>D21,D12[x_]:>D12,a[x_]:>a**x,  
                                         b[x_]:>b,c[x_]:>c**x,dd[x_]:>dd,  
                                         e1[x_]:>e1,  
                                         e2[x_]:>e2,tp[e1]->e1,tp[e2]->e2};  
                    rulinearXY={XX[x_]:>XX**x,YY[p_]:>p**YY,  
                                                YYI[x_]:>inv[YY]**x};  
 
                            ruinvYY=YYI->inv[YY];  
 
Lin[expr_]:= SubSym[expr,rulinearall];  
Energy Ansatzes  which  are true for linear systems:  
rulinearEB = sets GEx[x,z], GEz[x,z] to be linear  
ruGEz0=GEz[x_,x_]:>0  
 
 
 Ansatz in [BHW] %(5.1):  
 
ruGE1=Flatten[{ruGEz0,SubSym[{ruGEz0,ruGEx1,ruGEz1},ruXXYYI]}];  
             where ruGEx1=GEx[x_,z_]:>GEx[x,x]+GEx[x-z,0]-GEx[x-z,x-z];  
                   ruGEz1=GEz[x_,z_]:>-GEx[x-z,0]+GEx[x-z,x-z];  
 

Homogeneous Systems:

 
ruhomog = {A[0]->0, C1[0]->0, C2[0]->0, a[0]->0, c[0]->0};  

Doyle Glover Khargonekar Francis Simplifying Assumptions:

 
ruDGKFNL = Apply DGKF simplifying assumptions for IA systems  
 
ruDGKFlin = Apply DGKF simplifying assumptions for linear systems  
 
ruCRcDGKF=c[z_]:>-tp[B2[z]]**tp[XX[z]];  
ruCRqDGKF=q[x_,z_]:>-tp[C2[x-z]];  
 
ruaDGKF = a[z_]:>A[z]+B1[z]**tp[B1[z]]**tp[XX[z]] -  
               B2[z]**tp[B2[z]]**tp[XX[z]] - b[z]**C2[z]+cheat[z];  
 
ruaDGKF2=a[z_]:> AA1[z,z]-b[z]**C2[z];  
 

More Rules Available For Substitution
 
CHANGE OF VARIABLES:  
Convert energy Hamiltonians from dual or mixed state/dual to state  
variables only:  
ruxz={p->GEx[x,z], PP->GEz[x,z]};  
 
Convert energy Hamiltonian from dual or mixed state/dual to dual variables only:  
rudual={rudualx,rudualz};  
                              where rudualx = x->IGE1[p,PP];  
                                    rudualy = z->IGE2[p,PP];  
 
CHANGE OF NOTATION:  
rue = {tp[D12[x_]] ** D12[x_]:> e1[x], D21[x_] ** tp[D21[x_]] :> e2[x]}  
rubtoq=tp[GEz[x_,z_]]**b[z_]:>q[x,z]  
 
ruXXYYI={ruGEz0,ruXX, ruYYI}  
                      where   ruXX = GEx[x_,x_]:>2*XX[x]  
                              ruYYI = GEx[x_,0]:>2*YYI[x]  
 
ruIAXYI={ruIAX,ruIAYI};  
                      where ruIAX = replace terms linear in A or tp[A]  
                                            using IAX[x]=0 (see 4.4b).  
                            ruIAYI= replace terms linear in A or tp[A]  
                                            using IAYI[x]=0 (see 4.4c).  
 
 
 
FOR ENERGY ANSATZ EXPERIMENTATION AS IN [BHW]:  
 
    EnergyGuess[ruleGE_] = generate sHWo with the Ansatz on the energy function  
   given by ruleGE and a, b, and c are substituted out  
   according to the RECIPE.  
    EnergyGuess2[ruleGE,rulea] = same but a is substituted out by the  
                                 user provided rulea.  
 
    EnergyGuessDGKF[ruleGE_] = same with DGKF simplifying assumptions  
    EnergyGuess2DGKF[ruleGE,ruaDGKF] = same with DGKF simplifying assumptions