home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / scripts / polynomial / compan.m next >
Text File  |  1996-09-28  |  2KB  |  67 lines

  1. # Copyright (C) 1995 John W. Eaton
  2. # This file is part of Octave.
  3. # Octave is free software; you can redistribute it and/or modify it
  4. # under the terms of the GNU General Public License as published by the
  5. # Free Software Foundation; either version 2, or (at your option) any
  6. # later version.
  7. # Octave is distributed in the hope that it will be useful, but WITHOUT
  8. # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  9. # FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  10. # for more details.
  11. # You should have received a copy of the GNU General Public License
  12. # along with Octave; see the file COPYING.  If not, write to the Free
  13. # Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
  14.  
  15. function A = compan (c)
  16.  
  17. # usage: compan (c)
  18. #
  19. # Compute the companion matrix corresponding to polynomial vector c.
  20. #
  21. # In octave a polynomial is represented by it's coefficients (arranged
  22. # in descending order). For example a vector c of length n+1 corresponds
  23. # to the following nth order polynomial
  24. #
  25. #   p(x) = c(1) x^n + ... + c(n) x + c(n+1).
  26. #
  27. # The corresponding companion matrix is
  28. #         _                                                        _
  29. #        |  -c(2)/c(1)   -c(3)/c(1)  ...  -c(n)/c(1)  -c(n+1)/c(1)  |
  30. #        |       1            0      ...       0             0      |
  31. #        |       0            1      ...       0             0      |
  32. #    A = |       .            .   .            .             .      |
  33. #        |       .            .       .        .             .      |
  34. #        |       .            .           .    .             .      |
  35. #        |_      0            0      ...       1             0     _|
  36. #
  37. # The eigenvalues of the companion matrix are equal to the roots of the
  38. # polynomial.
  39. #
  40. # SEE ALSO: poly, roots, residue, conv, deconv, polyval, polyderiv, polyinteg
  41.  
  42. # Written by Tony Richardson (amr@mpl.ucsd.edu) June 1994.
  43.  
  44.   if (nargin != 1)
  45.     usage ("compan (vector)");
  46.   endif
  47.  
  48.   if(is_matrix (c))
  49.     error("compan: expecting a vector argument.");
  50.   endif
  51.  
  52. # Ensure that c is a row vector.
  53.  
  54.   if(rows(c) > 1)
  55.     c = c.';
  56.   endif
  57.  
  58.   n = length (c);
  59.   A = diag (ones (n-2, 1), -1);
  60.   A (1, :) = -c (2:n) /c (1);
  61.  
  62. endfunction
  63.