Sampling random points with unit norm on the surface of an n-hyperboloid

73 Views Asked by At

I want to randomly sample points (with Gaussian or Uniform distribution) that have unit norm and lie on a hyperboloid of the form

$x^T Ax +b^T x +c =0 $.

$\|x\|=1$

Here, $x$ is a n-vector. $A \in R^{n \times n}$ is a real, symmetric matrix with both positive and negative real eigenvalues. $b$ is a real n-vector and $c$ is a scalar. Of course in some modified coordinate system $y= g(x)$, the above equation can be rewritten as

$y^T D y= c_y$

Where $D$ is some diagonal matrix with real eigenvalues. How can I sample random points on the surface from this? I am familiar with sampling points from an n-sphere. Is it possible to somehow 'rotate ' points sampled from a n-sphere to the hyperboloid surface ?

1

There are 1 best solutions below

1
On

I'm not sure what exactly you mean by “randomly sampling points (with Gaussian or uniform distribution) that lie on a hyperboloid”. Since you’d be OK with either of those, I gather you don’t want to exactly simulate a particular distribution but just want reasonably distributed random points on that surface. If so, you could do the following:

Diagonalize $A$ and shift the origin in order to bring the equation for the hyperboloid into the form

$$ y^\top Dy=c_y\;, $$

where $D$ is a diagonal matrix with $\pm1$ on the diagonal and $y$ is a suitably linearly transformed version of $x$. Write $y=u+v$, where $u$ is in the $+1$ eigenspace and $v$ is in the $-1$ eigenspace, so $y^\top Dy=u^2-v^2$. Generate a normally distributed radius $r$ and require $y^2=u^2+v^2=r^2$. Now $u^2-v^2$ and $u^2+v^2$ are fixed, so you can solve for $u^2$ and $v^2$, generate random vectors on the unit spheres in the two eigenspaces, scale them by $|u|$ and $|v|$, respectively, add them and transform the result back to $x$.