{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Step Functions" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import random\n", "import numpy as np\n", "import hotstepper as hs\n", "from hotstepper import Step, Steps\n" ] }, { "source": [ "## What is a step function?" ], "cell_type": "markdown", "metadata": {} }, { "source": [ "In simple terms, atleast mathematically, it is a piecewise continous function that maps a set to a constant value via a boolean predicate indicating membership of the set, and maps to zero when a member of the compliment set.\n", "\n", "Formally, we can define a step function as the union of piecewise constant intervals, essentially a linear expansion of constant intervals by way of a basis function defined by a boolean predicate.\n", "\n", "An indicator function can be defined as:\n", "\n", "$\\begin{equation*}\n", "\\chi_A(x) = \\left\\{\n", " \\begin{array}{ll}\n", " 0 & \\quad x \\notin A \\\\\n", " 1 & \\quad x \\in A\n", " \\end{array}\n", "\\right\\}\n", "\\;\\;\\;\\;\\; where \\;A \\in \\mathbb{R}\n", "\\end{equation*}$\n", "\n", "We can also use a shorthand notation for the indicator function by using the [Iversion bracket notation](https://en.wikipedia.org/wiki/Iverson_bracket), this allows for a definition of a boolean predicate that is syntactically similar to the way we select intervals of a Numpy array.\n", "\n", "$\\chi_A(x) = {[x \\in A]}$\n", "\n", "With these definitions, we can define a step function as an expansion of constant values $\\alpha_n \\in \\mathbb{R}$ over a basis of indicator functions.\n", "\n", "$f(x) = \\displaystyle\\sum_{n=0}^{N}{\\alpha_n \\chi_n(x)}$\n", "where $\\chi_n(x) = {[x \\in A_n]}$\n", "\n", "The practical advantages of using step functions and specifically this definition comes from looking at what this equation looks similar to. It looks like a vector function defined over a set of basis functions. If we have a set of orthagonal basis functions that are complete (in the proper sense), than any linear combination of the basis functions can represent any function within the space span by those basis.\n", "\n", "Think Euclidean geometry and the x,y and z basis, we can express any point in this 3D space as a linear combination of those three basis functions, they just happen to be constant and magnitude 1 and each span the entire real line.\n", "\n", "We have the same here, the indicator functions play the role of the basis, however if we test for orthagonality of different basis fucntions (indicator functions), we find something interesting.\n", "\n", "$\\chi_1(x) = {[x \\in S_1]}$
\n", "$\\chi_2(x) = {[x \\in S_2]}$
\n", "\n", "$\\chi_1(x) \\cdot \\chi_2(x) = {[x \\in S_1]} \\cdot {[x \\in S_2]} = [x \\in (S_1 \\cap S_2)]$
\n", "\n", "Now, if the sets $S_1$ and $S_2$ overlap, the result is a new interval defined by $S_3 = S_1 \\cap S_2$ and $\\chi_3(x) = [x \\in S_3]$. This behaviour is the same as that of a mathematical group, were we apply the group operation, in this case, an intersection (the dot product) and the result is another element of the group, in this case another interval.\n", "\n", "When the two sets don't have any overlap, $S_1 \\cap S_2 = \\emptyset$, this result is the same as an [orthogonal basis](https://en.wikipedia.org/wiki/Orthogonal_basis).\n", "\n", "Based on these results, we can draw some important results.\n", "\n", "1. $\\chi_1(x) \\cdot \\chi_2(x) \\cdot \\chi_3(x) = [x \\in S_1 \\cap S_2 \\cap S_3]=[x \\in S_3 \\cap S_2 \\cap S_1] = \\chi_3(x) \\cdot \\chi_2(x) \\cdot \\chi_1(x)$\n", "2. $\\chi_1(x) + \\chi_2(x) + \\chi_3(x) = [x \\in S_1 \\cup S_2 \\cup S_3]= [x \\in S_3 \\cup S_2 \\cup S_1] = \\chi_3(x) + \\chi_2(x) + \\chi_1(x)$\n", "2. $\\chi_1(x) \\cdot (\\chi_2(x) + \\chi_3(x)) = [x \\in S_1 \\cap (S_2 \\cup S_3)] = [x \\in (S_1 \\cap S_2) \\cup (S_1 \\cap S_3)] = \\chi_1 \\cdot \\chi_2 + \\chi_1 \\cdot \\chi_3 = \\chi_2 \\cdot \\chi_1 + \\chi_3 \\cdot \\chi_1$\n", "

\n", "\n", "$where \\;\\; S_1,S_2,S_3 \\in \\mathbb{R}$\n", "\n", "These results show that using basis functions defined over set membership via indicator functions equipped with addition and multiplication operations leads to a [communatative ring](https://en.wikipedia.org/wiki/Commutative_ring). We can skip to the end of the story by observing that we have defined a [sigma algebra](https://en.wikipedia.org/wiki/%CE%A3-algebra) over partitions of the real line. Since the definitions of the partitions is based on the step data we are considering, the exact set of partitions will vary from data to data, therefore each step function defines a different, but not unique set of partitions over the real line. These partitions can be considered a none unique set of basis functions, since we could show above that when $S_1 \\cap S_2 = \\emptyset$ the sets $S_1$ and $S_2$ are orthagonal in the sense defined over a vector space. With this interpretation, our indicator functions can be promoted to basis functions with a few conditions.\n", "\n", "We won't exhaust the point and this isn't a mathematical paper, so I won't push forward any further for now, unless I get some interest in expanding these concepts further. The final result we will need before moving onto the basis interpretation within the HotStepper library is, if we have a set of indicator functions that span our data in order to represent a step function, we can define a tuple of scalars over the basis functions that represent the weighting the function has across each indicator (basis) function. Since we have alot of freedom to choose indicator functions, as long as they don't overlap (their intersection is the empty set) and to ensure we have a function defined across the entire real line, we will also need to include, for completeness, any partitions that are not covered by the indicator functions.\n", "\n", "That is a really long winded way of say that we have to have enough indicator fucntions to represent, without overlap, the entire real line, otherwise we would have gaps and therefore we would run into issues if we reparametertised our basis functions, hint hint, using a one parameter family of indicator functions that represent a limit based definition of our indicator functions, specifically our chosen favourite son, the Heaviside step function.\n", "\n" ], "cell_type": "markdown", "metadata": {} }, { "source": [ "## Step Function Basis" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "markdown", "metadata": {}, "source": [ "The idea of this libary is to take advantage of the power of linear algebra when dealing with count value data. There are a number of approaches to analysing and modelling count data, however these tend to fall in two broad categories. The first approach relies on known discrete statistical distributions such as the Poisson, Binomial and Negative Binomial. There are many powerful models that can be formulated and provide great utility via this approach, particularly when combined with Markov Chain and Bayesian techniques. The second aproach relies on approximating the discrete data as being continious and using the factory of techniques such as linear regression and linear (not nessarily linear) models. This approach is very common when the count values are relatively high and clamping the output values as integers provides good results.\n", "\n", "The challenge is when we have low count data and don't wish to use a purely statistical approach. This library provides an alternative in this areana and has the flexbility to be applicable within both high and low count regimes. The second advantage this library presents is the use of traditional linear algebra techniques, as this allows for the use of many powerful results which would only be indirectly accessible when using the continous approximation or statistical approaches.\n", "\n", "For those that need some specifics and don't want to just take my word for it, let's open this jar of pickles and see where it goes.\n", "The first step (pun intended) is to look to provide a solid foundation for any count type data we may encounter, by this I mean specifically, we don't want to treat the data in a vaccuum and on a case by case basis. That segways neatly to the solution, we represent the data in a basis, just as we use catesian coordinates to represent a position in space by way of three numbers, we can select a basis in which any of our count data can be represented.\n", "\n", "Since the count data naturally appears to be a series of step functions, often referred to as a staircase function, we can select the most straight forward and well known step function as a basis, namely the Heaviside step function. Note that the definition we are using here adopts the convention of including the zero point in right hand domain and reprsents the first location of the shift from the null mapped set to the unity mapped set.\n", "\n", "Therefore we use the definition of the [Heaviside function](https://en.wikipedia.org/wiki/Heaviside_step_function) here as:\n", "\n", "$\\begin{equation*}\n", " \\theta(t) = \\left\\{\n", " \\begin{array}{ll}\n", " 0 & \\quad t < 0 \\\\\n", " 1 & \\quad t \\geq 0\n", " \\end{array}\n", " \\right\\}\n", " \\;\\;\\;\\;\\; where \\;t \\in \\mathbb{R}\n", "\\end{equation*}$\n", "\n", "This definition seems unrelated to our discussion on sets and indicator functions, however, if we use the Iverson bracket notation to rewrite the Heaviside function, it becomes clear that the Heaviside function can be seen to represent an indicator function. \n", "\n", "$\\theta(t) = [t \\in [0,\\infty)] \\;\\;\\; where \\; t \\in \\mathbb{R}$\n", "\n", "Using the Heaviside function defined above, we can use it as a basis to represent any step data by expanding individual steps by shifting and multiplying the Heaviside function. More formally, if we have a single step at 0 with unit weight, we can represent this as;\n", "\n", "$f(t) = \\theta(t)=[t \\in [0, \\infty)] \\;\\;\\; where \\; t \\in \\mathbb{R}$\n", "\n", "We can plot this directly using a Step object from HotStepper. We have explicitly set the start and weight for clarity.\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-21T10:21:31.244232\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.3, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "t = np.arange(-5,6,0.1)\n", "fig,ax = plt.subplots()\n", "\n", "heaviside = Step(start=0,weight=1)\n", "\n", "ax.step(t,heaviside(t))\n", " \n", "ax.set_xlabel('t')\n", "ax.set_ylabel('$f(t)$')\n", "ax.set_title('Heaviside Step Function');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That seems rather unexciting, however, if we have another step function that steps at 3 instead of 0, we can subtract this second step from the first and get something slightly more interesting.\n", "\n", "Mathematically, we can represent these two individual steps via the Heaviside function as;\n", "\n", "$f(t)_1 = \\theta(t) = [t \\in [0, \\infty)]$\n", "\n", "$f(t)_2 = \\theta(t-3)=[t \\in [3, \\infty)]$\n", "\n", "And subtracting the second from the first, we have;\n", "\n", "$f(t) = f(t)_1 - f(t)_2 = \\theta(t) - \\theta(t-3)$\n", "\n", "We can once again plot the result to see what we get, this time we didn't set the weight value, as HotStepper assigns a value of 1 when no value is provided." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-21T10:21:31.585318\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.3, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAAYmElEQVR4nO3de7gcdZ3n8ffHBGTkKiZeIIGwgJfoeNvIsKuPMAPjACLZmXUUGBbxxvgojK6XXRSHQVAHx10vs7I7oiIKIiLqTh5BERVxRUGCgMpNAyMmASVyEVQUAt/9o+pUmuYcEsg51ecc3q/nOc/TXfXrqm91V/enfr/q05WqQpIkgEeNugBJ0vRhKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCplSSdyT5+Aa0+0qSV0wwb1GSSjJ38iuc3R7seZ3JknwryWsmmLdDkt8kmTMF6z02yWmTvdzpxFAYkXanHfu7L8ldA/f/ZpLXNe6O3H7Q7jKZ6xpWVe+tqnHfvEPt9q2qT032+pNsk+TkJL9IcmeSnyQ5amD+lD0HSQ5Lcu/Qa/2RqVhXu74HvM5T9bxOZ1X186raoqruHXUtM5FHXiNSVVuM3U7yM+A1VfX10VU0a30Q2Bx4GvBr4MnAM3pc//eq6gU9rk/aKPYUppEkm7U9hnnt/aOTrE2yVXv/+CQfam9vneTTSdYkuSHJO5M87NczyaOSHJXkuiS3JDkzybYD8z/fHm3/Osm3kzy9nf4n7fQ5A23/MskP29vd0Wu7fae1y789ySVJntDO64YDksxJ8j+S/CrJ9cCLh2rdOsknktyUZHWSdz/IUMHzgNOr6raquq+qrqmqs9rlfLttc0V7FP/ydvr+SS5va/xukmcOrPtnSd6e5KoktyX5ZJLNHuJzfViS7wxN63osSU5JcmKSs9vezcVJdh5o+/Qk5yW5Nckv2yG6fYB3AC9vt+WKcZ7XR7X7yQ1Jbm73n63beWNDdK9I8vP2uT96YJ27JVme5I52nR94kO1b2j5/d7T70z7t9O2SLGvrXpHktQOPObbdx05rt/lHSZ7cPtc3J1mZ5EVDq9o5yffb9fzr2P6aoeHG9jk4PsmF7bK/lvY91s7fvX2db09yRZI9B+btlOSC9nHnAfOY5QyFaaSqfg9cAuzRTtoDuAF4/sD9C9rb/wvYGvh37fRDgVduxOqPBP5Tu6ztgNuAEwfmfwXYFXg88APgM23NFwO/Bf5soO3BwOnjrOMVbc0LgccBrwPuGqfda4H9gecAS4CXDs0/BVgL7NK2eREw0RDVRcB7krwyya6DM6rqhe3NZ7XDDZ9L8hzgZOBv2xo/CixL8uiBh/4N8BfAzjQ9j3dOsO6NcSDwLuCxwArgPQBJtgS+DnyV5nXaBfhGVX0VeC/wuXZbnjXOMg9r//6UZr/ZAhgeznoB8BRgL+CYJE9rp38Y+HBVbUWz3WeOV3SS3YBPA28DtgFeCPysnX0GsKqt+6XAe5MM7jcvAU5tt/ky4Fyaz6jtgeNoXotBhwKvAp5Esz/883g1tQ6meX88HtgUeGtb7/bA2cC7gW3b6V9IMr993OnApTRhcDzNPjy7VZV/I/6jedPs3d4+nmbnngv8AngjcAKwGc0H6OOAOcDdwOKBZfwt8K0Jln9s2/72ob8CdmnbXA3sNfCYJwH3AHPHWd427WO3bu+/Gzi5vb0lTUjsOLDu09rbrwK+CzxznGV+i2YIDeCbwOsG5r2oXd9c4AnAH4A/Gph/EHD+BNv+RzRH0Je227MC2HdgfvcctPf/D3D80DKuBfYYeK0Ga9sPuG6CdR9G82E1+Jzv3k7/zlDbwdfiFODjQ+u4ZmBbL3uQ1/m0B3levwG8fmDeU8ZeY2BRW8OCgfnfBw5sb3+bJqTmrWdf/ijwwXGmLwTuBbYcmPaPwCkDtZ83MO8lwG+AOQP7VQHbDGzXCQPtF9Ps43MGtmXuQNt3DrR9PfDV9vZ/B04dqvVcmg//HdrXb/OBeacPP8ez7c+ewvRzAbAn8FzgR8B5NEfvuwMrquoWmqOWTWh6EWNuoDmimsiZVbXN4N/Q/B2BL7Vd6NtpQuJe4AntcM4J7VDAHaw78hvrSp8O/FV7NP1XwA+q6gYe6FSaN9wZSW5M8k9JNhmn3XbAyqFtG6xzE+CmgVo/SnME+ABVdVc1J7v/PU2gngl8PgNDY+M8D28ZW3a7/IVtTWOGaxucN+yioef9ogdpO+gXA7d/R3NUT1vLdRu4jGHb8cB9Zixo17feV9P0iq5JM+y3/wTrmKi+7YBbq+rOofUP7rO/HLh9F/CrWneyeKxHucVAm+HXYRMmHt6ZaLt2BP566PV+Ac1B0XbAbVX126H1zGqGwvTzXZojuL8ELqiqq2iOWPZj3dDRr2iO8HYceNwOwOqNWO9KmiPowQ+wzapqNU3XeymwN83wz6L2MQFoa7wB2JeJh46oqnuq6l1VtRj4jzRDRIeO0/Qmmg+XwW0brPMPNEesY3VuVVVPX98GVtUdNEMsmwM7TdBsJfCeoefhMVX12YE2w7XduL51D/kt8JixO0me+BAeu5Jm6Gc86/vJ4xt54D6zlvt/GI+/4KqfVtVBNOH7PuCsJJtPUN/O40y/Edi2Hf4aXP/G7LPDr8M9NO+Nh2IlTU9h8PXevKpOoNkPHzu0nTuMv5jZw1CYZqrqdzRDHW9gXQh8l2b8/YK2zb00R7zvSbJlkh2BNwMb8/3pf2mXtyNAkvlJlrbztqT5IL6F5sPsveM8/nSaoa4XAp8fbwVJ/jTJH6c5KXwHzZv4vnGangn8XZIFSR4LdF8hraqbgK8B/zPJVu3J052T7DHOckjy90mel2TTNCeE30gzjHNt2+SX3P9D9mPA69KcQE+SzZO8eOjD7A1tbdsCRwOfG2/dD+IK4OlJnt3WdOxDeOyXgScleVOSR7ev/58MbMuiTPyFg88C/7U9eboF685BrF3fSpMckmR+Vd1H8/zB+K/dJ4BXJtmrfW22T/LUqlpJsx//Y5ovHDyTpvexMfvsIUkWJ3kMzTmHs+qhfw31NOAlSf6i7RFvlmTPJAva3u5y4F3t/vMCmmGtWc1QmJ4uoOkKf3/g/pY047pjjqQ54rwe+A7Nh/LJG7HODwPLgK8luZPmBO3Yh82naXoCq4Gr2nnDPkszzPXNqproaO2JwFk0gXA1zXadOk67j9EMM11Bc1L7i0PzD6U5WXgVzQnxs2i6++Mp4JM0R5A3An8OvLiqftPOPxb4VDt08LKqWk5zovsj7bJX0JwDGHQ6TTBdTzNU8u4J1j1+QVU/ofkQ+zrwU5rXb0Mfe2e7DS+hGRL5Kc2JY1gXxrck+cE4Dz+Z5vn+NvBvwO9p9qMNsQ9wZZLf0OwrB1bVA74kUFXfpzmh+0GarwBfwLreyUE0vcwbgS8B/1Ab9zXsU2nOv/yC5pzb3z3UBbRhtZTmvNMamp7D21j32XgwzfvgVuAfaN4Ls1rakyeSNkD8nxLNcvYUJEkdQ0GS1HH4SJLUsacgSerM6B/EmzdvXi1atGjUZUjSjHLppZf+qqrmjzdvRofCokWLWL58+ajLkKQZJcmE/5nt8JEkqWMoSJI6hoIkqWMoSJI6hoIkqdNLKKS5cPrNSX48wfwk+ec0l+j7YZLn9lGXJOn++uopnELzK4sT2ZfmUo+7AofTXP1KktSzXv5Poaq+nWTRgzRZCny6mt/cuCjJNkme1P52vjRS15wE14172SA9XDsfDE89fNRVaDzT5ZzC9tz/0nqrmODSkkkOT7I8yfI1a9b0Upwe2a47HW69fNRVzB63Xm7ITmcz7j+aq+ok4CSAJUuW+Gt+6sW2z4YXf2vUVcwOZ+856gr0YKZLT2E197/e6gI27tqtkqSHYbqEwjLg0PZbSLsDv/Z8giT1r5fhoySfBfYE5iVZRXOt000AqupfgHOA/Wiuh/s7mmu8SpJ61te3jw5az/wC3tBHLZKkiU2X4SNJ0jRgKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKnTWygk2SfJtUlWJDlqnPk7JDk/yWVJfphkv75qkyQ1egmFJHOAE4F9gcXAQUkWDzV7J3BmVT0HOBD4333UJklap6+ewm7Aiqq6vqruBs4Alg61KWCr9vbWwI091SZJavUVCtsDKwfur2qnDToWOCTJKuAc4MjxFpTk8CTLkyxfs2bNVNQqSY9Y0+lE80HAKVW1ANgPODXJA+qrqpOqaklVLZk/f37vRUrSbNZXKKwGFg7cX9BOG/Rq4EyAqvoesBkwr5fqJElAf6FwCbBrkp2SbEpzInnZUJufA3sBJHkaTSg4PiRJPeolFKpqLXAEcC5wNc23jK5MclySA9pmbwFem+QK4LPAYVVVfdQnSWrM7WtFVXUOzQnkwWnHDNy+Cnh+X/VIkh5oOp1oliSNmKEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSer0FgpJ9klybZIVSY6aoM3LklyV5Mokp/dVmySpMbePlSSZA5wI/DmwCrgkybKqumqgza7A24HnV9VtSR7fR22SpHX66insBqyoquur6m7gDGDpUJvXAidW1W0AVXVzT7VJklp9hcL2wMqB+6vaaYOeDDw5yYVJLkqyz3gLSnJ4kuVJlq9Zs2aKypWkR6bpdKJ5LrArsCdwEPCxJNsMN6qqk6pqSVUtmT9/fr8VStIs11corAYWDtxf0E4btApYVlX3VNW/AT+hCQlJUk/6CoVLgF2T7JRkU+BAYNlQm/9L00sgyTya4aTre6pPkkRPoVBVa4EjgHOBq4Ezq+rKJMclOaBtdi5wS5KrgPOBt1XVLX3UJ0lq9PKVVICqOgc4Z2jaMQO3C3hz+ydJGoHpdKJZkjRihoIkqWMoSJI6hoIkqWMoSJI6hoIkqWMoSJI6hoIkqfOQQyHJ5u31ESRJs8x6QyHJo5IcnOTsJDcD1wA3tVdIe3+SXaa+TElSHzakp3A+sDPNVdGeWFULq+rxwAuAi4D3JTlkCmuUJPVkQ377aO+quifJoqq6b2xiVd0KfAH4QpJNpqxCSVJv1ttTqKp72ptfHJ6XZPehNpKkGWxDzim8LMkJwJZJnpZk8DEnTV1pkqS+bcjw0YXAZsBrgA8AT0lyO3AjcNfUlSZJ6tt6Q6GqVgOfTnJdVV0IkORxwCKabyJJkmaJ9YZCklTjwrFp7RXRbhluM0U1SpJ6siFfSf1mkiOT7DA4McmmSf4syaeAV0xNeZKkPm3IOYWfAvcCX0ryJOB2mnMMc4CvAR+qqsumrEJJUm82JBSeV1WHJ3kNsAMwH7irqm6f0sokSb3bkOGjbyT5HvAE4FBgO/zWkSTNShvy7aO3JtmZ5ucudgIOAJ6e5G7gx1X18imuUZLUkw0ZPqKqrkuyd1X9ZGxaki2AZ0xZZZKk3m1QKAAMBkJ7/zc0P4gnSZolvMiOJKljKEiSOoaCJKljKEiSOoaCJKljKEiSOoaCJKnTWygk2SfJtUlWJDnqQdr95ySVZElftUmSGr2EQpI5wInAvsBi4KAki8dptyXwRuDiPuqSJN1fXz2F3YAVVXV9Vd0NnAEsHafd8cD7gN/3VJckaUBfobA9sHLg/qp2WifJc4GFVXX2gy0oyeFJlidZvmbNmsmvVJIewabFieYkjwI+ALxlfW2r6qSqWlJVS+bPnz/1xUnSI0hfobAaWDhwf0E7bcyWNL+4+q0kPwN2B5Z5slmS+tVXKFwC7JpkpySbAgcCy8ZmVtWvq2peVS2qqkU0v756QFUt76k+SRI9hUJVrQWOAM4FrgbOrKorkxyX5IA+apAkrd8GX09hY1XVOcA5Q9OOmaDtnn3UJEm6v2lxolmSND0YCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkjqEgSeoYCpKkTm+hkGSfJNcmWZHkqHHmvznJVUl+mOQbSXbsqzZJUqOXUEgyBzgR2BdYDByUZPFQs8uAJVX1TOAs4J/6qE2StE5fPYXdgBVVdX1V3Q2cASwdbFBV51fV79q7FwELeqpNktTqKxS2B1YO3F/VTpvIq4GvjDcjyeFJlidZvmbNmkksUZI07U40JzkEWAK8f7z5VXVSVS2pqiXz58/vtzhJmuXm9rSe1cDCgfsL2mn3k2Rv4Ghgj6r6Q0+1SZJaffUULgF2TbJTkk2BA4Flgw2SPAf4KHBAVd3cU12SpAG9hEJVrQWOAM4FrgbOrKorkxyX5IC22fuBLYDPJ7k8ybIJFidJmiJ9DR9RVecA5wxNO2bg9t591SJJGt+0O9EsSRodQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEkdQ0GS1DEUJEmd3kIhyT5Jrk2yIslR48x/dJLPtfMvTrKor9okSY1eQiHJHOBEYF9gMXBQksVDzV4N3FZVuwAfBN7XR22SpHXm9rSe3YAVVXU9QJIzgKXAVQNtlgLHtrfPAj6SJFVVk13MRW+CWy6f7KVqtrr1ctj22aOuYna59XI4e89RVzGzPe7ZsPuHJn+5fQ0fbQ+sHLi/qp02bpuqWgv8Gnjc8IKSHJ5keZLla9asmaJypXW2fTbsfPCoq5g9dj7YkJ3O+uopTJqqOgk4CWDJkiUPqxcxFekqacM89fDmT9NTXz2F1cDCgfsL2mnjtkkyF9gauKWX6iRJQH+hcAmwa5KdkmwKHAgsG2qzDHhFe/ulwDen4nyCJGlivQwfVdXaJEcA5wJzgJOr6sokxwHLq2oZ8Ang1CQrgFtpgkOS1KPezilU1TnAOUPTjhm4/Xvgr/uqR5L0QP5HsySpYyhIkjqGgiSpYyhIkjqZyd/6TLIGuGHUdWygecCvRl3EFHL7Zja3b+Z6ONu2Y1XNH2/GjA6FmSTJ8qpaMuo6porbN7O5fTPXZG+bw0eSpI6hIEnqGAr9OWnUBUwxt29mc/tmrkndNs8pSJI69hQkSR1DQZLUMRRGIMlbklSSeaOuZTIleX+Sa5L8MMmXkmwz6po2VpJ9klybZEWSo0Zdz2RKsjDJ+UmuSnJlkjeOuqapkGROksuSfHnUtUy2JNskOat9312d5D9s7DINhZ4lWQi8CPj5qGuZAucBz6iqZwI/Ad4+4no2SpI5wInAvsBi4KAki0db1aRaC7ylqhYDuwNvmGXbN+aNwNWjLmKKfBj4alU9FXgWk7CdhkL/Pgj8N2DWneGvqq+119cGuIjmCnsz2W7Aiqq6vqruBs4Alo64pklTVTdV1Q/a23fSfKAMXzt9RkuyAHgx8PFR1zLZkmwNvJDmWjRU1d1VdfvGLtdQ6FGSpcDqqrpi1LX04FXAV0ZdxEbaHlg5cH8Vs+xDc0ySRcBzgItHXMpk+xDNQdh9I65jKuwErAE+2Q6PfTzJ5hu70N4usvNIkeTrwBPHmXU08A6aoaMZ68G2r6r+tW1zNM3QxGf6rE0PT5ItgC8Ab6qqO0Zdz2RJsj9wc1VdmmTPEZczFeYCzwWOrKqLk3wYOAr4+41dqCZRVe093vQkf0yT7FckgWZo5QdJdquqX/RY4kaZaPvGJDkM2B/YaxZcY3s1sHDg/oJ22qyRZBOaQPhMVX1x1PVMsucDByTZD9gM2CrJaVV1yIjrmiyrgFVVNda7O4smFDaK/7w2Ikl+Biypqlnzy41J9gE+AOxRVWtGXc/GSjKX5oT5XjRhcAlwcFVdOdLCJkmao5NPAbdW1ZtGXM6UansKb62q/UdcyqRK8v+A11TVtUmOBTavqrdtzDLtKWgyfQR4NHBe2xu6qKpeN9qSHr6qWpvkCOBcYA5w8mwJhNbzgf8C/CjJ5e20d7TXU9fMcCTwmSSbAtcDr9zYBdpTkCR1/PaRJKljKEiSOoaCJKljKEiSOoaCJKljKEiTrP3lytePug7p4TAUpMm3DWAoaEYyFKTJdwKwc5LLk7x/1MVID4X/vCZNsvYXR79cVc8YdS3SQ2VPQZLUMRQkSR1DQZp8dwJbjroI6eEwFKRJVlW3ABcm+bEnmjXTeKJZktSxpyBJ6hgKkqSOoSBJ6hgKkqSOoSBJ6hgKkqSOoSBJ6vx/s5qtnDGSfaUAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "t = np.arange(-5,6,0.1)\n", "fig,ax = plt.subplots()\n", "\n", "step1 = Step(start=0)\n", "step2 = Step(start=3)\n", "steps = step1 - step2\n", "\n", "ax.step(t,steps(t))\n", " \n", "ax.set_xlabel('t')\n", "ax.set_ylabel('$f(t)$')\n", "ax.set_title('Two Heaviside Step Functions combined');" ] }, { "source": [ "Before we move on, we can also scale or weight the step. Recalling the definition of a step function expressed in a basis of indicator functions.\n", "\n", "$f(x) = \\displaystyle\\sum_{n=0}^{N}{\\alpha_n \\chi_n(x)}$\n", "where $\\chi_n(x) = {[x \\in A_n]}$\n", "\n", "We can assign a value to the $\\alpha_n$ that will scale the step value, in the current example, we can change the weight of each step and when combined, see the result as before.\n", "\n", "For example, let;\n", "\n", "$\\alpha_1 = 2$\n", "\n", "$\\alpha_2 = 3$\n", "\n", "$f(t)_1 = \\alpha_1\\theta(t) = 2 \\cdot [t \\in [0, \\infty)]$\n", "\n", "$f(t)_2 = \\alpha_2\\theta(t-3)=3 \\cdot [t \\in [3, \\infty)]$\n", "\n", "And subtracting the second from the first, we have;\n", "\n", "$f(t) = f(t)_1 - f(t)_2 = 2\\theta(t) - 3\\theta(t-3)$\n", "\n", "The result is plotted below." ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-21T10:21:31.918983\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.3, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "t = np.arange(-5,6,0.1)\n", "fig,ax = plt.subplots()\n", "\n", "step1 = Step(start=0, weight=2)\n", "step2 = Step(start=3,weight=3)\n", "steps = step1 - step2\n", "\n", "ax.step(t,steps(t))\n", " \n", "ax.set_xlabel('t')\n", "ax.set_ylabel('$f(t)$')\n", "ax.set_title('Two Reweighted Heaviside Step Functions combined');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Ok, while you haven't fallen asleep already, we can add and subtract a bunch of these shifted and reweighted instances of the Heaviside function and get all sorts of crazy stairs and step looking reults.\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n 2021-03-21T10:21:33.772820\r\n image/svg+xml\r\n \r\n \r\n Matplotlib v3.3.3, https://matplotlib.org/\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "def generate_step_func(samples, x_vals):\n", " steps = np.zeros(len(x_vals))\n", "\n", " for i in range(samples):\n", " signs = random.choice([-3,-2,-1,1,2,3])\n", " shifts = random.randint(-5,5)\n", " steps += signs*Step(start=shifts)(x_vals)\n", " \n", " return steps\n", " \n", "\n", "t = np.arange(-1,6,0.1)\n", "fig,axs = plt.subplots(nrows=4, ncols=5,figsize=(28,12),sharey=True, sharex=True)\n", "\n", "\n", "plt.tight_layout()\n", "\n", "for i,ax in np.ndenumerate(axs):\n", " steps_data = generate_step_func(10, t)\n", " ax.step(t,steps_data)\n", " ax.set_xlabel('t')\n", " ax.set_title('Multiple Heaviside Step Functions combined')\n", " ax.set_ylabel('f(t)')\n", "\n" ] }, { "source": [ "## The Heaviside Basis" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "markdown", "metadata": {}, "source": [ "From the sample charts generated above, it can be observed that the ability to produce a step function of any level of complexity by forming linear combinations of Heaviside functions is fairly simple and easy to understand. By using the Heaviside function as a basis, any combination of up and down steps, which occur at any time can be defined mathematically. By putting the data into this format, we can perform analysis, modifications and modelling with ease by using the rules of linear algebra.\n", "\n", "Now for the question that means the most, why would we want to be able to use linear algebra techniques for our data? \n", "\n", "Let's look once again at the step function representation using the Heaviside function basis.\n", "\n", "$f(x) = \\displaystyle\\sum_{n=0}^{N}{\\alpha_n \\theta(t-k_n)}$\n", "\n", "$where \\;\\;\\; t, \\alpha_n, k_n \\in \\mathbb{R}$\n", "\n", "Where we scale the basis with the values of $\\alpha_n$ and shift the basis with the values $k_n$. The shifting property is why we discussed the set nature of the indicator functions and their relation to the Heaviside function. By shifting the basis, we are effectively defining a new set, the indicator function maps the independant variable $t$ membership of the set defined by $S = [k_n, \\infty)$ to either 0 or 1. From this, we can see that the $\\alpha_n$ values represent the scalar tuple that are the weighting of each basis component for the vector space span by our step function.\n", "\n", "Just a reminder of an analogy, the real 3D vector space of positions.\n", "\n", "We can represent a point in that space as a weighting of the basis vectors x, y and z, where a more convenient representation of the basis vectors is $\\displaystyle\\sum_{i=1}^{3}{x_i}$\n", "\n", "Therefore a point in this space is;\n", "\n", "$p(a,b,c) = \\displaystyle\\sum_{i=1}^{3}{x_i} \\cdot (a,b,c)^T = a x_1 + b x_2 + c x_3$\n", "\n", "So for our step function, we have the Heaviside function playing the role of the x's and the $\\alpha$'s playing the role of the weights. For now we'll leave it there, as we now have enough background to explore the next fun part of HotStepper, when we create our step function and then change the basis functions to something else, without spoiling the surprise, we get something alot smoother and having the flexibility to rebase our data for a large number of reasons and ofcourse for fun!" ] }, { "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.5-final" } }, "nbformat": 4, "nbformat_minor": 4 }