annotate scripts/linear-algebra/expm.m @ 11523:fd0a3ac60b0e

update copyright notices
author John W. Eaton <jwe@octave.org>
date Fri, 14 Jan 2011 05:47:45 -0500
parents a02d00dd3d5f
children c792872f8942
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
fd0a3ac60b0e update copyright notices
John W. Eaton <jwe@octave.org>
parents: 11477
diff changeset
1 ## Copyright (C) 2008-2011 Jaroslav Hajek, Marco Caliari
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
2 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
3 ## This file is part of Octave.
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
4 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
8 ## your option) any later version.
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
9 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
13 ## General Public License for more details.
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
14 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
18
9065
8207b833557f Cleanup documentation for arith.texi, linalg.texi, nonlin.texi
Rik <rdrider0-list@yahoo.com>
parents: 9048
diff changeset
19 ## -*- texinfo -*-
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
20 ## @deftypefn {Function File} {} expm (@var{A})
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
21 ## Return the exponential of a matrix, defined as the infinite Taylor
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
22 ## series
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
23 ## @tex
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
24 ## $$
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
25 ## \exp (A) = I + A + {A^2 \over 2!} + {A^3 \over 3!} + \cdots
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
26 ## $$
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
27 ## @end tex
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
28 ## @ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
29 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
30 ## @example
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
31 ## expm(A) = I + A + A^2/2! + A^3/3! + @dots{}
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
32 ## @end example
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
33 ##
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
34 ## @end ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
35 ## The Taylor series is @emph{not} the way to compute the matrix
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
36 ## exponential; see Moler and Van Loan, @cite{Nineteen Dubious Ways to
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
37 ## Compute the Exponential of a Matrix}, SIAM Review, 1978. This routine
10791
3140cb7a05a1 Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
38 ## uses Ward's diagonal Pad@'e approximation method with three step
3140cb7a05a1 Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
39 ## preconditioning (SIAM Journal on Numerical Analysis, 1977). Diagonal
3140cb7a05a1 Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
40 ## Pad@'e approximations are rational polynomials of matrices
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
41 ## @tex
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
42 ## $D_q(A)^{-1}N_q(A)$
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
43 ## @end tex
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
44 ## @ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
45 ##
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
46 ## @example
9065
8207b833557f Cleanup documentation for arith.texi, linalg.texi, nonlin.texi
Rik <rdrider0-list@yahoo.com>
parents: 9048
diff changeset
47 ## @group
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
48 ## -1
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
49 ## D (A) N (A)
9065
8207b833557f Cleanup documentation for arith.texi, linalg.texi, nonlin.texi
Rik <rdrider0-list@yahoo.com>
parents: 9048
diff changeset
50 ## @end group
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
51 ## @end example
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
52 ##
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
53 ## @end ifnottex
10791
3140cb7a05a1 Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
54 ## whose Taylor series matches the first
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
55 ## @tex
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
56 ## $2 q + 1 $
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
57 ## @end tex
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
58 ## @ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
59 ## @code{2q+1}
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
60 ## @end ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
61 ## terms of the Taylor series above; direct evaluation of the Taylor series
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
62 ## (with the same preconditioning steps) may be desirable in lieu of the
10791
3140cb7a05a1 Add spellchecker scripts for Octave and run spellcheck of documentation
Rik <octave@nomad.inbox5.com>
parents: 10635
diff changeset
63 ## Pad@'e approximation when
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
64 ## @tex
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
65 ## $D_q(A)$
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
66 ## @end tex
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
67 ## @ifnottex
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
68 ## @code{Dq(A)}
8517
81d6ab3ac93c Allow documentation tobe built for other formats than tex and info
sh@sh-laptop
parents: 8506
diff changeset
69 ## @end ifnottex
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
70 ## is ill-conditioned.
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
71 ## @end deftypefn
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
72
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
73 function r = expm (A)
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
74
11477
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
75 if (nargin != 1)
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
76 print_usage ();
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
77 endif
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
78
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
79 if (! ismatrix (A) || ! issquare (A))
11472
1740012184f9 Use uppercase for variable names in error() strings to match Info documentation. Only m-files done.
Rik <octave@nomad.inbox5.com>
parents: 11471
diff changeset
80 error ("expm: A must be a square matrix");
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
81 endif
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
82
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
83 if (isscalar (A))
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
84 r = exp (A);
10831
1646bd8e3735 special case diagonal matrices and scalars in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 10791
diff changeset
85 return
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
86 elseif (strfind (typeinfo (A), "diagonal matrix"))
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
87 r = diag (exp (diag (A)));
10831
1646bd8e3735 special case diagonal matrices and scalars in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 10791
diff changeset
88 return
1646bd8e3735 special case diagonal matrices and scalars in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 10791
diff changeset
89 endif
1646bd8e3735 special case diagonal matrices and scalars in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 10791
diff changeset
90
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
91 n = rows (A);
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
92 ## Trace reduction.
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
93 A(A == -Inf) = -realmax;
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
94 trshift = trace (A) / length (A);
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
95 if (trshift > 0)
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
96 A -= trshift*eye (n);
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
97 endif
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
98 ## Balancing.
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
99 [d, p, aa] = balance (A);
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
100 ## FIXME: can we both permute and scale at once? Or should we rather do
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
101 ## this:
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
102 ##
11471
994e2a93a8e2 Use uppercase 'A' to refer to matrix inputs in m-files.
Rik <octave@nomad.inbox5.com>
parents: 10831
diff changeset
103 ## [d, xx, aa] = balance (A, "noperm");
9048
867d5d1aed06 swap out args in balance for M*b compat
Jaroslav Hajek <highegg@gmail.com>
parents: 8920
diff changeset
104 ## [xx, p, aa] = balance (aa, "noscal");
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
105 [f, e] = log2 (norm (aa, "inf"));
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
106 s = max (0, e);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
107 s = min (s, 1023);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
108 aa *= 2^(-s);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
109
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
110 ## Pade approximation for exp(A).
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
111 c = [5.0000000000000000e-1,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
112 1.1666666666666667e-1,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
113 1.6666666666666667e-2,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
114 1.6025641025641026e-3,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
115 1.0683760683760684e-4,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
116 4.8562548562548563e-6,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
117 1.3875013875013875e-7,...
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
118 1.9270852604185938e-9];
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
119
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
120 a2 = aa^2;
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
121 id = eye (n);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
122 x = (((c(8) * a2 + c(6) * id) * a2 + c(4) * id) * a2 + c(2) * id) * a2 + id;
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
123 y = (((c(7) * a2 + c(5) * id) * a2 + c(3) * id) * a2 + c(1) * id) * aa;
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
124
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
125 r = (x - y) \ (x + y);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
126
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
127 ## Undo scaling by repeated squaring.
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
128 for k = 1:s
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
129 r ^= 2;
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
130 endfor
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
131
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
132 ## inverse balancing.
8757
79576d40acb6 fix unscaling in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 8664
diff changeset
133 d = diag (d);
79576d40acb6 fix unscaling in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 8664
diff changeset
134 r = d * r / d;
9819
84398271118c fix typo in expm
Jaroslav Hajek <highegg@gmail.com>
parents: 9211
diff changeset
135 r(p, p) = r;
8506
bc982528de11 comment style fixes
John W. Eaton <jwe@octave.org>
parents: 8393
diff changeset
136 ## Inverse trace reduction.
8393
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
137 if (trshift >0)
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
138 r *= exp (trshift);
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
139 endif
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
140
c8a785d0e867 add omitted m-file
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
141 endfunction
11477
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
142
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
143 %!assert(norm(expm([1 -1;0 1]) - [e -e; 0 e]) < 1e-5);
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
144 %!assert(expm([1 -1 -1;0 1 -1; 0 0 1]), [e -e -e/2; 0 e -e; 0 0 e], 1e-5);
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
145
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
146 %% Test input validation
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
147 %!error expm ();
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
148 %!error expm (1, 2);
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
149 %!error <expm: A must be a square matrix> expm([1 0;0 1; 2 2]);
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
150
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
151 %!assert (expm (10), expm (10))
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
152 %!assert (full (expm (eye (3))), expm (full (eye (3))))
a02d00dd3d5f expm.m: new tests
John W. Eaton <jwe@octave.org>
parents: 11472
diff changeset
153 %!assert (full (expm (10*eye (3))), expm (full (10*eye (3))), 8*eps)