Mercurial > hg > octave-lyh
diff scripts/polynomial/poly.m @ 787:c5d35bb139b6
[project @ 1994-10-11 00:34:13 by jwe]
Initial revision
author | jwe |
---|---|
date | Tue, 11 Oct 1994 00:34:39 +0000 |
parents | |
children | 3470f1e25a79 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/polynomial/poly.m @@ -0,0 +1,33 @@ +function y = poly (x) + # + # If A is a square n-by-n matrix, poly (A) is the row vector of + # the coefficients of det (z * eye(n) - A), the characteristic + # polynomial of A. + # If x is a vector, poly (x) is a vector of coefficients of the + # polynomial whose roots are the elements of x. + + # Written by KH (Kurt.Hornik@neuro.tuwien.ac.at) on Dec 24, 1993 + # Copyright Dept of Probability Theory and Statistics TU Wien + + m = min (size (x)); + n = max (size (x)); + if (m == 0) + y = 1; + elseif (m == 1) + v = x; + elseif (m == n) + v = eig (x); + else + error ("usage: poly(x), where x is a vector or a square matrix"); + endif + + y = [1, zeros (1, n)]; + for j = 1:n; + y(2:(j+1)) = y(2:(j+1)) - v(j) .* y(1:j); + endfor + + if (all (all (imag (x) == 0))) + y = real (y); + endif + +endfunction