From 2ecd9404df433884fc6075058b7704a8c661e8a8 Mon Sep 17 00:00:00 2001 From: Kurt Mohler Date: Tue, 5 Sep 2023 02:01:13 -0700 Subject: [PATCH] Add circle length contraction tutorial --- .../Length contraction of a circle.ipynb | 290 ++++++++++++++++++ doc/source/tutorials.rst | 5 + 2 files changed, 295 insertions(+) create mode 100644 doc/source/notebooks/Length contraction of a circle.ipynb diff --git a/doc/source/notebooks/Length contraction of a circle.ipynb b/doc/source/notebooks/Length contraction of a circle.ipynb new file mode 100644 index 0000000..e6b836e --- /dev/null +++ b/doc/source/notebooks/Length contraction of a circle.ipynb @@ -0,0 +1,290 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "36ea56c0", + "metadata": {}, + "source": [ + "# Length contraction - 2 spatial dims\n", + "\n", + "SpacetimeLib can work in any number of spatial dimensions. Let's look at an example of length contraction with two spatial dimensions.\n", + "\n", + "We'll create and plot a circle of particles sitting at rest. We'll do this by just creating a number of `st.Worldline`s each with one vertex arranged in a circle. We'll combine all these worldlines into one `st.Frame`. Then we can plot the x- and y-coordinates of each of the particles at a particular time." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "90c4247e", + "metadata": {}, + "outputs": [], + "source": [ + "import spacetime as st\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "def generate_circle(num_particles, radius):\n", + " worldlines = []\n", + " \n", + " for particle_idx in range(num_particles):\n", + " theta = 2 * np.pi * particle_idx / num_particles\n", + " x = radius * np.sin(theta)\n", + " y = radius * np.cos(theta)\n", + " worldlines.append(st.Worldline(\n", + " [[0, x, y]],\n", + " ends_vel_s=[0, 0]))\n", + " \n", + " return st.Frame(worldlines)\n", + "\n", + "def plot_frame_eval(ax, frame_eval, dim0, dim1, label=None):\n", + " coords = []\n", + " \n", + " for _, event, _ in frame_eval:\n", + " coords.append([event[dim0], event[dim1]])\n", + " \n", + " coords = np.transpose(np.array(coords))\n", + " \n", + " ax.plot(*coords, marker='.', label=label)\n", + " ax.set_xlabel('x-axis')\n", + " ax.set_ylabel('y-axis')\n", + " \n", + " if label is not None:\n", + " ax.legend(loc='center left', bbox_to_anchor=(1, 0.5))" + ] + }, + { + "cell_type": "markdown", + "id": "d097166f", + "metadata": {}, + "source": [ + "Let's use a fairly large number of particles to make the plot of the circle look continuous." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "f1aa077f", + "metadata": {}, + "outputs": [], + "source": [ + "frame_0 = generate_circle(500, 5)" + ] + }, + { + "cell_type": "markdown", + "id": "b6dd98c8", + "metadata": {}, + "source": [ + "Now we'll use `st.Frame.eval` to obtain the state of the frame at one particular time, `t = 0` in this case." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "0813b7d2", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-6.0, 6.0)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(4, 4))\n", + "time = 0\n", + "plot_frame_eval(ax, frame_0.eval(time), 1, 2)\n", + "ax.set_xlim(-6, 6)\n", + "ax.set_ylim(-6, 6)" + ] + }, + { + "cell_type": "markdown", + "id": "b1027d0f", + "metadata": {}, + "source": [ + "Now let's see what happens if we view this circle in another reference frame. Let's boost the frame by a velocity of 0.9 along the x-axis." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "ded8a9d8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-6.0, 6.0)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(4, 4))\n", + "time = 0\n", + "frame_1 = frame_0.boost([0.9, 0])\n", + "plot_frame_eval(ax, frame_1.eval(time), 1, 2)\n", + "ax.set_xlim(-6, 6)\n", + "ax.set_ylim(-6, 6)" + ] + }, + { + "cell_type": "markdown", + "id": "b21e1548", + "metadata": {}, + "source": [ + "The circle is contracted along the x-axis because the boost velocity we used is along the x-axis.\n", + "\n", + "Let's boost in some other direction that isn't along one of the basis vectors." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "2087f74c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-6.0, 6.0)" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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k1tdEpLIGYqKinDhwgXU1NTgzJkz6NmzJ9q1a4dDhw5ZH9OyZUsAwAsvvIArV67g/fffR0REBEwmE/r374+qqqpar/ndd98BuLPi5+rVq2jevLns7/bz80N+fj527NiBr776Cm+88QZmzZqFvLw8BAYGuuT9knGxBUR0j6qqKvTr1w/R0dF48MEHsWDBAhw5cgQhISGyj/fz88OSJUswevRoAEBxcTHCw8Mxf/5864ndoqIiREdHY+HChcjKykJVVRW+/vpr67WO720B3e/mzZsIDAxEVlYWnn76aZe8ZzIufgMgusdrr70Gi8WChQsXokWLFvjyyy/x4osvYvPmzbKPj4qKwpo1axATE4Py8nJMnz4dvr6+1vurq6sxatQoJCYmIjk5GUOGDEHPnj3x3nvvYfr06XVeb/PmzTh16hQeffRRBAUF4csvv0RNTQ0efPBBl71nMjBtz0ET6cc333wjNWnSRNq9e7f12OnTpyV/f39pyZIlss/Jz8+XYmJiJB8fHykqKkrasGGDFBERIc2fP1+SJEl68803pdDQUOny5cvW52zcuFHy9vaWDh06JElS7VVAu3fvlh577DEpKChI8vX1lXr16iVlZWW55g2T4bEFRERkUFwFRERkUAwAIiKDYgAQERkUA4CIyKAYAEREBsUAICIyKAYAEZFBMQCIiAyKAUBEZFAMACIig2IAEBEZ1P8HVvi+Z4ozQhoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(4, 4))\n", + "time = 0\n", + "frame_2 = frame_0.boost([-.9, .4])\n", + "plot_frame_eval(ax, frame_2.eval(time), 1, 2)\n", + "ax.set_xlim(-6, 6)\n", + "ax.set_ylim(-6, 6)" + ] + }, + { + "cell_type": "markdown", + "id": "9e78d5c9", + "metadata": {}, + "source": [ + "We can also easily step forward or backward in time to see how this contracted circle moves over time." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "a7e7bb7d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-6.0, 6.0)" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(figsize=(4, 4))\n", + "\n", + "for time in [0, 2, 4]:\n", + " plot_frame_eval(ax, frame_2.eval(time), 1, 2, label=f't = {time}')\n", + " \n", + "ax.set_xlim(-6, 6)\n", + "ax.set_ylim(-6, 6)" + ] + }, + { + "cell_type": "markdown", + "id": "9257c0b4", + "metadata": {}, + "source": [ + "Since we used a boost velocity of `[-0.9, 0.4]`, in this frame the contracted circle moves at a velocity of `[0.9, -0.4]`, the opposite of the boost velocity, which is down and to the right on the above plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3e7213e8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.4" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/source/tutorials.rst b/doc/source/tutorials.rst index 6b0af22..84e001e 100644 --- a/doc/source/tutorials.rst +++ b/doc/source/tutorials.rst @@ -11,6 +11,11 @@ Tutorials notebooks/Length contraction +.. toctree:: + :maxdepth: 1 + + notebooks/Length contraction of a circle + .. toctree:: :maxdepth: 1