Skip to content

Instantly share code, notes, and snippets.

@ajfriend
Last active May 24, 2022 16:23
Show Gist options
  • Save ajfriend/1f2975d572fac598d212bb45661f2172 to your computer and use it in GitHub Desktop.
Save ajfriend/1f2975d572fac598d212bb45661f2172 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "1eaaa197-8031-4f6e-a1ef-ae3c859f9dd2",
"metadata": {},
"source": [
"# Piecewise exponential functions\n",
"\n",
"- Let $x = (x_0, \\ldots, x_{N-1}) \\in \\mathbf{R}^N_+$ be an array of x-axis knots for our \"piecewise exponential\" (PWE) function $f: [0, +\\infty) \\to (0, 1]$.\n",
"- We'll require $x_0$ = 0, and that $x_i < x_{i+1}$.\n",
"- For notational convenience, define $x_{N} = +\\infty$.\n",
"- Let $\\beta \\in \\mathbf{R}^N$ be an array describing the \"exponential components\" of $f$.\n",
"- We'll require only that $\\beta \\leq 0$, but it may be, for example, increasing, decreasing, or unordered.\n",
"\n",
"Let $v \\in \\mathbf{R}_+$ be some value in the interval $[x_i, x_{i+1}]$. Over this interval, we'll have that $f(v)$ is **proportional** to an exponential function involving the $\\beta_i$ component. That is:\n",
"\n",
"$$\n",
"f(v) \\propto e^{\\beta_i (v - x_i)}\n",
"$$\n",
"\n",
"For example, $\\beta_0$ is \"active\" over the interval $[x_0, x_1]$,\n",
"and $\\beta_{N-1}$ is active over the interval $[x_{N-1}, +\\infty)$."
]
},
{
"cell_type": "markdown",
"id": "c83402c6-f411-4027-9033-b4fa576ddad7",
"metadata": {},
"source": [
"## Definition\n",
"\n",
"For a scalar $v \\in \\mathbf{R}_+$ we can define a vector $y \\in \\mathbf{R}^N_+$ as\n",
"\n",
"$$\n",
"y_i = \\min\\left[ \\max(0, v - x_i), x_{i+1} - x_{i} \\right],\\quad \\forall\\ i=0, \\ldots, N-1.\n",
"$$\n",
"\n",
"Note that $y_i$ is the result of clipping the $v - x_i$ value to be within the interval\n",
"$[0, x_{i+1} - x_{i}]$.\n",
"\n",
"Then we have that\n",
"\n",
"$$\n",
"f(v) = \\prod_{i=0}^{N-1} e^{\\beta_i y_i} = e^{\\sum_{i=0}^{N-1} \\beta_i y_i} = e^{\\beta^\\intercal y}\n",
"$$\n",
"\n",
"## ML considerations\n",
"\n",
"If we were using piecewise exponential functions in a machine learning setting, we would probably:\n",
"- fix the $x_i$ values ahead of time\n",
"- transform the training values into the $y_i$ form\n",
"- learn the $\\beta_i$ values\n",
"\n",
"If we have a set of $M$ training values $v_j \\in \\mathbf{R}_+$, which we'd like to evaluate over an $f$ parameterized by a variable $\\beta \\in \\mathbf{R}^N$, we can transform the $v_j$ into $y$ vectors and form a matrix $Y \\in \\mathbf{R}^{M \\times N}$ where\n",
"the $j$th row of $Y$ corresponds to $v_j$.\n",
"\n",
"Let $V = (v_0, \\ldots, v_{M-1})$, then the vector expression $f(V) \\in \\mathbf{R}^M$ can be written as\n",
"\n",
"$$\n",
"f(V) = e^{Y \\beta}\n",
"$$"
]
},
{
"cell_type": "markdown",
"id": "c085c819-6a1f-4221-bb3b-a7ae2f1c81f8",
"metadata": {},
"source": [
"# Numerical example"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7924ffe2-df47-4add-a111-6cad4c49f393",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"def form_pwl_eval(x, beta):\n",
" x = np.array(x)\n",
" caps = np.append(np.diff(x), np.inf)\n",
" \n",
" def pwl_eval(v):\n",
" deltas = np.clip(v - x, 0, caps)\n",
" \n",
" return np.exp(deltas@beta)\n",
" \n",
" return pwl_eval"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1316d6fc-e561-4c4e-983d-40d571e048df",
"metadata": {},
"outputs": [],
"source": [
"# N = 3\n",
"# x = np.linspace(0, 20, N)\n",
"# beta = -0.06*np.linspace(1,0,N)\n",
"\n",
"x = [0, 5, 20]\n",
"beta = [-0.1, -0.06, -0.03]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "d5fa7ad7-f40f-44a7-9e6a-dde07fe5a784",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def foo(x, beta):\n",
" # extend values to show the [x_{n-1}, +\\infty] interval\n",
" x = x + [1.5*x[-1]]\n",
" beta = beta + [beta[-1]]\n",
" \n",
" plt.step(x, beta, '-o',where='post')\n",
" plt.grid()\n",
" plt.title('Active beta values')\n",
" \n",
"foo(x, beta)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "db337063-1fff-4f7a-ab0a-e73838b5bc44",
"metadata": {},
"outputs": [],
"source": [
"pwl_eval = form_pwl_eval(x,beta)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "254061b8-fcd5-4f30-a1f1-8a09c1f9ccac",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEICAYAAABPgw/pAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAziElEQVR4nO3dd3wU1frH8c+zm4Q0SCckISQ06R0B6ShKUQEVUBS9VvTaC9ivP/vlWrheu2AviCiIoBQRCCDSifTeSQglECAhQEjO749ZYAkJhLQted6v17yyOzM7+xxXvjk5O3NGjDEopZTyfDZXF6CUUqp0aKArpZSX0EBXSikvoYGulFJeQgNdKaW8hAa6Ukp5CQ10pRQAInKLiPxexH1fFJFvy7omdXE00CsYEdkmItkikikie0TkSxEJFpFBIrI2377TC1n3dAHHOrW8X57tUcUjIokiYkTE59Q6Y8x3xpirXFmXKhkN9IrpWmNMMNASaA08D8wB6otIFIDjH3ozICDfussc+551LKflwfJsSHE5B5lS3kIDvQIzxqQAU4DGjsdbgM6OzS2B1cDsfOtswOKLeR8RiXX05MOd1rUQkf0i4isidURktogccqz7oZDjnOpVDhGRVBHZLSJDnbZ/KSKvOj3vKiK7nJ5vE5GnRGQFkCUiPiLSTkT+EpEMEVkuIl0v0I5xIrJPRLaKyMOO9eEisktErnU8DxaRTSJym1NdHzv+ujniaGuC03Hbi8hiR/sXi0h7p21JIvKKiMxzvPZ3EYl02l5o/Rd47alfyhmOv6wuE5HbReRPp9f/T0R2ishhEVkqIp0K+2+j3IMGegUmIvFAbyDZsWoOZ8K7MzAX+DPfugXGmJyLeR9jTCowH7jBafXNwE+OY70C/A6EAdWB9y5wyG5AXeAq4CkR6X4R5QwCrgZCgWjgN+BVIBwYCow79ReJMxGxAZOA5UAccAXwqIj0MMYcAO4ERolIVeC/wN/GmK+dDnGLo52RwN/Ad47jhjtqeBeIAEYAv4lIhNNrbwbuAKoCfo46EZG4ItRf4Gs585mGOv6yml/Af6vFQHPHsUcDP4qIfwH7KTehgV4xTRCRDKywng287ljv3BvvhBXoc/Otm13QsZyWewp5z9FYYYqICHCTYx1ADpAAxBpjjhlj/iz4EKe9ZIzJMsasBL44ddwietcYs9MYkw0MBiYbYyYbY/KMMdOBJVi/5PK7FIgyxrxsjDlhjNkCjHK0A2PM78CPwAzH6+/N9/rfjDFzjDHHgeeAyxy/UK8GNhpjvjHGnDTGfA+sA651eu0XxpgNjprHYoUsRay/sNdekDHmW2NMuqOut4FKQL2ivl6VPw30iqmfMSbUGJNgjLnf8Y8drB56UxEJA9oB840x64AYx7qOnD1+7nysU8uoQt5zHFaIxWD9gsjD+mUB8CQgwCIRWS0id16g/p1Oj7cDsUVoc0GvTQAGOP9CwmpjTAGvSwBi8+37LFYv/5SRQGPgS2NMemHva4zJBA446o51tMHZdqy/Ak5Jc3p8FAi+iPoLe+0FichQEVnrGArKAEKw/sJQbkq/GFKnGWO2iEgqMATY4QgesIZLhmCFwYJiHvugWKfE3Qg0AMYYx1Sfxpg04B4AEekI/CEic4wxmwo5XDxWLxagBpDqeJwFBDrtV62gUpwe7wS+McYU9leFs53AVmNM3YI2iogdK9C/Bu4XkS/y1R/vtG8w1jBGqmNJ4Gw1gKlFrKmo9ed33mlWHePlT2INLa02xuSJyEGsX7zKTWkPXeU3F3icM71nsIZmHgeWOPXmi2M0cBvQnzPDLYjIABGp7nh6ECts8s5znH+JSKCINMIaHz71JerfQG/Hl5TVgEcvUM+3wLUi0kNE7CLi7/gitXoB+y4Cjji+VA1w7N9YRC51bH/WUfedwJvA146QP6W3iHQUET+ssfQFxpidwGTgEhG52fEl7Y1AQ+DXC9R+sfXntw/rv3GtQrZXBk469vMRkReAKkU4rnIhDXSV32ysL9Ccx7HnOtblH24BmCRnn4f+83mOPRHry8w0Y8xyp/WXAgtFJNOxzyOOMerz1bgJa7z6Lcf4NcA3WF9absP6krXAs2VOcQRqX6ww3ofV4x1GAf8ujDG5wDVYY9Bbgf3Ap0CIiLTC+oV3m2O//2CF+9NOhxgN/B/WUEsrrPFvHEMz1wBPAOlYveJrjDH7z1f7xdZfwGuPAq8B8xzDNe3y7TIN66+EDVhDQMc4e7hKuSHRG1woTyEiiVhh6muMOenicopMRL4Edhljnnd1Lcq7aQ9dKaW8hAa6Ukp5CR1yUUopL6E9dKWU8hIuOw89MjLSJCYmFuu1WVlZBAUFlW5BLqJtcT/e0g7QtrirkrRl6dKl+40x50xPAS4M9MTERJYsWVKs1yYlJdG1a9fSLchFtC3ux1vaAdoWd1WStohI/iuLT9MhF6WU8hIa6Eop5SU00JVSyktooCullJfQQFdKKS9xwUAXkc9FZK+IrCpku4jIu2LdcmuFiLQs/TItE5JT6DB8JrdPzaLD8JlMSE4pq7dSSimPU5Qe+pdAz/Ns74U1g15drDmzPyp5WeeakJzCM+NXkpJhzd6akpHNM+NXaqgrpZRDUabZnIM15Wdh+gJfG8sCINRxV5pS9ea09WTn5NJItvGkzxjAkJ2Ty5vT1pf2WymllEcqjQuL4jh7nuRdjnW78+8oIkOwevFER0eTlJRU5Dc51TNvZVvP/T4TmZvXhPl5jUjJyL6o47ibzMxMj67fmbe0xVvaAdoWd1VWbSnXK0WNMSOxbtNF69atzcVcKRW3YCYpGdn8kNuN+30m8qjPOOafaEhcaKBHXz2mV7+5H29pB2hb3FVZtaU0znJJwel+iUB1x7pSNaxHPQJ87RzHjw9P9qGtbR2dfdYyrIfehFwppaB0An0icJvjbJd2wCFjzDnDLSXVr0Uc/76+CXGhAfyQ2400E8ZQv/H0bVbqw/VKKeWRinLa4vdYd32vJyK7ROQuEblPRO5z7DIZ2IJ1j8dRwP1lVWy/FnHMe/pyPukZxvYG99I0bw2r500qq7dTSimPcsExdGPMoAtsN8ADpVZRETXr+zB7143EPuc/mA7XIja9RkopVbF5bAr6BwSxtcG9NMhZrb10pZTCgwMdoFmfh9hLuNVLz8tzdTlKKeVSHh3o2ktXSqkzPDrQQXvpSil1iscHunMvfdXcCa4uRymlXMbjAx2ged+HSSMK/7mvay9dKVVheUWgV/IPZEezh6l7ciPJv3/t6nKUUsolvCLQAVpecx/bbdWJWPQmuSdPurocpZQqd14T6D6+fqS3GUZC3i6WTiqTKdmVUsqteU2gA7S46jY22utQY/n/OH7sqKvLUUqpcuVVgS42G8c6P0c19pH8839dXY5SSpUrrwp0gMad+rHaryl1139C1pEMV5ejlFLlxusCXWw27Fe9SASHWDFuuKvLUUqpcuN1gQ5Qv/UVJAe2p9G2rziUvsfV5SilVLnwykAHCL36RYJNNmvH/p+rS1FKqXLhtYFes1FbloT1omXaj6RuXefqcpRSqsx5baADJA54nVxs7B7/jKtLUUqpMufVgV41riZ/xw+m1ZGZrF8y09XlKKVUmfLqQAdoMvAF0gkhb9rzOnGXUsqreX2gB1cJY1Ojh2mQs5rk6d+5uhyllCozXh/oAK36Pcx2WzxRC14n58RxV5ejlFJlokIEuo+vHxkdnyfepLJs/AhXl6OUUmWiQgQ6QNOuA1lVqTmXrPuAwxnpri5HKaVKXYUJdLHZ8O/9GmEcYc2Yf7m6HKWUKnUVJtAB6jTryOKQnrTcPYadm1a6uhyllCpVFSrQAWre+AYn8CN93FBXl6KUUqWqwgV6ZGwCq+oMoXn2ApbP+tHV5SilVKmpcIEO0HLgs+yUWMLnvMCJ48dcXY5SSpWKChnofpX8OdDpJes0xh91znSllHeokIEO0OzygSwPaEOjjR+zP22nq8tRSqkSq7CBDhB+/VtU4gRbxjzp6lKUUqrEKnSgx9dtxrKYm2h9cAobls12dTlKKVUiFTrQARoNepUDEoKZPIy83FxXl6OUUsVWpEAXkZ4isl5ENonI0wVsryEis0QkWURWiEjv0i+1bFQOCWdby6epd3I9i8e/4+pylFKq2C4Y6CJiBz4AegENgUEi0jDfbs8DY40xLYCbgA9Lu9Cy1Oqae1nt14z6q98mfc8uV5ejlFLFUpQeehtgkzFmizHmBDAG6JtvHwNUcTwOAVJLr8SyJzYbwTe8S4A5xpbRj7u6HKWUKhYxxpx/B5H+QE9jzN2O57cCbY0xDzrtEwP8DoQBQUB3Y8zSAo41BBgCEB0d3WrMmDHFKjozM5Pg4OBivfZ8ji/5kh6ZP/NLrVcIqdG01I9fkLJqiyt4S1u8pR2gbXFXJWlLt27dlhpjWhe40Rhz3gXoD3zq9PxW4P18+zwOPOF4fBmwBrCd77itWrUyxTVr1qxiv/Z8jmYeNikv1jHbXmpkjh/LLpP3yK+s2uIK3tIWb2mHMdoWd1WStgBLTCG5WpQhlxQg3ul5dcc6Z3cBYx2/IOYD/kBkEY7tVgKCKrOv0ysk5O1k6ZhXXF2OUkpdlKIE+mKgrojUFBE/rC89J+bbZwdwBYCINMAK9H2lWWh5aXb5TSQHdaT5lpGkblvv6nKUUqrILhjoxpiTwIPANGAt1tksq0XkZRHp49jtCeAeEVkOfA/c7vjTwCPF3PQ/DMLeHx7G5OW5uhyllCoSn6LsZIyZDEzOt+4Fp8drgA6lW5rrVIuvw4K699Nu039ZOvUrWvW+w9UlKaXUBVX4K0UL0/rGZ9lor0Piov8jY3+aq8tRSqkL0kAvhI+vH7Z+H1DFZLLxm0dcXY5SSl2QBvp51G7SjiXVb+PSQ1NZkTTO1eUopdR5aaBfQIvBr7HDFkdU0lNkHclwdTlKKVUoDfQL8A8IIqvHf4lhHyu/GebqcpRSqlAa6EXQoG0PFkZeT5s9P7Ju8R+uLkcppQqkgV5EDW99m70Sgf+URzl+7Kiry1FKqXNooBdR5ZBw9nQZTmLeTpZ9/ZSry1FKqXNooF+EZt0GsCjsatqkfKNDL0opt6OBfpEa3P4++ySSoMkPkZ11xNXlKKXUaRroF6lySDj7u48g3qSy/MvHXF2OUkqdpoFeDI079mFhVH/a7fuRVfMmubocpZQCNNCLrent77BTYomY/hiZhw+6uhyllNJAL66AoMpk9XqXqmY/a758yNXlKKWUBnpJ1G9zJYtib6XNgUn8PaN490dVSqnSooFeQi3/8R8222tSY+4w9qftcHU5SqkKTAO9hCr5B+LT/zMCTTapX95JXm6uq0tSSlVQGuilIKFBK5Y3epKmxxaz6Id/u7ocpVQFpYFeStr0H0pyYHtarv8vW1YtdHU5SqkKSAO9lIjNRsLtn3JYgrGNv4tjRzNdXZJSqoLRQC9F4VXj2H35OyTm7WT553oqo1KqfGmgl7Imna9jQfQg2u4fz9/TR7u6HKVUBaKBXgZa3DGCTfba1Jw3lN3b17u6HKVUBaGBXgYq+QcScMs32Eweh7+5lRPHj7m6JKVUBaCBXkbiajVi42XDqXdyPcs+f8TV5SilKgAN9DLUsuft1qyMe8aQ/Pu3ri5HKeXlNNDLWPO73mOjT11q/zWM1K3rXF2OUsqLaaCXsUr+gQTdYvXOs74brDeYVkqVGQ30chBbsz6b279B3ZMbSf5Mz09XSpUNDfRy0uKqW1lQ9Uba7fuJRRM/dnU5SikvpIFejlrd/R5r/RrTZOm/2LTiL1eXo5TyMhro5cjXrxJV7xrDEQkmYPxtXPX6BG6fmkWH4TOZkJzi6vKUUh6uSIEuIj1FZL2IbBKRpwvZZ6CIrBGR1SKi17wXIiI6nqTmI4g0B/lX9pvYySUlI5tnxq/UUFdKlcgFA11E7MAHQC+gITBIRBrm26cu8AzQwRjTCHi09Ev1Hv9bF8LzJ++kk30Vw3zGApCdk8ub03SaAKVU8RWlh94G2GSM2WKMOQGMAfrm2+ce4ANjzEEAY8ze0i3Tu6RmZPNjble+Odmd+3wmcbVtwen1SilVXD5F2CcO2On0fBfQNt8+lwCIyDzADrxojJma/0AiMgQYAhAdHU1SUlIxSobMzMxiv9YdhPsL6ccML5+8jQa2Hbzp+wmbTsSS6lPDo9vl6Z/LKd7SDtC2uKuyaktRAr2ox6kLdAWqA3NEpIkxJsN5J2PMSGAkQOvWrU3Xrl2L9WZJSUkU97Xu4F8hKTwzfiXZOfDPE48wqdLzfOb3Fn2Pv0LS4USe7lUff1+7q8u8aJ7+uZziLe0AbYu7Kqu2FGXIJQWId3pe3bHO2S5gojEmxxizFdiAFfCqAP1axPHv65sQFxrAPsJ4rtKzVLNnMiHiA77/awPXf/gXm/bqHY+UUhenKIG+GKgrIjVFxA+4CZiYb58JWL1zRCQSawhmS+mV6X36tYhj3tOX82XPID57dgg+N3xCfNYqkuqNJ+1QNte+9ydjF+/EGOPqUpVSHuKCgW6MOQk8CEwD1gJjjTGrReRlEenj2G0akC4ia4BZwDBjTHpZFe2VGvWDbs8Ts30icy5bSvP4UJ4ct4KHvk8m4+gJV1enlPIARRpDN8ZMBibnW/eC02MDPO5YVHF1Hgr7NxA8bzjf9m/Ax3Ub89/pG1i87QBvDWhGp7pRrq5QKeXG9EpRdyICfd6D6m2wT7iPBy45zIQHOlDZ35dbP1vEixNXk30i19VVKqXclAa6u/H1h5u+g6BI+H4QjYMO8+tDHbmjQyJf/rWNa96by4pdGa6uUinlhjTQ3VFwVbh5LORkw7c34H/yMP93bSO+vastWcdzuf7Dv3h3xkZO5ua5ulKllBvRQHdX0Q2tnvrBrfD9zZBzjI51I5n2aGd6N4lhxPQN9P94Plv3Z7m6UqWUm9BAd2c1O0G/j2DHX/DzvZCXR0igL+8OasG7g1qwZV8mvf83ly/mbSUvT09vVKqi00B3d036w5WvwJoJ8Ptzp1f3aRbLtMc607ZWOC9NWsONI7W3rlRFp4HuCdo/BG3vgwUfwvwPTq+OCQngi9sv5a0BzVifdoSe78zh07lbyNXeulIVkga6JxCBHq9Dgz4w7VlY+ZPTJqF/q+pMf7wLnepG8upvaxnwsU4doFRFpIHuKWx2uH4UJHSwxtM3TDtrc3QVf0bd1pp3bmzOlv1Z9H53Lh/P3qxnwihVgWigexJffxg0BqIbw9jbYNufZ20WEfq1iOP3xzrTrV4Uw6es44aP57Mu7bCLClZKlScNdE/jXwUGj4fQBBh9E6Qmn7NL1cr+fDy4Fe/f3IKdB45yzbt/8sbUdRzL0atMlfJmGuieKCgCbv0ZAsLg2xtg37m3rhMRrmkay4zHu3Bdizg+TNpMj3fm8OfG/S4oWClVHjTQPVVIHNw2AcQOX/eDg9sL3C0syI83BzRj9D1tsYkw+LOFPPbD36RnHi/XcpVSZU8D3ZNF1LZCPecofN0XDqcWumv72pFMeaQTD19eh19XpHLFiNmMXaLzrSvlTTTQPV10Ixg8DrL2w5fXwOHdhe7q72vn8avqMfnhTtStGsyTP61g0KgFbN6npzgq5Q000L1B9dZWqGfuga+ugSNp5929bnRlfhhyGf++vgmrUw/T6525vDF1HUdPnCyngpVSZUED3VvUaGuF+uHd8NW1cGTPeXe32YRBbWow44kuXNMshg+TNtP97dlMWblbh2GU8lAa6N6kRjsY/BMcSoGv+0Dmvgu+pGplf0YMbM6P911GlQBf/vndMm77fJEOwyjlgTTQvU1Ce7hlLGTssHrqWUU7TfHSxHB+fagjL17bkL93ZtDznTkMn7KOrOM6DKOUp9BA90aJHeHmH+DgNvjy6guOqZ/iY7dxe4eazHyiK32bx/Hx7M10HzGb31boMIxSnkAD3VvV7Ozoqe+EL3pZP4soqnIl3hrQjHH/vIywQD8eGL2MQaMWsDr1UBkWrJQqKQ10b1azs3Weela6Ferpmy/q5a0Swpn0UEde7deYDXsyuea9P3nqpxXsPXKsbOpVSpWIBrq3i28Dt0+yLj76ohfsXXtRL7fbhMHtEpg1tCt3d6zJ+ORddHsziQ9mbdK5YZRyMxroFUFMM7h9MiDwRW9I/fuiDxES4MtzVzdk+mNd6FAnkjenreeKt2fz64pUHV9Xyk1ooFcUVevDHZPBLwi+6gM7FhbrMImRQYy8rTWj72lLlQBfHhydzICP57N8Z0bp1quUumga6BVJRG24YwoERVpzv6yfUuxDta8dya8PdWT49U3Ylp5F3w/m8fHyY+xIP1qKBSulLoYGekUTGg93/Q5VG8CYW2DZ18U+lN0m3NSmBrOGduWBbrVZtieXK0Yk8eLE1ezX2RyVKnca6BVRUCT8YxLU6goTH4I5b0IJxsEr+/syrEd9/tM5gAGt4/lmwXa6vDGL//2xUS9MUqocaaBXVJWCrYuPmt4EM1+FycMgr2RnrYT523j9uib8/lhnOl8SxX//2ECXN2fxzfxt5Oi9TZUqcxroFZndF/p9BO0fhsWj4Kc7IKfk55jXjgrmo8GtGH9/e2pFBfOvX1Zz5YjZTFqeSl6enhGjVFnRQK/obDa46hW46jVY84s1qVcR53+5kJY1wvhhSDu+uP1SKvnYeej7ZHq/O5dpq9P0VEelyoAGurK0fxAGfAW7l8Ooywu8T2lxiAjd6ldl8iOdeOfG5hw/mce93yylz/vzmLVurwa7UqVIA12d0aifdQFSTjZ8eiVsnlVqh7bbhH4t4pj+WGfe6N+Ug0dPcMeXi7nho7/4c+N+DXalSkGRAl1EeorIehHZJCJPn2e/G0TEiEjr0itRlavqreCeGdZNqL+9AZZ+WaqH97HbGNg6nplPdOW16xqz+9AxBn+2kBtHLmDhlvRSfS+lKpoLBrqI2IEPgF5AQ2CQiDQsYL/KwCNA8S5BVO4jtAbcOQ1qd4NJj8Dvz5f4DJj8/Hxs3NLWmiPmxWsbsnV/FjeOXMDgTxeyaOuBUn0vpSqKovTQ2wCbjDFbjDEngDFA3wL2ewX4D6BT8XkD/yow6Ae49B746z0YPRCyD5b+2/jaub1DTeYM68bzVzdgXdphBn4yn4GfzNehGKUuklzoH4yI9Ad6GmPudjy/FWhrjHnQaZ+WwHPGmBtEJAkYaoxZUsCxhgBDAKKjo1uNGTOmWEVnZmYSHBxcrNe6G09oS0zqVOpuHMXxSpGsbPIcR4NqFLhfabTleK5hzs6TTN6aw8HjhlohNvrU9qVZlB0RKdGxi8oTPpOi0ra4p5K0pVu3bkuNMQUPaxtjzrsA/YFPnZ7fCrzv9NwGJAGJjudJQOsLHbdVq1amuGbNmlXs17obj2nL9vnGvFnXmFdjjFn9S4G7lGZbjuWcNN8t2G46DJ9hEp761fR8Z475bUWqyc3NK7X3KIzHfCZFoG1xTyVpC7DEFJKrRRlySQHinZ5Xd6w7pTLQGEgSkW1AO2CifjHqZWq0gyFJ1qyNY2+1ri7NK7urPyv52Lm5rTVPzFsDmnE8J5f7v1vGVe/M4efkXZzUK0+VOkdRAn0xUFdEaoqIH3ATMPHURmPMIWNMpDEm0RiTCCwA+pgChlyUh6sSa53W2GKwNf/L9zeVybi6M1+7jf6tqjP98S68N6gFdhEe+2E5Xd5M4ot5W3WuGKWcXDDQjTEngQeBacBaYKwxZrWIvCwifcq6QOVmfP2hz/vQ+y3YPAM+6Qwpy8r8be024dpmsUx5pBOjbmtNbKg/L01aQ/vhM3lr2nr2HdHZHZXyKcpOxpjJwOR8614oZN+uJS9LuTURaHMPxDSHH2+Hz3tAj9fB1Cnzt7bZhCsbRnNlw2iWbj/IyDmb+SBpEyPnbuGGltW5p1NNakV5xxdnSl2sIgW6UgWKvxTumws/3weTh9IwqgNc1so65bEctEoI45NbW7NlXyaj5m5l3LJdjFm8g6saRnNvl9q0rBFWLnUo5S700n9VMoHhMGgMdH+JqH3zYWQXSFtZriXUigrm39c3Yd5Tl/NA1zos2HKA6z/8ixs++otfV6TqF6iqwtBAVyVns0HHR/m7+avWPDCjroBFo0p004ziiKpciaE96vHX05fzwjUN2XfkOA+OTqbzG7P4KGkzGUdPlGs9SpU3DXRVag6FNoJ750LNzjB5KIy+ETL3lXsdQZV8uLNjTWYN7cqo21qTGBnEf6auo92/Z/DM+JVs2HOk3GtSqjzoGLoqXcFRcMuPsGgk/P4v+Ogy6yYada8s91LsTl+grks7zJfztjF+2S6+X7SDjnUiuaNDIt3qVcVmK58rUJUqa9pDV6VPBNrea12IFBQF3/WHyU+Wyt2Qiqt+tSoMv6Ep85+5gmE96rFpbyZ3fbWEy99O4tO5W3Q4RnkFDXRVdqIbwj2zoO0/YdEnMKob7F7h0pLCg/x4oFsd5j7VjfcGtSA8yI9Xf1tL29dn8MTY5STvOKgTgimPpUMuqmz5+kOv4VCnO/xyvxXqnYdBpyese5q6qiy7jWubxXJts1jWpB7mu4XbmZCcwrhlu0ioYiMtaAd9msUSVEn/iSjPoT10VT7qdof7F0Cj6yDp39Zt7tJWuboqABrGVuG165qw8LnuvNqvMXkGnhm/knavz+CFX1axPk2/RFWeQbsfqvwEhsMNn0LDvvDrYzCyK3R5Cjo+6tLe+inBlXwY3C6BuOwtVKnVnO8WbGfM4p18PX87lyaGMahNDXo1jiHAz+7qUpUqkPbQVflrcC3cvxAa9oFZr8Kn3WHPGldXdZqI0CohjBE3NmfhM1fwXO8G7DtynMfHLqfNa3/w3M8rWb4zQ8faldvRHrpyjaAI6P+5o7f+OHzSCTo8Yo2v+wa4urrTwoL8uKdzLe7uVJOFWw8wdslOxi3bxXcLd1C/WmUGtI7nuhZxhAf5ubpUpbSHrlysYV94YBE0GQhz34aP2sOWJFdXdQ4RoV2tCEYMbM6i57rz+nVNqORr55Vf19D29T944LtlJK3fS26e9tqV62gPXbleUARc9xE0uwl+fRS+7gtNb4Ier0FQpKurO0cVf19ubluDm9vWYH3aEX5YvJOfk3fx28rdxIT4c33LOK5rUZ06VXXWR1W+tIeu3EetLvDP+dawy6px8P6lkPxdmd4ZqaTqVavMC9c2ZOGz3fnwlpbUq1aZj5I2033EbPq8/ydfzNvK/kydq12VDw105V58/eHy561peSMvsc5d/6InpP7t6srOy8/HRu8mMXx5RxsWPHsFz1/dgNw8w0uT1tD29Rnc8cUiJi5P5VhOrqtLVV5Mh1yUe6raAO6YAstHwx8vWqc4trodrnjBOv3RjVWt7M/dnWpxd6dabNhzhJ+TU/glOYWHv08muJIPvRpX47oWcbSrFaHzyKhSpYGu3JfNZt2/tP41MPs/sPATWP2z1YNvfSfY3P988EuiK/NUz/oMu6oeC7am8/OyFKasSuPHpbuoVsWfq5vGcG2zWJpVD0FEw12VjAa6cn8BodDz39DyNpjypDU179KvoPcbkNDe1dUVic0mtK8dSfvakbzctzHT1+5h4t+pfD1/G5/9uZX48ACubhLLNU1jaBRbRcNdFYsGuvIcVRvAbRNhzS8w7Tn4opfVe+/+EkSW/f1MS0uAn50+zWLp0yyWQ9k5/L46jV9X7GbU3C18PHszNSODuLZpDNc0i+WS6MquLld5EA105VlEoFE/qHsVLPgQ/vwvfNgWWt0BXZ92y9MczyckwJcBreMZ0DqeA1knmLoqjV9XpPL+rE28O3MTl0QHc03TWK5uGkNtvfm1ugANdOWZ/AKh81Bo+Q+YPRyWfA7Lx1jzwrS739ruYcKD/E6f3773yDGmrLTCfcT0DYyYvoG6VYPp2bgaPRpV02EZVSANdOXZgqPg6rehzb3W2TAzX7HCvevT0OxmsHvm/+JVK/vzj/aJ/KN9IrsPZfP76j1MXZXGB7M28d7MTVQPC6Bno2r0bFyNljXC9GwZBWigK28RdQkMGg3b5sH0f8HEh+DPd6DrM9D4eo84I6YwMSEBp8M9PfM4M9buZerqNL6ev51P/9xKVOVKXNkwmp6NqnFZ7Qh87TYmJKfw5rT1pGRkE7dgJsN61KNfizhXN0WVMQ105V0SO8DdM2D9FJj1Goy/25ojptuz1iyPHj5MERFciYGXxjPw0niOHMshaf0+pq5OY0JyCqMX7qCKvw91ooJZmXqInFxrXpmUjGyeGb8SQEPdy2mgK+8jAvV7wyU9Yc0EmPU6jL0VYppBt+etG1Z7eLADVPb3PX3XpWM5ufy5cT9TV6cxftku8s8Rlp2Ty8u/rqFJ9RDiwwLx89GLxL2RBrryXjabNdzSoA+sHAtJw2H0AIhrBZ2GWoFv845g8/e1071hNN0bRjNu6a4C9zmQdYIr3p6N3SZUDwsgMSKImpFnL7GhAdh1PN5jaaAr72f3geY3Q+P+1lQCc0fAmEFQtRF0ety6LZ4Hj7HnFxsaQEpG9jnro4Ir8Uzv+mzdn3V6WbLtAFknzswv42e3USMikMSIIGpFBZ0V+tFVKumZNW5OA11VHD5+1nwwzQfDqp+sYB93lzUk0/ExaHqjtY+HG9ajHs+MX0m200RgAb52nru6wTlj6MYY9h05fibk07PYus96PGfjPk6cPDPTZaCfnYSIIGpFBpEYaYV+QkQQiRGBRFXWsHcHGuiq4rH7WHOvNxkI6ybBnLdg4oPWkEyHh7GfrOHqCkvkVGifPsslNKDQs1xEhKpV/KlaxZ+2tSLO2pabZ0jNyGZbetZZvfrVqYeYujrtrJt5BPjaqREeSI2IQBLCA0mICKRGRBAJ4YHEhQXga/eOoS13p4GuKi6bzbpjUoM+sOkPK9inPEk7n2DgHuvc9ioxrq6yWPq1iKNfiziSkpLo2rVrsY5htwnx4YHEhwfSqW7UWdtycvPYeeAo2w8cZUf6UbanH2XHgSy27c9izoZ9HHfq2dttQmyoPwnhQWcHfngQCRGBBFXSGCot+l9SKRHrzJe6V8LORWT88gJR8/4Hf70PjW+Ayx6AmKaurtKt+Npt1IoKplYB0xHk5Rn2HjnO9vSsM4F/4Cg70rOYvHI3GUdzzto/MtiPGuGBJEQEOX5aj+PDA4gK1qGci6GBrpSz+Dasbvw0XZsmwMKPYdk3sGIM1OwMlz0Ida70mjNjyorNJlQL8adayLnDOACHsnMcIZ9l9ewdjxduSWfC3ykYp1Mu/X1tVA8LpHpYALbs46yXzdZfDY51oYG+GvhOihToItIT+B9gBz41xgzPt/1x4G7gJLAPuNMYs72Ua1Wq/ITXhF7/sa40XfqlNRf76IEQVtOai73FYLe/0Ya7CgnwpUn1EJpUDzln27GcXHYdzGbHgSx2Hshm54Gj7Dx4lF0Hs9m69yQzd6w7a//gSj5UDwugelgg8eEBp4M+Ptz6Wdnft7ya5RYuGOgiYgc+AK4EdgGLRWSiMWaN027JQGtjzFER+SfwBnBjWRSsVLkKCLUm/LrsAWva3sWfWVMLzHrNGo659C7rvHZVKvx97dSpGlzgDbaTkpJo0bYDuw4eZeeBbHY5gt56fpS/Nu/n6Imzb/EXGuh7VsjHO4V/XGggAX7ec7oqFK2H3gbYZIzZAiAiY4C+wOlAN8bMctp/ATC4NItUyuXsvtCkv7WkrYIln8HyH+Dv7yC2JVx6t3URk2+Aqyv1aiEBvoQEhNAo9tzevTGGg0dzzurV7zxg/Vy/5wgz1u096zRMsGa4jAsNIDbUn9jQAOJOLWEBxIYGEBHk51FDOmKMOf8OIv2BnsaYux3PbwXaGmMeLGT/94E0Y8yrBWwbAgwBiI6ObjVmzJhiFZ2ZmUlwsHfMDa1tcT9FbYf95FGqpc0iNnUyQUd3keMTxN6qndkdcyWZlWuXQ6UX5i2fCZS8LXnGcPi4YV+2YX+2YX92HunHDOnZhvRjeaRnG47nu4e3rw0i/IWIACHc30ZkgBDuL0QEWI/D/AXfYlxZW5K2dOvWbakxpnVB20r1S1ERGQy0BroUtN0YMxIYCdC6dWtT3NOpSnIqlrvRtrifi2tHbzBvwLa5+C77mrg1E4lLnQLVmkCLW6HJAJeOtXvLZwJl3xZjDIeyc0jJyCblYDapGdmkHjpGysFsUjKyWZ+RzdyU4+e8LqpypdM9+9hQf8fPgNM9/oK+uC2rthQl0FOAeKfn1R3rziIi3YHngC7GmHNbrZS3ErHOgqnZGXofhJU/QfI31v1Pf/8XNLjG+hK1Zlc9Q8aNiQihgX6EBvoVOKQDcPxkLmlOIZ+acYyUjKOkZhxj7e7D/LF2z1nn4IN10VVMiD8xof7EhAQQG+JPeHZugccvqaIE+mKgrojUxArym4CbnXcQkRbAJ1hDM3tLvUqlPEVAGLS5x1p2r4Dkb2HFD7BqHFSJs75IbXojVGvs6kpVMVTysaY/SIgIKnC7MYb0rBOne/gpGdnsPnSM3Yes8J+7cR97jxznjkZlM8XEBQPdGHNSRB4EpmGdtvi5MWa1iLwMLDHGTATeBIKBHx1/WuwwxvQpk4qV8hQxTSHmDbjyZVj/G6wYa90H9a93oWpDazimyQAIjb/wsZRHEBEigysRGVyJZvGhBe6Tk5tH0uzZZfL+RRpDN8ZMBibnW/eC0+PupVyXUt7D19/qmTe+AbLSYfV4WPkjzHjJWmq0h6YDoGE/Pbe9AvC124r1RWpR6JWiSpWnoIgzQzIHt1nBvuJH+PUxmDwManax5pepfzUERbq6WuVhNNCVcpWwROg8zLrZRtoKWDXeunhp0sPw66OQ2NER7tdC5WhXV6s8gAa6Uq4mYt0eL6YZdH8R0lZawb7mF/jtCfhtKNS47EzPXcfcVSE00JVyJyKOL1ObwuXPw751Z8J96lPWEt3Yun1evV7WVap6KqRy0EBXyl2JQNUG1tL1adi/EdZPgQ1T4c8RMPctCKoKl1wFl/SC2t3Ar+DT6VTFoIGulKeIrGstHR6Gowesm3KsnwJrJlnnu9srWRc31ekOtS+39lUViga6Up4oMByaDrSW3BzY/hdsmGb13qc+Ze0TEs8lgfUh6iDU6mpd9KS8mga6Up7O7gu1ulhLz9et0yE3z4TNM6m6YSb8OB3EZo23174c6lxhTflrr1hzhVcEGuhKeZuwROsmHK3vZN7MGXSpEwybZ1ghP/ctmPMG+AZBjXbWqZGJnSC2uQa8F9BAV8qLGZsdarS1lm7PWmPvW+fAtj+tZcZL1o5+wWcHfExzsGs8eBr9xJSqSALDoVE/awHI3AfbHeG+dS788aK13i8Y4ttaIR/f1hqiqeQd86p7Mw10pSqy4ChodJ21AGTudfTe58KOBTDrdcBYY/DRjc8EfHwbCIm3Tq1UbkMDXSl1RnBV61Z6ja+3nmdnwK4lsHOhtSR/B4tGWtsqx1rBHt/G+sI1pqmeB+9iGuhKqcIFhELd7tYCkHsS9q6GnYusHvzORbBmgrVNbBDVAOJaQGwLK+SjG4NP2cz9rc6lga6UKjq7z5l5Z9rcY607sgdSl0HKMkhNti52Sv7Wsb+fFeqxLSCuJVRrClH1NeTLiAa6UqpkKkdb88rU62U9NwYydpwd8ivGwpLPrO02X4iqZ913Nbqx9bNaE50LvhRooCulSpcIhCVYy6kvW/PyIH0T7FlpzSaZtgo2z4Ll3595XZU4p5BvbN3VKbyWnh9/ETTQlVJlz2aDqEuspfENZ9Zn7nOE/Cor6Pesgo3TwThuomzzhYg6EFWPhKMBsDrDGrKJqK1BXwANdKWU6wRHQfDl1pQEp+Qcs6YN3rce9q21fu5eTuLBbbDN0aO3+TiCvr5jucR6Hl67Qp8vr4GulHIvvv7WVASxzc9aPXfGNDo3rAZ71zkCf511p6c1vwDmzI6VYxzhXsv6eWoJS/T6L2M10JVSHiHPXunMGTbOcrIhfTMc2GyN06c7fq77FY6mn9lPbBBa40xPPizRMdafCKEJXtGz10BXSnk23wDrS9Rqjc/ddvQAHNhydtCnb7LOoT+Refa+gZFnB/ypwA9NgJDqHjFmr4GulPJegeHWUr312euNscL+4DbI2AYHtzseb4eUpdYwTt7JM/uLHULioEp162dIdeusHOefAWEunwpBA10pVfGIQFCEtVRvde723JNwJNUK+dNhvwMOp1hTIKyeAHk5Z7/GN9AR7qeC3xH+VeKgSixUrgb+oWUa+hroSimVn93HGm8PrQE1C9ielwdZe+FQChzaaQX9oRQ4vAsO7bJuD5i5h7O+rAXwCYAqMVSNvg7oWupla6ArpdTFstmsHnflagX38AFOnoAju62wP7IbDu+2fh7ZzQl7SJmUpYGulFJlwcfvzBWz+WQkJZXJW9rK5KhKKaXKnQa6Ukp5CQ10pZTyEhroSinlJTTQlVLKS2igK6WUl9BAV0opL6GBrpRSXkKMMRfeqyzeWGQfsL2YL48E9pdiOa6kbXE/3tIO0La4q5K0JcEYE1XQBpcFekmIyBJjTOsL7+n+tC3ux1vaAdoWd1VWbdEhF6WU8hIa6Eop5SU8NdBHurqAUqRtcT/e0g7QtrirMmmLR46hK6WUOpen9tCVUkrlo4GulFJewuMCXUR6ish6EdkkIk+7up6SEJFtIrJSRP4WkSWurudiiMjnIrJXRFY5rQsXkekistHxM8yVNRZFIe14UURSHJ/L3yLS25U1FpWIxIvILBFZIyKrReQRx3qP+lzO0w6P+1xExF9EFonIckdbXnKsrykiCx059oOI+JXK+3nSGLqI2IENwJXALmAxMMgYs8alhRWTiGwDWhtjPO5iCRHpDGQCXxtjGjvWvQEcMMYMd/yyDTPGPOXKOi+kkHa8CGQaY95yZW0XS0RigBhjzDIRqQwsBfoBt+NBn8t52jEQD/tcRESAIGNMpoj4An8CjwCPA+ONMWNE5GNguTHmo5K+n6f10NsAm4wxW4wxJ4AxQF8X11QhGWPmAAfyre4LfOV4/BXWP0K3Vkg7PJIxZrcxZpnj8RFgLRCHh30u52mHxzGWTMdTX8digMuBnxzrS+0z8bRAjwN2Oj3fhYd+0A4G+F1ElorIEFcXUwqijTG7HY/TgGhXFlNCD4rICseQjFsPURRERBKBFsBCPPhzydcO8MDPRUTsIvI3sBeYDmwGMowxJx27lFqOeVqge5uOxpiWQC/gAcef/17BWGN5njOed7aPgNpAc2A38LZLq7lIIhIMjAMeNcYcdt7mSZ9LAe3wyM/FGJNrjGkOVMcaZahfVu/laYGeAsQ7Pa/uWOeRjDEpjp97gZ+xPmxPtscx/nlqHHSvi+spFmPMHsc/wjxgFB70uTjGaccB3xljxjtWe9znUlA7PPlzATDGZACzgMuAUBHxcWwqtRzztEBfDNR1fEPsB9wETHRxTcUiIkGOL3wQkSDgKmDV+V/l9iYC/3A8/gfwiwtrKbZT4edwHR7yuTi+gPsMWGuMGeG0yaM+l8La4Ymfi4hEiUio43EA1gkda7GCvb9jt1L7TDzqLBcAx6lK7wB24HNjzGuurah4RKQWVq8cwAcY7UltEZHvga5Y04DuAf4PmACMBWpgTY080Bjj1l84FtKOrlh/1htgG3Cv0xi02xKRjsBcYCWQ51j9LNb4s8d8LudpxyA87HMRkaZYX3rasTrQY40xLzv+/Y8BwoFkYLAx5niJ38/TAl0ppVTBPG3IRSmlVCE00JVSyktooCullJfQQFdKKS+hga6UUl5CA10ppbyEBrpSSnmJ/wdodIMprebcFwAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 30, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential');"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "7baba562-3548-4515-b86c-73378bdfef7b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 100, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential (larger x-range)');"
]
},
{
"cell_type": "markdown",
"id": "a0221d24-a685-49e4-8ea7-56295e6ab67e",
"metadata": {},
"source": [
"# Numerical example where $f$ does not asymptote to zero\n",
"\n",
"If $\\beta_{N-1} = 0$, then the PWE curve may not asymptote to zero."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "30208e22-773f-4e12-bee3-ed2ca99e82a3",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = [0, 5, 20]\n",
"beta = [-0.1, -0.06, 0]\n",
"\n",
"def foo(x, beta):\n",
" # extend values to show the [x_{n-1}, +\\infty] interval\n",
" x = x + [1.5*x[-1]]\n",
" beta = beta + [beta[-1]]\n",
" \n",
" plt.step(x, beta, '-o',where='post')\n",
" plt.grid()\n",
" plt.title('Active beta values')\n",
" \n",
"foo(x, beta)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "9f5fc2cf-14d8-4212-836e-0f303b1e4b05",
"metadata": {},
"outputs": [],
"source": [
"pwl_eval = form_pwl_eval(x,beta)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "4d4fdf57-cc58-4b5f-a15a-e27977981ae2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 30, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential');"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2df27cec-f22c-4698-b2ff-0ebc840a39fb",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 100, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential (larger x-range)');"
]
},
{
"cell_type": "markdown",
"id": "d7643718-d59a-4851-945a-318141d3a192",
"metadata": {},
"source": [
"# Numerical example where $\\beta$ is not monotone increasing\n",
"\n",
"The previous examples had the elements of $\\beta$ be monotone increasing. We can get more general behavior if we relax that constraint.\n",
"\n",
"Note that if we have strict $\\beta < 0$, then the function $f$ is invertible over the range $(0,1]$.\n",
"However, if any $\\beta_i = 0$, then $f$ is not invertible."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "270e0894-6a87-43e5-bc0b-da1f960d78f9",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"x = [0, 5, 20]\n",
"beta = [-0.1, 0, -0.06]\n",
"\n",
"def foo(x, beta):\n",
" # extend values to show the [x_{n-1}, +\\infty] interval\n",
" x = x + [1.5*x[-1]]\n",
" beta = beta + [beta[-1]]\n",
" \n",
" plt.step(x, beta, '-o',where='post')\n",
" plt.grid()\n",
" plt.title('Active beta values')\n",
" \n",
"foo(x, beta)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "1fb3f29e-6025-4f63-9c18-a47ab5442bc1",
"metadata": {},
"outputs": [],
"source": [
"pwl_eval = form_pwl_eval(x,beta)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "b1c82bd4-48cd-4185-955f-1dd4c6f55064",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 30, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential');"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "86795e99-1712-4c12-86f7-078a80d4b14f",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"vs = np.linspace(0, 100, 1000)\n",
"\n",
"plt.plot(vs, [pwl_eval(v) for v in vs], 'C0')\n",
"plt.plot(x, [pwl_eval(v) for v in x], 'C0o')\n",
"plt.plot(vs, np.exp(-0.1*vs), 'C1')\n",
"plt.grid()\n",
"plt.title('PWE vs pure exponential (larger x-range)');"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "4d0b393e-a5f1-4bae-a999-0b80b3ea9eb7",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment