diff --git a/docs/src/plans/objective.md b/docs/src/plans/objective.md index 01c1f5c6b7..2d6796107a 100644 --- a/docs/src/plans/objective.md +++ b/docs/src/plans/objective.md @@ -121,6 +121,8 @@ ManifoldCostGradientObjective ```@docs get_gradient get_gradients +get_residuals +get_residuals! ``` and internally @@ -268,6 +270,8 @@ Base.length(::VectorGradientFunction) ```@docs Manopt._to_iterable_indices Manopt._change_basis! +Manopt.get_basis +Manopt.get_range ``` ### Subproblem objective diff --git a/src/Manopt.jl b/src/Manopt.jl index c4cd219012..793befaa7b 100644 --- a/src/Manopt.jl +++ b/src/Manopt.jl @@ -381,6 +381,8 @@ export get_state, get_differential_dual_prox!, set_gradient!, set_iterate!, + get_residuals, + get_residuals!, linearized_forward_operator, linearized_forward_operator!, adjoint_linearized_operator, diff --git a/src/plans/constrained_plan.jl b/src/plans/constrained_plan.jl index 6edba426a3..875d12efbb 100644 --- a/src/plans/constrained_plan.jl +++ b/src/plans/constrained_plan.jl @@ -332,7 +332,7 @@ components gradients, for example In another interpretation, this can be considered a point on the tangent space at ``P = (p,…,p) \in \mathcal M^m``, so in the tangent space to the [`PowerManifold`](@extref `ManifoldsBase.PowerManifold`) ``\mathcal M^m``. -The case where this is a [`NestedPowerRepresentation`](@extref) this agrees with the +The case where this is a [`NestedPowerRepresentation`](@extref `ManifoldsBase.NestedPowerRepresentation`) this agrees with the interpretation from before, but on power manifolds, more efficient representations exist. To then access the elements, the range has to be specified. That is what this diff --git a/src/plans/vectorial_plan.jl b/src/plans/vectorial_plan.jl index e43a81a1b3..95689d6abc 100644 --- a/src/plans/vectorial_plan.jl +++ b/src/plans/vectorial_plan.jl @@ -34,7 +34,7 @@ Return a basis that fits a vector function representation. For the case, where some vectorial data is stored with respect to a basis, this function returns the corresponding basis, most prominently for the [`CoordinateVectorialType`](@ref). -If a type is not with respect to a certain basis, the [`DefaultOrthonormalBasis`](@ref) is returned +If a type is not with respect to a certain basis, the [`DefaultOrthonormalBasis`](@extref `ManifoldsBase.DefaultOrthonormalBasis`) is returned """ get_basis(::AbstractVectorialType) = DefaultOrthonormalBasis() get_basis(cvt::CoordinateVectorialType) = cvt.basis @@ -68,7 +68,7 @@ struct ComponentVectorialType <: AbstractVectorialType end A type to indicate that constraints are implemented one whole functions, for example ``g(p) ∈ ℝ^m`` or ``\operatorname{grad} g(p) ∈ (T_p\mathcal M)^m``. -This type internally stores the [`AbstractPowerRepresentation`](@ref), +This type internally stores the [`AbstractPowerRepresentation`](@extref `ManifoldsBase.AbstractPowerRepresentation`), when it makes sense, especially for Hessian and gradient functions. """ struct FunctionVectorialType{P<:AbstractPowerRepresentation} <: AbstractVectorialType @@ -81,7 +81,7 @@ end Return an abstract power manifold representation that fits a vector function's range. Most prominently a [`FunctionVectorialType`](@ref) returns its internal range. -Otherwise the default [`NestedPowerRepresentation`](@ref) is used to work on +Otherwise the default [`NestedPowerRepresentation`](@extref `ManifoldsBase.NestedPowerRepresentation`)`()` is used to work on a vector of data. """ get_range(vt::FunctionVectorialType) = vt.range @@ -542,7 +542,7 @@ Compute the Jacobian ``J_F ∈ ℝ^{m×n}`` of the [`AbstractVectorGradientFunct There are two interpretations of the Jacobian of a vectorial function ``F: $(_math(:M)) → ℝ^m`` on a manifold. Both depend on choosing a basis on the tangent space ``$(_math(:TpM))`` which we denote by -``Y_1,…,Y_n``, where `n` is the [`manifold_dimension`](@extref) of `M`. +``Y_1,…,Y_n``, where `n` is the $(_link(:manifold_dimension))`(M)`. We can write any tangent vector ``X = $(_tex(:displaystyle))$(_tex(:sum))_i c_iY_i`` 1. The Jacobian ``J_F`` is the matrix with respect to the basis ``Y_1,…,Y_n`` such that diff --git a/src/solvers/interior_point_Newton.jl b/src/solvers/interior_point_Newton.jl index 112774d569..625bcbe3bd 100644 --- a/src/solvers/interior_point_Newton.jl +++ b/src/solvers/interior_point_Newton.jl @@ -58,7 +58,7 @@ $(_var(:Keyword, :evaluation)) * `g=nothing`: the inequality constraints * `grad_g=nothing`: the gradient of the inequality constraints * `grad_h=nothing`: the gradient of the equality constraints -* `gradient_range=nothing`: specify how gradients are represented, where `nothing` is equivalent to [`NestedPowerRepresentation`](@extref) +* `gradient_range=nothing`: specify how gradients are represented, where `nothing` is equivalent to [`NestedPowerRepresentation`](@extref `ManifoldsBase.NestedPowerRepresentation`) * `gradient_equality_range=gradient_range`: specify how the gradients of the equality constraints are represented * `gradient_inequality_range=gradient_range`: specify how the gradients of the inequality constraints are represented * `h=nothing`: the equality constraints