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 toEll2
andFourier
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 forEll1
,Ell2
andEllInf
.
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:
- use the same
BanachSpace
for each space. - use a different
BanachSpace
for each space.
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.norm
— Functionnorm(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 == 1
norm(a, Ell2(IdentityWeight()))
ifp == 2
norm(a, EllInf(IdentityWeight()))
ifp == Inf
See also: norm(::Sequence, ::BanachSpace)
.
LinearAlgebra.norm
— Methodnorm(a::Sequence, X::BanachSpace)
Compute the norm of a
by interpreting space(a)
as X
.
See also: norm(::Sequence, ::Real=Inf)
.
LinearAlgebra.opnorm
— Functionopnorm(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 == 1
opnorm(A, Ell2(IdentityWeight()))
ifp == 2
opnorm(A, EllInf(IdentityWeight()))
ifp == Inf
See also: opnorm(::LinearOperator, ::BanachSpace)
, opnorm(::LinearOperator, ::BanachSpace, ::BanachSpace)
and opnorm(::LinearOperator{<:VectorSpace,ParameterSpace}, ::BanachSpace)
.
LinearAlgebra.opnorm
— Methodopnorm(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
— Methodopnorm(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
— Methodopnorm(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)
.