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

  1. % function [u,t]=ocsf(u,a)
  2. %
  3. %  *****  UNTESTED SUBROUTINE  *****
  4. %
  5. % Given a matrix A in complex schur form, OCSF finds 
  6. %  T = U'*A*U such that T is A with its eigenvalues 
  7. %  rearranged into increasing order of real parts.
  8. %
  9. %  See Also: ORSF
  10.  
  11. function [u,t]=ocsf(u,a)
  12. % 1990 version
  13. t=a;
  14. [n,m]=size(a);
  15. if n~=m
  16.   disp('the A matrix is not square')
  17.   return
  18. end;
  19. if any(abs(triu(a',1)))
  20.   disp('A is not in complex schur form')
  21.   return
  22. end
  23. ia=1;id=1;ib=n-1;il=1;
  24. while il~=0,
  25.   il=0;
  26.   for i=ia:id:ib,
  27.     tii=t(i,i);tioio=t(i+1,i+1);
  28.     if real(tii)>real(tioio),
  29.       [s,r]=qr([t(i,i+1);tioio-tii]);
  30.       t(1:i+1,i:i+1)=t(1:i+1,i:i+1)*s;
  31.       t(i:i+1,i:n)=s'*t(i:i+1,i:n);
  32.       u(1:n,i:i+1)=u(1:n,i:i+1)*s;
  33.       t(i:i+1,i:i+1)=[tioio,t(i,i+1);0 tii];
  34.       il=i;
  35.     end;
  36.   end;
  37.   ib=ia;id=-id;ia=il+id;
  38. end;
  39.  
  40. %
  41. % Copyright MUSYN INC 1991,  All Rights Reserved
  42.