Documentation

Mathlib.Analysis.InnerProductSpace.NormDet

Norm determinant of a linear map #

Given a rectangular matrix $T$, it is common to talk about $\sqrt{det(T^{H}T)}$, where $T^{H}$ is the conjugate transpose of $T$, as a generalization to the determinant of a square matrix. It is the $m$-dimensional volume factor for linear maps $\mathbb{R}^m \to \mathbb{R}^n$. It is given various names in the literature:

Without a standardized name, we give a descriptive name LinearMap.normDet to reflect its definition and show that it is a generalization of β€–(f : LinearMap π•œ U U).detβ€– (See LinearMap.normDet_eq_norm_det). We also construct this on linear maps between inner product spaces instead of matrices, and allow the codomain to have infinite dimension.

Main definition #

Main result #

noncomputable def LinearMap.normDet {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) :

The norm determinant of a linear map f : U β†’β‚—[π•œ] V is defined as the norm of the determinant of the square matrix representing the linear map U β†’β‚—[π•œ] f.range over a pair of orthonormal basis of equal dimensions. (See LinearMap.normDet_eq_norm_det_toMatrix_rangeRestrict for using arbitrary orthonormal basis)

If such basis doesn't exist (e.g. the map is not injective), the norm determinant is zero. (See LinearMap.normDet_eq_zero_iff_ker_ne_bot)

Equations
Instances For
    theorem LinearMap.normDet_nonneg {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) :
    theorem LinearMap.normDet_eq_norm_det_toMatrix_rangeRestrict {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {ΞΉ : Type u_5} [Fintype ΞΉ] [DecidableEq ΞΉ] (f : U β†’β‚—[π•œ] V) (bu : OrthonormalBasis ΞΉ π•œ U) (bv : OrthonormalBasis ΞΉ π•œ β†₯f.range) :

    LinearMap.normDet is well-defined under any pair of orthonormal basis.

    theorem LinearMap.normDet_eq_zero_iff_ker_ne_bot {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {f : U β†’β‚—[π•œ] V} :

    LinearMap.normDet vanishes iff the map is not injective.

    theorem LinearMap.normDet_eq_zero_iff_rank_range_ne {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {f : U β†’β‚—[π•œ] V} :
    f.normDet = 0 ↔ Module.finrank π•œ β†₯f.range β‰  Module.finrank π•œ U
    theorem LinearMap.normDet_ne_zero_tfae {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) :
    [f.normDet β‰  0, f.ker = βŠ₯, Module.finrank π•œ β†₯f.range = Module.finrank π•œ U, Nonempty (OrthonormalBasis (Fin (Module.finrank π•œ U)) π•œ β†₯f.range), Function.Injective ⇑f].TFAE
    theorem LinearMap.normDet_eq_zero_tfae {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) :
    [f.normDet = 0, f.ker β‰  βŠ₯, Module.finrank π•œ β†₯f.range β‰  Module.finrank π•œ U, Module.finrank π•œ β†₯f.range < Module.finrank π•œ U, IsEmpty (OrthonormalBasis (Fin (Module.finrank π•œ U)) π•œ β†₯f.range), Β¬Function.Injective ⇑f].TFAE
    theorem LinearMap.normDet_eq_norm_det_toMatrix {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {ΞΉ : Type u_5} [Fintype ΞΉ] [DecidableEq ΞΉ] (f : U β†’β‚—[π•œ] V) (bu : OrthonormalBasis ΞΉ π•œ U) (bv : OrthonormalBasis ΞΉ π•œ V) :

    LinearMap.normDet can be calculated with any pair of orthonormal basis if the domain and the codomain have equal dimension.

    theorem LinearMap.normDet_eq_norm_det {π•œ : Type u_1} {U : Type u_2} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] (f : U β†’β‚—[π•œ] U) :

    LinearMap.normDet equals the norm of LinearMap.det for an endomorphism.

    @[simp]
    theorem LinearIsometry.normDet_eq_one {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—α΅’[π•œ] V) :

    LinearMap.normDet of a linear isometry is 1.

    @[simp]
    theorem LinearMap.normDet_id {π•œ : Type u_1} {U : Type u_2} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] :
    @[simp]
    theorem LinearMap.normDet_subtype {π•œ : Type u_1} {U : Type u_2} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] (p : Submodule π•œ U) :
    @[simp]
    theorem LinearMap.normDet_of_subsingleton {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [Subsingleton U] (f : U β†’β‚—[π•œ] V) :
    @[simp]
    theorem LinearMap.normDet_zero {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] :
    normDet 0 = 0 ^ Module.finrank π•œ U
    @[simp]
    theorem LinearMap.normDet_smul {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) (c : π•œ) :
    @[simp]
    theorem LinearMap.normDet_neg {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] (f : U β†’β‚—[π•œ] V) :
    theorem ContinuousLinearMap.normDet_sq {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [CompleteSpace V] (f : U β†’L[π•œ] V) :
    ↑((↑f).normDet ^ 2) = (adjoint f ∘SL f).det

    The square of f.normDet equals the determinant of f.adjoint ∘L f.

    theorem LinearMap.normDet_sq {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [FiniteDimensional π•œ V] (f : U β†’β‚—[π•œ] V) :

    The square of f.normDet equals the determinant of f.adjoint βˆ˜β‚— f when the codomain is finite dimensional.

    theorem LinearMap.normDet_sq_eq_det_gram {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {ΞΉ : Type u_5} [Fintype ΞΉ] [DecidableEq ΞΉ] (f : U β†’β‚—[π•œ] V) (b : OrthonormalBasis ΞΉ π•œ U) :
    ↑(f.normDet ^ 2) = (Matrix.gram π•œ fun (x : ΞΉ) => f (b x)).det

    The square of f.normDet equals the determinant of the Gram matrix formed by vectors mapped from an orthonormal basis.

    theorem LinearMap.normDet_comp {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} {W : Type u_4} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [NormedAddCommGroup W] [InnerProductSpace π•œ W] (f : U β†’β‚—[π•œ] V) (g : V β†’β‚—[π•œ] W) :
    theorem LinearMap.normDet_comp_of_finrank_eq {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} {W : Type u_4} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [NormedAddCommGroup W] [InnerProductSpace π•œ W] [FiniteDimensional π•œ V] (f : U β†’β‚—[π•œ] V) (g : V β†’β‚—[π•œ] W) (h : Module.finrank π•œ U = Module.finrank π•œ V) :
    @[simp]
    theorem LinearMap.normDet_codRestrict {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] {p : Submodule π•œ V} {f : U β†’β‚—[π•œ] V} (h : βˆ€ (c : U), f c ∈ p) :
    theorem LinearMap.normDet_eq_prod_singularValues {π•œ : Type u_1} {U : Type u_2} {V : Type u_3} [RCLike π•œ] [NormedAddCommGroup U] [InnerProductSpace π•œ U] [FiniteDimensional π•œ U] [NormedAddCommGroup V] [InnerProductSpace π•œ V] [FiniteDimensional π•œ V] (f : U β†’β‚—[π•œ] V) :
    f.normDet = ∏ i ∈ Finset.range (Module.finrank π•œ U), f.singularValues i