5

It's known that the solid angle of the vertex of a regular tetrahedron is $\arccos(\frac{23}{27})$, or equivalently, $\frac\pi2-3\arcsin(\frac13)$ or $3\arccos(\frac13)-\pi$. (Trig identities are weird.) This is around $0.551$ steradians, or around $0.044$ times the whole sphere.

What about the same question but one dimension higher? The 4d equivalent of the tetrahedron is known as the 5-cell, also called the 4-simplex. What is the hypersolid angle of the regular 5-cell?

I managed to write some Python code that approximates the solid angle, shown below. It does so by choosing a random point in $\Bbb R^5$ using a spherically symmetric distribution (the normal distribution was easiest) and checking to see if the all coordinates were above average but the last one. The odds of success was then multiplied by the surface volume of the hypersphere (which is $2\pi^2$) to convert to cubic radians. (You can check that the equivalent code one dimension down gives the correct answer for the tetrahedron.) This code is very slow (it takes a minute or two to run) and not very accurate, but it was the best I could think of. The final verdict is that it's around $0.192$ or $0.193$ cubic radians.

import numpy as np

many = 10_000_000 count = 0 for i in range(many): vec = np.random.normal(size=5) avg = np.mean(vec) count += (vec[0]>=avg and vec[1]>=avg and vec[2]>=avg and vec[3]>=avg) result = count/many print(f"The solid angle of a 5-cell is {round(result,3)} of the full" f" hypersphere, or {round(2np.pi2result,3)} radians^3.")

The solid angle of a 5-cell is 0.01 of the full hypersphere, or 0.193 radians^3.

I tried Googling for the answer but couldn't find anything. Since it's not readily available online, I'm guessing that it might not even have a closed form. If that's the case, I would be satisfied with a numerical answer, to perhaps 10 digits or so. (My Monte Carlo method can't get anywhere close.)

  • 1
    I believe I could get it if I could solve$$\int\hspace{-0.55em}\iiint_{{\Bbb R_{\ge0}}^4}e^{-\vec v^\top Q\vec v}~{\rm d}^4\vec v$$where $Q=\begin{bmatrix}2&1&1&1\1&2&1&1\1&1&2&1\1&1&1&2\end{bmatrix}$ but I couldn't see how to do it. There seem to be ways to find the integrals of generalized Gaussians over all of space, but not over a single orthant (the higher-dimensional equivalent of an octant). – Akiva Weinberger Nov 27 '23 at 21:58
  • 1
    This isn't much progress, but I can extend your Monte Carlo simulations with some tricks to get better data. By using vectorized operations rather than a for loop we can go a fair bit faster, and by counting every time that exactly 1 or 4 of the coordinates exceed the average we can see ten times as many events without double-counting anything. After ten billion samples, this gives a frequency whose 95% confidence interval is roughly $[0.00978407, 0.00978527]$. – RavenclawPrefect Nov 28 '23 at 17:34
  • @RavenclawPrefect I have reason to believe it is in $[0.009784684, 0.009784692]$, or in hyperradians, $[0.19314194, 0.19314208]$. (This last value is suspiciously close to $\ln2-\frac12\approx0.193147$, but it falls just outside of it.) – Akiva Weinberger Nov 04 '24 at 23:50
  • Turns out Python can do numerical integration. https://pastebin.com/ZmYk5yTt – Akiva Weinberger Nov 05 '24 at 00:05
  • @RavenclawPrefect Never mind, the problem is solved fully! See my answer. – Akiva Weinberger Nov 05 '24 at 04:19

2 Answers2

1

It took me ages to understand what Romain Falla was saying, but in the end, the solid angle is$$\frac{1}{20}-\frac{\arcsin\left(\frac{1}{4}\right)}{2\pi}=\frac{\arccos\left(\frac{1}{4}\right)}{2\pi}-\frac{1}{5}\approx0.00978468837242$$of the full hypersphere, or $$\frac{\pi^{2}}{10}-\pi\arcsin\left(\frac{1}{4}\right)=\pi\arccos\left(\frac{1}{4}\right)-\frac{2}{5}\pi^{2}\approx0.193142006847$$ cubic radians.

0

For what I found on internet, is is complicated to compute the hupersolid angles. However, there is an indirect way of doing it for the hypertetrahedron (5-cells). Indeed, all internal angles of polytopes should satisfy the gram-euler formula, which is the high dimensional generalization of (sum of angles of a polygon = $(e-2)\pi)$, e being the number of edges ). The theorem is in the form of an alternate sum dsimilar than that of the Euler formula. In dimension 4, we have : $n_4 - n_3 + n_2 - n_1 + n_0 = 0$. $n_i$ being the number of i-dimensional facets. Similarly, noting $\phi^i_{j}$ the $j^{th}$ internal angle of dimension $i$ (those angles are non-dimensionalized by their maximum values), the Gram-Euler theorem states that

$1 + \sum_i (-1)^i \phi^i_j=0 $ In practice, the internal angles are all equals and their are formulas to compute them. The dichoral angles is equal to ~ 75.52 degree (or 0.2098) and the trihedral solid angles is 46.5675 degreee squared (or 0.0647). The angle associated to volumic faces is 0.5.

