physics/binary_orbits.ipynb

110 lines
96 KiB
Plaintext
Raw Permalink Normal View History

2022-11-19 22:41:30 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"%matplotlib widget\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"\n",
"a = 3 # Semi major axis (AU)\n",
"r_1 = 1 # Planet 1 initial orbit radius (AU)\n",
"M_1 = 3 # Star 1 mass (Solar masses)\n",
"M_2 = 2 # Star 2 mass (Solar masses)\n",
"\n",
"r_2 = a - r_1\n",
"T = np.sqrt(a ** 3 / (M_1 + M_2))\n",
"v_1 = 2 * np.pi * r_1 / T\n",
"v_2 = 2 * np.pi * (a - r_1) / T"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"t = np.linspace(0, T, 10000)\n",
"theta = 2 * np.pi * t / T\n",
"x_1, y_1 = -r_1 * np.sin(theta), -r_1 * np.cos(theta)\n",
"x_2, y_2 = -r_2 * np.sin(theta), -r_2 * np.cos(theta)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
2023-02-08 20:35:41 +00:00
"model_id": "407c30b67cad4a12a48103840009b82d",
2022-11-19 22:41:30 +00:00
"version_major": 2,
"version_minor": 0
},
"image/png": "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
"text/html": [
"\n",
" <div style=\"display: inline-block;\">\n",
" <div class=\"jupyter-widgets widget-label\" style=\"text-align: center;\">\n",
" Figure\n",
" </div>\n",
" <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAACL0UlEQVR4nOzdd3hUVfrA8e/MZDLpCekJhN57h6BSpIpSFFHBBiKurO6K+LPg2ljb6uq6rqKgKNiwIzYEQ5deQyf0lkYJ6W0yc39/nCSK1CQzuVPez/PcZ+5M7tx5T2bm3nfOPcWgaZqGEEIIIYTwGka9AxBCCCGEELVLEkAhhBBCCC8jCaAQQgghhJeRBFAIIYQQwstIAiiEEEII4WUkARRCCCGE8DKSAAohhBBCeBlJAIUQQgghvIwkgEIIIYQQXkYSQCGEEEIILyMJoBBCCCGEl5EEUAghhBDCy0gCKIQQQgjhZSQBFEIIIYTwMpIACiGEEEJ4GUkAhRBCCCG8jCSAQgghhBBeRhJAIYQQQggvIwmgEEIIIYSXkQRQCCGEEMLLSAIohBBCCOFlJAEUQgghhPAykgAKIYQQQngZSQCFEEIIIbyMJIBCCCGEEF5GEkAhhBBCCC8jCaAQQgghhJeRBFAIIYQQwstIAiiEEEII4WUkARRCCCGE8DKSAAohhBBCeBlJAIUQQgghvIwkgEIIIYQQXkYSQCGEEEIILyMJoBBCCCGEl5EEUAghhBDCy0gCKIQQQgjhZSQBFEIIIYTwMpIACiGEEEJ4GUkAhRBCCCG8jCSAQgghhBBeRhJAIYQQQggvIwmgEEIIIYSXkQRQCCGEEMLLSAIohBBCCOFlJAEUQgghhPAykgAKIYQQQngZSQCFEEIIIbyMJIBCCCGEEF5GEkAhhBBCCC8jCaAQQgghhJeRBFAIIYQQwstIAiiEEEII4WUkARRCCCGE8DKSAAohhBBCeBlJAIUQQgghvIyP3gG4M7vdTlpaGsHBwRgMBr3DEUIIIcQV0DSNvLw84uPjMRq9sy5MEsAaSEtLIyEhQe8whBBCCFENx48fp169enqHoQtJAGsgODgYUB+gkJAQh+7barXy66+/MmjQIMxms0P37QqkfO7P08so5XN/nl5GKV/15ebmkpCQUHke90aSANZAxWXfkJAQpySAAQEBhISEeOwXW8rn3jy9jFI+9+fpZZTy1Zw3N9/yzgvfQgghhBBeTBJAIYQQQggvIwmgEEIIIYSXkQRQCCGEEMLLSAIohBBCCOFlJAEUQgghhPAykgAKIYQQQngZSQCFEEIIIbyMJIBCCCGEEF7GIxLAl19+mW7duhEcHEx0dDQjR44kJSXlss/7+uuvadmyJX5+frRr144FCxbUQrRCCCGEEPryiARwxYoVPPDAA6xbt46kpCSsViuDBg2ioKDgos9Zs2YNY8aMYcKECWzdupWRI0cycuRIdu7cWYuRCyGEEELUPo+YC3jhwoXn3J8zZw7R0dFs3ryZ3r17X/A5b775JkOGDOHRRx8F4PnnnycpKYm3336bGTNmOD1mIYQQQgi9eEQC+Gc5OTkAhIeHX3SbtWvXMmXKlHMeGzx4MPPnz7/oc0pKSigpKam8n5ubC6gJq61Waw0iPl/F/hy9X1ch5XN/LllGzQ4l+VCaByV5GEpyoUStU1qAoawEbCVgK4Wy4vJbdd9gKwVNq9yVwW6jY2oqhu9/xm4sv1hi9EHzsYDJDKbzbzXfAPANAksw+Aahld9W3Mdo0ukfcz6XfP8czNPLKOWr+b69mUHT/nDE8wB2u53hw4eTnZ3NqlWrLrqdr68vH330EWPGjKl87J133mHatGlkZmZe8DnPPfcc06ZNO+/xuXPnEhAQUPPghRDn0uxYyvLws2ZhseZiKVOLb1kulrK88vU8LNZczLYCzPZivSO+JKvRj1KfYEp9gikpv/3jeolPCMXmOhSZwyn1CQKDR7TSEcLlFBYWMnbsWHJycggJCdE7HF14XA3gAw88wM6dOy+Z/FXX1KlTz6k1zM3NJSEhgUGDBjn8A2S1WklKSmLgwIGYzWaH7tsVSPncn0PKaC2Es0cwnD2CITcV8tLUbW4ahrx0yEtXNXNVpBl9wBJSvgSrmjhzAPj4gY9F1db5+FauY/JVyx8SLpvdzoH9+2navDkmownQwGYtX0rKb8trDiuW0gIozcdQUQtZmq9qIsvLYLYXYy4tJrD01OXLYPKF4Di04Ljfb0PqooU1QKvTCMLqg9m/yv+bCvIZdX9SvuqruILnzTwqAXzwwQf56aefWLlyJfXq1bvktrGxsefV9GVmZhIbG3vR51gsFiwWy3mPm81mp335nLlvVyDlc3+XLWNpAZzeD1kHIetw+XIIzh6GvPQreAUDBMdCUDQERkFAJARGQkCEuh8YqR7zrwN+KuEz+PiBwfDHPVSZ3Wplf94Cml09FFNN38OyEnVpujgbCk5D4RkoLL8tOA2FWep+fibkpkPBKZU0Zh/FkH304vsNjoM6jSC8EdRpCOGNIbI5RDa74uRQPqPuT8pXvX16O49IADVN429/+xvfffcdy5cvp1GjRpd9TmJiIkuWLGHy5MmVjyUlJZGYmOjESIXwYKWFcDoFTu6FU+XLyT2QfQy4REsTv1CVxIQlQEg9CImH0Lq/rwfHqjZ27szHopbACIhocvnty0ohPwNy035f8tLV//LsEbWU5KrH8tLh2Jo/7cCgEsKolhDV4vfbyOZgCXJ8+YQQbscjEsAHHniAuXPn8v333xMcHExGRgYAoaGh+PurX8F33XUXdevW5eWXXwbgoYceok+fPrz++utcf/31fPHFF2zatIn33ntPt3II4TYKTmM4vplmGT9i+vYbyNyhkpKLJXoBERDRTNVUhTcur7VqrO4HXLyzltfy8VWXeMPqX/jvmqZqDc8eVv/3rMNq/cxBlXgXZ5f/7TDs++UPTzSo/3tce4zR7YjKLYKC7hAWVwuFEkK4Eo9IAN99910A+vbte87js2fPZty4cQAcO3YMo/H39j29evVi7ty5PPXUUzz55JM0a9aM+fPn07Zt29oKWwj3UHAGUjdB2lZI36aW3FR8gNYAf7yKGxABUa0guqWqdYpupW4DI/WJ3VMZDKo2MTAC6nU992+aBgWnymthU/5wmwIFJ8svxR/EtOs7egH8998QUhdi20NcB7W/el3VJXUhhMfyiATwSjoyL1++/LzHRo8ezejRo50QkRBuym5XCcPx9XBio7o9c+CCm2rhTUjVoojrPART3U4Q3QaComo5YHEeg0G1lwyKhkZ/Gge14LRK4DO2Y09LpvDgWoJKMiE3VS1/rC2MbA71uqklobtK5F1oGBshRM14RAIohKimslJI3QxHfoNja+HEZijJOX+7yOYQ3xniO6paopi2lJn82bxgAUN7OqCThKgdgZHQtD807Y/NamXJggUM7X8N5jMpKjFM26oS/6yDcHqfWpI/U8/1DYZ6XaDh1dCwN8R3UpeqhRBuSRJAIbyJrUyd5I+shMO/qRo+a+G525gD1Ym+XndI6KEuB16onZ4MpOoZLMHQIFEtFSou+x/fACc2QOoWNazNoeVqATWsTkIPaHQNNLxGJYTu3llHCC8iCaAQnkzT1CXcA4vh4FI4ukaNTfdHAZHltTpXqxN6dGswyaHBqwVGQPPBagGw21SP7mNrVW3xkVVqCJtDy9QC6odDw6ug6QC1hDc+ZygeIYRrkaO8EJ6mtAAOr1RJ3/4k+PM4cn5hKtlr1FvV3ES3khO1uDSjCWLbqqX7xN/bih5ZpWqTj6yGoizY/6taQA1DU5EMNrxGhp8RwsVIAiiEJzh7BPb+rE6+R9eoWSkqmHyhfqI6ETfuCzFtwShTjIkaMBohprVaetynEsKTu1Qt84HFcHSt+kxunKUWoxnq94SW10OLoVCngd4lEMLrSQIohDvSNMjcCXt+Uolf5o5z/x5WH5oOhGYDpfZFOJ/RCLHt1HLVQ2rWkyO/nVsLfeQ3tSx8Qm3X8gaVEMa0lRpoIXQgCaAQ7sJuU50
" </div>\n",
" "
],
"text/plain": [
"Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.ion()\n",
"fig = plt.figure()\n",
"\n",
"ax = fig.add_subplot()\n",
"ax.plot(x_1, y_1)\n",
"ax.plot(x_2, y_2)\n",
"ax.set_xlabel(\"x / AU\")\n",
"ax.set_ylabel(\"y / AU\")\n",
"\n",
"plt.grid()\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.9.2 64-bit",
"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",
2023-02-08 20:35:41 +00:00
"version": "3.9.2"
2022-11-19 22:41:30 +00:00
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}