# Differentials

`Manopt.differential_bezier_control`

— Method```
differential_bezier_control(
M::Manifold,
B::AbstractVector{<:BezierSegment},
T::AbstractVector{Float}
X::AbstractVector{<:BezierSegment}
)
```

evaluate the differential of the composite Bézier curve with respect to its control points `B`

and tangent vectors `X`

in the tangent spaces of the control points. The result is the “change” of the curve at `pts`

, which are elementwise in $[0,N]$, and each depending the corresponding segment(s). Here, $N$ is the length of `B`

.

See `de_casteljau`

for more details on the curve and ^{[BergmannGousenbourger2018]}.

`Manopt.differential_bezier_control`

— Method```
differential_bezier_control(
M::Manifold,
B::AbstractVector{<:BezierSegment},
t::Float64,
X::AbstractVector{<:BezierSegment}
)
```

evaluate the differential of the composite Bézier curve with respect to its control points `B`

and tangent vectors `Ξ`

in the tangent spaces of the control points. The result is the “change” of the curve at `t`

$\in[0,N]$, which depends only on the corresponding segment. Here, $N$ is the length of `B`

.

See `de_casteljau`

for more details on the curve.

`Manopt.differential_bezier_control`

— Method```
differential_bezier_control(
M::Manifold,
b::NTuple{N,P},
T::Array{Float64,1},
X::BezierSegment,
)
```

evaluate the differential of the Bézier curve with respect to its control points `b`

and tangent vectors `X`

in the tangent spaces of the control points. The result is the “change” of the curve at the points `T`

, elementwise in $\in[0,1]$.

See `de_casteljau`

for more details on the curve.

`Manopt.differential_bezier_control`

— Method`differential_bezier(M::Manifold, b::BezierSegment, t::Float, X::BezierSegment)`

evaluate the differential of the Bézier curve with respect to its control points `b`

and tangent vectors `X`

given in the tangent spaces of the control points. The result is the “change” of the curve at `t`

$\in[0,1]$.

See `de_casteljau`

for more details on the curve.

`Manopt.differential_exp_argument`

— Method`differential_exp_argument(M, p, X, Y)`

computes $D_X\exp_pX[Y]$. Note that $X ∈ T_X(T_p\mathcal M) = T_p\mathcal M$ is still a tangent vector.

**See also**

`Manopt.differential_exp_basepoint`

— Method`differential_exp_basepoint(M, p, X, Y)`

Compute $D_p\exp_p X[Y]$.

**See also**

`Manopt.differential_forward_logs`

— Method`Y = differential_forward_logs(M, p, X)`

compute the differenital of `forward_logs`

$F$ on the `PowerManifold`

manifold `M`

at `p`

and direction `X`

, in the power manifold array, the differential of the function

where $\mathcal G$ is the set of indices of the `PowerManifold`

manifold `M`

and $\mathcal I_i$ denotes the forward neighbors of $i$.

**Input**

`M`

– a`PowerManifold`

manifold`p`

– a point.`X`

– a tangent vector.

**Ouput**

`Y`

– resulting tangent vector in $T_x\mathcal N$ representing the differentials of the logs, where $\mathcal N$ is thw power manifold with the number of dimensions added to`size(x)`

.

`Manopt.differential_geodesic_endpoint`

— Method`differential_geodesic_endpoint(M,x,y,t,η)`

computes $D_qg(t;p,q)[\eta]$.

**See also**

`Manopt.differential_geodesic_startpoint`

— Method`differential_geodesic_startpoint(M, p, q, t, X)`

computes $D_p g(t;p,q)[\eta]$.

**See also**

`Manopt.differential_log_argument`

— Method`differential_log_argument(M,p,q,X)`

computes $D_q\log_pq[X]$.

**See also**

`Manopt.differential_log_basepoint`

— Method`differential_log_basepoint(M, p, q, X)`

computes $D_p\log_pq[X]$.

**See also**

- BergmannGousenbourger2018
Bergmann, R. and Gousenbourger, P.-Y.:

*A variational model for data fitting on manifolds by minimizing the acceleration of a Bézier curve*. Frontiers in Applied Mathematics and Statistics, 2018. doi: 10.3389/fams.2018.00059, arXiv: 1807.10090