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 ton
to𝕜
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 anOrthonormalBasis
for a finite-dimensional Euclidean space from aBasis
which isOrthonormal
.Orthonormal.exists_orthonormalBasis_extension
: provides an existential result of anOrthonormalBasis
extending a given orthonormal setexists_orthonormalBasis
: provides an orthonormal basis on a finite dimensional vector spacestdOrthonormalBasis
: provides an arbitrarily-chosenOrthonormalBasis
of a given finite dimensional inner product space
For consequences in infinite dimension (Hilbert bases, etc.), see the file
Analysis.InnerProductSpace.L2Space
.
Equations
- PiLp.innerProductSpace f = InnerProductSpace.mk ⋯ ⋯ ⋯ ⋯
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.equiv 2 _ _).symm ![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.equiv 2 ((i : ι) → (fun (x : ι) => 𝕜) i)).symm (Pi.single i a)
Instances For
EuclideanSpace.single
forms an orthonormal family.
An orthonormal basis on E is an identification of E
with its dimensional-matching
EuclideanSpace 𝕜 ι
.
- ofRepr :: (
- repr : E ≃ₗᵢ[𝕜] EuclideanSpace 𝕜 ι
Linear isometry between
E
andEuclideanSpace 𝕜 ι
representing the orthonormal basis. - )
Instances For
b i
is the i
th 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
- b.toBasis = Basis.ofEquivFun b.repr.toLinearEquiv
Instances For
Mapping an orthonormal basis along a LinearIsometryEquiv
.
Equations
- b.map L = { repr := L.symm.trans b.repr }
Instances For
A basis that is orthonormal is an orthonormal basis.
Equations
- v.toOrthonormalBasis hv = { repr := v.equivFun.isometryOfInner ⋯ }
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 = (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 ι'
Equations
- b.reindex e = { repr := b.repr.trans (LinearIsometryEquiv.piLpCongrLeft 2 𝕜 𝕜 e) }
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 ι 𝕜 }
![1, I]
is an orthonormal basis for ℂ
considered as a real inner product space.
Equations
- Complex.orthonormalBasisOneI = Complex.basisOneI.toOrthonormalBasis Complex.orthonormalBasisOneI.proof_1
Instances For
The isometry between ℂ
and a two-dimensional real inner product space given by a basis.
Equations
- Complex.isometryOfOrthonormal v = Complex.orthonormalBasisOneI.repr.trans v.repr.symm
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 = let 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 inner product of a row of A
and a row of B
is an entry of B * Aᴴ
.
The inner product of a column of A
and a column of B
is an entry of Aᴴ * B
.