initial commit
This commit is contained in:
commit
d4dff245bd
12 files changed
+2188
No files matched your search
@@ -0,0 +1,3 @@
|
|||||||
|
[attr] lfs-file filter=lfs diff=lfs merge=lfs -text
|
||||||
|
|
||||||
|
*.pdf lfs-file
|
||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
# Python-generated files
|
||||||
|
__pycache__/
|
||||||
|
*.py[oc]
|
||||||
|
build/
|
||||||
|
dist/
|
||||||
|
wheels/
|
||||||
|
*.egg-info
|
||||||
|
|
||||||
|
# Virtual environments
|
||||||
|
.venv
|
||||||
|
|
||||||
|
#
|
||||||
|
.vscode
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
3.12
|
||||||
@@ -0,0 +1,273 @@
|
|||||||
|
{
|
||||||
|
"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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 truncated
|
||||||
|
"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
|
||||||
|
}
|
||||||
Whitespace-only changes.
Whitespace-only changes.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,11 @@
|
|||||||
|
[project]
|
||||||
|
name = "2025-02-numerical"
|
||||||
|
version = "0.1.0"
|
||||||
|
description = "Add your description here"
|
||||||
|
readme = "README.md"
|
||||||
|
requires-python = ">=3.12"
|
||||||
|
dependencies = [
|
||||||
|
"jupyter>=1.1.1",
|
||||||
|
"matplotlib>=3.10.6",
|
||||||
|
"numpy>=2.3.2",
|
||||||
|
]
|
||||||
Reference in new issue
Block a user