diff src/DLD-FUNCTIONS/lu.cc @ 9709:f8e2e9fdaa8f

document luupdate
author Jaroslav Hajek <highegg@gmail.com>
date Thu, 08 Oct 2009 16:43:05 +0200
parents 6f3ffe11d926
children 9f27172fbd1e
line wrap: on
line diff
--- a/src/DLD-FUNCTIONS/lu.cc
+++ b/src/DLD-FUNCTIONS/lu.cc
@@ -594,11 +594,47 @@
             (p.is_undefined () || p.rows () == m));
 }
 
-DEFUN_DLD (luupdate, args, nargout,
+DEFUN_DLD (luupdate, args, ,
   "-*- texinfo -*-\n\
-@deftypefn {Loadable Function} {[@var{l}, @var{u}] =} luupdate (@var{l}, @var{u}, @var{x}, @var{y})\n\
-@deftypefn {Loadable Function} {[@var{l}, @var{u}, @var{p}] =}\
-luupdate (@var{l}, @var{u}, @var{p}, @var{x}, @var{y})\n\
+@deftypefn {Loadable Function} {[@var{L}, @var{U}] =} luupdate (@var{l}, @var{u}, @var{x}, @var{y})\n\
+@deftypefnx {Loadable Function} {[@var{L}, @var{U}, @var{P}] =}\
+luupdate (@var{L}, @var{U}, @var{P}, @var{x}, @var{y})\n\
+Given an LU@tie{}factorization of a real or complex matrix\n\
+@w{@var{A} = @var{L}*@var{U}}, @var{L}@tie{}lower unit trapezoidal and\n\
+@var{U}@tie{}upper trapezoidal, return the LU@tie{}factorization\n\
+of @w{@var{A} + @var{x}*@var{y}.'}, where @var{x} and @var{y} are\n\
+column vectors (rank-1 update) or matrices with equal number of columns\n\
+(rank-k update).\n\
+Optionally, row-pivoted updating can be used by supplying\n\
+a row permutation (pivoting) matrix @var{P};\n\
+in that case, an updated permutation matrix is returned.\n\
+Note that if @var{L}, @var{U}, @var{P} is a pivoted LU@tie{}factorization\n\
+as obtained by @code{lu}:\n\
+\n\
+@example\n\
+  [@var{L}, @var{U}, @var{P}] = lu (@var{A});\n\
+@end example\n\
+\n\
+then a factorization of @code{@var{a}+@var{x}*@var{y}.'} can be obtained either as\n\
+\n\
+@example\n\
+  [@var{L1}, @var{U1}] = lu (@var{L}, @var{U}, @var{P}*@var{x}, @var{y})\n\
+@end example\n\
+\n\
+or\n\
+\n\
+@example\n\
+  [@var{L1}, @var{U1}, @var{P1}] = lu (@var{L}, @var{U}, @var{P}, @var{x}, @var{y})\n\
+@end example\n\
+\n\
+The first form uses the unpivoted algorithm, which is faster, but less stable.\n\
+The second form uses a slower pivoted algorithm, which is more stable.\n\
+\n\
+Note that the matrix case is done as a sequence of rank-1 updates;\n\
+thus, for k large enough, it will be both faster and more accurate to recompute\n\
+the factorization from scratch.\n\
+@seealso{lu,qrupdate,cholupdate}\n\
+@end deftypefn\n\
 ")
 {
   octave_idx_type nargin = args.length ();