home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l455 / 2.ddi / MUTOOLS2.DI$ / HINFCHK.M < prev    next >
Encoding:
Text File  |  1993-03-11  |  1.1 KB  |  44 lines

  1. % function out = hinfchk(sys,nnorm,zeroeps)
  2. %
  3. %   forms Hamiltonian matrix for H_infinity
  4. %   norm calculation for SYSTEM matrices. main
  5. %   subroutine for HINFNORM.
  6. %
  7. %   See also: H2, H2NORM, HINF, HINFFI, and HINFNORM.
  8.  
  9. function out = hinfchk(sys,nnorm,zeroeps)
  10.  if nargin == 0
  11.    disp('usage: out = hinfchk(sys,nnorm,zeroeps)')
  12.    return
  13.  end
  14.  if nargin == 1
  15.    nnorm = 1;
  16.    zeroeps = 1e-9;
  17.  elseif nargin == 2
  18.    zeroeps = 1e-9;
  19.  end
  20.  [mtype,mrows,mcols,mnum] = minfo(sys);
  21.  [a,b,c,d] = unpck(sys);
  22.  b = (1.0/sqrt(nnorm)) * b;
  23.  c = (1.0/sqrt(nnorm)) * c;
  24.  d = (1.0/nnorm) * d;
  25.  imdd = eye(mcols) - d'*d;
  26.  sol = imdd \ [b' d'*c];
  27.  ham = [-a' -c'*c ; 0*a a] - [c'*d;-b]*sol;
  28.  evals = eig(ham);
  29.  mineval = min(abs(real(evals)));
  30. %check with keith's algo here
  31.  if mineval > zeroeps
  32.    out = -1;
  33.  else
  34.    loc = find( (abs(real(evals))<=zeroeps) & (imag(evals)>=0) );
  35.    if nargout == 0
  36.      fprintf('norm test fails, problem frequencies are\n')
  37.      disp([imag(evals(loc))]);
  38.    else
  39.      out = imag(evals(loc));
  40.    end
  41.  end
  42. %
  43. % Copyright MUSYN INC 1991,  All Rights Reserved
  44.