Vector spaces
RadiiPolynomial defines a variety of vector spaces to represent the Banach space on which one applies the Radii Polynomial Theorem.
All spaces mentioned below are a subtype of the abstract type VectorSpace.
VectorSpace
├─ CartesianSpace
│ ├─ CartesianPower
│ └─ CartesianProduct
├─ ParameterSpace
└─ SequenceSpace
├─ BaseSpace
│ ├─ Chebyshev
│ ├─ Fourier
│ └─ Taylor
└─ TensorSpaceParameter space
A ParameterSpace represents the commutative field of a parameter. This is the standard space to use for an unfolding parameter.
julia> 𝒫 = ParameterSpace()𝕂julia> dimension(𝒫)1julia> indices(𝒫)Base.OneTo(1)
Sequence space
SequenceSpace is the abstract type for all sequence spaces.
SequenceSpace
├─ BaseSpace
│ ├─ Chebyshev
│ ├─ Fourier
│ └─ Taylor
└─ TensorSpaceBaseSpace
BaseSpace is the abstract type for all sequence spaces that are not a TensorSpace but can be interlaced to form one.
BaseSpace
├─ Chebyshev
├─ Fourier
└─ TaylorTaylor
For a given order $n$, a Taylor sequence space is the span of $\{\phi_0, \dots, \phi_n\}$ where $\phi_k(t) \bydef t^k$ for $k = 0, \dots, n$ and $t \in [-\nu, \nu]$ for some appropriate $\nu > 0$.
julia> 𝒯 = Taylor(1)Taylor(1)julia> order(𝒯)1julia> dimension(𝒯)2julia> indices(𝒯)0:1
Fourier
For a given order $n$ and frequency $\omega$, a Fourier sequence space is the span of $\{\phi_{-n}, \dots, \phi_n\}$ where $\phi_k(t) \bydef e^{i \omega k t}$ for $k = -n, \dots, n$ and $t \in \mathbb{R}/2\pi\omega^{-1}\mathbb{Z}$.
julia> ℱ = Fourier(1, 1.0)Fourier(1, 1.0)julia> order(ℱ)1julia> frequency(ℱ)1.0julia> dimension(ℱ)3julia> indices(ℱ)-1:1
Chebyshev
For a given order $n$, a Chebyshev sequence space is the span of $\{\phi_0, \phi_1, \dots, \phi_n\}$ where $\phi_0(t) \bydef 1$, $\phi_1(t) \bydef t$ and $\phi_k(t) \bydef 2 t \phi_{k-1}(t) - \phi_{k-2}(t)$ for $k = 2, \dots, n$ and $t \in [-1, 1]$.
It is important to note that the coefficients $\{a_0, a_1, \dots, a_n\}$ associated with a Chebyshev space are normalized such that $\{a_0, 2a_1, \dots, 2a_n\}$ are the actual Chebyshev coefficients.
julia> 𝒞 = Chebyshev(1)Chebyshev(1)julia> order(𝒞)1julia> dimension(𝒞)2julia> indices(𝒞)0:1
Tensor space
A TensorSpace is the tensor product of some BaseSpace. The standard constructor for TensorSpace is the ⊗ (\otimes<tab>) operator.
julia> 𝒯_otimes_ℱ_otimes_𝒞 = Taylor(1) ⊗ Fourier(1, 1.0) ⊗ Chebyshev(1) # TensorSpace((Taylor(1), Fourier(1, 1.0), Chebyshev(1)))Taylor(1) ⊗ Fourier(1, 1.0) ⊗ Chebyshev(1)julia> nspaces(𝒯_otimes_ℱ_otimes_𝒞)3julia> order(𝒯_otimes_ℱ_otimes_𝒞)(1, 1, 1)julia> frequency(𝒯_otimes_ℱ_otimes_𝒞, 2)1.0julia> dimension(𝒯_otimes_ℱ_otimes_𝒞)12julia> dimensions(𝒯_otimes_ℱ_otimes_𝒞)(2, 3, 2)julia> indices(𝒯_otimes_ℱ_otimes_𝒞)TensorIndices{Tuple{UnitRange{Int64}, UnitRange{Int64}, UnitRange{Int64}}}((0:1, -1:1, 0:1))
Cartesian space
CartesianSpace is the abstract type for all cartesian spaces.
CartesianSpace
├─ CartesianPower
└─ CartesianProductCartesian power
A CartesianPower is the cartesian product of an identical VectorSpace. The standard constructor for CartesianPower is the ^ operator.
julia> 𝒯² = Taylor(1) ^ 2 # CartesianPower(Taylor(1), 2)Taylor(1)²julia> nspaces(𝒯²)2julia> dimension(𝒯²)4julia> indices(𝒯²)Base.OneTo(4)
Cartesian product
A CartesianProduct is the cartesian product of some VectorSpace. The standard constructor for CartesianProduct is the × (\times<tab>) operator.
julia> 𝒫_times_𝒯 = ParameterSpace() × Taylor(1) # CartesianProduct((ParameterSpace(), Taylor(1)))𝕂 × Taylor(1)julia> nspaces(𝒫_times_𝒯)2julia> dimension(𝒫_times_𝒯)3julia> indices(𝒫_times_𝒯)Base.OneTo(3)
API
RadiiPolynomial.BaseSpace — Type
BaseSpace <: SequenceSpaceAbstract type for all sequence spaces that are not a TensorSpace but can be interlaced to form one.
RadiiPolynomial.CartesianPower — Type
CartesianPower{T<:VectorSpace} <: CartesianSpaceCartesian space resulting from the cartesian product of the same VectorSpace.
Fields:
space :: Tn :: Int
Constructors:
CartesianPower(::VectorSpace, ::Int)^(::VectorSpace, ::Int): equivalent toCartesianPower(::VectorSpace, ::Int)
See also: ^(::VectorSpace, ::Int), CartesianProduct and ×.
Examples
julia> s = CartesianPower(Taylor(1), 3)
Taylor(1)³
julia> space(s)
Taylor(1)
julia> nspaces(s)
3RadiiPolynomial.CartesianProduct — Type
CartesianProduct{T<:Tuple{Vararg{VectorSpace}}} <: CartesianSpaceCartesian space resulting from the cartesian product of some VectorSpace.
Field:
spaces :: T
Constructors:
CartesianProduct(::Tuple{Vararg{VectorSpace}})CartesianProduct(spaces::VectorSpace...): equivalent toCartesianProduct(spaces)×(s₁::VectorSpace, s₂::VectorSpace): equivalent toCartesianProduct((s₁, s₂))×(s₁::CartesianProduct, s₂::CartesianProduct): equivalent toCartesianProduct((s₁.spaces..., s₂.spaces...))×(s₁::CartesianProduct, s₂::VectorSpace): equivalent toCartesianProduct((s₁.spaces..., s₂))×(s₁::VectorSpace, s₂::CartesianProduct): equivalent toCartesianProduct((s₁, s₂.spaces...))
See also: ×, CartesianPower, ^(::VectorSpace, ::Int).
Examples
julia> s = CartesianProduct(Taylor(1), Fourier(2, 1.0), Chebyshev(3))
Taylor(1) × Fourier(2, 1.0) × Chebyshev(3)
julia> spaces(s)
(Taylor(1), Fourier(2, 1.0), Chebyshev(3))
julia> nspaces(s)
3RadiiPolynomial.CartesianSpace — Type
CartesianSpace <: VectorSpaceAbstract type for all cartesian spaces.
RadiiPolynomial.Chebyshev — Type
Chebyshev <: BaseSpaceSequence space whose elements are Chebyshev sequences of a prescribed order.
Field:
order :: Int
Constructor:
Chebyshev(order::Int)
Examples
julia> s = Chebyshev(2)
Chebyshev(2)
julia> order(s)
2RadiiPolynomial.CosFourier — Type
CosFourier{T<:Real} <: SymBaseSpaceSequence space whose elements are cosine sequences of a prescribed order and frequency.
Field:
space :: Fourier{T}
Constructors:
CosFourier(space::Fourier)CosFourier(order::Int, frequency::Real)
Example
julia> s = CosFourier(2, 1.0)
CosFourier(2, 1.0)
julia> order(s)
2
julia> frequency(s)
1.0RadiiPolynomial.EmptySpace — Type
EmptySpace <: VectorSpaceEmpty vector space.
Example
julia> EmptySpace()
∅
julia> LinearOperator(EmptySpace(), EmptySpace(), [;;])
LinearOperator : ∅ → ∅ with coefficients Matrix{Any}:RadiiPolynomial.Fourier — Type
Fourier{T<:Real} <: BaseSpaceSequence space whose elements are Fourier sequences of a prescribed order and frequency.
Fields:
order :: Intfrequency :: T
Constructor:
Fourier(order::Int, frequency::Real)
See also: Taylor and Chebyshev.
Examples
julia> s = Fourier(2, 1.0)
Fourier(2, 1.0)
julia> order(s)
2
julia> frequency(s)
1.0RadiiPolynomial.ParameterSpace — Type
ParameterSpace <: VectorSpaceParameter space corresponding to a commutative field.
Example
julia> ParameterSpace()
𝕂RadiiPolynomial.SequenceSpace — Type
SequenceSpace <: VectorSpaceAbstract type for all sequence spaces.
RadiiPolynomial.SinFourier — Type
SinFourier{T<:Real} <: SymBaseSpaceSequence space whose elements are sine sequences of a prescribed order and frequency.
Field:
space :: Fourier{T}
Constructors:
SinFourier(space::Fourier)SinFourier(order::Int, frequency::Real)
Example
julia> s = SinFourier(2, 1.0)
SinFourier(2, 1.0)
julia> order(s)
2
julia> frequency(s)
1.0RadiiPolynomial.Taylor — Type
Taylor <: BaseSpaceSequence space whose elements are Taylor sequences of a prescribed order.
Field:
order :: Int
Constructor:
Taylor(order::Int)
See also: Fourier and Chebyshev.
Examples
julia> s = Taylor(2)
Taylor(2)
julia> order(s)
2RadiiPolynomial.TensorIndices — Type
TensorIndices{<:Tuple}Multidimentional rectangular range of indices for some TensorSpace.
Examples
julia> TensorIndices((0:2, -1:1))
TensorIndices{Tuple{UnitRange{Int64}, UnitRange{Int64}}}((0:2, -1:1))
julia> indices(Taylor(2) ⊗ Fourier(1, 1.0))
TensorIndices{Tuple{UnitRange{Int64}, UnitRange{Int64}}}((0:2, -1:1))RadiiPolynomial.TensorSpace — Type
TensorSpace{T<:Tuple{Vararg{BaseSpace}}} <: SequenceSpaceSequence space resulting from the tensor product of some BaseSpace.
Field:
spaces :: T
Constructors:
TensorSpace(spaces::Tuple{Vararg{BaseSpace}})TensorSpace(spaces::BaseSpace...)⊗(s₁::BaseSpace, s₂::BaseSpace): equivalent toTensorSpace((s₁, s₂))⊗(s₁::TensorSpace, s₂::TensorSpace): equivalent toTensorSpace((s₁.spaces..., s₂.spaces...))⊗(s₁::TensorSpace, s₂::BaseSpace): equivalent toTensorSpace((s₁.spaces..., s₂))⊗(s₁::BaseSpace, s₂::TensorSpace): equivalent toTensorSpace((s₁, s₂.spaces...))
See also: ⊗.
Examples
julia> s = TensorSpace(Taylor(1), Fourier(2, 1.0), Chebyshev(3))
Taylor(1) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(3)
julia> spaces(s)
(Taylor(1), Fourier(2, 1.0), Chebyshev(3))RadiiPolynomial.VectorSpace — Type
VectorSpaceAbstract type for all vector spaces.
LinearAlgebra.:× — Method
×(::VectorSpace, ::VectorSpace)
×(::CartesianProduct, ::CartesianProduct)
×(::CartesianProduct, ::VectorSpace)
×(::VectorSpace, ::CartesianProduct)Create a CartesianProduct from the cartesian product of some VectorSpace.
See also: CartesianProduct, CartesianPower and ^(::VectorSpace, ::Int).
Examples
julia> Taylor(1) × Fourier(2, 1.0)
Taylor(1) × Fourier(2, 1.0)
julia> Taylor(1) × Fourier(2, 1.0) × Chebyshev(3)
Taylor(1) × Fourier(2, 1.0) × Chebyshev(3)
julia> (Taylor(1) × Fourier(2, 1.0)) × Chebyshev(3)
Taylor(1) × Fourier(2, 1.0) × Chebyshev(3)
julia> Taylor(1) × (Fourier(2, 1.0) × Chebyshev(3))
Taylor(1) × Fourier(2, 1.0) × Chebyshev(3)
julia> ParameterSpace()^2 × ((Taylor(1) ⊗ Fourier(2, 1.0)) × Chebyshev(3))^3
𝕂² × ((Taylor(1) ⊗ Fourier(2, 1.0)) × Chebyshev(3))³RadiiPolynomial.:⊗ — Method
⊗(s₁::BaseSpace, s₂::BaseSpace)
⊗(s₁::TensorSpace, s₂::TensorSpace)
⊗(s₁::TensorSpace, s₂::BaseSpace)
⊗(s₁::BaseSpace, s₂::TensorSpace)Create a TensorSpace from the tensor product of some SequenceSpace.
See also: TensorSpace.
Examples
julia> Taylor(1) ⊗ Fourier(2, 1.0)
Taylor(1) ⊗ Fourier(2, 1.0)
julia> Taylor(1) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(3)
Taylor(1) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(3)
julia> Taylor(1) ⊗ (Fourier(2, 1.0) ⊗ Chebyshev(3))
Taylor(1) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(3)
julia> (Taylor(1) ⊗ Fourier(2, 1.0)) ⊗ Chebyshev(3)
Taylor(1) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(3)