mathlib documentation

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 elementwise supremum norm #

@[protected]
noncomputable def matrix.semi_normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] :

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_le_iff {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] {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] [semi_normed_group α] {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] [semi_normed_group α] {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] [semi_normed_group α] {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] [semi_normed_group α] (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] [semi_normed_group α] (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] [semi_normed_group α] [semi_normed_group β] (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] [semi_normed_group α] [semi_normed_group β] (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] [semi_normed_group α] (A : matrix m n α) :
@[simp]
theorem matrix.norm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] (A : matrix m n α) :
@[simp]
theorem matrix.nnnorm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] [star_add_monoid α] [normed_star_group α] (A : matrix m n α) :
@[simp]
theorem matrix.norm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] [star_add_monoid α] [normed_star_group α] (A : matrix m n α) :
@[protected, instance]
def matrix.normed_star_group {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] [star_add_monoid α] [normed_star_group α] :
@[simp]
theorem matrix.nnnorm_col {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
@[simp]
theorem matrix.norm_col {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
@[simp]
theorem matrix.nnnorm_row {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
@[simp]
theorem matrix.norm_row {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
@[simp]
theorem matrix.nnnorm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] [decidable_eq n] (v : n → α) :
@[simp]
theorem matrix.norm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] [decidable_eq n] (v : n → α) :
@[protected, instance]
def matrix.norm_one_class {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] [nonempty n] [decidable_eq n] [has_one α] [norm_one_class α] :

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

@[protected]
noncomputable def matrix.normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_group α] :

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
@[protected]
noncomputable def matrix.normed_space {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_field R] [semi_normed_group α] [normed_space R α] :
normed_space 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_\infty$ operator norm #

This section defines the matrix norm $\|A\|_\infty = \operatorname{sup}_i (\sum_j \|A_{ij}\|)$.

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

@[protected]
noncomputable def matrix.linfty_op_semi_normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] :

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
@[protected]
noncomputable def matrix.linfty_op_normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_group α] :

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
@[protected]
noncomputable def matrix.linfty_op_normed_space {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_field R] [semi_normed_group α] [normed_space R α] :
normed_space 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_op_norm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] (A : matrix m n α) :
A = (finset.univ.sup (λ (i : m), finset.univ.sum (λ (j : n), A i j∥₊)))
theorem matrix.linfty_op_nnnorm_def {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] (A : matrix m n α) :
A∥₊ = finset.univ.sup (λ (i : m), finset.univ.sum (λ (j : n), A i j∥₊))
@[simp]
theorem matrix.linfty_op_nnnorm_col {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
@[simp]
theorem matrix.linfty_op_norm_col {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
@[simp]
theorem matrix.linfty_op_nnnorm_row {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
@[simp]
theorem matrix.linfty_op_norm_row {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
@[simp]
theorem matrix.linfty_op_nnnorm_diagonal {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] [decidable_eq m] (v : m → α) :
@[simp]
theorem matrix.linfty_op_norm_diagonal {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] [decidable_eq m] (v : m → α) :
theorem matrix.linfty_op_nnnorm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype l] [fintype m] [fintype n] [non_unital_semi_normed_ring α] (A : matrix l m α) (B : matrix m n α) :
theorem matrix.linfty_op_norm_mul {l : Type u_2} {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype l] [fintype m] [fintype n] [non_unital_semi_normed_ring α] (A : matrix l m α) (B : matrix m n α) :
theorem matrix.linfty_op_nnnorm_mul_vec {l : Type u_2} {m : Type u_3} {α : Type u_5} [fintype l] [fintype m] [non_unital_semi_normed_ring α] (A : matrix l m α) (v : m → α) :
theorem matrix.linfty_op_norm_mul_vec {l : Type u_2} {m : Type u_3} {α : Type u_5} [fintype l] [fintype m] [non_unital_semi_normed_ring α] (A : matrix l m α) (v : m → α) :
@[protected, instance]
def matrix.linfty_op_norm_one_class {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_ring α] [norm_one_class α] [decidable_eq 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.

@[protected]
noncomputable def matrix.linfty_op_semi_normed_ring {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_ring α] [decidable_eq n] :

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
@[protected]
noncomputable def matrix.linfty_op_non_unital_normed_ring {n : Type u_4} {α : Type u_5} [fintype n] [non_unital_normed_ring α] :

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
@[protected]
noncomputable def matrix.linfty_op_normed_ring {n : Type u_4} {α : Type u_5} [fintype n] [normed_ring α] [decidable_eq 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
@[protected]
def matrix.linfty_op_normed_algebra {R : Type u_1} {n : Type u_4} {α : Type u_5} [fintype n] [normed_field R] [semi_normed_ring α] [normed_algebra R α] [decidable_eq 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

The Frobenius norm #

This is defined as $\|A\| = \sqrt{\sum_{i,j} \|A_{ij}\|^2}$. When the matrix is over the real or complex numbers, this norm is submultiplicative.

noncomputable def matrix.frobenius_semi_normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] :

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
noncomputable def matrix.frobenius_normed_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_group α] :

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
noncomputable def matrix.frobenius_normed_space {R : Type u_1} {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [normed_field R] [semi_normed_group α] [normed_space R α] :
normed_space 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] [semi_normed_group α] (A : matrix m n α) :
A∥₊ = finset.univ.sum (λ (i : m), finset.univ.sum (λ (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] [semi_normed_group α] (A : matrix m n α) :
A = finset.univ.sum (λ (i : m), finset.univ.sum (λ (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] [semi_normed_group α] [semi_normed_group β] (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] [semi_normed_group α] [semi_normed_group β] (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] [semi_normed_group α] (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] [semi_normed_group α] (A : matrix m n α) :
@[simp]
theorem matrix.frobenius_nnnorm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] [star_add_monoid α] [normed_star_group α] (A : matrix m n α) :
@[simp]
theorem matrix.frobenius_norm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] [semi_normed_group α] [star_add_monoid α] [normed_star_group α] (A : matrix m n α) :
@[protected, instance]
@[simp]
theorem matrix.frobenius_norm_row {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
matrix.row v = ((pi_Lp.equiv 2 (λ (ᾰ : m), α)).symm) v
@[simp]
theorem matrix.frobenius_nnnorm_row {m : Type u_3} {α : Type u_5} [fintype m] [semi_normed_group α] (v : m → α) :
matrix.row v∥₊ = ((pi_Lp.equiv 2 (λ (ᾰ : m), α)).symm) v∥₊
@[simp]
theorem matrix.frobenius_norm_col {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
matrix.col v = ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v
@[simp]
theorem matrix.frobenius_nnnorm_col {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] (v : n → α) :
matrix.col v∥₊ = ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v∥₊
@[simp]
theorem matrix.frobenius_nnnorm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] [decidable_eq n] (v : n → α) :
@[simp]
theorem matrix.frobenius_norm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [semi_normed_group α] [decidable_eq n] (v : n → α) :
matrix.diagonal v = ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v
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] [is_R_or_C α] (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] [is_R_or_C α] (A : matrix l m α) (B : matrix m n α) :
noncomputable def matrix.frobenius_normed_ring {m : Type u_3} {α : Type u_5} [fintype m] [is_R_or_C α] [decidable_eq 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.frobenius_normed_algebra {R : Type u_1} {m : Type u_3} {α : Type u_5} [fintype m] [is_R_or_C α] [decidable_eq m] [normed_field R] [normed_algebra 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