Code covered by the BSD License  

Highlights from
Optimal reduced-order discrete-time LQG design

Optimal reduced-order discrete-time LQG design

by

 

16 May 2008 (Updated )

Solution of the SDOPE by repeated forward and backward iteration

scdope.m
% Comparison of SDOPE and CDOPE on example 1
  clear

% System matrices
  p =[0.1052   0.1841    0.2543   0.2004   0.2529;
      0.0226   0.2493    0.3222   0.3297   0.0441;
      0.3259   0.3989    0.0037   0.2827   0.3139;
      0.3261   0.0166    0.1840   0.4466   0.1997;
      0.4487   0.0237    0.0321   0.4062   0.3366];

  g =[0.9103;  0.7622;   0.2625;  0.0475;  0.7361];

  c =[0.3282   0.6326    0.7564   0.9910   0.3653];

% Criterion matrices
  v =[0.6316         0         0         0         0;
      0         0.8847         0         0         0;
      0         0         0.2727         0         0;
      0         0         0         0.4364         0;
      0         0         0         0         0.7665 ];


  w = 0.4777;

  q = [0.2470         0         0         0         0;
            0    0.9826         0         0         0;
            0         0    0.7227         0         0;
            0         0         0    0.7534         0;
            0         0         0         0    0.6515];

  r = 0.0727;
  
% Compute reduced-order compensators from CDOPE and SDOPE
  for nc=4:-1:1
    disp(' ');
    opt=[]; opt(6)=3; opt(5)=-1;
    [f,k,l,sigp,sigs,spr,pt,st,ph,sh,sigc,trps]=dprotino(p,g,c,v,w,q,r,nc,opt);
    disp([' Erroneous answers from CDOPE nc=' num2str(nc)]);
    disp([' sigp=' num2str(sigp) ' sigs=' num2str(sigs)]);
    [f,k,l,sigp,sigs,spr,pt,st,ph,sh,sigc,trps]=dprotin(p,g,c,v,w,q,r,nc,opt);
    disp([' Correct answers from SDOPE nc=' num2str(nc)]);
    disp([' sigp=' num2str(sigp) ' sigs=' num2str(sigs)]);
  end

Contact us