@deffn {Matrix Function} GSCH (@var{M})
+@var{M} must be a @math{@var{n}@times{}@var{m}} matrix, @math{@var{m}
+@geq{} @var{n}}, with rank @var{n}. Returns an
+@math{@var{n}@times{}@var{n}} orthonormal basis for @var{M}, obtained
+using the Gram-Schmidt process.
@end deffn
-
@deffn {Matrix Function} INV (@var{M})
Returns the @math{@var{n}@times{}@var{n}} matrix @var{A} that is the
inverse of @math{@var{n}@times{}@var{n}} matrix @var{M}, defined such
that @math{@var{M}@times{}@var{A} = @var{A}@times{}@var{M} = I}, where
@var{I} is the identity matrix. @var{M} must not be singular, that
-is, @math{\det(@var{M}) \ne 0}.
+is, @math{\det(@var{M}) @ne{} 0}.
@end deffn
@deffn {Matrix Function} KRONEKER (@var{Ma}, @var{Mb})
@end deffn
@deffn {Matrix Function} SOLVE (@var{Ma}, @var{Mb})
-
+@var{Ma} must be an @math{@var{n}@times{}@var{n}} matrix, with
+@math{\det(@var{Ma}) @ne{} 0}, and @var{Mb} an
+@math{@var{n}@times{}@var{k}} matrix. Returns an
+@math{@var{n}@times{}@var{k}} matrix @var{X} such that @math{@var{Ma}
+@times{} @var{X} = @var{Mb}}.
@end deffn
@deffn {Matrix Function} SVAL (@var{M})
+Given @math{@var{n}@times{}@var{k}} matrix @var{M}, returns a
+@math{\min(@var{n},@var{k})}-element column vector containing the
+singular values of @var{M} in descending order.
@end deffn
+@deffn {Matrix Function} SWEEP (@var{M}, @var{nk})
+Given @math{@var{r}@times{}@var{c}} matrix @var{M} and integer scalar
+@math{k = @var{nk}} such that @math{1 @leq{} k @leq{}
+\min(@var{r},@var{c})}, returns the @math{@var{r}@times{}@var{c}}
+sweep matrix @var{A}.
-@deffn {Matrix Function} SWEEP (@var{M}, @var{n})
-@end deffn
+If @math{@var{M}_{kk} @ne{} 0}, then:
+
+@display
+@math{@var{A}_{kk} = 1/@var{M}_{kk}},
+@math{@var{A}_{ik} = -@var{M}_{ik}/@var{M}_{kk} @r{for} i @ne{} k},
+@math{@var{A}_{kj} = @var{M}_{kj}/@var{M}_{kk} @r{for} j @ne{} k, @r{and}}
+@math{@var{A}_{ij} = @var{M}_{ij} - (@var{M}_{ik} * @var{M}_{kj}) / @var{M}_{kk} @r{for} i @ne{} k @r{and} j @ne{} k}.
+@end display
+
+If @math{@var{M}_{kk} = 0}, then:
+@display
+@math{@var{A}_{ik} = @var{A}_{ki} = 0 @r{and}}
+@math{@var{A}_{ij} = @var{M}_{ij}, @r{for} i @ne{} k @r{and} j @ne{} k}.
+@end display
+@end deffn
@node Matrix IO
@subsubsection I/O
if (v->size2 < v->size1)
{
msg (SE, _("GSCH requires its argument to have at least as many columns "
- "as rows, but it has dimensions (%zu,%zu)."),
+ "as rows, but it has dimensions %zu×%zu."),
v->size1, v->size2);
return NULL;
}
if (m1->size1 != m2->size1)
{
msg (SE, _("SOLVE requires its arguments to have the same number of "
- "rows, but the first argument has dimensions (%zu,%zu) and "
- "the second (%zu,%zu)."),
+ "rows, but the first argument has dimensions %zu×%zu and "
+ "the second %zu×%zu."),
m1->size1, m1->size2,
m2->size1, m2->size2);
return NULL;