{ "cells": [ { "cell_type": "code", "execution_count": 1, "id": "8f8630bf", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "id": "9751d328", "metadata": {}, "source": [ "# Floating Point\n", "\n", "**Double Precision Floating Point Number Representation**\n", "\n", "$$(-1)^s \\times 2^{c-1023} \\times (1+f)$$\n", "\n", "* $s$: sign bit\n", "* $c$: 11 bit exponent\n", "* $f$: 52 bit fraction" ] }, { "cell_type": "markdown", "id": "9c0b5413", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "964d247f", "metadata": {}, "source": [] }, { "cell_type": "markdown", "id": "6f7aef85", "metadata": {}, "source": [ "# Root Finding\n", "\n", "When there is no or hard to find analytic solution.\n", "\n", "* General procedure of root finding\n", "\n", "\n", "## Incremental Search\n", "\n", "Detecting a sign change in the interval $[x, dx]$\n", "\n", "\n", "## Bracketing Method\n", "\n", "* there must be a solution in a given interval $[a,b]$\n", "* reducing the interval systematically\n", "* [Merit]Convergence to an exact solution\n", "\n", "Methods:\n", "* bisection\n", "* linear interpolation\n", "\n", "## Open Method\n", "\n", "* starting from an arbitrary point, find the root based on a regular iteration\n", "* [Risk] divergence\n", "* [Merit] faster than _bracketing_\n", "\n", "Methods:\n", "* fixed-point iter\n", "* Newton-Raphson method\n", "* secant method\n", "* Muller method\n" ] }, { "cell_type": "markdown", "id": "2649c3d4", "metadata": {}, "source": [ "## Bisection Method\n", "based on the principle: **A solution must exists in $[x_1, x_2]$ if $f(x_1)f(x_2) < 0$**\n", "\n", "so interval reduces by half at each iteration.\n", "\n", "* simple\n", "* maximum error $<$ (initial interval/$2^n$)\n", "* slow converge\n", "* cannot cope with multiple roots" ] }, { "cell_type": "markdown", "id": "ef80f29d", "metadata": {}, "source": [ "## Linear Interpolation Method(False Position Method)\n", "\n", "An interval $[a_{n+1}, b_{n+1}]$, containing an approximation of $f(x) = 0$, is found from an interval $[a_n, b_n]$\n", "\n", "$$p_{n+1} = a_n - \\frac{f(a_n)(b_n-a_n)}{f(b_n) - f(a_n)}$$\n", "\n", "then set $$\\begin{cases}\n", "a_{n+1} = a_n, b_{n+1} = p_{n+1} &\\quad \\text{if} f(a_n)f(p_{n+1}) < 0\\\\\n", "a_{n+1} = p_{n+1}, b_{n+1} = b_n &\\quad \\text{else}\n", "\\end{cases}$$\n", "\n", "* faster convergence than bisection\n", "* convergence speed depends on **curvature**\n", "\n", "\n", "\n", "### Modified Linear Interpolation\n", "\n" ] }, { "cell_type": "markdown", "id": "856f5bbf", "metadata": {}, "source": [ "## Newton-Raphson Method\n", "\n", "\n", "* **fast convergence**: quadratic convergence\n", "* Inefficient if **the derivative calculation is complex**\n", "* Initial guess matter\n", " * Cycling\n", " * Wandering\n", " * Overshooting(a root the methods get is not the root I wanted)" ] }, { "cell_type": "markdown", "id": "cf78e848", "metadata": {}, "source": [ "## Secant Method\n", "\n", "$$p_{n+1} = p_n - \\frac{f(p_n)(p_n - p_{n-1})}{f(p_n) - f(p_{n-1})}$$\n", "\n", "Similar to linear interpolation but update rule is different.\n", "\n", "* fast convergence than **linear interpolation**\n", "* more stable than Newton-Raphson\n", " * but convergence is slower than Newton-Raphson" ] }, { "cell_type": "code", "execution_count": 2, "id": "167cae2f", "metadata": {}, "outputs": [ { "data": { "image/png": "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tixeHXz/a5tOnDgBwFNPPXXPvEWLFuXy5cuEh4dz6dIlbt68yRNPPHFPu/vNKyLqIyKSJHl5eVG2bFnKli3Lk08+SadOnZg5cyb9+/fH4XBgs9lYvHgx7u7u98wb37E2AgMD+euvv3j33XcpWbIk6dKlw+FwULt2bRwOxz3t77dOAGNMvNb7IK1bt6Zfv3506dKFTJkyUbNmzfu2u13bpEmTyJ49+z3Pe3jE/evN2dskIg+mICKSxJUpUwawDg+A1fHTGEOBAgV48sknHzjf7Q6iu3fvpnr16vdtc+3aNVauXMmnn37KJ598EjP99t6GR/U4I4jmzZuXChUqsGbNGl5//fUHBorb25c1a9YHbl9C1ANWR2KAAwcO3PPc/v37yZw5M2nTpsXHxwdfX9/7/v3uN6+I6NCMSJKxevXq+/4P/Hb/g9u79ps2bYq7uzuffvrpPe2NMTGn3ZYqVYoCBQowdOhQrl+/fk87uLMn4O7lDB069LG2JW3atPesMz4+//xz+vfvT69evR7YplatWvj7+/Pll18SFRV1z/OXLl2KVQ/wyDXlyJGDkiVLMmHChFjL2L17N8uWLaNu3bqA9fesVasW8+bN4+TJkzHt9u3bx9KlSx9p3SIpnfaIiCQRvXr14saNGzRp0oQiRYoQGRnJX3/9xYwZM8ifPz+dOnUCrD0Bn3/+Of369eP48eM0btwYPz8/jh07xty5c+natSvvvPMObm5ujBo1igYNGlCyZEk6depEjhw52L9/P3v27GHp0qX4+/tTuXJlhgwZQlRUFLly5WLZsmUcO3bssbaldOnSrFixgu+++46cOXNSoEABypUrF+f5X3rpJV566aWHtvH392fUqFG0a9eOUqVK0apVK7JkycLJkyf5/fffqVChAiNGjIipB+DNN9+kVq1auLu706pVq3ht09dff02dOnUoX748r776aszpuwEBAbGGj//0009ZsmQJlSpV4o033iA6Oprhw4dTrFgxdu7cGa91iqQKLjtfR0RiWbx4sencubMpUqSISZcunfHy8jKFCxc2vXr1MhcuXLin/ezZs03FihVN2rRpTdq0aU2RIkVMjx49zIEDB2K1W79+valRo4bx8/MzadOmNSVKlDDDhw+Pef706dOmSZMmJn369CYgIMC0aNHCnD171gCmf//+Me1un7576dKlWMsfN26cAcyx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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = np.linspace(0, 4)\n", "\n", "f = lambda t: t**2 - 5\n", "y = f(x)\n", "\n", "p = [0.5, 3.5]\n", "\n", "for _ in range(2):\n", " p.append(p[-1] - f(p[-1]) * (p[-1] - p[-2]) / (f(p[-1]) - f(p[-2])))\n", "\n", "p = np.array(p)\n", "plt.plot(\n", " p,\n", " np.zeros_like(p),\n", " \"ro\",\n", ")\n", "for i, p0 in enumerate(p):\n", " plt.text(p0 + 0.05, 0.1, f\"$p_{i}$\", size=16, color=\"black\", va=\"bottom\")\n", "\n", "plt.plot(p, f(p), \"ro\")\n", "\n", "for pos in p:\n", " _y = [0, f(pos)]\n", " plt.vlines(pos, min(_y), max(_y), color=\"red\")\n", "\n", "for p0, p1 in zip(p[:-1], p[1:]):\n", " plt.plot([p0, p1], [f(p0), f(p1)], color=\"green\")\n", "\n", "plt.title(\"Secant Method\")\n", "plt.plot(x, y, color=\"blue\")\n", "plt.hlines(0, 0, 4, color=\"black\")\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "17e94fbf", "metadata": {}, "source": [ "## Fixed Point Iteration\n", "\n", "principle: $f(x) = 0 \\to x = g(x)$\n", "\n", "$$x_{k+1} = g(x_k)$$\n" ] }, { "cell_type": "markdown", "id": "4cc731ad", "metadata": {}, "source": [ "## Muller Method" ] }, { "cell_type": "markdown", "id": "c3702bdd", "metadata": {}, "source": [ "## Error Analysis" ] }, { "cell_type": "markdown", "id": "c0e38d45", "metadata": {}, "source": [ "## Accelerating Convergence\n" ] }, { "cell_type": "markdown", "id": "1e7717a7", "metadata": {}, "source": [ "## Fail-safe Methods\n" ] } ], "metadata": { "kernelspec": { "display_name": "2025-02-Numerical (3.12.11)", "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.12.11" } }, "nbformat": 4, "nbformat_minor": 5 }