This package defines methods for exact linear algebra over any numerical field. Our focus is on matrix decompositions that are rank-sensitive. That is, faster for low-rank matrices.
Documentation | Build Status |
---|---|
This package is not registered on Julia's general registry yet. But you can install it by passing the repositories' url to the package manager.
To instal, you have to enter ]
on the Julia REPL and write
pkg> add https://github.com/iagoleal/RankRevealing.jl
This a version of the LU decomposition
that works for rectangular and possible singular matrices.
In block notation, it turns a matrix A
into
A = P * |L| * | U V | * Q
|M|
where P
, Q
are permutations,
L
is non-singular unit lower triangular,
and U
is non-singular upper triangular.
Also, the dimensions of L
and U
are equal
to the rank of A
.
If A
is m x n
and has rank r
,
the PLUQ takes O(m n r^(ω-2))
steps,
where ω
is the exponent for
the square matrix multiplication algorithm used by Julia.
See [1] for the paper this implementation is based.
Given two matrices A
and B
with the same number of columns,
this decomposition divides the space based on how their row spaces interact.
In block notation, it decomposes the matrices as
| I 0 0 |
| A | = | X 0 | | 0 0 I |
| B | | 0 Y | | 0 I 0 | H
| 0 0 I |
Also, the rows of H
form bases for
R(A)
, the row space ofA
,R(B)
, the row space ofB
,R(B) ∩ R(B)
, the row spaces intersection,R(B) + R(B)
, the sum of their row spaces,
with the additional property that whenever one of those spaces is contained in another, the calculated bases share the necessary vectors.
If A
is m_A x n
,
B
is m_B x n
and d
is the dimension of their images' sum space
({ a + b | ∃x, y, a = xA, b = yB }
),
then the GRR decomposition takes O((m_A + m_B) n d^(ω-2))
steps,
where ω
is the exponent for
the square matrix multiplication algorithm used by Julia.
-
[1] Jean-Guillaume Dumas, Clément Pernet, Ziad Sultan. "Simultaneous computation of the row and column rank profiles". In: Proceedings of the 38th International Symposium on Symbolic and Algebraic Computation. 2013, pp. 181–188.
-
[2] Iago Leal de Freitas, João Paixão, Lucas Rufino, and Paweł Sobocínski. "Rank sensitive complexity to find the intersection between two subspaces". 2022 (upcoming)