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
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,ParameterSpace}, ::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,ParameterSpace}, ::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,ParameterSpace}, ::BanachSpace).
LinearAlgebra.opnorm — Method
opnorm(A::LinearOperator{<:VectorSpace,ParameterSpace}, 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).