{"title":"Black hole","code":"import marimo\n\n__generated_with = \"0.25.1\"\napp = marimo.App()\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(r\"\"\"\n    # What a black hole looks like\n\n    Light passing a black hole follows the geometry of spacetime around it.\n    For a non-rotating black hole of mass $M$ that geometry is the\n    Schwarzschild solution, and a light ray in its equatorial plane obeys one\n    equation (units with $G = c = 1$, $u = M/r$, angle $\\varphi$):\n\n    $$\\frac{d^2u}{d\\varphi^2} + u = 3u^2$$\n\n    Without the $3u^2$ term this is a straight line. With it, rays bend, some\n    circle the hole before escaping, and every ray aimed closer than a\n    critical distance falls in. This notebook solves that equation and\n    uses it twice: to draw what a camera near the hole would see, and to\n    follow single rays.\n    \"\"\")\n    return\n\n\n@app.cell\ndef _():\n    import marimo as mo\n    import numpy as np\n    import matplotlib.pyplot as plt\n\n    return mo, np, plt\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(r\"\"\"\n    ## The view from nearby\n\n    Surround the hole with a thin, glowing disc of gas, the way matter\n    spirals into real black holes, and trace one ray backwards from each\n    pixel of a camera. Every ray lies in a plane through the hole, so the\n    same equation decides where it meets the disc. Rays that miss the disc\n    and escape show the sky behind, displaced by the same bending.\n\n    The left side is brighter because the gas there moves towards the\n    camera (Doppler beaming); the arch over the top and the ring\n    underneath are the far side of the disc, seen around the hole. This is\n    the calculation J.-P. Luminet made by hand in 1979.\n    \"\"\")\n    return\n\n\n@app.cell\ndef _(np):\n    def ray_table(b_max=30.0, nb=1500, step=0.002, max_angle=3.2 * np.pi):\n        \"\"\"r(phi) for rays arriving from infinity with impact parameter b (units of M).\n        Returns b grid, phi grid, and u = M/r (nan once the ray is inside the horizon).\"\"\"\n        b = np.linspace(0.2, b_max, nb)\n        n = int(max_angle / step) + 1\n        u = np.zeros(nb); du = 1 / b\n        out = np.full((n, nb), np.nan, dtype=np.float32)\n        out[0] = 0\n        alive = np.ones(nb, bool)\n        escape = np.full(nb, np.nan)\n        prev = u.copy()\n        for i in range(1, n):\n            f = lambda x: 3 * x * x - x\n            k1u, k1v = du, f(u)\n            k2u, k2v = du + step/2*k1v, f(u + step/2*k1u)\n            k3u, k3v = du + step/2*k2v, f(u + step/2*k2u)\n            k4u, k4v = du + step*k3v, f(u + step*k3u)\n            u = np.where(alive, u + step/6*(k1u+2*k2u+2*k3u+k4u), 0.5)\n            du = np.where(alive, du + step/6*(k1v+2*k2v+2*k3v+k4v), 0.0)\n            crossed = alive & np.isnan(escape) & (u < 0) & (i > 1)\n            escape[crossed] = (i - 1 + prev[crossed] / (prev[crossed] - u[crossed])) * step\n            alive &= (u < 0.5) & (u >= 0)\n            prev = u.copy()\n            out[i] = np.where(alive, u, np.nan)\n        return b, step, out, escape\n\n    def render(width, height, incl_deg=80, fov=34.0, r_in=6.0, r_out=24.0, table=None, ss=1, stars=None):\n        b_grid, step, U, escape = table\n        W, H = width*ss, height*ss\n        x = (np.arange(W) - W/2 + 0.5) / W * fov\n        y = (np.arange(H) - H/2 + 0.5) / W * fov\n        X, Y = np.meshgrid(x, -y)\n        b = np.hypot(X, Y); th = np.arctan2(Y, X)\n        i = np.radians(incl_deg)\n        phi0 = np.mod(np.arctan2(-np.cos(i), np.sin(i)*np.sin(th)), np.pi)\n        img = np.zeros_like(b)\n        bi = (b - b_grid[0]) / (b_grid[1]-b_grid[0])\n        valid_b = (bi >= 0) & (bi < len(b_grid)-1)\n        bi = np.clip(bi, 0, len(b_grid)-1.001); b0 = bi.astype(int); fb = bi - b0\n        for k in (2, 1, 0):  # far images first, nearest image drawn last\n            phi = phi0 + k*np.pi\n            pi_ = phi / step\n            ok = valid_b & (pi_ < U.shape[0]-1)\n            pi_ = np.clip(pi_, 0, U.shape[0]-1.001); p0 = pi_.astype(int); fp = pi_ - p0\n            u = (U[p0, b0]*(1-fp)*(1-fb) + U[p0+1, b0]*fp*(1-fb) + U[p0, b0+1]*(1-fp)*fb + U[p0+1, b0+1]*fp*fb)\n            with np.errstate(invalid='ignore', divide='ignore'):\n                r = 1/u\n                hit = ok & np.isfinite(r) & (r >= r_in) & (r <= r_out)\n                # Keplerian emitter; photon L_z = -alpha sin i, alpha = b cos(theta)\n                omega = r**-1.5\n                g = np.sqrt(1 - 3/r) / (1 + omega * X * np.sin(i))\n                flux = (1 - np.sqrt(r_in/r)) / r**3   # Page-Thorne-like radial profile\n                I = flux * g**4\n            img = np.where(hit, I, img)\n        # Sky: rays that miss the disc and escape leave along the swept angle phi_f.\n        sky = np.zeros_like(img)\n        if stars is not None:\n            phi_f = np.interp(b, b_grid, np.nan_to_num(escape, nan=-1.0))\n            free = (img == 0) & (phi_f > 0) & (b < b_grid[-1])\n            n_obs = np.array([0.0, -np.sin(i), np.cos(i)])  # observer direction, disc normal = z\n            e_x = np.array([1.0, 0.0, 0.0])\n            e_y = np.array([0.0, np.cos(i), np.sin(i)])\n            ex = np.cos(th)[..., None] * e_x + np.sin(th)[..., None] * e_y\n            d = -(np.cos(phi_f)[..., None] * n_obs + np.sin(phi_f)[..., None] * ex)\n            lon = np.arctan2(d[..., 1], d[..., 0]); lat = np.arcsin(np.clip(d[..., 2], -1, 1))\n            h, w = stars.shape\n            px = ((lon + np.pi) / (2 * np.pi) * w).astype(int) % w\n            py = np.clip(((np.pi / 2 - lat) / np.pi * h).astype(int), 0, h - 1)\n            sky = np.where(free, stars[py, px], 0.0)\n        if ss > 1:\n            img = img.reshape(height, ss, width, ss).mean(axis=(1, 3))\n            sky = sky.reshape(height, ss, width, ss).mean(axis=(1, 3))\n        return img, sky\n\n    def star_texture(w=4096, h=2048, n=9000, seed=7):\n        \"\"\"Equirectangular sky with stars spread uniformly over the sphere.\"\"\"\n        rng = np.random.default_rng(seed)\n        z = rng.uniform(-1, 1, n); lon = rng.uniform(-np.pi, np.pi, n)\n        lat = np.arcsin(z)\n        x = ((lon + np.pi) / (2 * np.pi) * w).astype(int) % w\n        y = np.clip(((np.pi / 2 - lat) / np.pi * h).astype(int), 0, h - 1)\n        tex = np.zeros((h, w), np.float32)\n        np.add.at(tex, (y, x), rng.pareto(1.6, n).astype(np.float32) * 0.15 + 0.05)\n        for dy, dx in ((0, 1), (1, 0)):\n            tex += 0.35 * np.roll(np.roll(tex, dy, 0), dx, 1)\n        return np.clip(tex, 0, 1)\n\n    RAY_TABLE = ray_table(b_max=60, nb=1200, step=0.003, max_angle=3.3 * np.pi)\n    STARS = star_texture()\n    return RAY_TABLE, STARS, render\n\n\n@app.cell\ndef _(mo):\n    inclination = mo.ui.slider(0, 89, step=1, value=84, label=\"Camera angle above the disc axis (degrees)\")\n    inclination\n    return (inclination,)\n\n\n@app.cell\ndef _(RAY_TABLE, STARS, inclination, mo, np, plt, render):\n    import io\n    from matplotlib import cm\n\n    disc, sky = render(640, 360, incl_deg=inclination.value, fov=44, r_out=18, table=RAY_TABLE, ss=1, stars=STARS)\n    level = np.clip(disc / np.percentile(disc[disc > 0], 99.7), 0, 1) ** 0.55\n    picture = np.clip(cm.afmhot(level / 1.1)[..., :3] + np.clip(sky, 0, 1)[..., None] * np.array([0.85, 0.9, 1.0]), 0, 1)\n    buffer = io.BytesIO()\n    plt.imsave(buffer, picture, format=\"png\")\n    mo.image(buffer.getvalue(), width=\"100%\")\n    return\n\n\n@app.cell\ndef _(np):\n    B_CRITICAL = 3 * np.sqrt(3)  # impact parameter of the photon sphere, in units of M\n    R_START = 60.0  # rays start this far from the hole, in units of M\n\n    def trace(b, step=0.004, max_angle=6 * np.pi):\n        \"\"\"Trace rays with impact parameters `b` and return their paths.\n\n        Integrates u'' = 3u^2 - u with fourth-order Runge-Kutta in the angle\n        swept since the start, all rays at once. A ray ends when it crosses the\n        horizon (r = 2M) or leaves the far boundary.\n        \"\"\"\n        b = np.atleast_1d(np.asarray(b, dtype=float))\n        u = np.full_like(b, 1 / R_START)\n        du = np.sqrt(np.maximum(1 / b**2 - u**2 * (1 - 2 * u), 0))\n        psi = np.arcsin(np.minimum(b / R_START, 1.0))\n        alive = np.ones_like(b, dtype=bool)\n        captured = np.zeros_like(b, dtype=bool)\n        history_u, history_psi, history_alive = [u], [psi], [alive]\n\n        def accel(u):\n            return 3 * u**2 - u\n\n        while alive.any() and (psi[alive] < max_angle).any():\n            k1u, k1v = du, accel(u)\n            k2u, k2v = du + step / 2 * k1v, accel(u + step / 2 * k1u)\n            k3u, k3v = du + step / 2 * k2v, accel(u + step / 2 * k2u)\n            k4u, k4v = du + step * k3v, accel(u + step * k3u)\n            u = np.where(alive, u + step / 6 * (k1u + 2 * k2u + 2 * k3u + k4u), u)\n            du = np.where(alive, du + step / 6 * (k1v + 2 * k2v + 2 * k3v + k4v), du)\n            psi = np.where(alive, psi + step, psi)\n            fell = alive & (u >= 0.5)\n            left = alive & (u <= 1 / R_START) & (du < 0)\n            captured |= fell\n            history_u.append(u)\n            history_psi.append(psi)\n            history_alive.append(alive)\n            alive = alive & ~(fell | left) & (psi < max_angle)\n\n        r = 1 / np.maximum(np.array(history_u), 1e-9)\n        angle = np.array(history_psi)\n        drawn = np.array(history_alive)\n        paths = [\n            np.column_stack([-r[drawn[:, i], i] * np.cos(angle[drawn[:, i], i]),\n                             r[drawn[:, i], i] * np.sin(angle[drawn[:, i], i])])\n            for i in range(len(b))\n        ]\n        return paths, captured, psi\n\n    return B_CRITICAL, trace\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(\"\"\"\n    ## Single rays\n\n    Move the slider to aim a ray past the hole.\n    \"\"\")\n    return\n\n\n@app.cell\ndef _(B_CRITICAL, mo):\n    aim = mo.ui.slider(\n        start=2.0,\n        stop=12.0,\n        step=0.01,\n        value=round(B_CRITICAL + 0.02, 2),\n        label=\"Impact parameter b (in units of M)\",\n        full_width=True,\n    )\n    aim\n    return (aim,)\n\n\n@app.cell\ndef _(np, trace):\n    fan_paths, fan_captured, _ = trace(np.linspace(1.5, 11.5, 24))\n    return fan_captured, fan_paths\n\n\n@app.cell\ndef _(aim, fan_captured, fan_paths, np, plt, trace):\n    (ray,), (ray_captured,), (ray_angle,) = [x[:1] for x in trace([aim.value])]\n\n    fig, ax = plt.subplots(figsize=(7, 5.2))\n    for path, fell in zip(fan_paths, fan_captured):\n        ax.plot(*path.T, lw=0.7, color=\"#9a6700\" if fell else \"#8c959f\", alpha=0.55)\n    ax.plot(*ray.T, lw=2.2, color=\"#cf222e\" if ray_captured else \"#0969da\")\n    ax.add_patch(plt.Circle((0, 0), 2, color=\"black\", zorder=3))\n    ax.add_patch(plt.Circle((0, 0), 3, fill=False, ls=\"--\", color=\"#6e7781\", lw=0.8))\n    ax.set(xlim=(-22, 22), ylim=(-14, 16), aspect=\"equal\", xlabel=\"x / M\", ylabel=\"y / M\")\n    ax.set_title(\n        f\"b = {aim.value:.2f} M: \"\n        + (\n            \"falls in\"\n            if ray_captured\n            else f\"escapes after turning {np.degrees(ray_angle - np.pi):.0f}° away from straight\"\n        )\n    )\n    fig.tight_layout()\n    fig\n    return\n\n\n@app.cell(hide_code=True)\ndef _(B_CRITICAL, mo):\n    mo.md(f\"\"\"\n    The black disc is the event horizon at $r = 2M$. The dashed circle is the\n    photon sphere at $r = 3M$, where light can orbit the hole. Rays aimed with\n    $b < 3\\\\sqrt{{3}}\\\\,M \\\\approx {B_CRITICAL:.3f}\\\\,M$ (amber) fall in; rays\n    aimed just above it wind around the photon sphere before escaping. Set\n    the slider to 5.20 and then to 5.19 to see the boundary.\n    \"\"\")\n    return\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(r\"\"\"\n    ## Deflection angle against Einstein's prediction\n\n    Far from the hole the deflection is small, and Einstein's weak-field\n    result $\\delta = 4M/b$ holds. That is the figure Eddington's 1919\n    eclipse expedition tested for light grazing the Sun. Close to the hole\n    the full equation departs from it and the deflection grows without\n    bound as $b$ approaches the critical value.\n    \"\"\")\n    return\n\n\n@app.cell\ndef _(B_CRITICAL, np, plt):\n    def deflection(b, step=0.002):\n        \"\"\"Total bending of rays that come from and return to infinity (u = 0).\"\"\"\n        u = np.zeros_like(b)\n        du = 1 / b\n        psi = np.zeros_like(b)\n        out = np.full_like(b, np.nan)\n        while np.isnan(out).any() and psi[0] < 8 * np.pi:\n            k1u, k1v = du, 3 * u**2 - u\n            k2u, k2v = du + step / 2 * k1v, 3 * (u + step / 2 * k1u) ** 2 - (u + step / 2 * k1u)\n            k3u, k3v = du + step / 2 * k2v, 3 * (u + step / 2 * k2u) ** 2 - (u + step / 2 * k2u)\n            k4u, k4v = du + step * k3v, 3 * (u + step * k3u) ** 2 - (u + step * k3u)\n            new_u = u + step / 6 * (k1u + 2 * k2u + 2 * k3u + k4u)\n            du = du + step / 6 * (k1v + 2 * k2v + 2 * k3v + k4v)\n            crossed = np.isnan(out) & (new_u < 0) & (psi > 0)\n            out[crossed] = psi[crossed] + step * u[crossed] / (u[crossed] - new_u[crossed])\n            u, psi = new_u, psi + step\n        return out - np.pi\n\n    impact = B_CRITICAL + np.geomspace(0.005, 95, 50)\n    bent = np.degrees(deflection(impact))\n\n    fig2, ax2 = plt.subplots(figsize=(7, 3.6))\n    ax2.loglog(impact, bent, color=\"#0969da\", lw=2, label=\"Schwarzschild, integrated\")\n    ax2.loglog(impact, np.degrees(4 / impact), color=\"#8c959f\", ls=\"--\", label=\"4M/b, weak field\")\n    ax2.axvline(B_CRITICAL, color=\"#9a6700\", lw=0.8)\n    ax2.set(xlabel=\"impact parameter b / M\", ylabel=\"deflection (degrees)\")\n    ax2.legend(frameon=False)\n    fig2.tight_layout()\n    fig2\n    return\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(r\"\"\"\n    ## The shadow of M87*\n\n    A distant observer sees a dark disc where rays with $b < 3\\sqrt{3}\\,M$\n    would have come from. Its angular diameter is\n    $2 \\cdot 3\\sqrt{3}\\, GM / (c^2 D)$. For the black hole in the galaxy\n    M87, with a mass of about 6.5 billion Suns at 16.8 megaparsecs (the\n    values the Event Horizon Telescope used in 2019), that gives:\n    \"\"\")\n    return\n\n\n@app.cell\ndef _(mo, np):\n    G, c = 6.674e-11, 2.998e8\n    M_SUN, MPC = 1.989e30, 3.086e22\n    MICROARCSEC = np.radians(1 / 3.6e9)\n\n    mass = mo.ui.number(start=0.1, stop=20, step=0.1, value=6.5, label=\"Mass (billion Suns)\")\n    distance = mo.ui.number(start=1, stop=100, step=0.1, value=16.8, label=\"Distance (Mpc)\")\n    mo.hstack([mass, distance], justify=\"start\")\n    return G, MICROARCSEC, MPC, M_SUN, c, distance, mass\n\n\n@app.cell\ndef _(B_CRITICAL, G, MICROARCSEC, MPC, M_SUN, c, distance, mass, mo):\n    theta = 2 * B_CRITICAL * G * mass.value * 1e9 * M_SUN / (c**2 * distance.value * MPC)\n    mo.md(\n        f\"\"\"\n        **Shadow diameter: {theta / MICROARCSEC:.1f} microarcseconds.** The Event\n        Horizon Telescope measured a ring of 42 ± 3 microarcseconds\n        (EHT Collaboration 2019, ApJL 875, L1). The ring sits slightly outside\n        the shadow because the light we see is emitted near it.\n        \"\"\"\n    )\n    return\n\n\n@app.cell(hide_code=True)\ndef _(mo):\n    mo.md(\"\"\"\n    ---\n    **Method.** Fourth-order Runge-Kutta in the swept angle, step 0.004 rad\n    (0.002 for the deflection curve). The pictured rays start at $r = 60M$;\n    the deflection curve integrates from and back to infinity ($u = 0$). **References.** K. Schwarzschild (1916); S. Chandrasekhar,\n    *The Mathematical Theory of Black Holes* (1983), ch. 3; Event Horizon\n    Telescope Collaboration, ApJL 875 L1 (2019); J.-P. Luminet, A&A 75 (1979) 228.\n    The disc is thin and Keplerian, emits from $r = 6M$ to $18M$ with a\n    Page-Thorne-like profile, and the star field is synthetic.\n    Fork it to trace a rotating (Kerr) black hole or a thick, turbulent disc.\n    \"\"\")\n    return\n\n\nif __name__ == \"__main__\":\n    app.run()\n","revision":"2026-10-13T02:13:38.891Z","appConfig":{},"firstPaint":{"notebook":{"cells":[{"code":"mo.md(r\"\"\"\n# What a black hole looks like\n\nLight passing a black hole follows the geometry of spacetime around it.\nFor a non-rotating black hole of mass $M$ that geometry is the\nSchwarzschild solution, and a light ray in its equatorial plane obeys one\nequation (units with $G = c = 1$, $u = M/r$, angle $\\varphi$):\n\n$$\\frac{d^2u}{d\\varphi^2} + u = 3u^2$$\n\nWithout the $3u^2$ term this is a straight line. With it, rays bend, some\ncircle the hole before escaping, and every ray aimed closer than a\ncritical distance falls in. This notebook solves that equation and\nuses it twice: to draw what a camera near the hole would see, and to\nfollow single rays.\n\"\"\")","code_hash":"e952de4bf577e9aa6c8997ae29c6d862","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"Hbol","name":"_"},{"code":"import marimo as mo\nimport numpy as np\nimport matplotlib.pyplot as plt","code_hash":"ef0032c4370d821ec8e83d0954968f66","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"MJUe","name":"_"},{"code":"mo.md(r\"\"\"\n## The view from nearby\n\nSurround the hole with a thin, glowing disc of gas, the way matter\nspirals into real black holes, and trace one ray backwards from each\npixel of a camera. Every ray lies in a plane through the hole, so the\nsame equation decides where it meets the disc. Rays that miss the disc\nand escape show the sky behind, displaced by the same bending.\n\nThe left side is brighter because the gas there moves towards the\ncamera (Doppler beaming); the arch over the top and the ring\nunderneath are the far side of the disc, seen around the hole. This is\nthe calculation J.-P. Luminet made by hand in 1979.\n\"\"\")","code_hash":"30f8cc305509f37c0f09c39ed0a9d9b1","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"vblA","name":"_"},{"code":"def ray_table(b_max=30.0, nb=1500, step=0.002, max_angle=3.2 * np.pi):\n    \"\"\"r(phi) for rays arriving from infinity with impact parameter b (units of M).\n    Returns b grid, phi grid, and u = M/r (nan once the ray is inside the horizon).\"\"\"\n    b = np.linspace(0.2, b_max, nb)\n    n = int(max_angle / step) + 1\n    u = np.zeros(nb); du = 1 / b\n    out = np.full((n, nb), np.nan, dtype=np.float32)\n    out[0] = 0\n    alive = np.ones(nb, bool)\n    escape = np.full(nb, np.nan)\n    prev = u.copy()\n    for i in range(1, n):\n        f = lambda x: 3 * x * x - x\n        k1u, k1v = du, f(u)\n        k2u, k2v = du + step/2*k1v, f(u + step/2*k1u)\n        k3u, k3v = du + step/2*k2v, f(u + step/2*k2u)\n        k4u, k4v = du + step*k3v, f(u + step*k3u)\n        u = np.where(alive, u + step/6*(k1u+2*k2u+2*k3u+k4u), 0.5)\n        du = np.where(alive, du + step/6*(k1v+2*k2v+2*k3v+k4v), 0.0)\n        crossed = alive & np.isnan(escape) & (u < 0) & (i > 1)\n        escape[crossed] = (i - 1 + prev[crossed] / (prev[crossed] - u[crossed])) * step\n        alive &= (u < 0.5) & (u >= 0)\n        prev = u.copy()\n        out[i] = np.where(alive, u, np.nan)\n    return b, step, out, escape\n\ndef render(width, height, incl_deg=80, fov=34.0, r_in=6.0, r_out=24.0, table=None, ss=1, stars=None):\n    b_grid, step, U, escape = table\n    W, H = width*ss, height*ss\n    x = (np.arange(W) - W/2 + 0.5) / W * fov\n    y = (np.arange(H) - H/2 + 0.5) / W * fov\n    X, Y = np.meshgrid(x, -y)\n    b = np.hypot(X, Y); th = np.arctan2(Y, X)\n    i = np.radians(incl_deg)\n    phi0 = np.mod(np.arctan2(-np.cos(i), np.sin(i)*np.sin(th)), np.pi)\n    img = np.zeros_like(b)\n    bi = (b - b_grid[0]) / (b_grid[1]-b_grid[0])\n    valid_b = (bi >= 0) & (bi < len(b_grid)-1)\n    bi = np.clip(bi, 0, len(b_grid)-1.001); b0 = bi.astype(int); fb = bi - b0\n    for k in (2, 1, 0):  # far images first, nearest image drawn last\n        phi = phi0 + k*np.pi\n        pi_ = phi / step\n        ok = valid_b & (pi_ < U.shape[0]-1)\n        pi_ = np.clip(pi_, 0, U.shape[0]-1.001); p0 = pi_.astype(int); fp = pi_ - p0\n        u = (U[p0, b0]*(1-fp)*(1-fb) + U[p0+1, b0]*fp*(1-fb) + U[p0, b0+1]*(1-fp)*fb + U[p0+1, b0+1]*fp*fb)\n        with np.errstate(invalid='ignore', divide='ignore'):\n            r = 1/u\n            hit = ok & np.isfinite(r) & (r >= r_in) & (r <= r_out)\n            # Keplerian emitter; photon L_z = -alpha sin i, alpha = b cos(theta)\n            omega = r**-1.5\n            g = np.sqrt(1 - 3/r) / (1 + omega * X * np.sin(i))\n            flux = (1 - np.sqrt(r_in/r)) / r**3   # Page-Thorne-like radial profile\n            I = flux * g**4\n        img = np.where(hit, I, img)\n    # Sky: rays that miss the disc and escape leave along the swept angle phi_f.\n    sky = np.zeros_like(img)\n    if stars is not None:\n        phi_f = np.interp(b, b_grid, np.nan_to_num(escape, nan=-1.0))\n        free = (img == 0) & (phi_f > 0) & (b < b_grid[-1])\n        n_obs = np.array([0.0, -np.sin(i), np.cos(i)])  # observer direction, disc normal = z\n        e_x = np.array([1.0, 0.0, 0.0])\n        e_y = np.array([0.0, np.cos(i), np.sin(i)])\n        ex = np.cos(th)[..., None] * e_x + np.sin(th)[..., None] * e_y\n        d = -(np.cos(phi_f)[..., None] * n_obs + np.sin(phi_f)[..., None] * ex)\n        lon = np.arctan2(d[..., 1], d[..., 0]); lat = np.arcsin(np.clip(d[..., 2], -1, 1))\n        h, w = stars.shape\n        px = ((lon + np.pi) / (2 * np.pi) * w).astype(int) % w\n        py = np.clip(((np.pi / 2 - lat) / np.pi * h).astype(int), 0, h - 1)\n        sky = np.where(free, stars[py, px], 0.0)\n    if ss > 1:\n        img = img.reshape(height, ss, width, ss).mean(axis=(1, 3))\n        sky = sky.reshape(height, ss, width, ss).mean(axis=(1, 3))\n    return img, sky\n\ndef star_texture(w=4096, h=2048, n=9000, seed=7):\n    \"\"\"Equirectangular sky with stars spread uniformly over the sphere.\"\"\"\n    rng = np.random.default_rng(seed)\n    z = rng.uniform(-1, 1, n); lon = rng.uniform(-np.pi, np.pi, n)\n    lat = np.arcsin(z)\n    x = ((lon + np.pi) / (2 * np.pi) * w).astype(int) % w\n    y = np.clip(((np.pi / 2 - lat) / np.pi * h).astype(int), 0, h - 1)\n    tex = np.zeros((h, w), np.float32)\n    np.add.at(tex, (y, x), rng.pareto(1.6, n).astype(np.float32) * 0.15 + 0.05)\n    for dy, dx in ((0, 1), (1, 0)):\n        tex += 0.35 * np.roll(np.roll(tex, dy, 0), dx, 1)\n    return np.clip(tex, 0, 1)\n\nRAY_TABLE = ray_table(b_max=60, nb=1200, step=0.003, max_angle=3.3 * np.pi)\nSTARS = star_texture()","code_hash":"8a04c32536ec7187d4e72c8b4f2eed9c","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"bkHC","name":"_"},{"code":"inclination = mo.ui.slider(0, 89, step=1, value=84, label=\"Camera angle above the disc axis (degrees)\")\ninclination","code_hash":"28da809e66d273f763b82dcbcce52b2e","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"lEQa","name":"_"},{"code":"import io\nfrom matplotlib import cm\n\ndisc, sky = render(640, 360, incl_deg=inclination.value, fov=44, r_out=18, table=RAY_TABLE, ss=1, stars=STARS)\nlevel = np.clip(disc / np.percentile(disc[disc > 0], 99.7), 0, 1) ** 0.55\npicture = np.clip(cm.afmhot(level / 1.1)[..., :3] + np.clip(sky, 0, 1)[..., None] * np.array([0.85, 0.9, 1.0]), 0, 1)\nbuffer = io.BytesIO()\nplt.imsave(buffer, picture, format=\"png\")\nmo.image(buffer.getvalue(), width=\"100%\")","code_hash":"2da462aba2bbc9ddcc87c384e0be6aac","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"PKri","name":"_"},{"code":"B_CRITICAL = 3 * np.sqrt(3)  # impact parameter of the photon sphere, in units of M\nR_START = 60.0  # rays start this far from the hole, in units of M\n\ndef trace(b, step=0.004, max_angle=6 * np.pi):\n    \"\"\"Trace rays with impact parameters `b` and return their paths.\n\n    Integrates u'' = 3u^2 - u with fourth-order Runge-Kutta in the angle\n    swept since the start, all rays at once. A ray ends when it crosses the\n    horizon (r = 2M) or leaves the far boundary.\n    \"\"\"\n    b = np.atleast_1d(np.asarray(b, dtype=float))\n    u = np.full_like(b, 1 / R_START)\n    du = np.sqrt(np.maximum(1 / b**2 - u**2 * (1 - 2 * u), 0))\n    psi = np.arcsin(np.minimum(b / R_START, 1.0))\n    alive = np.ones_like(b, dtype=bool)\n    captured = np.zeros_like(b, dtype=bool)\n    history_u, history_psi, history_alive = [u], [psi], [alive]\n\n    def accel(u):\n        return 3 * u**2 - u\n\n    while alive.any() and (psi[alive] < max_angle).any():\n        k1u, k1v = du, accel(u)\n        k2u, k2v = du + step / 2 * k1v, accel(u + step / 2 * k1u)\n        k3u, k3v = du + step / 2 * k2v, accel(u + step / 2 * k2u)\n        k4u, k4v = du + step * k3v, accel(u + step * k3u)\n        u = np.where(alive, u + step / 6 * (k1u + 2 * k2u + 2 * k3u + k4u), u)\n        du = np.where(alive, du + step / 6 * (k1v + 2 * k2v + 2 * k3v + k4v), du)\n        psi = np.where(alive, psi + step, psi)\n        fell = alive & (u >= 0.5)\n        left = alive & (u <= 1 / R_START) & (du < 0)\n        captured |= fell\n        history_u.append(u)\n        history_psi.append(psi)\n        history_alive.append(alive)\n        alive = alive & ~(fell | left) & (psi < max_angle)\n\n    r = 1 / np.maximum(np.array(history_u), 1e-9)\n    angle = np.array(history_psi)\n    drawn = np.array(history_alive)\n    paths = [\n        np.column_stack([-r[drawn[:, i], i] * np.cos(angle[drawn[:, i], i]),\n                         r[drawn[:, i], i] * np.sin(angle[drawn[:, i], i])])\n        for i in range(len(b))\n    ]\n    return paths, captured, psi","code_hash":"f343f6e0284e54c2c0c91d8900b25479","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"Xref","name":"_"},{"code":"mo.md(\"\"\"\n## Single rays\n\nMove the slider to aim a ray past the hole.\n\"\"\")","code_hash":"e41d541da6390272b646ac9c55d74126","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"SFPL","name":"_"},{"code":"aim = mo.ui.slider(\n    start=2.0,\n    stop=12.0,\n    step=0.01,\n    value=round(B_CRITICAL + 0.02, 2),\n    label=\"Impact parameter b (in units of M)\",\n    full_width=True,\n)\naim","code_hash":"96081d2291d75a9da2ba72937492902f","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"BYtC","name":"_"},{"code":"fan_paths, fan_captured, _ = trace(np.linspace(1.5, 11.5, 24))","code_hash":"e266615113bc132388d7563a0203ea8d","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"RGSE","name":"_"},{"code":"(ray,), (ray_captured,), (ray_angle,) = [x[:1] for x in trace([aim.value])]\n\nfig, ax = plt.subplots(figsize=(7, 5.2))\nfor path, fell in zip(fan_paths, fan_captured):\n    ax.plot(*path.T, lw=0.7, color=\"#9a6700\" if fell else \"#8c959f\", alpha=0.55)\nax.plot(*ray.T, lw=2.2, color=\"#cf222e\" if ray_captured else \"#0969da\")\nax.add_patch(plt.Circle((0, 0), 2, color=\"black\", zorder=3))\nax.add_patch(plt.Circle((0, 0), 3, fill=False, ls=\"--\", color=\"#6e7781\", lw=0.8))\nax.set(xlim=(-22, 22), ylim=(-14, 16), aspect=\"equal\", xlabel=\"x / M\", ylabel=\"y / M\")\nax.set_title(\n    f\"b = {aim.value:.2f} M: \"\n    + (\n        \"falls in\"\n        if ray_captured\n        else f\"escapes after turning {np.degrees(ray_angle - np.pi):.0f}° away from straight\"\n    )\n)\nfig.tight_layout()\nfig","code_hash":"abfea029d2e3063791f19bbe1d60df15","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"Kclp","name":"_"},{"code":"mo.md(f\"\"\"\nThe black disc is the event horizon at $r = 2M$. The dashed circle is the\nphoton sphere at $r = 3M$, where light can orbit the hole. Rays aimed with\n$b < 3\\\\sqrt{{3}}\\\\,M \\\\approx {B_CRITICAL:.3f}\\\\,M$ (amber) fall in; rays\naimed just above it wind around the photon sphere before escaping. Set\nthe slider to 5.20 and then to 5.19 to see the boundary.\n\"\"\")","code_hash":"dfd3921b0e3a901e160124d3b5616519","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"emfo","name":"_"},{"code":"mo.md(r\"\"\"\n## Deflection angle against Einstein's prediction\n\nFar from the hole the deflection is small, and Einstein's weak-field\nresult $\\delta = 4M/b$ holds. That is the figure Eddington's 1919\neclipse expedition tested for light grazing the Sun. Close to the hole\nthe full equation departs from it and the deflection grows without\nbound as $b$ approaches the critical value.\n\"\"\")","code_hash":"5748cf59a1e9b3b5f575ade5317a4827","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"Hstk","name":"_"},{"code":"def deflection(b, step=0.002):\n    \"\"\"Total bending of rays that come from and return to infinity (u = 0).\"\"\"\n    u = np.zeros_like(b)\n    du = 1 / b\n    psi = np.zeros_like(b)\n    out = np.full_like(b, np.nan)\n    while np.isnan(out).any() and psi[0] < 8 * np.pi:\n        k1u, k1v = du, 3 * u**2 - u\n        k2u, k2v = du + step / 2 * k1v, 3 * (u + step / 2 * k1u) ** 2 - (u + step / 2 * k1u)\n        k3u, k3v = du + step / 2 * k2v, 3 * (u + step / 2 * k2u) ** 2 - (u + step / 2 * k2u)\n        k4u, k4v = du + step * k3v, 3 * (u + step * k3u) ** 2 - (u + step * k3u)\n        new_u = u + step / 6 * (k1u + 2 * k2u + 2 * k3u + k4u)\n        du = du + step / 6 * (k1v + 2 * k2v + 2 * k3v + k4v)\n        crossed = np.isnan(out) & (new_u < 0) & (psi > 0)\n        out[crossed] = psi[crossed] + step * u[crossed] / (u[crossed] - new_u[crossed])\n        u, psi = new_u, psi + step\n    return out - np.pi\n\nimpact = B_CRITICAL + np.geomspace(0.005, 95, 50)\nbent = np.degrees(deflection(impact))\n\nfig2, ax2 = plt.subplots(figsize=(7, 3.6))\nax2.loglog(impact, bent, color=\"#0969da\", lw=2, label=\"Schwarzschild, integrated\")\nax2.loglog(impact, np.degrees(4 / impact), color=\"#8c959f\", ls=\"--\", label=\"4M/b, weak field\")\nax2.axvline(B_CRITICAL, color=\"#9a6700\", lw=0.8)\nax2.set(xlabel=\"impact parameter b / M\", ylabel=\"deflection (degrees)\")\nax2.legend(frameon=False)\nfig2.tight_layout()\nfig2","code_hash":"134582578dd029161d99ef0a5a9dea19","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"nWHF","name":"_"},{"code":"mo.md(r\"\"\"\n## The shadow of M87*\n\nA distant observer sees a dark disc where rays with $b < 3\\sqrt{3}\\,M$\nwould have come from. Its angular diameter is\n$2 \\cdot 3\\sqrt{3}\\, GM / (c^2 D)$. For the black hole in the galaxy\nM87, with a mass of about 6.5 billion Suns at 16.8 megaparsecs (the\nvalues the Event Horizon Telescope used in 2019), that gives:\n\"\"\")","code_hash":"89fa8ec4d92fdd0cf6b7766d7eb190bf","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"iLit","name":"_"},{"code":"G, c = 6.674e-11, 2.998e8\nM_SUN, MPC = 1.989e30, 3.086e22\nMICROARCSEC = np.radians(1 / 3.6e9)\n\nmass = mo.ui.number(start=0.1, stop=20, step=0.1, value=6.5, label=\"Mass (billion Suns)\")\ndistance = mo.ui.number(start=1, stop=100, step=0.1, value=16.8, label=\"Distance (Mpc)\")\nmo.hstack([mass, distance], justify=\"start\")","code_hash":"1ca2dbb7099b4bc1915fd52a462f4a74","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"ZHCJ","name":"_"},{"code":"theta = 2 * B_CRITICAL * G * mass.value * 1e9 * M_SUN / (c**2 * distance.value * MPC)\nmo.md(\n    f\"\"\"\n    **Shadow diameter: {theta / MICROARCSEC:.1f} microarcseconds.** The Event\n    Horizon Telescope measured a ring of 42 ± 3 microarcseconds\n    (EHT Collaboration 2019, ApJL 875, L1). The ring sits slightly outside\n    the shadow because the light we see is emitted near it.\n    \"\"\"\n)","code_hash":"f3d16dca951e8a8b36a0cd64e8d5f5db","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":false},"id":"ROlb","name":"_"},{"code":"mo.md(\"\"\"\n---\n**Method.** Fourth-order Runge-Kutta in the swept angle, step 0.004 rad\n(0.002 for the deflection curve). The pictured rays start at $r = 60M$;\nthe deflection curve integrates from and back to infinity ($u = 0$). **References.** K. Schwarzschild (1916); S. Chandrasekhar,\n*The Mathematical Theory of Black Holes* (1983), ch. 3; Event Horizon\nTelescope Collaboration, ApJL 875 L1 (2019); J.-P. Luminet, A&A 75 (1979) 228.\nThe disc is thin and Keplerian, emits from $r = 6M$ to $18M$ with a\nPage-Thorne-like profile, and the star field is synthetic.\nFork it to trace a rotating (Kerr) black hole or a thick, turbulent disc.\n\"\"\")","code_hash":"58d3fe22ab84f41aaab3ea655f164768","config":{"column":null,"disabled":false,"expand_output":false,"hide_code":true},"id":"qnkX","name":"_"}],"metadata":{"marimo_version":"0.25.1"},"version":"1"},"session":{"cells":[{"code_hash":"e952de4bf577e9aa6c8997ae29c6d862","console":[],"id":"Hbol","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><h1 id=\"what-a-black-hole-looks-like\">What a black hole looks like</h1>\n<span class=\"paragraph\">Light passing a black hole follows the geometry of spacetime around it.\nFor a non-rotating black hole of mass <marimo-tex class=\"arithmatex\">||(M||)</marimo-tex> that geometry is the\nSchwarzschild solution, and a light ray in its equatorial plane obeys one\nequation (units with <marimo-tex class=\"arithmatex\">||(G = c = 1||)</marimo-tex>, <marimo-tex class=\"arithmatex\">||(u = M/r||)</marimo-tex>, angle <marimo-tex class=\"arithmatex\">||(\\varphi||)</marimo-tex>):</span>\n<marimo-tex class=\"arithmatex\">||[\\frac{d^2u}{d\\varphi^2} + u = 3u^2||]</marimo-tex><span class=\"paragraph\">Without the <marimo-tex class=\"arithmatex\">||(3u^2||)</marimo-tex> term this is a straight line. With it, rays bend, some\ncircle the hole before escaping, and every ray aimed closer than a\ncritical distance falls in. This notebook solves that equation and\nuses it twice: to draw what a camera near the hole would see, and to\nfollow single rays.</span></span>"},"type":"data"}]},{"code_hash":"ef0032c4370d821ec8e83d0954968f66","console":[],"id":"MJUe","outputs":[{"data":{"text/plain":""},"type":"data"}]},{"code_hash":"30f8cc305509f37c0f09c39ed0a9d9b1","console":[],"id":"vblA","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><h2 id=\"the-view-from-nearby\">The view from nearby</h2>\n<span class=\"paragraph\">Surround the hole with a thin, glowing disc of gas, the way matter\nspirals into real black holes, and trace one ray backwards from each\npixel of a camera. Every ray lies in a plane through the hole, so the\nsame equation decides where it meets the disc. Rays that miss the disc\nand escape show the sky behind, displaced by the same bending.</span>\n<span class=\"paragraph\">The left side is brighter because the gas there moves towards the\ncamera (Doppler beaming); the arch over the top and the ring\nunderneath are the far side of the disc, seen around the hole. This is\nthe calculation J.-P. Luminet made by hand in 1979.</span></span>"},"type":"data"}]},{"code_hash":"8a04c32536ec7187d4e72c8b4f2eed9c","console":[],"id":"bkHC","outputs":[{"data":{"text/plain":""},"type":"data"}]},{"code_hash":"28da809e66d273f763b82dcbcce52b2e","console":[],"id":"lEQa","outputs":[{"data":{"text/html":"<marimo-ui-element object-id='lEQa-0' random-id='34b65c45-f73d-fc0a-317f-617ef8c83a5e'><marimo-slider data-initial-value='84' data-label='&quot;&#92;u003cspan class=&#92;&quot;markdown prose dark:prose-invert contents&#92;&quot;&#92;u003e&#92;u003cspan class=&#92;&quot;paragraph&#92;&quot;&#92;u003eCamera angle above the disc axis (degrees)&#92;u003c/span&#92;u003e&#92;u003c/span&#92;u003e&quot;' data-start='0' data-stop='89' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='&quot;horizontal&quot;' data-show-value='false' data-include-input='false' data-full-width='false'></marimo-slider></marimo-ui-element>"},"type":"data"}]},{"code_hash":"2da462aba2bbc9ddcc87c384e0be6aac","console":[],"id":"PKri","outputs":[{"data":{"text/html":"<img src='data:image/png;base64,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' style='width: 100%' />"},"type":"data"}]},{"code_hash":"f343f6e0284e54c2c0c91d8900b25479","console":[],"id":"Xref","outputs":[{"data":{"text/plain":""},"type":"data"}]},{"code_hash":"e41d541da6390272b646ac9c55d74126","console":[],"id":"SFPL","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><h2 id=\"single-rays\">Single rays</h2>\n<span class=\"paragraph\">Move the slider to aim a ray past the hole.</span></span>"},"type":"data"}]},{"code_hash":"96081d2291d75a9da2ba72937492902f","console":[],"id":"BYtC","outputs":[{"data":{"text/html":"<marimo-ui-element object-id='BYtC-0' random-id='c1f8d7d6-3f5a-60af-68fb-be995e024a10'><marimo-slider data-initial-value='5.22' data-label='&quot;&#92;u003cspan class=&#92;&quot;markdown prose dark:prose-invert contents&#92;&quot;&#92;u003e&#92;u003cspan class=&#92;&quot;paragraph&#92;&quot;&#92;u003eImpact parameter b (in units of M)&#92;u003c/span&#92;u003e&#92;u003c/span&#92;u003e&quot;' data-start='2.0' data-stop='12.0' data-step='0.01' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='&quot;horizontal&quot;' data-show-value='false' data-include-input='false' data-full-width='true'></marimo-slider></marimo-ui-element>"},"type":"data"}]},{"code_hash":"e266615113bc132388d7563a0203ea8d","console":[],"id":"RGSE","outputs":[{"data":{"text/plain":""},"type":"data"}]},{"code_hash":"abfea029d2e3063791f19bbe1d60df15","console":[],"id":"Kclp","outputs":[{"data":{"application/vnd.marimo+mimebundle":"{\"image/png\":\"https://p2j4pbtl235yosvw3py3eyieiv.notebooks.sciencehubusercontent.com/_outputs/eyJuYW1lc3BhY2VJZCI6Im5zLXdicjZya2tkOWZqMG1neGUiLCJwcm9qZWN0SWQiOiJwcm9qLThkODEyY2o2M3dmMjZzMjYiLCJub3RlYm9va0lkIjoibmItN2JreXZ5cmJ4eHJnc3o2ZSIsImhhc2giOiJhOTFmMmViNDVlNzM3OGQ2NWIxZTEzN2U3ZTljZDY0MyJ9.0.Q7QJ0-ol9F9wnkEChQ6Ve-dahum0SnUVNqqfiW-1ji0\",\"__metadata__\":{\"image/png\":{\"width\":690,\"height\":501}}}"},"type":"data"}]},{"code_hash":"dfd3921b0e3a901e160124d3b5616519","console":[],"id":"emfo","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><span class=\"paragraph\">The black disc is the event horizon at <marimo-tex class=\"arithmatex\">||(r = 2M||)</marimo-tex>. The dashed circle is the\nphoton sphere at <marimo-tex class=\"arithmatex\">||(r = 3M||)</marimo-tex>, where light can orbit the hole. Rays aimed with\n<marimo-tex class=\"arithmatex\">||(b &lt; 3\\sqrt{3}\\,M \\approx 5.196\\,M||)</marimo-tex> (amber) fall in; rays\naimed just above it wind around the photon sphere before escaping. Set\nthe slider to 5.20 and then to 5.19 to see the boundary.</span></span>"},"type":"data"}]},{"code_hash":"5748cf59a1e9b3b5f575ade5317a4827","console":[],"id":"Hstk","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><h2 id=\"deflection-angle-against-einsteins-prediction\">Deflection angle against Einstein's prediction</h2>\n<span class=\"paragraph\">Far from the hole the deflection is small, and Einstein's weak-field\nresult <marimo-tex class=\"arithmatex\">||(\\delta = 4M/b||)</marimo-tex> holds. That is the figure Eddington's 1919\neclipse expedition tested for light grazing the Sun. Close to the hole\nthe full equation departs from it and the deflection grows without\nbound as <marimo-tex class=\"arithmatex\">||(b||)</marimo-tex> approaches the critical value.</span></span>"},"type":"data"}]},{"code_hash":"134582578dd029161d99ef0a5a9dea19","console":[],"id":"nWHF","outputs":[{"data":{"application/vnd.marimo+mimebundle":"{\"image/png\":\"https://p2j4pbtl235yosvw3py3eyieiv.notebooks.sciencehubusercontent.com/_outputs/eyJuYW1lc3BhY2VJZCI6Im5zLXdicjZya2tkOWZqMG1neGUiLCJwcm9qZWN0SWQiOiJwcm9qLThkODEyY2o2M3dmMjZzMjYiLCJub3RlYm9va0lkIjoibmItN2JreXZ5cmJ4eHJnc3o2ZSIsImhhc2giOiJlNDE0NTliMmExZjE1ZmFlZjU3Y2YyMTdlNDFhODRkMSJ9.0.EP7asJhZQG9lPzKuRxRMWD2oQ9j3KGyJ7Cgq1Z7T-FE\",\"__metadata__\":{\"image/png\":{\"width\":689,\"height\":346}}}"},"type":"data"}]},{"code_hash":"89fa8ec4d92fdd0cf6b7766d7eb190bf","console":[],"id":"iLit","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><h2 id=\"the-shadow-of-m87\">The shadow of M87*</h2>\n<span class=\"paragraph\">A distant observer sees a dark disc where rays with <marimo-tex class=\"arithmatex\">||(b &lt; 3\\sqrt{3}\\,M||)</marimo-tex>\nwould have come from. Its angular diameter is\n<marimo-tex class=\"arithmatex\">||(2 \\cdot 3\\sqrt{3}\\, GM / (c^2 D)||)</marimo-tex>. For the black hole in the galaxy\nM87, with a mass of about 6.5 billion Suns at 16.8 megaparsecs (the\nvalues the Event Horizon Telescope used in 2019), that gives:</span></span>"},"type":"data"}]},{"code_hash":"1ca2dbb7099b4bc1915fd52a462f4a74","console":[],"id":"ZHCJ","outputs":[{"data":{"text/html":"<div style='display: flex;flex: 1;flex-direction: row;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem'><marimo-ui-element object-id='ZHCJ-0' random-id='5e85db8d-28bd-1c57-af56-877bf09ec13a'><marimo-number data-initial-value='6.5' data-label='&quot;&#92;u003cspan class=&#92;&quot;markdown prose dark:prose-invert contents&#92;&quot;&#92;u003e&#92;u003cspan class=&#92;&quot;paragraph&#92;&quot;&#92;u003eMass (billion Suns)&#92;u003c/span&#92;u003e&#92;u003c/span&#92;u003e&quot;' data-start='0.1' data-stop='20' data-step='0.1' data-debounce='false' data-full-width='false' data-disabled='false'></marimo-number></marimo-ui-element><marimo-ui-element object-id='ZHCJ-1' random-id='f7dca86a-28ec-d8e1-3666-7d7a19b2347b'><marimo-number data-initial-value='16.8' data-label='&quot;&#92;u003cspan class=&#92;&quot;markdown prose dark:prose-invert contents&#92;&quot;&#92;u003e&#92;u003cspan class=&#92;&quot;paragraph&#92;&quot;&#92;u003eDistance (Mpc)&#92;u003c/span&#92;u003e&#92;u003c/span&#92;u003e&quot;' data-start='1' data-stop='100' data-step='0.1' data-debounce='false' data-full-width='false' data-disabled='false'></marimo-number></marimo-ui-element></div>"},"type":"data"}]},{"code_hash":"f3d16dca951e8a8b36a0cd64e8d5f5db","console":[],"id":"ROlb","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><span class=\"paragraph\"><strong>Shadow diameter: 39.7 microarcseconds.</strong> The Event\nHorizon Telescope measured a ring of 42 ± 3 microarcseconds\n(EHT Collaboration 2019, ApJL 875, L1). The ring sits slightly outside\nthe shadow because the light we see is emitted near it.</span></span>"},"type":"data"}]},{"code_hash":"58d3fe22ab84f41aaab3ea655f164768","console":[],"id":"qnkX","outputs":[{"data":{"text/markdown":"<span class=\"markdown prose dark:prose-invert contents\"><hr />\n<span class=\"paragraph\"><strong>Method.</strong> Fourth-order Runge-Kutta in the swept angle, step 0.004 rad\n(0.002 for the deflection curve). The pictured rays start at <marimo-tex class=\"arithmatex\">||(r = 60M||)</marimo-tex>;\nthe deflection curve integrates from and back to infinity (<marimo-tex class=\"arithmatex\">||(u = 0||)</marimo-tex>). <strong>References.</strong> K. Schwarzschild (1916); S. Chandrasekhar,\n<em>The Mathematical Theory of Black Holes</em> (1983), ch. 3; Event Horizon\nTelescope Collaboration, ApJL 875 L1 (2019); J.-P. Luminet, A&amp;A 75 (1979) 228.\nThe disc is thin and Keplerian, emits from <marimo-tex class=\"arithmatex\">||(r = 6M||)</marimo-tex> to <marimo-tex class=\"arithmatex\">||(18M||)</marimo-tex> with a\nPage-Thorne-like profile, and the star field is synthetic.\nFork it to trace a rotating (Kerr) black hole or a thick, turbulent disc.</span></span>"},"type":"data"}]}],"metadata":{"marimo_version":"0.25.1","script_metadata_hash":null},"version":"1"},"appConfig":{"sql_output":"auto","width":"compact"},"layout":null,"renderedOn":"browser","formulas":{"||(M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(G = c = 1||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord mathnormal\">G</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">c</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">1</span></span></span></span>","||(u = M/r||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">u</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:1em;vertical-align:-0.25em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span><span class=\"mord\">/</span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r</span></span></span></span>","||(\\varphi||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.625em;vertical-align:-0.1944em;\"></span><span class=\"mord mathnormal\">φ</span></span></span></span>","||[\\frac{d^2u}{d\\varphi^2} + u = 3u^2||]":"<span class=\"katex-display\"><span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:2.3715em;vertical-align:-0.8804em;\"></span><span class=\"mord\"><span class=\"mopen nulldelimiter\"></span><span class=\"mfrac\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:1.4911em;\"><span style=\"top:-2.314em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord mathnormal\">d</span><span class=\"mord\"><span class=\"mord mathnormal\">φ</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.7401em;\"><span style=\"top:-2.989em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"katex-sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span><span style=\"top:-3.23em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"frac-line\" style=\"border-bottom-width:0.04em;\"></span></span><span style=\"top:-3.677em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\"><span class=\"mord\"><span class=\"mord mathnormal\">d</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"katex-sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span><span class=\"mord mathnormal\">u</span></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8804em;\"><span></span></span></span></span></span><span class=\"mclose nulldelimiter\"></span></span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">+</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">u</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.8641em;\"></span><span class=\"mord\">3</span><span class=\"mord\"><span class=\"mord mathnormal\">u</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8641em;\"><span style=\"top:-3.113em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"katex-sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span></span></span>","||(3u^2||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.8141em;\"></span><span class=\"mord\">3</span><span class=\"mord\"><span class=\"mord mathnormal\">u</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"katex-sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span></span></span></span>","||(r = 2M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">2</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(r = 3M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">3</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(b < 3\\sqrt{3}\\,M \\approx 5.196\\,M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.7335em;vertical-align:-0.0391em;\"></span><span class=\"mord mathnormal\">b</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">&lt;</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:1.04em;vertical-align:-0.1328em;\"></span><span class=\"mord\">3</span><span class=\"mord sqrt\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9072em;\"><span class=\"svg-align\" style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\" style=\"padding-left:0.833em;\"><span class=\"mord\">3</span></span></span><span style=\"top:-2.8672em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"hide-tail\" style=\"min-width:0.853em;height:1.08em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400em\" height=\"1.08em\" viewBox=\"0 0 400000 1080\" preserveAspectRatio=\"xMinYMin slice\"><path d=\"M95,702\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl0 -0\nc5.3,-9.3,12,-14,20,-14\nH400000v40H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM834 80h400000v40h-400000z\"/></svg></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.1328em;\"><span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">≈</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">5.196</span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(\\delta = 4M/b||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6944em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0379em;\">δ</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:1em;vertical-align:-0.25em;\"></span><span class=\"mord\">4</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span><span class=\"mord\">/</span><span class=\"mord mathnormal\">b</span></span></span></span>","||(b||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6944em;\"></span><span class=\"mord mathnormal\">b</span></span></span></span>","||(b < 3\\sqrt{3}\\,M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.7335em;vertical-align:-0.0391em;\"></span><span class=\"mord mathnormal\">b</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">&lt;</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:1.04em;vertical-align:-0.1328em;\"></span><span class=\"mord\">3</span><span class=\"mord sqrt\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9072em;\"><span class=\"svg-align\" style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\" style=\"padding-left:0.833em;\"><span class=\"mord\">3</span></span></span><span style=\"top:-2.8672em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"hide-tail\" style=\"min-width:0.853em;height:1.08em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400em\" height=\"1.08em\" viewBox=\"0 0 400000 1080\" preserveAspectRatio=\"xMinYMin slice\"><path d=\"M95,702\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl0 -0\nc5.3,-9.3,12,-14,20,-14\nH400000v40H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM834 80h400000v40h-400000z\"/></svg></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.1328em;\"><span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(2 \\cdot 3\\sqrt{3}\\, GM / (c^2 D)||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">2</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span><span class=\"mbin\">⋅</span><span class=\"mspace\" style=\"margin-right:0.2222em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:1.1572em;vertical-align:-0.25em;\"></span><span class=\"mord\">3</span><span class=\"mord sqrt\"><span class=\"vlist-t vlist-t2\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.9072em;\"><span class=\"svg-align\" style=\"top:-3em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"mord\" style=\"padding-left:0.833em;\"><span class=\"mord\">3</span></span></span><span style=\"top:-2.8672em;\"><span class=\"pstrut\" style=\"height:3em;\"></span><span class=\"hide-tail\" style=\"min-width:0.853em;height:1.08em;\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"400em\" height=\"1.08em\" viewBox=\"0 0 400000 1080\" preserveAspectRatio=\"xMinYMin slice\"><path d=\"M95,702\nc-2.7,0,-7.17,-2.7,-13.5,-8c-5.8,-5.3,-9.5,-10,-9.5,-14\nc0,-2,0.3,-3.3,1,-4c1.3,-2.7,23.83,-20.7,67.5,-54\nc44.2,-33.3,65.8,-50.3,66.5,-51c1.3,-1.3,3,-2,5,-2c4.7,0,8.7,3.3,12,10\ns173,378,173,378c0.7,0,35.3,-71,104,-213c68.7,-142,137.5,-285,206.5,-429\nc69,-144,104.5,-217.7,106.5,-221\nl0 -0\nc5.3,-9.3,12,-14,20,-14\nH400000v40H845.2724\ns-225.272,467,-225.272,467s-235,486,-235,486c-2.7,4.7,-9,7,-19,7\nc-6,0,-10,-1,-12,-3s-194,-422,-194,-422s-65,47,-65,47z\nM834 80h400000v40h-400000z\"/></svg></span></span></span><span class=\"vlist-s\">​</span></span><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.1328em;\"><span></span></span></span></span></span><span class=\"mspace\" style=\"margin-right:0.1667em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">GM</span><span class=\"mord\">/</span><span class=\"mopen\">(</span><span class=\"mord\"><span class=\"mord mathnormal\">c</span><span class=\"msupsub\"><span class=\"vlist-t\"><span class=\"vlist-r\"><span class=\"vlist\" style=\"height:0.8141em;\"><span style=\"top:-3.063em;margin-right:0.05em;\"><span class=\"pstrut\" style=\"height:2.7em;\"></span><span class=\"katex-sizing reset-size6 size3 mtight\"><span class=\"mord mtight\">2</span></span></span></span></span></span></span></span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">D</span><span class=\"mclose\">)</span></span></span></span>","||(r = 60M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">60</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(u = 0||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\">u</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6444em;\"></span><span class=\"mord\">0</span></span></span></span>","||(r = 6M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.4306em;\"></span><span class=\"mord mathnormal\" style=\"margin-right:0.0278em;\">r</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span><span class=\"mrel\">=</span><span class=\"mspace\" style=\"margin-right:0.2778em;\"></span></span><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">6</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>","||(18M||)":"<span class=\"katex\"><span class=\"katex-html\" aria-hidden=\"true\"><span class=\"katex-base\"><span class=\"katex-strut\" style=\"height:0.6833em;\"></span><span class=\"mord\">18</span><span class=\"mord mathnormal\" style=\"margin-right:0.109em;\">M</span></span></span></span>"}}}