274 lines
42 KiB
Plaintext
274 lines
42 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"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": 36,
|
|
"id": "167cae2f",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"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": "Python 3",
|
|
"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
|
|
}
|