226 lines
73 KiB
Plaintext
226 lines
73 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "159a812b",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import sympy as sp\n",
|
|
"import matplotlib.pyplot as plt"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "38083811",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Interpolation\n",
|
|
"\n",
|
|
"Fitting\n",
|
|
"\n",
|
|
"* Exact Fit\n",
|
|
" * Interpolation\n",
|
|
" * Extrapolation\n",
|
|
"* Approximate fit?\n",
|
|
"\n",
|
|
"## Weierstrass Approximation Theorem\n",
|
|
"\n",
|
|
"> Suppose that $f$ is defined and continuous on $[a, \\,b]$.\n",
|
|
"> Foreach $\\epsilon > 0$, there exists a polynomial $P(x)$ defined on $[a,\\, b]$, with the property that\n",
|
|
"> $$|f(x)-P(x)| < \\epsilon,\\quad \\forall x \\in [a,\\,b]$$"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "1f9175f6",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Lagrange Interpolating Polynomial\n",
|
|
"\n",
|
|
"Think about $L_i(x)$\n",
|
|
"\n",
|
|
"$P_n(x) = \\sum_{i=0}^{n} {L_i(x)f_i}$\n",
|
|
"\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "bbc6b078",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"x = sp.Symbol(\"x\")\n",
|
|
"f = [0, np.sin(1.0), np.sin(2.4), np.sin(3.2)]\n",
|
|
"p = [0, 1.0, 2.4, 3.2]\n",
|
|
"\n",
|
|
"L0 = (x - p[1]) / (p[0] - p[1]) * (x - p[2]) / (p[0] - p[2]) * (x - p[3]) / (p[0] - p[3])\n",
|
|
"L1 = (x - p[0]) / (p[1] - p[0]) * (x - p[2]) / (p[1] - p[2]) * (x - p[3]) / (p[1] - p[3])\n",
|
|
"L2 = (x - p[0]) / (p[2] - p[0]) * (x - p[1]) / (p[2] - p[1]) * (x - p[3]) / (p[2] - p[3])\n",
|
|
"L3 = (x - p[0]) / (p[3] - p[0]) * (x - p[1]) / (p[3] - p[1]) * (x - p[2]) / (p[3] - p[2])\n",
|
|
"\n",
|
|
"P = L0 * f[0] + L1 * f[1] + L2 * f[2] + L3 * f[3]\n",
|
|
"\n",
|
|
"l = np.linspace(-0.4, 3.6)\n",
|
|
"plt.plot(l, np.sin(l), color='blue', label=\"sin(x)\")\n",
|
|
"plt.scatter(p, f, color='blue')\n",
|
|
"plt.plot(l, [P.subs({x : t}) for t in l], color='red', label='lagrange polynomial')\n",
|
|
"plt.legend()\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "2d80e723",
|
|
"metadata": {},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "224c1596",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Differences\n",
|
|
"\n",
|
|
"### Divided Differences"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "36c82e32",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Newton's Forward Difference"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "cc03cbcd",
|
|
"metadata": {},
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "c2f87bb8",
|
|
"metadata": {},
|
|
"source": [
|
|
"## Spline Interpolation\n",
|
|
"\n",
|
|
"* linear spline\n",
|
|
"* quadratic spline\n",
|
|
"* cubic spline\n"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 13,
|
|
"id": "a02b146a",
|
|
"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.array([0, 1, 2, 5])\n",
|
|
"y = np.array([3, 5, 2, 4])\n",
|
|
"\n",
|
|
"t = np.linspace(0, 1)\n",
|
|
"\n",
|
|
"spline1 = lambda x, i, t: x[i + 1] * (t) + x[i] * (1 - t)\n",
|
|
"\n",
|
|
"\n",
|
|
"def get_spline2s(x, y):\n",
|
|
" n = len(x) - 1\n",
|
|
"\n",
|
|
" A = np.zeros(n)\n",
|
|
" B = np.zeros(n)\n",
|
|
" C = np.zeros(n)\n",
|
|
"\n",
|
|
" dx = np.diff(x)\n",
|
|
" dy = np.diff(y)\n",
|
|
"\n",
|
|
" z = np.zeros(n + 1)\n",
|
|
" z[0] = 6\n",
|
|
" for i in range(n):\n",
|
|
" slope = dy[i] / dx[i]\n",
|
|
" z[i + 1] = 2 * slope - z[i]\n",
|
|
"\n",
|
|
" for i in range(n):\n",
|
|
" C[i] = y[i]\n",
|
|
" B[i] = z[i]\n",
|
|
" A[i] = (dy[i] - z[i] * dx[i]) / (dx[i] ** 2)\n",
|
|
"\n",
|
|
" return A, B, C\n",
|
|
"\n",
|
|
"def spline2(i, t, A, B, C, x_knots):\n",
|
|
" h_i = x_knots[i+1] - x_knots[i]\n",
|
|
" \n",
|
|
" x_val = x_knots[i] * (1 - t) + x_knots[i+1] * t\n",
|
|
" \n",
|
|
" dx_t = h_i * t\n",
|
|
" y_val = A[i] * dx_t**2 + B[i] * dx_t + C[i]\n",
|
|
" \n",
|
|
" return x_val, y_val\n",
|
|
"\n",
|
|
"A, B, C = get_spline2s(x, y)\n",
|
|
"\n",
|
|
"for i in range(len(x) - 1):\n",
|
|
" plt.plot(spline1(x, i, t), spline1(y, i, t), color=\"blue\")\n",
|
|
" plt.plot(spline2(i, t, A, B, C, x)[0], spline2(i, t, A, B, C, x)[1], color='orange')\n",
|
|
"plt.show()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1d2a605c",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"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
|
|
}
|