Vector Bundle Newton Method
Manopt.vectorbundle_newton — Functionvectorbundle_newton(M, E, NE, p; kwargs...)
vectorbundle_newton!(M, E, NE, p; kwargs...)Perform Newton's method for finding a zero of a mapping $F:\mathcal M → \mathcal E$ where $\mathcal M$ is a manifold and $\mathcal E$ is a vector bundle. In each iteration the Newton equation
\[Q_{F(p)} ∘ F'(p) X + F(p) = 0\]
is solved to compute a Newton direction $X$. The next iterate is then computed by applying a retraction.
For more details see [WS24, WBS25].
Arguments
M::AbstractManifold: a Riemannian manifold $\mathcal M$E: range vector bundlep: a point on the manifold $\mathcal M$NE: functor representing the Newton equation. It has at least fields $A$ and $b$ to store a representation of the Newton matrix $Q_{F(p)}∘ F'(p)$ (covariant derivative of $F$ at $p$) and the right hand side $F(p)$ at a point $p ∈ \mathcal M$. The point $p$ denotes the starting point. The algorithm can be run in-place of $p$.
Keyword arguments
sub_problem=nothing: specify a problem for a solver or a closed form solution function, which can be allocating or in-place., i.e. you have to provide a method for solving the Newton equation. Currently only the closed form solution is implemented, that is, this is a functor that maps either(problem::VectorBundleManoptProblem, state::VectorBundleNewtonState) -> Xor(problem, X, state) -> Xto compute the Newton direction.sub_state=AllocatingEvaluation: a state to specify the sub solver to use. For a closed form solution, this indicates the type of function.retraction_method=default_retraction_method(M, typeof(p)): a retraction $\operatorname{retr}$ to use, see the section on retractionsstepsize=default_stepsize(M, VectorBundleNewtonState): a functor inheriting fromStepsizeto determine a step sizestopping_criterion=StopAfterIteration(1000): a functor indicating that the stopping criterion is fulfilledX=zero_vector(M, p): a tangent vector at the point $p$ on the manifold $\mathcal M$to specify the representation of a tangent vector
Manopt.vectorbundle_newton! — Functionvectorbundle_newton(M, E, NE, p; kwargs...)
vectorbundle_newton!(M, E, NE, p; kwargs...)Perform Newton's method for finding a zero of a mapping $F:\mathcal M → \mathcal E$ where $\mathcal M$ is a manifold and $\mathcal E$ is a vector bundle. In each iteration the Newton equation
\[Q_{F(p)} ∘ F'(p) X + F(p) = 0\]
is solved to compute a Newton direction $X$. The next iterate is then computed by applying a retraction.
For more details see [WS24, WBS25].
Arguments
M::AbstractManifold: a Riemannian manifold $\mathcal M$E: range vector bundlep: a point on the manifold $\mathcal M$NE: functor representing the Newton equation. It has at least fields $A$ and $b$ to store a representation of the Newton matrix $Q_{F(p)}∘ F'(p)$ (covariant derivative of $F$ at $p$) and the right hand side $F(p)$ at a point $p ∈ \mathcal M$. The point $p$ denotes the starting point. The algorithm can be run in-place of $p$.
Keyword arguments
sub_problem=nothing: specify a problem for a solver or a closed form solution function, which can be allocating or in-place., i.e. you have to provide a method for solving the Newton equation. Currently only the closed form solution is implemented, that is, this is a functor that maps either(problem::VectorBundleManoptProblem, state::VectorBundleNewtonState) -> Xor(problem, X, state) -> Xto compute the Newton direction.sub_state=AllocatingEvaluation: a state to specify the sub solver to use. For a closed form solution, this indicates the type of function.retraction_method=default_retraction_method(M, typeof(p)): a retraction $\operatorname{retr}$ to use, see the section on retractionsstepsize=default_stepsize(M, VectorBundleNewtonState): a functor inheriting fromStepsizeto determine a step sizestopping_criterion=StopAfterIteration(1000): a functor indicating that the stopping criterion is fulfilledX=zero_vector(M, p): a tangent vector at the point $p$ on the manifold $\mathcal M$to specify the representation of a tangent vector
Problem
Manopt.VectorBundleManoptProblem — TypeVectorBundleManoptProblem{M<:AbstractManifold,TV<:AbstractManifold,O} <: AbstractManoptProblem{M}Model a vector bundle problem, that consists of the domain manifold $\mathcal M$ that is a AbstractManifold, the range vector bundle $\mathcal E$ and the Newton equation $Q_{F(x)}∘ F'(x) δ x + F(x) = 0_{p(F(x))}$. The Newton equation should be implemented as a functor that computes a representation of the Newton matrix and the right hand side. It needs to have a field $A$ to store a representation of the Newton matrix $Q_{F(x)}∘ F'(x)$ and a field $b$ to store a representation of the right hand side $F(x)$.
State
Manopt.VectorBundleNewtonState — TypeVectorBundleNewtonState{P,T} <: AbstractManoptSolverStateIs state for the vector bundle Newton method
Fields
p::P: a point on the manifold $\mathcal M$as current pointp_trial::P: a point on the manifold $\mathcal M$next iterate needed for simplified NewtonX::T: a tangent vector at the point $p$ on the manifold $\mathcal M$as current Newton directionsub_problem::Union{AbstractManoptProblem, F}: specify a problem for a solver or a closed form solution function, which can be allocating or in-place. currently only the closed form solution is implemented, that is, this is a functor that maps either(problem::VectorBundleManoptProblem, state::VectorBundleNewtonState) -> Xor(problem, X, state) -> Xto compute the Newton direction.sub_state::Union{AbstractManoptProblem, F}: a state to specify the sub solver to use. For a closed form solution, this indicates the type of function. specify how the sub_problem is evaluated, e.g.AllocatingEvaluationorInplaceEvaluationstop::StoppingCriterion: a functor indicating that the stopping criterion is fulfilledstepsize::Stepsize: a functor inheriting fromStepsizeto determine a step sizeretraction_method::AbstractRetractionMethod: a retraction $\operatorname{retr}$ to use, see the section on retractions
Constructor
VectorBundleNewtonState(M, E, p, sub_problem, sub_state; kwargs...)Input
M::AbstractManifold: a Riemannian manifold $\mathcal M$E: range vector bundlep: a point on the manifold $\mathcal M$sub_state: a state to specify the sub solver to use. For a closed form solution, this indicates the type of function.sub_problem: specify a problem for a solver or a closed form solution function, which can be allocating or in-place.
Keyword arguments
X=zero_vector(M, p): a tangent vector at the point $p$ on the manifold $\mathcal M$to specify the representation of a tangent vectorstepsize=default_stepsize(M, VectorBundleNewtonState): a functor inheriting fromStepsizeto determine a step sizeretraction_method=default_retraction_method(M, typeof(p)): a retraction $\operatorname{retr}$ to use, see the section on retractionsstopping_criterion=StopAfterIteration(1000): a functor indicating that the stopping criterion is fulfilled
Stepsize
Manopt.AffineCovariantStepsize — TypeAffineCovariantStepsize <: Stepsize
A functor to provide an affine covariant stepsize generalizing the idea of following Newton paths introduced by [WBS25, Section 4]. It can be used to derive a damped Newton method. The stepsizes (damping factors) are computed by a predictor-corrector-loop using an affine covariant quantity $θ$ to measure local convergence.
Fields
α: stepsize (damping factor)θ: quantity that measures local convergence of Newton's methodθ_des: desired θθ_acc: acceptable θlast_stepsize: last computed stepsize (this is an auxiliary variable used within the algorithm)outer_norm: ifMis a manifold with components, this is used to specify the norm, that is used to compute the overall distance based on the element-wise distance.
Example
On an AbstractPowerManifold like $\mathcal M = \mathcal N^n$ any point $p = (p_1,…,p_n) ∈ \mathcal M$ is a vector of length $n$ with of points $p_i ∈ \mathcal N$. Then, denoting the outer_norm by $r$, the distance of two points $p,q ∈ \mathcal M$ is given by
\[\mathrm{d}(p,q) = \Bigl( \sum_{k=1}^n \mathrm{d}(p_k,q_k)^r \Bigr)^{\frac{1}{r}},\]
where the sum turns into a maximum for the case $r=∞$. The outer_norm has no effect on manifolds that do not consist of components.
If the manifold does not have components, the outer norm is ignored.
Constructor
AffineCovariantStepsize(
M::AbstractManifold=DefaultManifold(2);
α=1.0, θ=1.3, θ_des=0.5, θ_acc=1.1*θ_des, outer_norm::Real=missing
)Initializes all fields, where none of them is mandatory. The length is set to $1.0$.
Since the computation of the convergence monitor $θ$ requires simplified Newton directions a method for computing them has to be provided. This should be implemented as a method of the newton_equation(M, VB, p, p_trial) as parameters and returning a representation of the (transported) $F(p_{\mathrm{trial}})$.
Internal Functions
Manopt.get_vectorbundle — Methodget_vectorbundle(vbp::VectorBundleManoptProblem)returns the range vector bundle stored within a VectorBundleManoptProblem
Literature
- [WBS25]
- L. Weigl, R. Bergmann and A. Schiela. Newton's method for nonlinear mappings into vector bundles Part II: Application to variational problems, preprint (2025), arXiv:2507.13836.
- [WS24]
- L. Weigl and A. Schiela. Newton's method for nonlinear mappings into vector bundles, preprint (2024), arXiv:2404.04073.