Schur triangulation #
Schur triangulation is more commonly known as Schur decomposition or Schur triangularization, but
"triangulation" makes the API more readable. It states that a square matrix over an algebraically
closed field, e.g., â
, is unitarily similar to an upper triangular matrix.
Main definitions #
Matrix.schur_triangulation
: a matrixA : Matrix n n đ
withđ
being algebraically closed can be decomposed asA = U * T * star U
whereU
is unitary andT
is upper triangular.Matrix.schurTriangulationUnitary
: the unitary matrixU
as previously stated.Matrix.schurTriangulation
: the upper triangular matrixT
as previously stated.- Some auxiliary definitions are not meant to be used directly, but
LinearMap.SchurTriangulationAux.of
contains the main algorithm for the triangulation procedure.
subNat' i h
subtracts m
from i
. This is an alternative form of Fin.subNat
.
Equations
- i.subNat' h = Fin.subNat m (Fin.cast ⯠i) âŻ
Instances For
An alternative form of Equiv.sumEquivSigmaBool
where Bool.casesOn
is replaced by cond
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The composition of finSumFinEquiv
and Equiv.sumEquivSigmalCond
used by
LinearMap.SchurTriangulationAux.of
.
Instances For
The type family parameterized by Bool
has decidable equality if each type variant is
decidable.
Equations
- instDecidableEqSigmaBoolCond_physLean â¨true, snd⊠â¨false, snd_1⊠= isFalse âŻ
- instDecidableEqSigmaBoolCond_physLean â¨false, snd⊠â¨true, snd_1⊠= isFalse âŻ
- instDecidableEqSigmaBoolCond_physLean â¨false, i⊠â¨false, j⊠= if h : i = j then isTrue ⯠else isFalse âŻ
- instDecidableEqSigmaBoolCond_physLean â¨true, i⊠â¨true, j⊠= if h : i = j then isTrue ⯠else isFalse âŻ
The property of a matrix being upper triangular. See also Matrix.det_of_upperTriangular
.
Equations
Instances For
The subtype of upper triangular matrices.
Equations
- Matrix.UpperTriangular n R = { A : Matrix n n R // A.IsUpperTriangular }
Instances For
Don't use this definition directly. Instead, use Matrix.schurTriangulationBasis
,
Matrix.schurTriangulationUnitary
, and Matrix.schurTriangulation
. See also
LinearMap.SchurTriangulationAux.of
and Matrix.schurTriangulationAux
.
- dim : â
The dimension of the inner product space
E
. - basis : OrthonormalBasis (Fin self.dim) đ E
An orthonormal basis of
E
that induces an upper triangular form forf
.
Instances For
Schur's recursive triangulation procedure #
Given a linear endomorphism f
on a non-trivial finite-dimensional vector space E
over an
algebraically closed field đ
, one can always pick an eigenvalue Îź
of f
whose corresponding
eigenspace V
is non-trivial. Given that E
is also an inner product space, let bV
and bW
be
orthonormal bases for V
and VáŽ
respectively. Then, the collection of vectors in bV
and bW
forms an orthonormal basis bE
for E
, as the direct sum of V
and VáŽ
is an internal
decomposition of E
. The matrix representation of f
with respect to bE
satisfies
$$ \sideset{_\mathrm{bE}}{_\mathrm{bE}}{[f]} = \begin{bmatrix} \sideset{_\mathrm{bV}}{_\mathrm{bV}}{[f]} & \sideset{_\mathrm{bW}}{_\mathrm{bV}}{[f]} \\ \sideset{_\mathrm{bV}}{_\mathrm{bW}}{[f]} & \sideset{_\mathrm{bW}}{_\mathrm{bW}}{[f]} \end{bmatrix} = \begin{bmatrix} \mu I & ⥠\\ 0 & \sideset{_\mathrm{bW}}{_\mathrm{bW}}{[f]} \end{bmatrix}, $$
which is upper triangular as long as $\sideset{_\mathrm{bW}}{_\mathrm{bW}}{[f]}$ is. Finally, one
observes that the recursion from $\sideset{_\mathrm{bE}}{_\mathrm{bE}}{[f]}$ to
$\sideset{_\mathrm{bW}}{_\mathrm{bW}}{[f]}$ is well-founded, as the dimension of bW
is smaller
than that of bE
because bV
is non-trivial.
However, in order to leverage DirectSum.IsInternal.collectedOrthonormalBasis
, the type
ÎŁ b, cond b (Fin m) (Fin n)
has to be used instead of the more natural Fin m â Fin n
while their
equivalence is propositionally established by Equiv.sumEquivSigmalCond
.
Don't use this definition directly. This is the key algorithm behind
Matrix.schur_triangulation
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Don't use this definition directly. Instead, use Matrix.schurTriangulationBasis
,
Matrix.schurTriangulationUnitary
, and Matrix.schurTriangulation
for which this is their
simultaneous definition. This is LinearMap.SchurTriangulationAux
adapted for matrices in the
Euclidean space.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The change of basis that induces the upper triangular form A.schurTriangulation
of a matrix
A
over an algebraically closed field.
Equations
Instances For
The unitary matrix that induces the upper triangular form A.schurTriangulation
to which a
matrix A
over an algebraically closed field is unitarily similar.
Equations
- A.schurTriangulationUnitary = â¨(EuclideanSpace.basisFun n đ).toBasis.toMatrix âA.schurTriangulationBasis, âŻâŠ
Instances For
The upper triangular form induced by A.schurTriangulationUnitary
to which a matrix A
over an
algebraically closed field is unitarily similar.
Equations
Instances For
Schur triangulation, Schur decomposition for matrices over an algebraically closed field. In particular, a complex matrix can be converted to upper-triangular form by a change of basis. In other words, any complex matrix is unitarily similar to an upper triangular matrix.