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
└─ IdentityWeight

Given a set of indices $\mathscr{I}^\prime \subset \mathbb{Z}$:

  • an AlgebraicWeight of rate $s \ge 0$ is defined by $w(\alpha) \bydef (1 + |\alpha|)^s$ for all $\alpha \in \mathscr{I}^\prime$.

  • a BesselWeight of 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 to Ell2 and Fourier as it describes the Sobolev space $H^s$.

  • a GeometricWeight of rate $\nu \ge 1$ is defined by $w(\alpha) \bydef \nu^{|\alpha|}$ for all $\alpha \in \mathscr{I}^\prime$.

  • an IdentityWeight is defined by $w(\alpha) \bydef 1$ for all $\alpha \in \mathscr{I}^\prime$. This is the default weight for Ell1, Ell2 and EllInf.

julia> a = Sequence(Taylor(2), [1.0, 1.0, 1.0]); # 1 + x + x^2
julia> norm(a, Ell1(AlgebraicWeight(1.0)))6.0
julia> b = Sequence(Fourier(1, 1.0), [0.5, 0.0, 0.5]); # cos(x)
julia> norm(b, Ell2(BesselWeight(2.0)))1.4142135623730951
julia> 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:

julia> a = Sequence(Taylor(1)^2, [1.0, 2.0, 3.0, 4.0]);
julia> norm(a, NormedCartesianSpace(ℓ¹(), ℓ∞()))7.0
julia> norm(a, NormedCartesianSpace((ℓ¹(), ℓ²()), ℓ∞()))5.0

API

LinearAlgebra.normFunction
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())) if p == 1
  • norm(a, Ell2(IdentityWeight())) if p == 2
  • norm(a, EllInf(IdentityWeight())) if p == Inf

See also: norm(::Sequence, ::BanachSpace).

source
LinearAlgebra.opnormFunction
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())) if p == 1
  • opnorm(A, Ell2(IdentityWeight())) if p == 2
  • opnorm(A, EllInf(IdentityWeight())) if p == Inf

See also: opnorm(::LinearOperator, ::BanachSpace), opnorm(::LinearOperator, ::BanachSpace, ::BanachSpace) and opnorm(::LinearOperator{<:VectorSpace,ParameterSpace}, ::BanachSpace).

source