Volume and surface area of a sphere in any dimensions

June 2024

The volume of a unit sphere in \(N\) dimensions is $$ f(N) = \frac{(2\pi)^{(N//2)}}{ (N!!) (2)^{ {(-1)}^N } } \tag{1}$$

where \(N//2\) is integer division, and \(N!!\) is the double factorial.

For a sphere with radius \(R\),

$$ Volume = R^N f(N) \tag{2}$$ $$ Surface Area = \frac{d}{dR} Volume = N R^{(N-1)} f(N) \tag{3}$$

Python code

import math

# https://en.wikipedia.org/wiki/Double_factorial def double_factorial(n): r = 1 m = math.ceil(n/2) - 1 for k in range(m): r *= (n - 2*k) return r

def unit_volume(N): return (2*math.pi)**(N//2) / double_factorial(N) / 2**(-1)**N

def volume(N, r=1.0): return unit_volume(N) * r**N

def surface_area(N, r=1.0): return unit_volume(N) * N*r**(N-1)

def circle_area(r): return volume(2, r)

def circle_perimeter(r): return surface_area(2, r)

def sphere_volume(r): return volume(3, r)

def sphere_surface_area(r): return surface_area(3, r)

# >>> sphere_surface_area(12) # 1809.5573684677208 # # >>> sphere_surface_area(0.5) # 3.141592653589793 # # >>> sphere_volume(12) # 7238.229473870882 # # >>> sphere_volume(0.5) # 0.5235987755982988 # # >>> circle_area(12) # 452.3893421169302 # # >>> circle_perimeter(12) # 75.39822368615503


Twitter thread

link | nitter