Switch to tabs

This commit is contained in:
Michael Bradley 2025-01-02 00:05:16 +13:00
parent 054b54c291
commit 8bb6ba19d5
Signed by: MichaelBradley
SSH key fingerprint: SHA256:cj/YZ5VT+QOKncqSkx+ibKTIn0Obg7OIzwzl9BL8EO8
5 changed files with 157 additions and 157 deletions

View file

@ -5,37 +5,37 @@ G = 6.674e-11
def rotations(a: np.ndarray):
a2 = np.concatenate((a, a))
for i in range(1, len(a)):
yield a2[i: i + len(a)]
a2 = np.concatenate((a, a))
for i in range(1, len(a)):
yield a2[i: i + len(a)]
def n_body(pos: np.ndarray, vel: np.ndarray, mass: np.ndarray):
for (o_pos, o_mass) in zip(rotations(pos), rotations(mass)):
dist = o_pos - pos
vel += G * dist * o_mass / (np.linalg.norm(dist, axis=1) ** 3)[:, np.newaxis]
pos += vel
for (o_pos, o_mass) in zip(rotations(pos), rotations(mass)):
dist = o_pos - pos
vel += G * dist * o_mass / (np.linalg.norm(dist, axis=1) ** 3)[:, np.newaxis]
pos += vel
def n_body_matrix(pos: np.ndarray, vel: np.ndarray, mass: np.ndarray, constrain=2.):
n, d = pos.shape
dist = np.zeros((n - 1, n, d))
rot_mass = np.zeros((n - 1, n, 1))
n, d = pos.shape
dist = np.zeros((n - 1, n, d))
rot_mass = np.zeros((n - 1, n, 1))
pos2 = np.concatenate((pos, pos))
mass2 = np.concatenate((mass, mass))
pos2 = np.concatenate((pos, pos))
mass2 = np.concatenate((mass, mass))
for i in range(1, len(pos)):
dist[i - 1] = pos2[i: i + n] - pos
rot_mass[i - 1] = mass2[i: i + n]
for i in range(1, len(pos)):
dist[i - 1] = pos2[i: i + n] - pos
rot_mass[i - 1] = mass2[i: i + n]
norms = np.linalg.norm(dist, axis=2)
if constrain:
norms[norms < constrain] = constrain
norms = np.linalg.norm(dist, axis=2)
if constrain:
norms[norms < constrain] = constrain
vel += G * np.sum(
dist * rot_mass / (norms ** 3)[:, :, np.newaxis],
axis=0
)
vel += G * np.sum(
dist * rot_mass / (norms ** 3)[:, :, np.newaxis],
axis=0
)
pos += vel
pos += vel