{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Playing with Barycentric Interpolation\n", "\n", "Copyright (C) 2020 Andreas Kloeckner\n", "\n", "
\n", "MIT License\n", "Permission is hereby granted, free of charge, to any person obtaining a copy\n", "of this software and associated documentation files (the \"Software\"), to deal\n", "in the Software without restriction, including without limitation the rights\n", "to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n", "copies of the Software, and to permit persons to whom the Software is\n", "furnished to do so, subject to the following conditions:\n", "\n", "The above copyright notice and this permission notice shall be included in\n", "all copies or substantial portions of the Software.\n", "\n", "THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n", "IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n", "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n", "AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n", "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n", "OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n", "THE SOFTWARE.\n", "
" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "x = np.linspace(-1, 1, 5)\n", "xx = np.linspace(-1, 1, 100)\n", "\n", "def f(x):\n", " return np.sin(5/(1.6-x))" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(xx, f(xx))\n", "plt.plot(x, f(x), \"o\")" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-1.0, -1.0)" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dmat = x.reshape(-1, 1) - x\n", "np.fill_diagonal(dmat, 1)\n", "dmat[0, 2], x[0]-x[2]" ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0.66666667, -2.66666667, 4. , -2.66666667, 0.66666667])" ] }, "execution_count": 128, "metadata": {}, "output_type": "execute_result" } ], "source": [ "w = 1/dmat.prod(axis=1)\n", "w" ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [], "source": [ "def bary_first_form(z, f):\n", " z = z[:, np.newaxis]\n", " ell = (z-x).prod(axis=-1)\n", " return ell * (w / (z - x) * f(x)).sum(axis=-1)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/andreas/src/env-3.7/lib/python3.7/site-packages/ipykernel_launcher.py:4: RuntimeWarning: divide by zero encountered in true_divide\n", " after removing the cwd from sys.path.\n", "/home/andreas/src/env-3.7/lib/python3.7/site-packages/ipykernel_launcher.py:4: RuntimeWarning: invalid value encountered in multiply\n", " after removing the cwd from sys.path.\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(xx, bary_first_form(xx, f))\n", "plt.plot(xx, f(xx))" ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "def bary_second_form(z, f, weights=None):\n", " if weights is None:\n", " weights = w\n", " z = z[:, np.newaxis]\n", " num = (weights / (z - x) * f(x)).sum(axis=-1)\n", " denom = (weights / (z - x)).sum(axis=-1)\n", " return num/denom" ] }, { "cell_type": "code", "execution_count": 140, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/andreas/src/env-3.7/lib/python3.7/site-packages/ipykernel_launcher.py:5: RuntimeWarning: divide by zero encountered in true_divide\n", " \"\"\"\n", "/home/andreas/src/env-3.7/lib/python3.7/site-packages/ipykernel_launcher.py:6: RuntimeWarning: divide by zero encountered in true_divide\n", " \n", "/home/andreas/src/env-3.7/lib/python3.7/site-packages/ipykernel_launcher.py:7: RuntimeWarning: invalid value encountered in true_divide\n", " import sys\n" ] }, { "data": { "text/plain": [ "(-2, 2)" ] }, "execution_count": 140, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "wr = w.copy()\n", "wr[:] = np.random.randn(len(x))\n", "\n", "plt.plot(xx, bary_second_form(xx, f))\n", "plt.plot(xx, bary_second_form(xx, f, weights=wr))\n", "plt.plot(xx, f(xx))\n", "plt.plot(x, f(x), \"o\")\n", "plt.ylim([-2, 2])" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }