In the following, we use the function \(\mathcal {N}(X) \triangleq \frac{1}{4}\Vert XX^{\top } - I_p\Vert ^2\) .
This function is minimized if and only if \(X\in \mathcal {O}_p\) .
A simple way to build an algorithm that converges to \(\mathcal {O}_p\)  consists in following \(-\nabla \mathcal {N}(X)\) , which leads in the continuous setting to Oja's flow \(\dot{X} = - \nabla \mathcal {N}(X)\)  [1]}, [2]} and in the discrete setting to Potter's algorithm \(X_{k+1} = X_k - \eta \nabla \mathcal {N}(X_k)\)  [3]}.
Note that the Euclidean gradient has the simple formula \(\nabla \mathcal {N}(X) = (XX^{\top } - I_p)X\) , and that it is always orthogonal to the Riemannian gradient of \(f\) , since \(\nabla \mathcal {N}(X)\)  is written as \(SX\)  with \(S\in \operatorname{Sym}_p\) , while \(\operatorname{Grad}f(X)\)  is written as \(AX\)  with \(A\in \operatorname{Skew}_p\) .
