L² inner product space structure on finite products of inner product spaces #
The L² norm on a finite product of inner product spaces is compatible with an inner product
$$ \langle x, y\rangle = \sum \langle x_i, y_i \rangle. $$
This is recorded in this file as an inner product space instance on PiLp 2.
This file develops the notion of a finite-dimensional Hilbert space over 𝕜 = ℂ, ℝ, referred to as
E. We define an OrthonormalBasis 𝕜 ι E as a linear isometric equivalence
between E and EuclideanSpace 𝕜 ι. Then stdOrthonormalBasis shows that such an equivalence
always exists if E is finite dimensional. We provide language for converting between a basis
that is orthonormal and an orthonormal basis (e.g. Basis.toOrthonormalBasis). We show that
orthonormal bases for each summand in a direct sum of spaces can be combined into an orthonormal
basis for the whole sum in DirectSum.IsInternal.subordinateOrthonormalBasis. In
the last section, various properties of matrices are explored.
Main definitions #
EuclideanSpace 𝕜 n: defined to bePiLp 2 (n → 𝕜)for anyFintype n, i.e., the space from functions tonto𝕜with theL²norm. We register several instances on it (notably that it is a finite-dimensional inner product space), and provide a!ₚ[]notation (for numeric subscripts like₂) for the case when the indexing type isFin n.OrthonormalBasis 𝕜 ι: defined to be an isometry to Euclidean space from a given finite-dimensional inner product space,E ≃ₗᵢ[𝕜] EuclideanSpace 𝕜 ι.Basis.toOrthonormalBasis: constructs anOrthonormalBasisfor a finite-dimensional Euclidean space from aBasiswhich isOrthonormal.Orthonormal.exists_orthonormalBasis_extension: provides an existential result of anOrthonormalBasisextending a given orthonormal setexists_orthonormalBasis: provides an orthonormal basis on a finite-dimensional vector spacestdOrthonormalBasis: provides an arbitrarily-chosenOrthonormalBasisof a given finite-dimensional inner product space
For consequences in infinite dimension (Hilbert bases, etc.), see the file
Analysis.InnerProductSpace.L2Space.
Equations
- One or more equations did not get rendered due to their size.
The standard real/complex Euclidean space, functions on a finite type. For an n-dimensional
space use EuclideanSpace 𝕜 (Fin n).
For the case when n = Fin _, there is !₂[x, y, ...] notation for building elements of this type,
analogous to ![x, y, ...] notation.
Equations
- EuclideanSpace 𝕜 n = PiLp 2 fun (x : n) => 𝕜
Instances For
Notation for vectors in Lp space. !₂[x, y, ...] is a shorthand for
WithLp.toLp 2 ![x, y, ...], of type EuclideanSpace _ (Fin _).
This also works for other subscripts.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Unexpander for the !₂[x, y, ...] notation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A finite, mutually orthogonal family of subspaces of E, which span E, induce an isometry
from E to PiLp 2 of the subspaces equipped with the L2 inner product.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A shorthand for PiLp.continuousLinearEquiv.
Equations
- EuclideanSpace.equiv ι 𝕜 = PiLp.continuousLinearEquiv 2 𝕜 fun (x : ι) => 𝕜
Instances For
The projection on the i-th coordinate of EuclideanSpace 𝕜 ι, as a linear map.
Equations
- EuclideanSpace.projₗ i = PiLp.projₗ 2 (fun (x : ι) => 𝕜) i
Instances For
The projection on the i-th coordinate of EuclideanSpace 𝕜 ι, as a continuous linear map.
Equations
- EuclideanSpace.proj i = PiLp.proj 2 (fun (x : ι) => 𝕜) i
Instances For
The vector given in Euclidean space by being a : 𝕜 at coordinate i : ι and 0 : 𝕜 at
all other coordinates.
Equations
- EuclideanSpace.single i a = WithLp.toLp 2 (Pi.single i a)
Instances For
EuclideanSpace.single forms an orthonormal family.
The canonical linear homeomorphism between EuclideanSpace 𝕜 (ι ⊕ κ) and
EuclideanSpace 𝕜 ι × EuclideanSpace 𝕜 κ.
See PiLp.sumPiLpEquivProdLpPiLp for the isometry version,
where the RHS is equipped with the Euclidean norm rather than the supremum norm.
Equations
- EuclideanSpace.sumEquivProd = (PiLp.sumPiLpEquivProdLpPiLp 2 fun (x : ι ⊕ κ) => 𝕜).toContinuousLinearEquiv.trans (WithLp.prodContinuousLinearEquiv 2 𝕜 (WithLp 2 (ι → 𝕜)) (WithLp 2 (κ → 𝕜)))
Instances For
The canonical linear homeomorphism between EuclideanSpace 𝕜 (Fin (n + m)) and
EuclideanSpace 𝕜 (Fin n) × EuclideanSpace 𝕜 (Fin m).
Equations
Instances For
An orthonormal basis on E is an identification of E with its dimensional-matching
EuclideanSpace 𝕜 ι.
- ofRepr :: (
Linear isometry between
EandEuclideanSpace 𝕜 ιrepresenting the orthonormal basis.- )
Instances For
b i is the ith basis vector.
Equations
- OrthonormalBasis.instFunLike = { coe := fun (b : OrthonormalBasis ι 𝕜 E) (i : ι) => b.repr.symm (EuclideanSpace.single i 1), coe_injective' := ⋯ }
The Basis ι 𝕜 E underlying the OrthonormalBasis
Equations
Instances For
Alias of OrthonormalBasis.sum_sq_norm_inner_right.
Mapping an orthonormal basis along a LinearIsometryEquiv.
Instances For
A basis that is orthonormal is an orthonormal basis.
Equations
- v.toOrthonormalBasis hv = { repr := v.equivFun.isometryOfInner ⋯ }
Instances For
OrthonormalBasis.singleton ι 𝕜 is the orthonormal basis sending the unique element of ι to
1 : 𝕜.
Equations
Instances For
Pi.orthonormalBasis (B : ∀ i, OrthonormalBasis (ι i) 𝕜 (E i)) is the
Σ i, ι i-indexed orthonormal basis on Π i, E i given by B i on each component.
Equations
- Pi.orthonormalBasis B = { repr := (LinearIsometryEquiv.piLpCongrRight 2 fun (i : η) => (B i).repr).trans (LinearIsometryEquiv.piLpCurry 𝕜 2 fun (x : η) (x : ι x) => 𝕜).symm }
Instances For
A finite orthonormal set that spans is an orthonormal basis
Equations
- OrthonormalBasis.mk hon hsp = (Module.Basis.mk ⋯ hsp).toOrthonormalBasis ⋯
Instances For
Any finite subset of an orthonormal family is an OrthonormalBasis for its span.
Equations
- OrthonormalBasis.span h s = (OrthonormalBasis.mk ⋯ ⋯).map (LinearIsometryEquiv.ofEq (Submodule.span 𝕜 ↑(Finset.image v' s)) (Submodule.span 𝕜 (Set.range (v' ∘ Subtype.val))) ⋯).symm
Instances For
A finite orthonormal family of vectors whose span has trivial orthogonal complement is an orthonormal basis.
Equations
- OrthonormalBasis.mkOfOrthogonalEqBot hon hsp = OrthonormalBasis.mk hon ⋯
Instances For
b.reindex (e : ι ≃ ι') is an OrthonormalBasis indexed by ι'
Instances For
The basis Pi.basisFun, bundled as an orthornormal basis of EuclideanSpace 𝕜 ι.
Equations
- EuclideanSpace.basisFun ι 𝕜 = { repr := LinearIsometryEquiv.refl 𝕜 (EuclideanSpace 𝕜 ι) }
Instances For
Equations
- OrthonormalBasis.instInhabited = { default := EuclideanSpace.basisFun ι 𝕜 }
The LinearIsometryEquiv which maps an orthonormal basis to another. This is a convenience
wrapper around Orthonormal.equiv.
Equations
Instances For
![1, I] is an orthonormal basis for ℂ considered as a real inner product space.
Equations
Instances For
The isometry between ℂ and a two-dimensional real inner product space given by a basis.
Equations
Instances For
Matrix representation of an orthonormal basis with respect to another #
A version of OrthonormalBasis.toMatrix_orthonormalBasis_mem_unitary that works for bases with
different index types.
A version of OrthonormalBasis.toMatrix_orthonormalBasis_mem_unitary that works for bases with
different index types.
The change-of-basis matrix between two orthonormal bases a, b is a unitary matrix.
The determinant of the change-of-basis matrix between two orthonormal bases a, b has
unit length.
The change-of-basis matrix between two orthonormal bases a, b is an orthogonal matrix.
The determinant of the change-of-basis matrix between two orthonormal bases a, b is ±1.
Existence of orthonormal basis, etc. #
Given an internal direct sum decomposition of a module M, and an orthonormal basis for each
of the components of the direct sum, the disjoint union of these orthonormal bases is an
orthonormal basis for M.
Equations
- DirectSum.IsInternal.collectedOrthonormalBasis hV hV_sum v_family = (hV_sum.collectedBasis fun (i : ι) => (v_family i).toBasis).toOrthonormalBasis ⋯
Instances For
In a finite-dimensional InnerProductSpace, any orthonormal subset can be extended to an
orthonormal basis.
A finite-dimensional inner product space admits an orthonormal basis.
A finite-dimensional InnerProductSpace has an orthonormal basis.
Equations
- stdOrthonormalBasis 𝕜 E = have b := Classical.choose ⋯; ⋯.mpr (b.reindex (Fintype.equivFinOfCardEq ⋯))
Instances For
An orthonormal basis of ℝ is made either of the vector 1, or of the vector -1.
Exhibit a bijection between Fin n and the index set of a certain basis of an n-dimensional
inner product space E. This should not be accessed directly, but only via the subsequent API.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An n-dimensional InnerProductSpace equipped with a decomposition as an internal direct
sum has an orthonormal basis indexed by Fin n and subordinate to that direct sum.
Equations
- One or more equations did not get rendered due to their size.
Instances For
An n-dimensional InnerProductSpace equipped with a decomposition as an internal direct
sum has an orthonormal basis indexed by Fin n and subordinate to that direct sum. This function
provides the mapping by which it is subordinate.
Equations
- DirectSum.IsInternal.subordinateOrthonormalBasisIndex hn hV a hV' = ((DirectSum.IsInternal.sigmaOrthonormalBasisIndexEquiv hn hV hV').symm a).fst
Instances For
The basis constructed in DirectSum.IsInternal.subordinateOrthonormalBasis is subordinate to
the OrthogonalFamily in question.
Given a natural number n one less than the finrank of a finite-dimensional inner product
space, there exists an isometry from the orthogonal complement of a nonzero singleton to
EuclideanSpace 𝕜 (Fin n).
Equations
- OrthonormalBasis.fromOrthogonalSpanSingleton n hv = (stdOrthonormalBasis 𝕜 ↥(Submodule.span 𝕜 {v})ᗮ).reindex (finCongr ⋯)
Instances For
Let S be a subspace of a finite-dimensional complex inner product space V. A linear
isometry mapping S into V can be extended to a full isometry of V.
TODO: The case when S is a finite-dimensional subspace of an infinite-dimensional V.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Matrix.toLin' adapted for EuclideanSpace 𝕜 _.
Equations
- Matrix.toEuclideanLin = Matrix.toLin'.trans ((WithLp.linearEquiv 2 𝕜 (n → 𝕜)).symm.arrowCongr (WithLp.linearEquiv 2 𝕜 (m → 𝕜)).symm)
Instances For
The matrix representation of innerSL 𝕜 x given by an orthonormal basis b and b₂
is equal to vecMulVec (star b₂) (star (b.repr x)).