Reference
PLUQ decomposition
RankRevealing.PLUQ — Type
PLUQ <: FactorizarionMatrix factorization type for the full LU factorization of any rectangular matrix A over an arbitrary numeric field. This is the return type of pluq.
The factorization satisfies
P * [L ; M] * [U V] * Q == A| Component | Description |
|---|---|
F.L | Full-rank unit lower triangular part |
F.U | Full-rank upper triangular part |
F.M | Remainder of the row dimension |
F.V | Remainder of the column dimension |
F.P | row-wise permutation Matrix |
F.Q | column-wise permutation Matrix |
F.p | row-wise permutation Vector |
F.q | column-wise permutation Matrix |
Iteration and destructuring produce the components in the order p, L, U, V, M, q`.
Both L and U are square full-rank matrices with the same rank as A.
RankRevealing.pluq — Function
pluq(A) -> PLUQPerform a rank-sensitive LU factorization of A. The factorization of an n by m matrix is computed in O(n m r^(ω-2)) steps, where r = rank(A) and ω is the matrix multiplication complexity exponent.
This is an exact function who should work with any type implementing the basic arithmetic operations +, -, *, /, one, zero.
The resulting factorization F satisfies
F.P * [F.L ; F.M] * [F.U F.V] * F.Q == ASee the link for the original description of the algorithm.
Generalized Rank Revealing decomposition
RankRevealing.GeneralizedRankRevealing — Type
GeneralizedRankRevealing <: FactorizationMatrix factorization type for the Generalized Rank Reveling decomposition of two matrices A and B with the same number of columns. This is obtained via the function grr(A,B).
By calling d_+ the dimension of the sum of A and B row spaces, this factorization has the decomposes the matrices as
| I 0 0 |
| A | = | X 0 | | 0 0 I |
| B | | 0 Y | | 0 I 0 | H
| 0 0 I || Component | Description |
|---|---|
F.X | m_A x r_A full column rank matrix |
F.Y | m_B x r_B full column rank matrix |
F.H | d_+ x n full row rank matrix |
Other useful fields are:
F.r1: Rank ofAminus minus the intersectionF.r2: Rank ofBminus minus the intersectionF.r3: Rank of the intersection
RankRevealing.grr — Function
grr(A, B) -> GeneralizedRankRevealingCompute the Generalized LU decomposition of matrices A and B. There are matrices X, Y and H such that
| I 0 0 |
| A | = | X 0 | | 0 0 I |
| B | | 0 Y | | 0 I 0 | H
| 0 0 I |RankRevealing.simple_rr — Function
simple_rr(A)Decompose A == X*H where X is full column rank and H is full row rank.
RankRevealing.left_rr — Function
left_rr(A)Decompose A == X*[I ; 0]*H where X is invertible and H is full row rank.
RankRevealing.right_rr — Function
right_rr(A)Decompose A == X*[0 I]*H where X is full column rank and H is invertible.
Working with subspaces
RankRevealing.basis — Function
basis(xs)Turn a set of vectors into a set of linearly independet vectors spawning the same subspace.
Warning: Even if the input is already linearly independent, the returned basis may be composed of other vectors spawning the same subspace.
RankRevealing.intersection — Function
intersection(xs, ys) -> vsGiven two sets of vectors, calculate a basis for the intersection of the subspaces generated by them.
RankRevealing.sumspace — Function
sumspace(xs, ys) -> vsGiven two sets of vectors, calculate a basis for the sum space of the subspaces generated by them.