Mercurial > octave
diff libinterp/corefcn/dmperm.cc @ 28754:86dc599fff0f
doc: spellcheck documentation.
* aspell-octave.en.pws: Add new words to Octave-specific dictionary.
* dmperm.cc, memory.m: Fix spelling.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 17 Sep 2020 11:30:53 -0700 |
parents | 4bb892170ebb |
children | 7854d5752dd2 |
line wrap: on
line diff
--- a/libinterp/corefcn/dmperm.cc Thu Sep 17 11:07:19 2020 -0700 +++ b/libinterp/corefcn/dmperm.cc Thu Sep 17 11:30:53 2020 -0700 @@ -129,17 +129,16 @@ Perform a @nospell{Dulmage-Mendelsohn} permutation of the sparse matrix @var{A}. -With a single output argument @code{dmperm} return a maximum matching -@var{p} such that @code{p(j) = i} if column @var{j} -is matched to row @var{i}, or 0 if column @var{j} is unmatched. If -@var{A} is square and full structural rank, @var{p} is a row permutation -and @code{A(p,:)} has a zero-free diagonal. The structural -rank of @var{A} is @code{sprank(A) = sum(p>0)}. +With a single output argument @code{dmperm}, return a maximum matching @var{p} +such that @code{p(j) = i} if column @var{j} is matched to row @var{i}, or 0 if +column @var{j} is unmatched. If @var{A} is square and full structural rank, +@var{p} is a row permutation and @code{A(p,:)} has a zero-free diagonal. The +structural rank of @var{A} is @code{sprank(A) = sum(p>0)}. -Called with two or more output arguments, return the Dulmage-Mendelsohn -decomposition of @var{A}. @var{p} and @var{q} are permutation vectors. -@var{cc} and @var{rr} are vectors of length 5. @code{c = A(p,q)} is -split into a 4-by-4 set of coarse blocks: +Called with two or more output arguments, return the +@nospell{Dulmage-Mendelsohn} decomposition of @var{A}. @var{p} and @var{q} are +permutation vectors. @var{cc} and @var{rr} are vectors of length 5. +@code{c = A(p,q)} is split into a 4-by-4 set of coarse blocks: @example @group @@ -152,33 +151,32 @@ @noindent where @code{A12}, @code{A23}, and @code{A34} are square with zero-free -diagonals. The columns of @code{A11} are the unmatched columns, and the -rows of @code{A44} are the unmatched rows. Any of these blocks can be -empty. In the "coarse" decomposition, the (i,j)-th block is +diagonals. The columns of @code{A11} are the unmatched columns, and the rows +of @code{A44} are the unmatched rows. Any of these blocks can be empty. In +the "coarse" decomposition, the (i,j)-th block is @code{C(rr(i):rr(i+1)-1,cc(j):cc(j+1)-1)}. In terms of a linear system, @code{[A11 A12]} is the underdetermined part of the system (it is always -rectangular and with more columns and rows, or 0-by-0), @code{A23} is -the well-determined part of the system (it is always square), and -@code{[A34 ; A44]} is the over-determined part of the system (it is -always rectangular with more rows than columns, or 0-by-0). +rectangular and with more columns and rows, or 0-by-0), @code{A23} is the +well-determined part of the system (it is always square), and +@code{[A34 ; A44]} is the over-determined part of the system (it is always +rectangular with more rows than columns, or 0-by-0). -The structural rank of @var{A} is @code{sprank (A) = rr(4)-1}, which is -an upper bound on the numerical rank of @var{A}. +The structural rank of @var{A} is @code{sprank (A) = rr(4)-1}, which is an +upper bound on the numerical rank of @var{A}. @code{sprank(A) = rank(full(sprand(A)))} with probability 1 in exact arithmetic. -The @code{A23} submatrix is further subdivided into block upper -triangular form via the "fine" decomposition (the strongly-connected -components of @code{A23}). If @var{A} is square and structurally -non-singular, @code{A23} is the entire matrix. +The @code{A23} submatrix is further subdivided into block upper triangular form +via the "fine" decomposition (the strongly-connected components of @code{A23}). +If @var{A} is square and structurally non-singular, @code{A23} is the entire +matrix. -@code{C(r(i):r(i+1)-1,s(j):s(j+1)-1)} is the (i,j)-th block of -the fine decomposition. The (1,1) block is the rectangular block -@code{[A11 A12]}, unless this block is 0-by-0. The (b,b) block is the -rectangular block @code{[A34 ; A44]}, unless this block is 0-by-0, where -@code{b = length(r)-1}. All other blocks of the form -@code{C(r(i):r(i+1)-1,s(i):s(i+1)-1)} are diagonal blocks of -@code{A23}, and are square with a zero-free diagonal. +@code{C(r(i):r(i+1)-1,s(j):s(j+1)-1)} is the (i,j)-th block of the fine +decomposition. The (1,1) block is the rectangular block @code{[A11 A12]}, +unless this block is 0-by-0. The (b,b) block is the rectangular block +@code{[A34 ; A44]}, unless this block is 0-by-0, where @code{b = length(r)-1}. +All other blocks of the form @code{C(r(i):r(i+1)-1,s(i):s(i+1)-1)} are diagonal +blocks of @code{A23}, and are square with a zero-free diagonal. The method used is described in: @nospell{A. Pothen & C.-J. Fan.} @cite{Computing the Block Triangular Form of a Sparse Matrix}.