applying the Gram-Euler formula, we get

$1 - 5*(1/2) +10*0.2098 - 10*0.0647 +5*x = 0$

which gives x = 0.0098 or 0.1934 radians^3.

Here is the matlab code I have used:


% define regular 5-cell

P{1}=[0,-sqrt(2/3)/4,sqrt(3)/3,0]; P{2}=[0,-sqrt(2/3)/4,-sqrt(3)/6,0.5]; P{3}=[0,-sqrt(2/3)/4,-sqrt(3)/6,-0.5]; P{4}=[0,(3/4)*sqrt(2/3),0,0]; P{5}=[0.5*sqrt(5/2),0,0,0];

mid_points = cell(10,1); basis = cell(10,4); vect_list = cell(10,3); vect_list_ortho = cell(10,3);

mid_points_faces = cell(10,1); reverse_vect_list = cell(10,2);

inc = 1; for i = 1:5 for j=1:i-1 mid_points{inc}=(P{i}+P{j})/2; basis{inc,1} = (P{i}-P{j})/norm(P{i}-P{j}); inc_vect=1; mid_points_faces{inc} = [0,0,0,0]; for k=1:5 if and(k~=i, k~=j) basis{inc,1+inc_vect} = (P{k}-P{j})/norm(P{k}-P{j}); vect_list{inc,inc_vect}=(P{k}-mid_points{inc}); mid_points_faces{inc} = mid_points_faces{inc} + P{k}/3; inc_vect=inc_vect+1; end end

    ortho_basis_local = gramSmithOrthonormalisation({vect_list{inc,2}-vect_list{inc,1},vect_list{inc,3}-vect_list{inc,1}});
    V1 = P{i}-mid_points_faces{inc};
    V2 = P{j}-mid_points_faces{inc};
    reverse_vect_list{inc,1} = V1 - (V1*ortho_basis_local{1}')*ortho_basis_local{1} - (V1*ortho_basis_local{2}')*ortho_basis_local{2};
    reverse_vect_list{inc,2} = V2 - (V2*ortho_basis_local{1}')*ortho_basis_local{1} - (V2*ortho_basis_local{2}')*ortho_basis_local{2};
    reverse_vect_list{inc,1} = reverse_vect_list{inc,1}/norm(reverse_vect_list{inc,1});
    reverse_vect_list{inc,2} = reverse_vect_list{inc,2}/norm(reverse_vect_list{inc,2});
    inc = inc+1;
end

end

ortho_basis = gramSmithOrthonormalisation(basis);

dihedral_angles_faces = zeros(10,1); solid_angles_edges = zeros(10,1);

numerators = zeros(10,1); denominators = zeros(10,1);

for inc = 1:10 for j = 1:3 vect_list_ortho{inc,j} = zeros(1,3); for k = 1:3 vect_list_ortho{inc,j}(k) = vect_list{inc,j}ortho_basis{inc,k+1}'; end vect_list_ortho{inc,j} = vect_list_ortho{inc,j}/norm(vect_list_ortho{inc,j}); end denominators(inc) = 1 + vect_list_ortho{inc,1}vect_list_ortho{inc,2}' + vect_list_ortho{inc,2}vect_list_ortho{inc,3}' + vect_list_ortho{inc,1}vect_list_ortho{inc,3}'; numerators(inc) = det([vect_list_ortho{inc,1}',vect_list_ortho{inc,2}',vect_list_ortho{inc,3}']); solid_angles_edges(inc) = 2atand(numerators(inc)/denominators(inc)); dihedral_angles_faces(inc) = acosd(reverse_vect_list{inc,1}reverse_vect_list{inc,2}'); end

total_4dim = 1;

total_volumes = 5/2;

total_faces = sum(dihedral_angles_faces)/(360);

total_edges = sum(solid_angles_edges)/(720);

total_global = total_4dim - total_volumes + total_faces - total_edges;

total_nodes = -total_global;

hypersolid_angle = total_nodes/5

disp(num2str(hypersolid_angle))```

  • As it’s currently written, your answer is unclear. Please [edit] to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center. – Community Sep 09 '24 at 10:06
  • I edited the formatting of the code block. – Akiva Weinberger Sep 09 '24 at 10:55
  • I don't understand where $0.2098$ and $0.0647$ come from. – Akiva Weinberger Sep 09 '24 at 10:55
  • OH! Took me two months but I understand now... I mean, I still don't understand your code, but I've found that $0.2098$ is $\frac{\arccos\left(\frac{1}{4}\right)}{2\pi}$, and $0.0647$ is $\frac{3\arccos\left(\frac{1}{4}\right)-\pi}{4\pi}$ – Akiva Weinberger Nov 05 '24 at 01:48
  • And therefore the solid angle is$$\frac{1}{20}-\frac{\arcsin\left(\frac{1}{4}\right)}{2\pi}\approx0.00978468837242$$of the full hypersphere, or $$\frac{\pi^{2}}{10}-\pi\arcsin\left(\frac{1}{4}\right)\approx0.193142006847$$ radians^3. – Akiva Weinberger Nov 05 '24 at 01:50