Norms
The choice of the Banach space to apply the Radii Polynomial Theorem (cf. Section Radii polynomial approach) is integral to the success of the computer-assisted proof. In practice, it is useful to tune the Banach space on the fly to adjust the norm estimates.
Accordingly, the spaces introduced in Section Vector spaces are not normed a priori. The norm of a Sequence or a LinearOperator is obtained via the functions norm and opnorm respectively; in both cases, one must specify a BanachSpace.
BanachSpace
├─ NormedCartesianSpace
├─ Ell1
├─ Ell2
└─ EllInf$\ell^1$, $\ell^2$ and $\ell^\infty$
Let $\mathscr{I}$ be a set of indices such that $\mathscr{I} \subset \mathbb{Z}^d$ for some $d \in \mathbb{N}$. Consider the weighted $\ell^1, \ell^2, \ell^\infty$ spaces (cf. $\ell^p$ spaces) defined by
\[\begin{aligned} \ell^1_w &\bydef \left\{ a \in \mathbb{C}^\mathscr{I} \, : \, | a |_{\ell^1_w} \bydef \sum_{\alpha \in \mathscr{I}} |a_\alpha| w(\alpha) < \infty \right\}, \\ \ell^2_w &\bydef \left\{ a \in \mathbb{C}^\mathscr{I} \, : \, | a |_{\ell^2_w} \bydef \sqrt{\sum_{\alpha \in \mathscr{I}} |a_\alpha|^2 w(\alpha)} < \infty \right\}, \\ \ell^\infty_w &\bydef \left\{ a \in \mathbb{C}^\mathscr{I} \, : \, | a |_{\ell^\infty_w} \bydef \sup_{\alpha \in \mathscr{I}} | a_\alpha | w(\alpha) < \infty \right\}, \end{aligned}\]
where $w : \mathscr{I} \to (0, \infty)$ is a weight function.
The Banach spaces Ell1, Ell2 and EllInf wraps one or multiple Weight.
Weight
├─ AlgebraicWeight
├─ BesselWeight
├─ GeometricWeight
└─ IdentityWeightGiven a set of indices $\mathscr{I}^\prime \subset \mathbb{Z}$:
an
AlgebraicWeightof rate $s \ge 0$ is defined by $w(\alpha) \bydef (1 + |\alpha|)^s$ for all $\alpha \in \mathscr{I}^\prime$.a
BesselWeightof rate $s \ge 0$ is defined by $w(\alpha) \bydef (1 + \alpha^2)^s$ for all $\alpha \in \mathscr{I}^\prime$. This weight is specific toEll2andFourieras it describes the Sobolev space $H^s$.a
GeometricWeightof rate $\nu \ge 1$ is defined by $w(\alpha) \bydef \nu^{|\alpha|}$ for all $\alpha \in \mathscr{I}^\prime$.an
IdentityWeightis defined by $w(\alpha) \bydef 1$ for all $\alpha \in \mathscr{I}^\prime$. This is the default weight forEll1,Ell2andEllInf.
julia> a = Sequence(Taylor(2), [1.0, 1.0, 1.0]); # 1 + x + x^2julia> norm(a, Ell1(AlgebraicWeight(1.0)))6.0julia> b = Sequence(Fourier(1, 1.0), [0.5, 0.0, 0.5]); # cos(x)julia> norm(b, Ell2(BesselWeight(2.0)))1.4142135623730951julia> c = Sequence(Chebyshev(2), [1.0, 0.5, 0.5]); # 1 + 2(x/2 + (2x^2 - 1)/2)julia> norm(c, EllInf()) # EllInf() == EllInf(IdentityWeight())1.0
Note that ℓ¹ (\ell<tab>\^1<tab>), ℓ² (\ell<tab>\^2<tab>) and ℓ∞ (\ell<tab>\infty<tab>) are the respective unicode aliases of Ell1, Ell2 and EllInf.
In the context of a $d$-dimensional TensorSpace, one prescribes weights $w_1, \dots, w_d$ for each dimension. The weight is defined by $w(\alpha) = w_1(\alpha_1) \times \ldots \times w_d(\alpha_d)$ for all $\alpha = (\alpha_1, \dots, \alpha_d) \in \mathscr{I}^{\prime\prime}$ where $\mathscr{I}^{\prime\prime} \subset \mathbb{Z}^d$ is the appropriate set of indices.
julia> a = ones(Taylor(2) ⊗ Fourier(2, 1.0) ⊗ Chebyshev(2));julia> norm(a, Ell1((AlgebraicWeight(1.0), GeometricWeight(2.0), IdentityWeight())))390.0
However, the $d$-dimensional version of BesselWeight is defined by $w(\alpha) \bydef (1 + \alpha_1^2 + \ldots + \alpha_d^2)^s$ for all $\alpha = (\alpha_1, \dots, \alpha_d) \in \mathbb{Z}^d$. Only one BesselWeight is required for every Fourier space composing the TensorSpace.
julia> a = ones(Fourier(2, 1.0) ⊗ Fourier(3, 1.0));julia> norm(a, Ell2(BesselWeight(2.0)))47.25462940284264
Normed cartesian space
For the norm of a CartesianSpace, one may use a NormedCartesianSpace to either:
- use the same
BanachSpacefor each space. - use a different
BanachSpacefor each space.
julia> a = Sequence(Taylor(1)^2, [1.0, 2.0, 3.0, 4.0]);julia> norm(a, NormedCartesianSpace(ℓ¹(), ℓ∞()))7.0julia> norm(a, NormedCartesianSpace((ℓ¹(), ℓ²()), ℓ∞()))5.0
API
RadiiPolynomial.AlgebraicWeight — Type
AlgebraicWeight{T<:Real} <: WeightAlgebraic weight associated with a given rate satisfying isfinite(rate) & (rate ≥ 0).
Field:
rate :: T
See also: algebraicweight, IdentityWeight, GeometricWeight, geometricweight and BesselWeight.
Examples
julia> w = AlgebraicWeight(1.0)
AlgebraicWeight(1.0)
julia> rate(w)
1.0RadiiPolynomial.BanachSpace — Type
BanachSpaceAbstract type for all Banach spaces.
RadiiPolynomial.BesselWeight — Type
BesselWeight{T<:Real} <: WeightBessel weight associated with a given rate satisfying isfinite(rate) & (rate ≥ 0).
Field:
rate :: T
See also: IdentityWeight, GeometricWeight, geometricweight, AlgebraicWeight and algebraicweight.
Examples
julia> w = BesselWeight(1.0)
BesselWeight(1.0)
julia> rate(w)
1.0RadiiPolynomial.Ell1 — Type
Ell1{T<:Union{Weight,Tuple{Vararg{Weight}}}} <: BanachSpaceWeighted $\ell^1$ space.
Field:
weight :: T
Constructors:
Ell1(::Weight)Ell1(::Tuple{Vararg{Weight}})Ell1(): equivalent toEll1(IdentityWeight())Ell1(weight::Weight...): equivalent toEll1(weight)
Unicode alias ℓ¹ can be typed by \ell<tab>\^1<tab> in the Julia REPL and in many editors.
Examples
julia> Ell1()
ℓ¹()
julia> Ell1(GeometricWeight(1.0))
ℓ¹(GeometricWeight(1.0))
julia> Ell1(GeometricWeight(1.0), AlgebraicWeight(2.0))
ℓ¹(GeometricWeight(1.0), AlgebraicWeight(2.0))RadiiPolynomial.Ell2 — Type
Ell2{T<:Union{Weight,Tuple{Vararg{Weight}}}} <: BanachSpaceWeighted $\ell^2$ space.
Field:
weight :: T
Constructors:
Ell2(::Weight)Ell2(::Tuple{Vararg{Weight}})Ell2(): equivalent toEll2(IdentityWeight())Ell2(weight::Weight...): equivalent toEll2(weight)
Unicode alias ℓ² can be typed by \ell<tab>\^2<tab> in the Julia REPL and in many editors.
Examples
julia> Ell2()
ℓ²()
julia> Ell2(BesselWeight(1.0))
ℓ²(BesselWeight(1.0))
julia> Ell2(BesselWeight(1.0), GeometricWeight(2.0))
ℓ²(BesselWeight(1.0), GeometricWeight(2.0))RadiiPolynomial.EllInf — Type
EllInf{T<:Union{Weight,Tuple{Vararg{Weight}}}} <: BanachSpaceWeighted $\ell^\infty$ space.
Field:
weight :: T
Constructors:
EllInf(::Weight)EllInf(::Tuple{Vararg{Weight}})EllInf(): equivalent toEllInf(IdentityWeight())EllInf(weight::Weight...): equivalent toEllInf(weight)
Unicode alias ℓ∞ can be typed by \ell<tab>\infty<tab> in the Julia REPL and in many editors.
Examples
julia> EllInf()
ℓ∞()
julia> EllInf(GeometricWeight(1.0))
ℓ∞(GeometricWeight(1.0))
julia> EllInf(GeometricWeight(1.0), AlgebraicWeight(2.0))
ℓ∞(GeometricWeight(1.0), AlgebraicWeight(2.0))RadiiPolynomial.GeometricWeight — Type
GeometricWeight{T<:Real} <: WeightGeometric weight associated with a given rate satisfying isfinite(rate) & (rate ≥ 1).
Field:
rate :: T
See also: geometricweight, IdentityWeight, AlgebraicWeight, algebraicweight and BesselWeight.
Examples
julia> w = GeometricWeight(1.0)
GeometricWeight(1.0)
julia> rate(w)
1.0RadiiPolynomial.IdentityWeight — Type
IdentityWeight <: WeightIdentity weight.
RadiiPolynomial.NormedCartesianSpace — Type
NormedCartesianSpace{T<:Union{BanachSpace,Tuple{Vararg{BanachSpace}}},S<:BanachSpace} <: BanachSpaceCartesian Banach space.
Fields:
inner :: Touter :: S
See also: Ell1, Ell2 and EllInf.
Examples
julia> NormedCartesianSpace(Ell1(), EllInf())
NormedCartesianSpace(ℓ¹(), ℓ∞())
julia> NormedCartesianSpace((Ell1(), Ell2()), EllInf())
NormedCartesianSpace((ℓ¹(), ℓ²()), ℓ∞())RadiiPolynomial.Weight — Type
WeightAbstract type for all weights.
RadiiPolynomial.ℓ² — Type
ℓ²(::Weight)
ℓ²(::Tuple{Vararg{Weight}})
ℓ²()
ℓ²(::Weight...)Unicode alias of Ell2 representing the weighted $\ell^2$ space.
Examples
julia> ℓ²()
ℓ²()
julia> ℓ²(BesselWeight(1.0))
ℓ²(BesselWeight(1.0))
julia> ℓ²(BesselWeight(1.0), GeometricWeight(2.0))
ℓ²(BesselWeight(1.0), GeometricWeight(2.0))RadiiPolynomial.ℓ¹ — Type
ℓ¹(::Weight)
ℓ¹(::Tuple{Vararg{Weight}})
ℓ¹()
ℓ¹(::Weight...)Unicode alias of Ell1 representing the weighted $\ell^1$ space.
Examples
julia> ℓ¹()
ℓ¹()
julia> ℓ¹(GeometricWeight(1.0))
ℓ¹(GeometricWeight(1.0))
julia> ℓ¹(GeometricWeight(1.0), AlgebraicWeight(2.0))
ℓ¹(GeometricWeight(1.0), AlgebraicWeight(2.0))RadiiPolynomial.ℓ∞ — Type
ℓ∞(::Weight)
ℓ∞(::Tuple{Vararg{Weight}})
ℓ∞()
ℓ∞(::Weight...)Unicode alias of EllInf representing the weighted $\ell^\infty$ space.
Examples
julia> ℓ∞()
ℓ∞()
julia> ℓ∞(GeometricWeight(1.0))
ℓ∞(GeometricWeight(1.0))
julia> ℓ∞(GeometricWeight(1.0), AlgebraicWeight(2.0))
ℓ∞(GeometricWeight(1.0), AlgebraicWeight(2.0))LinearAlgebra.norm — Function
norm(a::AbstractSequence, p::Real=Inf)Compute the p-norm of a. Only p equal to 1, 2 or Inf is supported.
This is equivalent to:
norm(a, Ell1(IdentityWeight()))ifp == 1norm(a, Ell2(IdentityWeight()))ifp == 2norm(a, EllInf(IdentityWeight()))ifp == Inf
See also: norm(::Sequence, ::BanachSpace).
LinearAlgebra.norm — Method
norm(a::Sequence, X::BanachSpace)Compute the norm of a by interpreting space(a) as X.
See also: norm(::Sequence, ::Real=Inf).
LinearAlgebra.opnorm — Function
opnorm(A::LinearOperator, p::Real=Inf)Compute the operator norm of A induced by the p-norm. Only p equal to 1, 2 or Inf is supported.
This is equivalent to:
opnorm(A, Ell1(IdentityWeight()))ifp == 1opnorm(A, Ell2(IdentityWeight()))ifp == 2opnorm(A, EllInf(IdentityWeight()))ifp == Inf
See also: opnorm(::LinearOperator, ::BanachSpace), opnorm(::LinearOperator, ::BanachSpace, ::BanachSpace) and opnorm(::LinearOperator{<:VectorSpace,ScalarSpace}, ::BanachSpace).
LinearAlgebra.opnorm — Method
opnorm(A::LinearOperator, X::BanachSpace, Y::BanachSpace)Compute the operator norm of A where X is the Banach space corresponding to domain(A) and Y the Banach space corresponding to codomain(A).
See also: opnorm(::LinearOperator, ::Real=Inf), opnorm(::LinearOperator, ::BanachSpace) and opnorm(::LinearOperator{<:VectorSpace,ScalarSpace}, ::BanachSpace).
LinearAlgebra.opnorm — Method
opnorm(A::LinearOperator, X::BanachSpace)Compute the operator norm of A where X is the Banach space corresponding to both domain(A) and codomain(A).
See also: opnorm(::LinearOperator, ::Real=Inf), opnorm(::LinearOperator, ::BanachSpace, ::BanachSpace) and opnorm(::LinearOperator{<:VectorSpace,ScalarSpace}, ::BanachSpace).
LinearAlgebra.opnorm — Method
opnorm(A::LinearOperator{<:VectorSpace,ScalarSpace}, X::BanachSpace)Compute the operator norm of A where X is the Banach space corresponding to domain(A).
See also: opnorm(::LinearOperator, ::Real=Inf), opnorm(::LinearOperator, ::BanachSpace, ::BanachSpace) and opnorm(::LinearOperator, ::BanachSpace).