Mercurial > octave
view scripts/polynomial/compan.m @ 27980:bdad8ca48700
maint: Remove "Created:" lines from code base.
* lin2mu.m, mu2lin.m, bincoeff.m, common_size.m, deal.m, nextpow2.m,
postpad.m, prepad.m, repmat.m, shift.m, xor.m, inpolygon.m, rotx.m, roty.m,
rotz.m, getappdata.m, isappdata.m, rmappdata.m, setappdata.m, colormap.m,
gray.m, gray2ind.m, image.m, imagesc.m, ind2gray.m, ind2rgb.m, ocean.m,
rgb2ind.m, javachk.m, javamem.m, commutation_matrix.m, cross.m,
duplication_matrix.m, gls.m, housh.m, isdefinite.m, ishermitian.m,
issymmetric.m, null.m, ols.m, orth.m, qzhess.m, vech.m, __w2mpth__.m,
expand_rel_paths.m, make_rel_paths.m, daspect.m, pbaspect.m, rticks.m,
thetaticks.m, xticklabels.m, xticks.m, yticklabels.m, yticks.m, zticklabels.m,
zticks.m, comet.m, errorbar.m, loglogerr.m, __errplot__.m, semilogxerr.m,
semilogyerr.m, cla.m, copyobj.m, hdl2struct.m, linkaxes.m, __ghostscript__.m,
__gnuplot_get_var__.m, __gnuplot_has_feature__.m, __gnuplot_has_terminal__.m,
__gnuplot_open_stream__.m, struct2hdl.m, compan.m, conv.m, deconv.m, mpoles.m,
poly.m, polyder.m, polyfit.m, polyint.m, polyout.m, polyreduce.m, polyval.m,
polyvalm.m, residue.m, roots.m, __parse_movargs__.m, detrend.m, fftconv.m,
fftfilt.m, fftshift.m, ifftshift.m, movfun.m, movslice.m, beta.m, betaln.m,
lcm.m, pow2.m, corr.m, kurtosis.m, skewness.m, untabify.m, calendar.m,
datestr.m, datevec.m, eomday.m, now.m, weekday.m:
Remove "Created:" lines from code base.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 21 Jan 2020 13:06:02 -0800 |
parents | bd51beb6205e |
children | 7f1cec12c240 |
line wrap: on
line source
######################################################################## ## ## Copyright (C) 1994-2020 The Octave Project Developers ## ## See the file COPYRIGHT.md in the top-level directory of this ## distribution or <https://octave.org/copyright/>. ## ## This file is part of Octave. ## ## Octave is free software: you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 3 of the License, or ## (at your option) any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, see ## <https://www.gnu.org/licenses/>. ## ######################################################################## ## -*- texinfo -*- ## @deftypefn {} {} compan (@var{c}) ## Compute the companion matrix corresponding to polynomial coefficient vector ## @var{c}. ## ## The companion matrix is ## @tex ## $$ ## A = \left[\matrix{ ## -c_2/c_1 & -c_3/c_1 & \cdots & -c_N/c_1 & -c_{N+1}/c_1\cr ## 1 & 0 & \cdots & 0 & 0 \cr ## 0 & 1 & \cdots & 0 & 0 \cr ## \vdots & \vdots & \ddots & \vdots & \vdots \cr ## 0 & 0 & \cdots & 1 & 0}\right]. ## $$ ## @end tex ## @ifnottex ## @c Set example in small font to prevent overfull line ## ## @smallexample ## @group ## _ _ ## | -c(2)/c(1) -c(3)/c(1) @dots{} -c(N)/c(1) -c(N+1)/c(1) | ## | 1 0 @dots{} 0 0 | ## | 0 1 @dots{} 0 0 | ## A = | . . . . . | ## | . . . . . | ## | . . . . . | ## |_ 0 0 @dots{} 1 0 _| ## @end group ## @end smallexample ## ## @end ifnottex ## The eigenvalues of the companion matrix are equal to the roots of the ## polynomial. ## @seealso{roots, poly, eig} ## @end deftypefn ## Author: Tony Richardson <arichard@stark.cc.oh.us> ## Adapted-By: jwe function A = compan (c) if (nargin != 1) print_usage (); endif if (! isvector (c)) error ("compan: C must be a vector"); endif n = length (c); if (n == 1) A = []; else A = diag (ones (n-2, 1), -1); A(1,:) = -c(2:n) / c(1); endif endfunction %!assert (compan ([1, 2, 3]), [-2, -3; 1, 0]) %!assert (compan ([1; 2; 3]), [-2, -3; 1, 0]) %!assert (isempty (compan (4))) %!assert (compan ([3, 2, 1]), [-2/3, -1/3; 1, 0]) %!error compan ([1,2;3,4]) %!error compan ([])