annotate scripts/linear-algebra/condeig.m @ 30564:796f54d4ddbf stable

update Octave Project Developers copyright for the new year In files that have the "Octave Project Developers" copyright notice, update for 2021. In all .txi and .texi files except gpl.txi and gpl.texi in the doc/liboctave and doc/interpreter directories, change the copyright to "Octave Project Developers", the same as used for other source files. Update copyright notices for 2022 (not done since 2019). For gpl.txi and gpl.texi, change the copyright notice to be "Free Software Foundation, Inc." and leave the date at 2007 only because this file only contains the text of the GPL, not anything created by the Octave Project Developers. Add Paul Thomas to contributors.in.
author John W. Eaton <jwe@octave.org>
date Tue, 28 Dec 2021 18:22:40 -0500
parents 7854d5752dd2
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3 ## Copyright (C) 2006-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27216
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
7 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
8 ## This file is part of Octave.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
11 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
13 ## (at your option) any later version.
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
14 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22323
diff changeset
18 ## GNU General Public License for more details.
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
19 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
21 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 23220
diff changeset
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
25
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
26 ## -*- texinfo -*-
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
27 ## @deftypefn {} {@var{c} =} condeig (@var{a})
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
28 ## @deftypefnx {} {[@var{v}, @var{lambda}, @var{c}] =} condeig (@var{a})
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
29 ## Compute condition numbers of a matrix with respect to eigenvalues.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
30 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
31 ## The condition numbers are the reciprocals of the cosines of the angles
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
32 ## between the left and right eigenvectors; Large values indicate that the
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
33 ## matrix has multiple distinct eigenvalues.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
34 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
35 ## The input @var{a} must be a square numeric matrix.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
36 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
37 ## The outputs are:
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
38 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
39 ## @itemize @bullet
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
40 ## @item
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
41 ## @var{c} is a vector of condition numbers for the eigenvalues of
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
42 ## @var{a}.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
43 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
44 ## @item
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
45 ## @var{v} is the matrix of right eigenvectors of @var{a}. The result is
22195
93ed9396f2c3 * condeig.m: fix Texinfo markup typo in condeig doc string (bug #48672)
Mike Miller <mtmiller@octave.org>
parents: 22129
diff changeset
46 ## equivalent to calling @code{[@var{v}, @var{lambda}] = eig (@var{a})}.
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
47 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
48 ## @item
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
49 ## @var{lambda} is the diagonal matrix of eigenvalues of @var{a}. The
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
50 ## result is equivalent to calling
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
51 ## @code{[@var{v}, @var{lambda}] = eig (@var{a})}.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
52 ## @end itemize
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
53 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
54 ## Example
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
55 ##
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
56 ## @example
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
57 ## @group
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
58 ## a = [1, 2; 3, 4];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
59 ## c = condeig (a)
26600
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
60 ## @result{} c =
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
61 ## 1.0150
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
62 ## 1.0150
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
63 ## @end group
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
64 ## @end example
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
65 ## @seealso{eig, cond, balance}
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
66 ## @end deftypefn
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
67
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
68 function [v, lambda, c] = condeig (a)
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
69
28891
de5f2f9a64ff maint: Use same coding style when checking for a minimum of 1 input.
Rik <rik@octave.org>
parents: 27923
diff changeset
70 if (nargin < 1)
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
71 print_usage ();
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
72 endif
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
73
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
74 if (! (isnumeric (a) && issquare (a)))
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
75 error ("condeig: A must be a square numeric matrix");
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
76 endif
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
77
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
78 if (issparse (a) && nargout <= 1)
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
79 ## Try to use svds to calculate the condition number as it will typically
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
80 ## be much faster than calling eig as only the smallest and largest
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
81 ## eigenvalue are calculated.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
82
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
83 ## FIXME: This calculates one condition number for the entire matrix.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
84 ## In the full case, separate condition numbers are calculated for every
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
85 ## eigenvalue.
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
86 try
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
87 s0 = svds (a, 1, 0); # min eigenvalue
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
88 v = svds (a, 1) / s0; # max eigenvalue
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
89 catch
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
90 ## Caught an error as there is a singular value exactly at zero!!
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
91 v = Inf;
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
92 end_try_catch
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
93 return;
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
94 endif
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
95
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
96 ## Right eigenvectors
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
97 [v, lambda] = eig (a);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
98
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
99 if (isempty (a))
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
100 c = [];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
101 else
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
102 ## Corresponding left eigenvectors
26272
aa47b1287d7e condeig.m: Suppress warning about internal intermediate matrix being singular.
Rik <rik@octave.org>
parents: 25054
diff changeset
103 ## Use 2-argument form to suppress possible singular matrix warning.
aa47b1287d7e condeig.m: Suppress warning about internal intermediate matrix being singular.
Rik <rik@octave.org>
parents: 25054
diff changeset
104 [vl, ~] = inv (v);
aa47b1287d7e condeig.m: Suppress warning about internal intermediate matrix being singular.
Rik <rik@octave.org>
parents: 25054
diff changeset
105 vl = vl';
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
106 ## Normalize vectors
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
107 vl ./= repmat (sqrt (sum (abs (vl .^ 2))), rows (vl), 1);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
108
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
109 ## Condition numbers
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
110 ## Definition: cos (angle) = (norm (v1) * norm (v2)) / dot (v1, v2)
27216
823b4bcf79fc unless necessary for formatting or code, use ' instead of `
John W. Eaton <jwe@octave.org>
parents: 26600
diff changeset
111 ## Eigenvectors have been normalized so 'norm (v1) * norm (v2)' = 1
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
112 c = abs (1 ./ dot (vl, v)');
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
113 endif
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
114
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
115 if (nargout <= 1)
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
116 v = c;
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
117 endif
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
118
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
119 endfunction
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
120
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
121
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
122 %!test
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
123 %! a = [1, 2; 3, 4];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
124 %! c = condeig (a);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
125 %! expected_c = [1.0150; 1.0150];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
126 %! assert (c, expected_c, 0.001);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
127
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
128 %!test
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
129 %! a = [1, 3; 5, 8];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
130 %! [v, lambda, c] = condeig (a);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
131 %! [expected_v, expected_lambda] = eig (a);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
132 %! expected_c = [1.0182; 1.0182];
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
133 %! assert (v, expected_v, 0.001);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
134 %! assert (lambda, expected_lambda, 0.001);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
135 %! assert (c, expected_c, 0.001);
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
136
28942
fc4bb4bd1d5e maint: Use '##' as lead-in for full-line comments.
Rik <rik@octave.org>
parents: 28896
diff changeset
137 ## Test empty input
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
138 %!assert (condeig ([]), [])
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
139
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
140 ## Test input validation
28896
90fea9cc9caa test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents: 28891
diff changeset
141 %!error <Invalid call> condeig ()
22129
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
142 %!error <A must be a square numeric matrix> condeig ({1})
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
143 %!error <A must be a square numeric matrix> condeig (ones (3,2))
e859caa53399 condeig.m: New function imported from Octave-Forge linear-algebra package.
Rik <rik@octave.org>
parents:
diff changeset
144 %!error <A must be a square numeric matrix> condeig (ones (2,2,2))