Skip to content

Instantly share code, notes, and snippets.

@charmoniumQ
Last active February 1, 2024 21:57
Show Gist options
  • Save charmoniumQ/5a7851d7a0b105138f78f19c86647625 to your computer and use it in GitHub Desktop.
Save charmoniumQ/5a7851d7a0b105138f78f19c86647625 to your computer and use it in GitHub Desktop.
Evan's dumb gravity question
Display the source blob
Display the rendered blob
Raw
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "04551534-a4ec-43be-94d1-f22f7bde33d5",
"metadata": {},
"source": [
"Let the earth be composed of $N$ segments of line beginning at -1, each with width $\\frac{2}{N}$. Therefore, the earth ends at $-1 + \\frac{2N}{N} = 1$.\n",
"\n",
"Let the base be composed of $M$ segments of a line beginning at -2, each with width $\\frac{4}{M}$, and mass $m_i$. Therefore, the base ends at $-2 + \\frac{4M}{M} = 2$.\n",
"\n",
"The strength of the gravitational field between the $i$th segment of base and $j$th segment of earth is given by,\n",
"$$\n",
"\\frac{m_i}{(1 + ((\\frac{4j}{M} -2)-(\\frac{2i}{N} - 1))^2)^{\\frac{3}{2}}},\n",
"$$\n",
"\n",
"call it $m_i A_{i,j}$ and the vertical component is multiplied by $p-x$, call it $m_i B_{i,j}$.\n",
"\n",
"Then we have $A \\vec{m} = \\vec{1}$ and $B \\vec{m} = \\vec{0}$."
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "939f4ef5-9dc4-45a1-9e87-f64bac5c8b29",
"metadata": {},
"outputs": [],
"source": [
"import numpy\n",
"\n",
"N = 50\n",
"M = 50"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "5319cfdf-7979-4fff-8bf1-19de9c685e59",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[0.35355339, 0.39857615, 0.44893578, ..., 0.03952943, 0.03663576,\n",
" 0.03401001],\n",
" [0.33296921, 0.37540972, 0.42308021, ..., 0.04108707, 0.0380471 ,\n",
" 0.03529132],\n",
" [0.31361154, 0.35355339, 0.39857615, ..., 0.04272469, 0.03952943,\n",
" 0.03663576],\n",
" ...,\n",
" [0.03529132, 0.0380471 , 0.04108707, ..., 0.42308021, 0.37540972,\n",
" 0.33296921],\n",
" [0.03401001, 0.03663576, 0.03952943, ..., 0.44893578, 0.39857615,\n",
" 0.35355339],\n",
" [0.03278827, 0.03529132, 0.0380471 , ..., 0.47613952, 0.42308021,\n",
" 0.37540972]])"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A = 1 / (numpy.array([[1 + ((4*j/M-2)-(2*i/N-1))**2 for j in range(N)] for i in range(M)]))**(3/2)\n",
"A"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "2206be05-8647-4684-a1cc-e71f9f58ba47",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-0.35355339, -0.36669006, -0.37710605, ..., 0.10910121,\n",
" 0.10404555, 0.09930923],\n",
" [-0.34628798, -0.36039333, -0.37231058, ..., 0.11175683,\n",
" 0.10653189, 0.10163902],\n",
" [-0.33870046, -0.35355339, -0.36669006, ..., 0.11450217,\n",
" 0.10910121, 0.10404555],\n",
" ...,\n",
" [-0.10163902, -0.10653189, -0.11175683, ..., 0.37231058,\n",
" 0.36039333, 0.34628798],\n",
" [-0.09930923, -0.10404555, -0.10910121, ..., 0.37710605,\n",
" 0.36669006, 0.35355339],\n",
" [-0.09705328, -0.10163902, -0.10653189, ..., 0.38091161,\n",
" 0.37231058, 0.36039333]])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"B = A * numpy.array([[(4*j/M-2)-(2*i/N-1) for j in range(N)] for i in range(M)])\n",
"B"
]
},
{
"cell_type": "code",
"execution_count": 55,
"id": "1f44b104-6b35-453c-b7f4-09e199610132",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([-4.20073975e+10, -1.01493152e+11, 1.74463674e+12, -6.35379099e+12,\n",
" 1.23190586e+13, -1.50036788e+13, 1.19765466e+13, -5.87741405e+12,\n",
" 9.37583163e+11, 1.12556236e+12, -1.18239646e+12, 6.28447573e+11,\n",
" -1.94300209e+11, 9.16178154e+08, 4.70376247e+10, -4.12500487e+10,\n",
" 2.56948418e+10, -1.36977677e+10, 6.63474666e+09, -2.98767868e+09,\n",
" 1.25759780e+09, -4.91534188e+08, 1.74781182e+08, -5.39218711e+07,\n",
" 1.25855765e+07, -7.67158424e+05, -1.44009019e+06, 1.18322837e+06,\n",
" -6.41607430e+05, 2.85486292e+05, -1.10609006e+05, 3.72996492e+04,\n",
" -8.83988452e+03, -1.96663379e+03, 4.95861963e+03, -3.94797314e+03,\n",
" 1.34608594e+03, 1.05217236e+03, -2.45517041e+03, 2.65993359e+03,\n",
" -1.84435156e+03, 7.35274139e+02, -1.59375000e+02, 1.20729492e+02,\n",
" -1.10682617e+02, 2.29394531e+01, 1.74960938e+01, -7.28125000e+00,\n",
" -2.52783203e+00, 2.90310669e+00])"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mass = numpy.linalg.inv(A) @ numpy.ones(N)\n",
"mass"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "0e5f063b-65eb-4ac8-9287-8e7cb2f54636",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 63,
"id": "2256f544-b21f-4040-9d76-7c2f7dd7519e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7fff680d3790>]"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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yZIlxkUXXVTQ9hSC1Wt04r187733DEnG1q1bE+9t2bLFkGR88MEHg37PzvfyjDPOMK655pqU92bMmGHceuutaY+/5ZZbjBkzZqS89/3vf9+YO3duwdqYD9le54YNGwxJxoEDB0agdfknyVizZk3GY5x6L5NZuU6n38vW1lZDkrFp06ZBjxmJe0nPSwbt7e06+uijB/18x44damlpUUNDQ+K9QCCgs846S5s3bx6JJo6ojRs3asKECZo2bZqWLl2q1tbW0W5S3jjxXm7ZskVVVVU688wzE+/NnTtXVVVVQ7bZjvcyFArpjTfeSLkHktTQ0DDo9WzZsmXA8eeff762bdumcDhcsLYORy7XaZo9e7bq6up03nnnacOGDYVs5ohz4r0cDqfey/b2dknK+GwciXtJeBnExx9/rF/84he65pprBj2mpaVFklRTU5Pyfk1NTeIzt1i4cKGeeuopvfTSS7r33nv1+uuv69xzz1UwGBztpuWFE+9lS0uLJkyYMOD9CRMmZGyzXe9lW1ubotFoVvegpaUl7fGRSERtbW0Fa+tw5HKddXV1evjhh7V69Wo988wzmj59us477zy9/PLLI9HkEeHEe5kLJ99LwzC0bNkyffWrX9XMmTMHPW4k7qXrw8vy5cvTFkclv7Zt25bynb1792rBggW65JJLdPXVVw/5OzweT8rPhmEMeK/QcrnObFx66aW68MILNXPmTC1atEjPP/+8PvzwQz333HN5vIrMCn2NkvPuZbq2DdVmO9zLTLK9B+mOT/e+3WRzndOnT9fSpUv1pS99SfX19XrooYd04YUX6p577hmJpo4Yp97LbDj5Xl5//fV666239Pvf/37IYwt9L/15OYuNXX/99brssssyHjNlypTEn/fu3atzzjlH9fX1evjhhzN+r7a2VlI8ZdbV1SXeb21tHZA6Cy3b6xyuuro6TZ48WR999FHezjmUQl6jE+/lW2+9pX379g347LPPPsuqzaNxL9Oprq6Wz+cb0PuQ6R7U1tamPd7v92vcuHEFa+tw5HKd6cydO1dPPvlkvps3apx4L/PFCffyBz/4gf7rv/5LL7/8so499tiMx47EvXR9eKmurlZ1dbWlY/fs2aNzzjlHc+bM0WOPPSavN3PH1NSpU1VbW6v169dr9uzZkuLj2Zs2bdLdd9897LZnI5vrzIf9+/dr9+7dKQ/6QivkNTrxXtbX16u9vV2vvfaazjjjDEnSq6++qvb2ds2bN8/y7xuNe5lOcXGx5syZo/Xr1+viiy9OvL9+/XpddNFFab9TX1+vP/3pTynvvfjiizr99NNVVFRU0PbmKpfrTKexsXHU71k+OfFe5oud76VhGPrBD36gNWvWaOPGjZo6deqQ3xmRe5m30l+H27Nnj3HiiSca5557rvHpp58azc3NiVey6dOnG88880zi55/+9KdGVVWV8cwzzxhvv/228Z3vfMeoq6szOjo6RvoSLNu5c6fR2Nho3HXXXcaYMWOMxsZGo7Gx0ejs7Ewck3ydnZ2dxr/8y78YmzdvNnbs2GFs2LDBqK+vN4455hjbXme212gYzryXCxYsME499VRjy5YtxpYtW4xZs2YZ3/jGN1KOcdK9/MMf/mAUFRUZjzzyiPHee+8ZN954o1FeXm588sknhmEYxq233mosXrw4cfzf//53o6yszLjpppuM9957z3jkkUeMoqIi449//ONoXYIl2V7n/fffb6xZs8b48MMPjXfeece49dZbDUnG6tWrR+sShtTZ2Zn4706Scd999xmNjY3Gzp07DcNwz73M9jqddi+vvfZao6qqyti4cWPKc/Hw4cOJY0bjXhJeej322GOGpLSvZJKMxx57LPFzLBYzfvjDHxq1tbVGIBAwvva1rxlvv/32CLc+O0uWLEl7nRs2bEgck3ydhw8fNhoaGozx48cbRUVFxnHHHWcsWbLE2LVr1+hcgAXZXqNhOPNe7t+/37jiiiuMiooKo6KiwrjiiisGTMF02r385S9/aUyePNkoLi42vvSlL6VMyVyyZIlx1llnpRy/ceNGY/bs2UZxcbExZcoU41e/+tUItzg32Vzn3XffbZxwwglGSUmJcdRRRxlf/epXjeeee24UWm2dOSW4/2vJkiWGYbjnXmZ7nU67l4M9F5P/t3M07qWnt3EAAACO4PrZRgAAwF0ILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFEILwAAwFH+fztYmpRnDpnJAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = matplotlib.pyplot.figure()\n",
"ax = fig.add_subplot(1, 1, 1)\n",
"ax.plot(my_linspace(-2, 2, M), mass)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c0441cde-9d1c-45c5-ae45-b5e0d9a22d9c",
"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.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
{
"nodes": {
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1706683685,
"narHash": "sha256-FtPPshEpxH/ewBOsdKBNhlsL2MLEFv1hEnQ19f/bFsQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "5ad9903c16126a7d949101687af0aa589b1d7d3d",
"type": "github"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"root": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}
{
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
in {
devShells = {
default = pkgs.mkShell {
packages = [
(pkgs.python311.withPackages(pypkgs: with pypkgs; [
sympy
jupyter
numpy
matplotlib
]))
];
};
};
}
)
;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment