Mercurial > octave-nkf
annotate scripts/polynomial/compan.m @ 10793:be55736a0783
Grammarcheck the documentation from m-files.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sun, 18 Jul 2010 20:35:16 -0700 |
parents | f6e0404421f4 |
children | 693e22af08ae |
rev | line source |
---|---|
7017 | 1 ## Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, |
9245 | 2 ## 2005, 2006, 2007, 2008, 2009 John W. Eaton |
2313 | 3 ## |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
7016 | 8 ## the Free Software Foundation; either version 3 of the License, or (at |
9 ## your option) any later version. | |
2313 | 10 ## |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
7016 | 17 ## along with Octave; see the file COPYING. If not, see |
18 ## <http://www.gnu.org/licenses/>. | |
904 | 19 |
3368 | 20 ## -*- texinfo -*- |
21 ## @deftypefn {Function File} {} compan (@var{c}) | |
22 ## Compute the companion matrix corresponding to polynomial coefficient | |
23 ## vector @var{c}. | |
3426 | 24 ## |
3368 | 25 ## The companion matrix is |
26 ## @tex | |
27 ## $$ | |
28 ## A = \left[\matrix{ | |
29 ## -c_2/c_1 & -c_3/c_1 & \cdots & -c_N/c_1 & -c_{N+1}/c_1\cr | |
30 ## 1 & 0 & \cdots & 0 & 0 \cr | |
31 ## 0 & 1 & \cdots & 0 & 0 \cr | |
32 ## \vdots & \vdots & \ddots & \vdots & \vdots \cr | |
33 ## 0 & 0 & \cdots & 1 & 0}\right]. | |
34 ## $$ | |
35 ## @end tex | |
6850 | 36 ## @ifnottex |
9153
5247e89688e1
Eliminate most overfull errors when running texi2pdf for generating pdf documentation
Rik <rdrider0-list@yahoo.com>
parents:
9051
diff
changeset
|
37 ## @c Set example in small font to prevent overfull line |
3368 | 38 ## @smallexample |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10224
diff
changeset
|
39 ## @group |
3368 | 40 ## _ _ |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
41 ## | -c(2)/c(1) -c(3)/c(1) @dots{} -c(N)/c(1) -c(N+1)/c(1) | |
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
42 ## | 1 0 @dots{} 0 0 | |
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
43 ## | 0 1 @dots{} 0 0 | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10224
diff
changeset
|
44 ## A = | . . . . . | |
3368 | 45 ## | . . . . . | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10224
diff
changeset
|
46 ## | . . . . . | |
9051
1bf0ce0930be
Grammar check TexInfo in all .m files
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
47 ## |_ 0 0 @dots{} 1 0 _| |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10224
diff
changeset
|
48 ## @end group |
3368 | 49 ## @end smallexample |
6850 | 50 ## @end ifnottex |
3426 | 51 ## |
2311 | 52 ## The eigenvalues of the companion matrix are equal to the roots of the |
53 ## polynomial. | |
5642 | 54 ## @seealso{poly, roots, residue, conv, deconv, polyval, polyderiv, |
10224
f6e0404421f4
point to polyint in @seealso, not polyinteg
John W. Eaton <jwe@octave.org>
parents:
9245
diff
changeset
|
55 ## polyint} |
3368 | 56 ## @end deftypefn |
1025 | 57 |
3202 | 58 ## Author: Tony Richardson <arichard@stark.cc.oh.us> |
2312 | 59 ## Created: June 1994 |
60 ## Adapted-By: jwe | |
561 | 61 |
2312 | 62 function A = compan (c) |
561 | 63 |
1025 | 64 if (nargin != 1) |
6046 | 65 print_usage (); |
561 | 66 endif |
67 | |
4030 | 68 if (! isvector (c)) |
3458 | 69 error ("compan: expecting a vector argument"); |
561 | 70 endif |
71 | |
1025 | 72 n = length (c); |
2716 | 73 |
74 if (n == 1) | |
75 A = []; | |
76 else | |
77 A = diag (ones (n-2, 1), -1); | |
78 A(1,:) = -c(2:n) / c(1); | |
79 endif | |
561 | 80 |
81 endfunction | |
7411 | 82 |
83 %!assert(all (all (compan ([1, 2, 3]) == [-2, -3; 1, 0]))); | |
84 | |
85 %!assert(all (all (compan ([1; 2; 3]) == [-2, -3; 1, 0]))); | |
86 | |
87 %!assert(isempty (compan (4))); | |
88 | |
89 %!assert(all (all (compan ([3, 2, 1]) == [-2/3, -1/3; 1, 0]))); | |
90 | |
91 %!error compan ([1,2;3,4]); | |
92 | |
93 %!error compan ([]); | |
94 |