changeset 557:e6ae50d8d4eb

[project @ 1994-07-25 20:23:22 by jwe] Initial revision
author jwe
date Mon, 25 Jul 1994 20:23:22 +0000
parents b805b12f3b66
children faf108b99d21
files scripts/linear-algebra/null.m scripts/linear-algebra/orth.m
diffstat 2 files changed, 72 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/linear-algebra/null.m	Mon Jul 25 20:23:22 1994 +0000
@@ -0,0 +1,36 @@
+function retval = null (A, tol)
+
+# usage: null (A, tol)
+#        null (A)
+#
+# Returns an orthonormal basis of the null space of A.
+#
+# The dimension of the null space is taken as the number of singular
+# values of A not greater than tol;  the default for tol is
+# max (size (A)) * sigma_max (A) * eps, where sigma_max (A) is the
+# maximal singular value of A. 
+
+# written by KH (Kurt.Hornik@neuro.tuwien.ac.at) on Dec 24, 1993
+# copyright Dept of Probability Theory and Statistics TU Wien
+
+  [U, S, V] = svd (A);
+
+  [rows, cols] = size (A);
+
+  s = diag (S);
+
+  if (nargin == 1)
+    tol = max (size (A)) * s (1) * eps;
+  else (nargin != 2)
+    error("usage: null(A [, tol])"); 
+  endif
+
+  rank = sum (s > tol);
+
+  if (rank < cols)
+    retval = V (:, rank+1:cols);
+  else
+    retval = zeros (cols, 0);
+  endif
+
+endfunction
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/linear-algebra/orth.m	Mon Jul 25 20:23:22 1994 +0000
@@ -0,0 +1,36 @@
+function retval = orth (A, tol)
+
+# usage: orth (A, tol)
+#        orth (A)
+#
+# Returns an orthonormal basis of the range of A.
+#
+# The dimension of the range space is taken as the number of singular
+# values of A greater than tol; the default for tol is
+# max (size (A)) * sigma_max (A) * eps, where sigma_max (A) is the
+# maximal singular value of A.
+
+# written by KH (Kurt.Hornik@neuro.tuwien.ac.at) on Dec 24, 1993
+# copyright Dept of Probability Theory and Statistics TU Wien
+
+  [U, S, V] = svd (A);
+
+  [rows, cols] = size (A);
+
+  s = diag (S);
+
+  if (nargin == 1)
+    tol = max (size (A)) * s (1) * eps;
+  else if (nargin != 2)
+    error ("usage: orth (A [, tol])"); 
+  endif
+
+  rank = sum (s > tol);
+
+  if (rank > 0)
+    retval = -U (:, 1:rank);
+  else
+    retval = zeros (rows, 0);
+  endif
+
+endfunction