Documentation

Mathlib.Analysis.Matrix

Matrices as a normed space #

In this file we provide the following non-instances for norms on matrices:

These are not declared as instances because there are several natural choices for defining the norm of a matrix.

The norm induced by the identification of Matrix m n 𝕜 with EuclideanSpace n 𝕜 →L[𝕜] EuclideanSpace m 𝕜 (i.e., the ℓ² operator norm) can be found in Analysis.CStarAlgebra.Matrix. It is separated to avoid extraneous imports in this file.

The elementwise supremum norm #

Seminormed group instance (using sup norm of sup norm) for matrices over a seminormed group. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.norm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A = fun (i : m) (j : n) => A i j
theorem Matrix.norm_eq_sup_sup_nnnorm {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A = (Finset.univ.sup fun (i : m) => Finset.univ.sup fun (j : n) => A i j‖₊)

The norm of a matrix is the sup of the sup of the nnnorm of the entries

theorem Matrix.nnnorm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A‖₊ = fun (i : m) (j : n) => A i j‖₊
theorem Matrix.norm_le_iff {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] {r : } (hr : 0 r) {A : Matrix m n α} :
A r ∀ (i : m) (j : n), A i j r
theorem Matrix.nnnorm_le_iff {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] {r : NNReal} {A : Matrix m n α} :
A‖₊ r ∀ (i : m) (j : n), A i j‖₊ r
theorem Matrix.norm_lt_iff {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] {r : } (hr : 0 < r) {A : Matrix m n α} :
A < r ∀ (i : m) (j : n), A i j < r
theorem Matrix.nnnorm_lt_iff {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] {r : NNReal} (hr : 0 < r) {A : Matrix m n α} :
A‖₊ < r ∀ (i : m) (j : n), A i j‖₊ < r
theorem Matrix.norm_entry_le_entrywise_sup_norm {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) {i : m} {j : n} :
theorem Matrix.nnnorm_entry_le_entrywise_sup_nnnorm {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) {i : m} {j : n} :
@[simp]
theorem Matrix.nnnorm_map_eq {m : Type u_3} {n : Type u_4} {α : Type u_5} {β : Type u_6} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] [SeminormedAddCommGroup β] (A : Matrix m n α) (f : αβ) (hf : ∀ (a : α), f a‖₊ = a‖₊) :
@[simp]
theorem Matrix.norm_map_eq {m : Type u_3} {n : Type u_4} {α : Type u_5} {β : Type u_6} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] [SeminormedAddCommGroup β] (A : Matrix m n α) (f : αβ) (hf : ∀ (a : α), f a = a) :
@[simp]
theorem Matrix.nnnorm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
@[simp]
theorem Matrix.norm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
@[simp]
@[simp]
theorem Matrix.norm_conjTranspose {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] [StarAddMonoid α] [NormedStarGroup α] (A : Matrix m n α) :
@[simp]
theorem Matrix.nnnorm_col {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
@[simp]
theorem Matrix.norm_col {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
@[simp]
theorem Matrix.nnnorm_row {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
@[simp]
theorem Matrix.norm_row {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
@[simp]
theorem Matrix.nnnorm_diagonal {n : Type u_4} {α : Type u_5} [Fintype n] [SeminormedAddCommGroup α] [DecidableEq n] (v : nα) :
@[simp]
theorem Matrix.norm_diagonal {n : Type u_4} {α : Type u_5} [Fintype n] [SeminormedAddCommGroup α] [DecidableEq n] (v : nα) :

Note this is safe as an instance as it carries no data.

def Matrix.normedAddCommGroup {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NormedAddCommGroup α] :

Normed group instance (using sup norm of sup norm) for matrices over a normed group. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.boundedSMul {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedRing R] [SeminormedAddCommGroup α] [Module R α] [BoundedSMul R α] :
BoundedSMul R (Matrix m n α)

This applies to the sup norm of sup norm.

def Matrix.normedSpace {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NormedField R] [SeminormedAddCommGroup α] [NormedSpace R α] :
NormedSpace R (Matrix m n α)

Normed space instance (using sup norm of sup norm) for matrices over a normed space. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations

The L operator norm #

This section defines the matrix norm A=supi(jAij).

Note that this is equivalent to the operator norm, considering A as a linear map between two L spaces.

Seminormed group instance (using sup norm of L1 norm) for matrices over a seminormed group. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations

Normed group instance (using sup norm of L1 norm) for matrices over a normed ring. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.linftyOpBoundedSMul {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedRing R] [SeminormedAddCommGroup α] [Module R α] [BoundedSMul R α] :
BoundedSMul R (Matrix m n α)

This applies to the sup norm of L1 norm.

def Matrix.linftyOpNormedSpace {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NormedField R] [SeminormedAddCommGroup α] [NormedSpace R α] :
NormedSpace R (Matrix m n α)

Normed space instance (using sup norm of L1 norm) for matrices over a normed space. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.linfty_opNorm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A = (Finset.univ.sup fun (i : m) => j : n, A i j‖₊)
theorem Matrix.linfty_opNNNorm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A‖₊ = Finset.univ.sup fun (i : m) => j : n, A i j‖₊
@[simp]
theorem Matrix.linfty_opNNNorm_col {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
@[simp]
theorem Matrix.linfty_opNorm_col {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
@[simp]
theorem Matrix.linfty_opNNNorm_row {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
row ι v‖₊ = i : n, v i‖₊
@[simp]
theorem Matrix.linfty_opNorm_row {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
row ι v = i : n, v i
@[simp]
@[simp]
theorem Matrix.linfty_opNorm_diagonal {m : Type u_3} {α : Type u_5} [Fintype m] [SeminormedAddCommGroup α] [DecidableEq m] (v : mα) :
theorem Matrix.linfty_opNNNorm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype l] [Fintype m] [Fintype n] [NonUnitalSeminormedRing α] (A : Matrix l m α) (B : Matrix m n α) :
theorem Matrix.linfty_opNorm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype l] [Fintype m] [Fintype n] [NonUnitalSeminormedRing α] (A : Matrix l m α) (B : Matrix m n α) :
theorem Matrix.linfty_opNNNorm_mulVec {l : Type u_2} {m : Type u_3} {α : Type u_5} [Fintype l] [Fintype m] [NonUnitalSeminormedRing α] (A : Matrix l m α) (v : mα) :
theorem Matrix.linfty_opNorm_mulVec {l : Type u_2} {m : Type u_3} {α : Type u_5} [Fintype l] [Fintype m] [NonUnitalSeminormedRing α] (A : Matrix l m α) (v : mα) :

Seminormed non-unital ring instance (using sup norm of L1 norm) for matrices over a semi normed non-unital ring. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
instance Matrix.linfty_opNormOneClass {n : Type u_4} {α : Type u_5} [Fintype n] [SeminormedRing α] [NormOneClass α] [DecidableEq n] [Nonempty n] :

The L₁-L∞ norm preserves one on non-empty matrices. Note this is safe as an instance, as it carries no data.

Seminormed ring instance (using sup norm of L1 norm) for matrices over a semi normed ring. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations

Normed non-unital ring instance (using sup norm of L1 norm) for matrices over a normed non-unital ring. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
def Matrix.linftyOpNormedRing {n : Type u_4} {α : Type u_5} [Fintype n] [NormedRing α] [DecidableEq n] :

Normed ring instance (using sup norm of L1 norm) for matrices over a normed ring. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
def Matrix.linftyOpNormedAlgebra {R : Type u_1} {n : Type u_4} {α : Type u_5} [Fintype n] [NormedField R] [SeminormedRing α] [NormedAlgebra R α] [DecidableEq n] :

Normed algebra instance (using sup norm of L1 norm) for matrices over a normed algebra. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations

For a matrix over a field, the norm defined in this section agrees with the operator norm on ContinuousLinearMaps between function types (which have the infinity norm).

theorem Matrix.linfty_opNNNorm_eq_opNNNorm {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NontriviallyNormedField α] [NormedAlgebra α] (A : Matrix m n α) :
A‖₊ = { toLinearMap := A.mulVecLin, cont := }‖₊
theorem Matrix.linfty_opNorm_eq_opNorm {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NontriviallyNormedField α] [NormedAlgebra α] (A : Matrix m n α) :
A = { toLinearMap := A.mulVecLin, cont := }
@[simp]
theorem Matrix.linfty_opNNNorm_toMatrix {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NontriviallyNormedField α] [NormedAlgebra α] [DecidableEq n] (f : (nα) →L[α] mα) :
@[simp]
theorem Matrix.linfty_opNorm_toMatrix {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NontriviallyNormedField α] [NormedAlgebra α] [DecidableEq n] (f : (nα) →L[α] mα) :

The Frobenius norm #

This is defined as A=i,jAij2. When the matrix is over the real or complex numbers, this norm is submultiplicative.

Seminormed group instance (using frobenius norm) for matrices over a seminormed group. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations

Normed group instance (using frobenius norm) for matrices over a normed group. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.frobeniusBoundedSMul {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedRing R] [SeminormedAddCommGroup α] [Module R α] [BoundedSMul R α] :
BoundedSMul R (Matrix m n α)

This applies to the frobenius norm.

def Matrix.frobeniusNormedSpace {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [NormedField R] [SeminormedAddCommGroup α] [NormedSpace R α] :
NormedSpace R (Matrix m n α)

Normed space instance (using frobenius norm) for matrices over a normed space. Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
theorem Matrix.frobenius_nnnorm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A‖₊ = (∑ i : m, j : n, A i j‖₊ ^ 2) ^ (1 / 2)
theorem Matrix.frobenius_norm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
A = (∑ i : m, j : n, A i j ^ 2) ^ (1 / 2)
@[simp]
theorem Matrix.frobenius_nnnorm_map_eq {m : Type u_3} {n : Type u_4} {α : Type u_5} {β : Type u_6} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] [SeminormedAddCommGroup β] (A : Matrix m n α) (f : αβ) (hf : ∀ (a : α), f a‖₊ = a‖₊) :
@[simp]
theorem Matrix.frobenius_norm_map_eq {m : Type u_3} {n : Type u_4} {α : Type u_5} {β : Type u_6} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] [SeminormedAddCommGroup β] (A : Matrix m n α) (f : αβ) (hf : ∀ (a : α), f a = a) :
@[simp]
theorem Matrix.frobenius_nnnorm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
@[simp]
theorem Matrix.frobenius_norm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype m] [Fintype n] [SeminormedAddCommGroup α] (A : Matrix m n α) :
@[simp]
theorem Matrix.frobenius_norm_row {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
row ι v = (WithLp.equiv 2 (mα)).symm v
@[simp]
theorem Matrix.frobenius_nnnorm_row {m : Type u_3} {α : Type u_5} {ι : Type u_7} [Fintype m] [Unique ι] [SeminormedAddCommGroup α] (v : mα) :
@[simp]
theorem Matrix.frobenius_norm_col {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
col ι v = (WithLp.equiv 2 (nα)).symm v
@[simp]
theorem Matrix.frobenius_nnnorm_col {n : Type u_4} {α : Type u_5} {ι : Type u_7} [Fintype n] [Unique ι] [SeminormedAddCommGroup α] (v : nα) :
@[simp]
theorem Matrix.frobenius_nnnorm_diagonal {n : Type u_4} {α : Type u_5} [Fintype n] [SeminormedAddCommGroup α] [DecidableEq n] (v : nα) :
@[simp]
theorem Matrix.frobenius_norm_diagonal {n : Type u_4} {α : Type u_5} [Fintype n] [SeminormedAddCommGroup α] [DecidableEq n] (v : nα) :
theorem Matrix.frobenius_nnnorm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype l] [Fintype m] [Fintype n] [RCLike α] (A : Matrix l m α) (B : Matrix m n α) :
theorem Matrix.frobenius_norm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [Fintype l] [Fintype m] [Fintype n] [RCLike α] (A : Matrix l m α) (B : Matrix m n α) :
def Matrix.frobeniusNormedRing {m : Type u_3} {α : Type u_5} [Fintype m] [RCLike α] [DecidableEq m] :

Normed ring instance (using frobenius norm) for matrices over or . Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations
def Matrix.frobeniusNormedAlgebra {R : Type u_1} {m : Type u_3} {α : Type u_5} [Fintype m] [RCLike α] [DecidableEq m] [NormedField R] [NormedAlgebra R α] :

Normed algebra instance (using frobenius norm) for matrices over or . Not declared as an instance because there are several natural choices for defining the norm of a matrix.

Equations