A technical question on Manopt.jl. I have seen that Sphere(n-1, ℂ)
gets its Hermitian metric \langle v, w\rangle_p = v^*w from its canonical embedding in \mathbb{C}^n. Instead, I would like to use that manifold with the metric \langle v, w\rangle_p = \operatorname{Re} (v^*w), which comes from its canonical embedding in \mathbb{R}^{2n}.
(Note that also Manopt for Matlab uses this second metric for the complex sphere.)
Is there a way to change metric easily? I see two avenues, both with disadvantages:
-
Work with
Sphere(2n-1, ℝ)
, and wrap my function into a wrapper that converts every vector in \mathbb{C}^n in \mathbb{R}^{2n}. This looks cumbersome, and most importantly it changes the working manifold nontrivially, since nowv
and1im * v
are no longer the same point. -
Define a new
AbstractMetric
from scratch; I see that there is an example of how to define one inRosenbrockMetric
in ManoptExamples.jl, but it doesn’t look trivial: I would have to define many new methods, and I am afraid of breaking something subtle down the line. Also, if I understand correctly now I have anAbstractManifold{ℝ}
rather than anAbstractManifold{ℂ}
and hence I cannot even reuseSphere(n-1, ℂ)
but I have to basically define a new manifold from scratch.
Am I missing a simpler way to do this?