Isometric embedding of standard simplex

171 Views Asked by At

The standard $n$-simplex is the subset of $\mathbb R^{n+1}$ given by

$\Delta^n = \left\{(t_0,\dots,t_n)\in\mathbb{R}^{n+1}~\big|~\sum_{i = 0}^n t_i = 1 \text{ and } t_i \ge 0 \text{ for all } i\right\}$.

Clearly, it is actually an $n$-dimensional object. I wish to find an isometric embedding of $\Delta^n$ into a subset of $\mathbb R^n$. I might have overlooked something, and this might be trivial, but after quite some trying I still haven't been able to come up with something. Could someone help me further with this?

2

There are 2 best solutions below

1
On

Observe that yours simplex spans an $n$ dimensional affine subspace in $\mathbb{R}^n$, which after translating it by the vector $(\frac{-1}{n+1},\dots,\frac{-1}{n+1})$, becomes a proper $n$-dimensional subspace. Now take a linear isometry from this $n$ dimensional subspace, equipped with the induced Euclidean metric, to $\mathbb{R}^n$ with the Euclidean metric, and your simplex has isometrically been transformed to $\mathbb{R}^n$: first by translation (which is clearly an isometry), and then by another isometry. I leave it to you to come up with a concrete isometry.

0
On

I could not find any resource about it, so I built the transformation from scratch and I want to share it. The first part of the problem is to create $d+1$ equidistant points in $\mathbb R^d$. The second is to use these points to define the isometry explicitly.

Equidistant points on hyperspheres

We proceed by induction. The goal at each iteration $k$ is to produce $k+1$ equidistant vectors $v_1,...,v_{k+1}$ lying on the surface of the unit ball embedded in $\mathbb R^k$, or in other words, on the $(k-1)$-sphere. Once $k=d$, we are done.

For $k=1$, we just take $v_1=-1$ and $v_2=1$. Now suppose that $u_1, ..., u_{k} \in \mathbb{R}^{k-1}$ are equidistant. Let $v_i \in \mathbb{R}^k$ be the result of scaling $u_i$ by $\frac{\sqrt{k^2-1}}{k} < 1$ and prepending to it the value $-1/k$. And define $v_{k+1} \in \mathbb R^k$ as $[1, 0,...,0 ]^T$. Then, $v_1, ..., v_{k} \in \mathbb{R}^{k}$ are equidistant.

The following code follows this construction. The image below shows the output (blue points) for $d=1$, $d=2$ and $d=3$. All the pairwise distances are equal and equal to $s_d = \frac{\sqrt{2 (d+1)}}{d}$.

def simplex_vertices_in_d_dimensions(d:int):
    # The columns of V are the vertices of the d-dimensional simplex
    assert d > 0
    V = np.array([[-1, 1]])
    k = 2
    while k <= d:
        V_i = [([-1/k, *(np.sqrt(k**2-1)/k*u)]) for u in V.T]
        v_k = [1, *np.zeros(k-1)]
        V = np.array([v_k, *V_i]).T
        k += 1
    return V

# Equivalent one-liner recursive code: 
f = lambda d: np.array([[-1], [1]] if d<=1 else [[1, *[0]*(d-1)], *[([-1/d, *((d**2-1)**.5/d*u)]) for u in f(d-1).T]]).T

simplices

Notice that this matrix can be rotated arbitrarily, e.g. by using a holder transformation, and the result will still be a set of equidistant column vectors. Same if we permutate the columns. So, their order and orientation with respect to the cartesian coordinates does not have any particular meaning.

Isometry

Let's first adjust the scale. I chose a sphere of radius 1, but you can choose the radius freely by multiplying the vectors with any constant. In particular, if you scale by $\sqrt{\frac{d}{d+1}}$, the side length matches that of the standard simplex ($\sqrt{2}$), and we will obtain an isometry. That said, let $u_i = \sqrt{\frac{d}{d+1}} v_i$. Also, denote the simplex centroid as $\mu = (1/(d+1)) [1,1,...,1]^T \in \mathbb R^{d+1}$.

The isometries are

  • $f: \mathbb R^{d+1} \to \mathbb R^d$ given by $f(x) = Ux = \sum u_i x_i$.
  • $g: \mathbb R^d \to \mathbb R^{d+1}$ given by $g(x) = \mu + U^T x$.

$f$ and $g$ are pseudo inverses of each other.