analysis.matrix

# Matrices as a normed space #

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

• The elementwise norm:

• matrix.seminormed_add_comm_group
• matrix.normed_add_comm_group
• matrix.normed_space
• The Frobenius norm:

• matrix.frobenius_seminormed_add_comm_group
• matrix.frobenius_normed_add_comm_group
• matrix.frobenius_normed_space
• matrix.frobenius_normed_ring
• matrix.frobenius_normed_algebra
• The $L^\infty$ operator norm:

• matrix.linfty_op_seminormed_add_comm_group
• matrix.linfty_op_normed_add_comm_group
• matrix.linfty_op_normed_space
• matrix.linfty_op_non_unital_semi_normed_ring
• matrix.linfty_op_semi_normed_ring
• matrix.linfty_op_non_unital_normed_ring
• matrix.linfty_op_normed_ring
• matrix.linfty_op_normed_algebra

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.seminormed_add_comm_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n]  :

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

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

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

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] [ α] :
(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_seminormed_add_comm_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n]  :

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_add_comm_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n]  :

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] [ α] :
(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] (A : 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] (A : 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] (v : m → α) :
@[simp]
theorem matrix.linfty_op_norm_col {m : Type u_3} {α : Type u_5} [fintype m] (v : m → α) :
@[simp]
theorem matrix.linfty_op_nnnorm_row {n : Type u_4} {α : Type u_5} [fintype n] (v : n → α) :
= finset.univ.sum (λ (i : n), v i∥₊)
@[simp]
theorem matrix.linfty_op_norm_row {n : Type u_4} {α : Type u_5} [fintype n] (v : n → α) :
= finset.univ.sum (λ (i : n), v i)
@[simp]
theorem matrix.linfty_op_nnnorm_diagonal {m : Type u_3} {α : Type u_5} [fintype m] [decidable_eq m] (v : m → α) :
@[simp]
theorem matrix.linfty_op_norm_diagonal {m : Type u_3} {α : Type u_5} [fintype m] [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] (A : m α) (B : 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] (A : m α) (B : n α) :
theorem matrix.linfty_op_nnnorm_mul_vec {l : Type u_2} {m : Type u_3} {α : Type u_5} [fintype l] [fintype m] (A : 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] (A : m α) (v : m → α) :
@[protected]
noncomputable def matrix.linfty_op_non_unital_semi_normed_ring {n : Type u_4} {α : Type u_5} [fintype n]  :

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

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] [ α] [decidable_eq n] :
(matrix n 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_seminormed_add_comm_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n]  :

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_add_comm_group {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n]  :

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] [ α] :
(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] (A : 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] (A : 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] (A : 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] (A : 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] (A : n α) :
@[simp]
theorem matrix.frobenius_norm_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] (A : n α) :
@[simp]
theorem matrix.frobenius_nnnorm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] (A : n α) :
@[simp]
theorem matrix.frobenius_norm_conj_transpose {m : Type u_3} {n : Type u_4} {α : Type u_5} [fintype m] [fintype n] (A : n α) :
@[protected, instance]
def matrix.frobenius_normed_star_group {m : Type u_3} {α : Type u_5} [fintype m]  :
@[simp]
theorem matrix.frobenius_norm_row {m : Type u_3} {α : Type u_5} [fintype m] (v : m → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : m), α)).symm) v
@[simp]
theorem matrix.frobenius_nnnorm_row {m : Type u_3} {α : Type u_5} [fintype m] (v : m → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : m), α)).symm) v∥₊
@[simp]
theorem matrix.frobenius_norm_col {n : Type u_4} {α : Type u_5} [fintype n] (v : n → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v
@[simp]
theorem matrix.frobenius_nnnorm_col {n : Type u_4} {α : Type u_5} [fintype n] (v : n → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v∥₊
@[simp]
theorem matrix.frobenius_nnnorm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [decidable_eq n] (v : n → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v∥₊
@[simp]
theorem matrix.frobenius_norm_diagonal {n : Type u_4} {α : Type u_5} [fintype n] [decidable_eq n] (v : n → α) :
= ((pi_Lp.equiv 2 (λ (ᾰ : n), α)).symm) v
theorem matrix.frobenius_nnnorm_one {n : Type u_4} {α : Type u_5} [fintype n] [decidable_eq n] [has_one α] :
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 : m α) (B : 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 : m α) (B : 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] [ α] :
(matrix m m α)

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