{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Exercise 8: Unfolding" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In almost any experiment, the measured variable is not directly the physics quantity of interest.\n", "Instead, the answer of the experimental apparatus has to be translated by the experimentalist, e.g., the signal height might be related to the energy of a particle.\n", "In real experiments, it is impossible to always find the true value of the physics quantity, since the translation suffers from various uncertainties.\n", "E.g., the measured signal might be distorted due to noise and systematic limitations of the experiment.\n", "Moreover, the *response function* of the experiment is convoluted in the measured signal.\n", "In most cases, an analytical deconvolution of the signal is impossible or at least not practical.\n", "Instead, numerical methods are applied to find the distribution of true values and their uncertainties for a given distribution of measured values.\n", "This process is called unfolding.\n", "\n", "In this exercise, we consider only discrete distributions with $N$ bins, corresponding either to histograms of continuous variables (like energy) or naturally discrete variables (like the mass number of atomic nuclei).\n", "Provided that the true and measured distributions have the same number of bins, the experimental response can be described by an $N \\times N$ migration (or transfer) matrix $R$,\n", "where each element $R_{ij}$ describes the probability of a true value in bin $i$ to be classified or measured, respectively, in bin $j$.\n", "This is reflected in the relation\n", "\n", "$$\\vec{g} = R \\cdot \\vec{f},$$\n", " \n", "where $\\vec{f}$ is a vector with $N$ elements containing the true values for each bin, $R$ is the migration matrix corresponding to the experimental response,\n", "and $\\vec{g}$ is a vector containing the measured / observed values for each bin. This means that an ideal experiment would have the unit matrix as migration matrix.\n", "\n", "The first step of the unfolding procedure is the determination of the migration matrix, e.g., by calibration measurements or simulations.\n", "We assume that this step has been done already, and the exercises focus on the second step: unfolding of a given measured distribution provided that the migration matrix is known.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### **Hints:**\n", "\n", "Numpy offers several matrix operations, for example:\n", "\n", "[`linalg.inv(R)`](https://numpy.org/doc/stable/reference/generated/numpy.linalg.inv.html) returns the inverse of the a (migration) matrix `R`. See also [`np.matrix.I`](https://numpy.org/doc/stable/reference/generated/numpy.matrix.I.html) which performs the same operation.\n", "\n", "[`lambda, U = linalg.eig(R)`](https://numpy.org/doc/stable/reference/generated/numpy.linalg.eig.html) returns the eigenvalues and the matrix `U` of eigenvecotrs you need to diagonalize `R`.\n", "\n", "[**Normally you should not capitalize variables in python!**](https://www.python.org/dev/peps/pep-0008/#function-and-variable-names)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 8.1: Simple Case with 2 Categories (voluntary)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simplest situation is an experiment with $N=2$, for example the number of fouls per team in a soccer match between team A and B.\n", "Let us assume that the referee is biased and favors team B.\n", "Whenever the referee detects a foul committed by team B, he gives a free kick to team A in only **70%** of the cases, but a free kick to team B in the remaining **30%** of the cases.\n", "Vice-versa, when team A commits a foul, team B gets the free kick in **90%** of the cases, but team A only in the remaining **10%** of the cases.\n", "\n", "Thus, the diagonal entries of the migration matrix $R$ are 0.9 and 0.7, and the off-diagonal elements are 0.1 and 0.3 (think about which is the correct location of each element).\n", "\n", "In the match there have been **22** free kicks for team A, and **24** for team B.\n", "Construct the migration matrix $R$, and estimate by inversion of $R$ how many fouls each team has committed.\n", "\n", "**You can do this using LaTeX in Markdown, or in Python with Numpy arrays**." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Free kicks of team A:\t22.0 \t (= foul count for team B)\n", "Free kicks of team B:\t24.0 \t (= foul count for team A)\n", "Fraction of wrong decisions, for team A:\t0.1\n", "Fraction of wrong decisions, for team B:\t0.3\n" ] } ], "source": [ "epsilon1 = 0.1 # 10% wrong detection probability, if team A commits foul\n", "epsilon2 = 0.3 # 30% wrong detection probability, if team B commits foul\n", "foulsDetectedForTeamA = 24. # = number of free kicks for team B\n", "foulsDetectedForTeamB = 22. # = number of free kicks for team A\n", "\n", "# Data from exercise sheet \n", "print(f\"Free kicks of team A:\\t{foulsDetectedForTeamB} \\t (= foul count for team B)\"),\n", "print(f\"Free kicks of team B:\\t{foulsDetectedForTeamA} \\t (= foul count for team A)\")\n", "print(f\"Fraction of wrong decisions, for team A:\\t{epsilon1}\")\n", "print(f\"Fraction of wrong decisions, for team B:\\t{epsilon2}\")\n", " \n", "# TODO: Unfold the referees bias decisions using numpy!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`# TODO` ... or in Markdown!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercise 8.2: Regularization **(obligatory)**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we consider a counting experiment with 7 categories (bins): each bin contains a number of observed events (e.g., particle decays, cars with different colors, classes of stars in an astronomical survey).\n", "We start from the following true distribution $\\vec{f}$ of 3000 events in the 7 bins:\n", "\n", "| 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n", "| :-- | :-- | :-- | :-- | :-- | :- - | :-- |\n", "| 35 | 218 | 814 | 1069 | 651 | 195 | 18 |\n", "\n", "In our experiment some of the events are misclassified.\n", "For an event which truly belongs to bin $i$, there is a 30% chance each that it is measured instead in bin $i-1$ or bin $i+1$ (except if the measured bin would be outside of the possible range from 1 to 7).\n", "Consequently, the migration matrix $R$ has 0.3 in all elements next to the diagonal, and 0.4 in the diagonal elements except for the corner elements which are 0.7.\n" ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [], "source": [ "# Here are some nice colors for your illustrations:\n", "green = '#009682'\n", "blue = '#4664aa'\n", "maygreen = '#8cb63c'\n", "yellow = '#fce500'\n", "orange = '#df9b1b'\n", "brown = '#a7822e'\n", "red = '#a22223'\n", "purple = '#a3107c'\n", "cyan = '#23a1e0'\n", "black = '#000000'\n", "light_grey = '#bdbdbd'\n", "grey = '#797979'\n", "dark_grey = '#4e4e4e'\n", "\n", "clrs = [\n", " blue,\n", " maygreen,\n", " orange,\n", " green,\n", " cyan,\n", " red,\n", " grey\n", "]" ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[0.7, 0.3, 0. , 0. , 0. , 0. , 0. ],\n", " [0.3, 0.4, 0.3, 0. , 0. , 0. , 0. ],\n", " [0. , 0.3, 0.4, 0.3, 0. , 0. , 0. ],\n", " [0. , 0. , 0.3, 0.4, 0.3, 0. , 0. ],\n", " [0. , 0. , 0. , 0.3, 0.4, 0.3, 0. ],\n", " [0. , 0. , 0. , 0. , 0.3, 0.4, 0.3],\n", " [0. , 0. , 0. , 0. , 0. , 0.3, 0.7]])" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Number of Categories/Bins. Transfer matrix will be n_bins x n_bins\n", "n_bins = 7\n", "n_events = 3000 \n", "\n", " # True event vector\n", "f = np.array([35., 218., 814., 1069., 651., 195., 18.])\n", "\n", "R = np.zeros((7,7))\n", "R += np.identity(7)*0.4\n", "R += np.diag([1]*6, 1)*0.3\n", "R += np.diag([1]*6, -1)*0.3\n", "R[0,0] = 0.7 \n", "R[-1,-1] = 0.7 \n", "R" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, let's consider an ideal experiment without any uncertainties:\n", "\n", "**a) Obtain the observed distribution of events $\\vec{g}$.\n", "Then, unfold the observation by multiplication with $R^{-1}$, and compare the result to the true data.\n", "For this, plot the true distribution, the observed distribution, and the unfolded distribution.**" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g = R.dot(f)\n", "fin = np.linalg.inv(R).dot(g)\n", "\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),f, label=\"f\", color='none', edgecolor='green')\n", "plt.bar(list(np.arange(7)),g, label=\"g\", color='none', edgecolor='blue')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Its the same. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we consider a more realistic case with uncertainties on the observed events (e.g., Poissonian uncertainties in the case of particle decays).\n", "Thus, the number of observed events deviates from the ideal case, and it is more difficult to reconstruct the original distribution.\n", "In our specific case, the experiment has observed the following distribution $\\vec{g}_\\mathrm{obs}$ for the true distribution $\\vec{f}$ given above:\n", "\n", "\n", "| 1 | 2 | 3 | 4 | 5 | 6 | 7 |\n", "| :-- | :-- | :-- | :-- | :-- | :- - | :-- |\n", "| 99 | 386 | 695 | 877 | 618 | 254 | 71 |\n", "\n", "\n", "**b) Unfold the observation by multiplication with $R^{-1}$, and compare the true, observed, and unfolded distribution by plotting them together.\n", "Which problems do you encounter?**" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [], "source": [ "# Measurement including uncertainties\n", "g_obs = np.array([99., 386., 695., 877., 618., 254., 71])" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjMAAAGdCAYAAADnrPLBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAyh0lEQVR4nO3de3QU9d3H8U9umxDMBQi5SRICIgS5B4kRRRCeREQrFS8FIqgULyeoEIuYFiVIH0JBEC8UxAv6HOCB2iNIES0BedBC5BKMCCzIJRqKSTDWZCFIAsk+f6SsbrmH3Z3M5v06Z053Zn4z8505mP109je/8bHb7XYBAACYlK/RBQAAAFwJwgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1f6ML8IS6ujp99913CgkJkY+Pj9HlAACAS2C323Xs2DHFxsbK1/f891+aRJj57rvvFBcXZ3QZAACgAQ4fPqw2bdqcd32TCDMhISHSvy9GaGio0eUAAIBLYLPZFBcX5/geP58mEWbO/LQUGhpKmAEAwGQu1kWEDsAAAMDUCDMAAMDUCDMAAMDUmkSfGQAAGsJut+v06dOqra01uhSv5OfnJ39//yseNoUwAwDAOdTU1KikpEQnTpwwuhSvFhwcrJiYGFkslgbvgzADAMB/qKurU1FRkfz8/BQbGyuLxcKgqy5mt9tVU1Oj77//XkVFRerQocMFB8a7kAaHmU8//VSzZs1SQUGBSkpKtGLFCg0dOlSSdOrUKU2ePFlr1qzRoUOHFBYWpkGDBmnGjBmKjY117KNt27b69ttvnfabm5urZ5991jG/c+dOZWZmatu2bWrdurWeeOIJPfPMMw0tGwCAi6qpqVFdXZ3i4uIUHBxsdDleq1mzZgoICNC3336rmpoaBQUFNWg/De4AXFVVpe7du2vevHlnrTtx4oR27Nih5557Tjt27ND777+vffv26Ve/+tVZbV944QWVlJQ4pieeeMKxzmazKS0tTQkJCSooKNCsWbOUk5OjhQsXNrRsAAAuWUPvFODSueIaN/jOzODBgzV48OBzrgsLC1NeXp7Tstdee019+vRRcXGx4uPjHctDQkIUHR19zv0sWbJENTU1evvtt2WxWHTdddepsLBQc+bM0SOPPNLQ0gEAgBfxWJ+ZyspK+fj4KDw83Gn5jBkzNG3aNMXHx2vEiBGaMGGC/P3ry8rPz1e/fv2cOgWlp6frT3/6k3788Ue1aNHinMeqrq5WdXW1Y95ms7ntvAAATUxxsVRe7rnjRURIv7gJgLN5JMycPHlSkyZN0vDhw51eJ/Dkk0+qV69eatmypTZv3qzs7GyVlJRozpw5kqTS0lIlJiY67SsqKsqx7nxhJjc3V1OnTnXrOQEAmqDiYikpSfLkE07BwZLV2qgDTdu2bTV+/HiNHz/ekOO7PcycOnVK9913n+x2u+bPn++0Lisry/G5W7duslgsevTRR5Wbm6vAwMAGHzM7O9tp32deVAUAwBUpL68PMosX14cad7NapYyM+uM24jDzn3x8fJweDHI3t4aZM0Hm22+/1SeffHLRlzympKTo9OnT+uabb9SxY0dFR0errKzMqc2Z+fP1s5GkwMDAKwpDAOAynv5JwhP42aM+yPTqZXQVl6SmpuaKxnAxA7eFmTNBZv/+/dqwYYNatWp10W0KCwvl6+uryMhISVJqaqr+8Ic/6NSpUwoICJAk5eXlqWPHjuf9iQkAGg0jfpLwBBP87NGU9e/fX126dJG/v78WL16srl276tVXX9XEiRP12WefqXnz5kpLS9NLL72kiIgISdJf//pXTZ06VQcOHFBwcLB69uypDz74QM2bN1f//v3Vo0cPzZ0713GMoUOHKjw8XO+8885Zx2/btq0k6de//rUkKSEhQd98841bz7nBYeb48eM6cOCAY76oqEiFhYVq2bKlYmJidM8992jHjh1avXq1amtrVVpaKklq2bKlLBaL8vPztWXLFg0YMEAhISHKz8/XhAkTlJGR4QgqI0aM0NSpUzVmzBhNmjRJu3bt0ssvv6yXXnrJFecOAO7l6Z8kPMGkP3s0Ne+++64ef/xxbdq0SRUVFbr11lv129/+Vi+99JJ++uknTZo0Sffdd58++eQTlZSUaPjw4Zo5c6Z+/etf69ixY/rss89kt9sbdOxt27YpMjJSixYt0m233SY/Pz+Xn99/anCY2b59uwYMGOCYP9NHZfTo0crJydGqVaskST169HDabsOGDerfv78CAwO1bNky5eTkqLq6WomJiZowYYJTX5ewsDCtXbtWmZmZSk5OVkREhJ5//nkeywZgLib6SQLeoUOHDpo5c6Yk6Y9//KN69uyp6dOnO9a//fbbiouL09dff63jx4/r9OnTuvvuu5WQkCBJ6tq1a4OP3bp1a0lSeHj4BbuEuFKDw0z//v0vmNouluh69eqlzz///KLH6datmz777LMG1QgAQFOUnJzs+Pzll19qw4YNuuqqq85qd/DgQaWlpWngwIHq2rWr0tPTlZaWpnvuucdU3TkY2hAAAC/TvHlzx+fjx4/rzjvvVGFhodO0f/9+9evXT35+fsrLy9NHH32kzp0769VXX1XHjh1VVFQk/XuE3v+8QXHq1CmPn9OFEGYAAPBivXr10u7du9W2bVtdc801TtOZ0OPj46O+fftq6tSp+uKLL2SxWLRixQrp3z8blZSUOPZXW1urXbt2XfCYAQEBqq2tdfOZ/Yy3ZgMAcLmsVtMcJzMzU2+88YaGDx+uZ555Ri1bttSBAwe0bNkyvfnmm9q+fbvWr1+vtLQ0RUZGasuWLfr++++V9O9O67feequysrL04Ycfqn379pozZ44qKioueMy2bdtq/fr16tu3rwIDA93+kxVhBgCASxURUf9oekaG544ZHFx/3AaKjY3Vpk2bNGnSJKWlpam6uloJCQm67bbb5Ovrq9DQUH366aeaO3eubDabEhISNHv2bMf7Fx9++GF9+eWXGjVqlPz9/TVhwgSnB4DOZfbs2crKytIbb7yhq6++2u2PZvvYG/rslYnYbDaFhYWpsrLyogP3AYDL7NghJSdLBQXe8zSTN57TOZw8eVJFRUVKTExUUFCQ80rezeRSF7rWl/r9zZ0ZAAAuR3y8V4cLM6IDMAAAMDXCDAAAMDXCDAAAMDXCDAAAMDXCDAAAMDXCDAAAMDXCDAAAMDXGmQEA4DIwZl7jQ5gBAOASFRdLSUnSiROeO2ZwcP0rmhpDoHnnnXc0fvz4i76bydMIMwAAXKLy8vogs3hxfahxN6u1/jVQ5eWNI8w0VoQZAAAuU1KSV7+aynToAAwAgBc5duyYRo4cqebNmysmJkYvvfSS+vfvr/Hjx1902x9//FGjRo1SixYtFBwcrMGDB2v//v1ntVu5cqU6dOigoKAgpaen6/Dhw451X375pQYMGKCQkBCFhoYqOTlZ27dvd/l5/hJhBgAAL5KVlaVNmzZp1apVysvL02effaYdO3Zc0rYPPvigtm/frlWrVik/P192u1233367Tp065Whz4sQJ/fd//7f+53/+R5s2bVJFRYV+85vfONaPHDlSbdq00bZt21RQUKBnn31WAQEBbjnXM/iZCQAAL3Hs2DG9++67Wrp0qQYOHChJWrRokWJjYy+67f79+7Vq1Spt2rRJN954oyRpyZIliouL08qVK3XvvfdKkk6dOqXXXntNKSkpkqR3331XSUlJ2rp1q/r06aPi4mJNnDhRnTp1kiR16NDBjWdcjzszAAB4iUOHDunUqVPq06ePY1lYWJg6dux40W2tVqv8/f0dIUWSWrVqpY4dO8pqtTqW+fv76/rrr3fMd+rUSeHh4Y42WVlZ+u1vf6tBgwZpxowZOnjwoAvP8NwIMwAAwGVycnK0e/duDRkyRJ988ok6d+6sFStWuPWYhBkAALxEu3btFBAQoG3btjmWVVZW6uuvv77otklJSTp9+rS2bNniWPbDDz9o37596ty5s2PZ6dOnnTr07tu3TxUVFUr6xbPq1157rSZMmKC1a9fq7rvv1qJFi1x0hudGnxkAAC7TL351aVTHCQkJ0ejRozVx4kS1bNlSkZGRmjJlinx9feXj43PBbTt06KC77rpLY8eO1euvv66QkBA9++yzuvrqq3XXXXc52gUEBOiJJ57QK6+8In9/f40bN0433HCD+vTpo59++kkTJ07UPffco8TERP3zn//Utm3bNGzYsIZegktCmAEA4BJFRNSPyJuR4bljBgfXH/dSzZkzR4899pjuuOMOhYaG6plnntHhw4cVFBR00W0XLVqkp556SnfccYdqamrUr18/rVmzxulppODgYE2aNEkjRozQkSNHdPPNN+utt96SJPn5+emHH37QqFGjVFZWpoiICN19992aOnVqw07+EvnY7Xa7W4/QCNhsNoWFhamyslKhoaFGlwOgqdixQ0pOlgoKvGeENW88p3M4efKkioqKlJiYeFYIMNu7maqqqnT11Vdr9uzZGjNmjCtLc4kLXetL/f7mzgwAAJchPr5xv1rgiy++0N69e9WnTx9VVlbqhRdekCSnn4q8DWEGAAAv8+KLL2rfvn2yWCxKTk7WZ599JqvVqsGDB593m+PHj3u0RlcizAAA4EV69uypgoKCs5b/9NNPKiwsNKQmdyPMAADQBDRr1kzXXHON0WW4BePMAABwHk3gGRnDueIaE2YAAPgPZx5FPnHihNGleL0z1/hKXkbJz0wAAPwHPz8/hYeH6+jRo9K/x1a52KBzuDx2u10nTpzQ0aNHFR4eLj8/vwbvizADAMA5REdHS5Ij0MA9wsPDHde6oQgzAACcg4+Pj2JiYhQZGalTp04ZXY5XCggIuKI7MmcQZgAAuAA/Pz+XfOHCfRrcAfjTTz/VnXfeqdjYWPn4+GjlypVO6+12u55//nnFxMSoWbNmGjRokPbv3+/U5l//+pdGjhyp0NBQhYeHa8yYMWcN2rNz507dfPPNCgoKUlxcnGbOnNnQkgEAgBdqcJipqqpS9+7dNW/evHOunzlzpl555RUtWLBAW7ZsUfPmzZWenq6TJ0862owcOVK7d+9WXl6eVq9erU8//VSPPPKIY73NZlNaWpoSEhJUUFCgWbNmKScnRwsXLmxo2QAAwNvYXUCSfcWKFY75uro6e3R0tH3WrFmOZRUVFfbAwED7//7v/9rtdrt9z549dkn2bdu2Odp89NFHdh8fH/uRI0fsdrvd/uc//9neokULe3V1taPNpEmT7B07drys+iorK+2S7JWVlVd0ngBwWQoK7Hap/n+9hTeeExqtS/3+dss4M0VFRSotLdWgQYMcy8LCwpSSkqL8/HxJUn5+vsLDw9W7d29Hm0GDBsnX11dbtmxxtOnXr58sFoujTXp6uvbt26cff/zxvMevrq6WzWZzmgAAgHdyS5gpLS2VJEVFRTktj4qKcqwrLS1VZGSk03p/f3+1bNnSqc259vHLY5xLbm6uwsLCHFNcXJyLzgwAADQ2XjkCcHZ2tiorKx3T4cOHjS4JAAC4iVvCzJnBb8rKypyWl5WVOdZFR0efNRDR6dOn9a9//cupzbn28ctjnEtgYKBCQ0OdJgAA4J3cEmYSExMVHR2t9evXO5bZbDZt2bJFqampkqTU1FRVVFQ4vab8k08+UV1dnVJSUhxtPv30U6fBivLy8tSxY0e1aNHCHaUDAACTaXCYOX78uAoLC1VYWCj9u9NvYWGhiouL5ePjo/Hjx+uPf/yjVq1apa+++kqjRo1SbGyshg4dKklKSkrSbbfdprFjx2rr1q3atGmTxo0bp9/85jeKjY2VJI0YMUIWi0VjxozR7t27tXz5cr388svKyspy1fkDAACTa/AIwNu3b9eAAQMc82cCxujRo/XOO+/omWeeUVVVlR555BFVVFTopptu0scff6ygoCDHNkuWLNG4ceM0cOBA+fr6atiwYXrllVcc68PCwrR27VplZmYqOTlZERERev75553GogEAAE2bj71+nBivZrPZFBYWpsrKSvrPAPCcHTuk5GSpoEDq1cvoalzDG88Jjdalfn975dNMAACg6eBFkwDco7hYKi83ugrXioiQ4uONrgLAfyDMAHC94mIpKUk6ccLoSlwrOFiyWgk0QCNDmAHgeuXl9UFm8eL6UOMNrFYpI6P+3AgzQKNCmAHgPklJdBIF4HZ0AAYAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKbGW7MBuEWx4lRubWZ0Ga5jbaYIxSne6DoAnIUwA8DliksClCSrTmQ0N7oUF0pSsKyylhwi0ACNDGEGgMuVV/jrhJpr8bQiJd2eaHQ5LmFdU6SM5xJVXuFPmAEaGcIMALdJSjypXr2MrsJFrCeNrgDAedABGAAAmBphBgAAmBphBgAAmBphBgAAmBphBgAAmBphBgAAmBphBgAAmBphBgAAmBqD5sE1ioul8nKjq3C9iAgpnvFeAaAxI8zgyhUXS0lJ0okTRlfiesHBktVKoAGARowwgytXXl4fZBYvrg813sJqlTIy6s+PMAMAjRZhBq6TlCTveREPAMAs6AAMAABMjTADAABMjTADAABMza1hpm3btvLx8TlryszMlCT179//rHWPPfaY0z6Ki4s1ZMgQBQcHKzIyUhMnTtTp06fdWTYAADARt3YA3rZtm2prax3zu3bt0n/913/p3nvvdSwbO3asXnjhBcd8cHCw43Ntba2GDBmi6Ohobd68WSUlJRo1apQCAgI0ffp0d5YOAABMwq1hpnXr1k7zM2bMUPv27XXLLbc4lgUHBys6Ovqc269du1Z79uzRunXrFBUVpR49emjatGmaNGmScnJyZLFY3Fk+AAAwAY/1mampqdHixYv18MMPy8fHx7F8yZIlioiIUJcuXZSdna0Tvxh4LT8/X127dlVUVJRjWXp6umw2m3bv3n3eY1VXV8tmszlNAADAO3lsnJmVK1eqoqJCDz74oGPZiBEjlJCQoNjYWO3cuVOTJk3Svn379P7770uSSktLnYKMJMd8aWnpeY+Vm5urqVOnuu1cAABA4+GxMPPWW29p8ODBio2NdSx75JFHHJ+7du2qmJgYDRw4UAcPHlT79u0bfKzs7GxlZWU55m02m+Li4q6gegAA0Fh5JMx8++23WrduneOOy/mkpKRIkg4cOKD27dsrOjpaW7dudWpTVlYmSeftZyNJgYGBCgwMdEntAACgcfNIn5lFixYpMjJSQ4YMuWC7wsJCSVJMTIwkKTU1VV999ZWOHj3qaJOXl6fQ0FB17tzZzVUDAAAzcPudmbq6Oi1atEijR4+Wv//Phzt48KCWLl2q22+/Xa1atdLOnTs1YcIE9evXT926dZMkpaWlqXPnznrggQc0c+ZMlZaWavLkycrMzOTOCwAAkDwRZtatW6fi4mI9/PDDTsstFovWrVunuXPnqqqqSnFxcRo2bJgmT57saOPn56fVq1fr8ccfV2pqqpo3b67Ro0c7jUsDAACaNreHmbS0NNnt9rOWx8XFaePGjRfdPiEhQWvWrHFTdYDrFRdL5eVGV+FaERFSfLzRVQDAuXnsaSagKSgulpKSpF8Ml+QVgoMlq5VAA6BxIswALlReXh9kFi+uDzXewGqVMjLqz40wA6AxIswAbpCUJPXqZXQVANA0eOx1BgAAAO5AmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKZGmAEAAKbG6wwAwI2KFadyazOjy3AdazNFKE68pguNCWEGANykuCRASbLqREZzo0txoSQFyyprySECDRoNwgwAuEl5hb9OqLkWTytS0u2JRpfjEtY1Rcp4LlHlFf6EGTQahBkAcLOkxJPe8xZ160mjKwDOQgdgAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgaoQZAABgam4NMzk5OfLx8XGaOnXq5Fh/8uRJZWZmqlWrVrrqqqs0bNgwlZWVOe2juLhYQ4YMUXBwsCIjIzVx4kSdPn3anWUDAAAT8Xf3Aa677jqtW7fu5wP6/3zICRMm6MMPP9R7772nsLAwjRs3Tnfffbc2bdokSaqtrdWQIUMUHR2tzZs3q6SkRKNGjVJAQICmT5/u7tIBAIAJuD3M+Pv7Kzo6+qzllZWVeuutt7R06VLdeuutkqRFixYpKSlJn3/+uW644QatXbtWe/bs0bp16xQVFaUePXpo2rRpmjRpknJycmSxWNxdPgAAaOTc3mdm//79io2NVbt27TRy5EgVFxdLkgoKCnTq1CkNGjTI0bZTp06Kj49Xfn6+JCk/P19du3ZVVFSUo016erpsNpt279593mNWV1fLZrM5TQAAwDu5NcykpKTonXfe0ccff6z58+erqKhIN998s44dO6bS0lJZLBaFh4c7bRMVFaXS0lJJUmlpqVOQObP+zLrzyc3NVVhYmGOKi4tzy/kBAADjufVnpsGDBzs+d+vWTSkpKUpISNBf/vIXNWvWzG3Hzc7OVlZWlmPeZrMRaAAA8FIefTQ7PDxc1157rQ4cOKDo6GjV1NSooqLCqU1ZWZmjj010dPRZTzedmT9XP5wzAgMDFRoa6jQBAADv5NEwc/z4cR08eFAxMTFKTk5WQECA1q9f71i/b98+FRcXKzU1VZKUmpqqr776SkePHnW0ycvLU2hoqDp37uzJ0gEAQCPl1p+Zfve73+nOO+9UQkKCvvvuO02ZMkV+fn4aPny4wsLCNGbMGGVlZally5YKDQ3VE088odTUVN1www2SpLS0NHXu3FkPPPCAZs6cqdLSUk2ePFmZmZkKDAx0Z+kAAMAk3Bpm/vnPf2r48OH64Ycf1Lp1a9100036/PPP1bp1a0nSSy+9JF9fXw0bNkzV1dVKT0/Xn//8Z8f2fn5+Wr16tR5//HGlpqaqefPmGj16tF544QV3lg0AAEzErWFm2bJlF1wfFBSkefPmad68eedtk5CQoDVr1rihOgAA4A14NxMAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1tw6aBzRZVqukn4yuwjWszSQlGV0FAJwXYQZwpZISSTFSxkhJXxhdjYv0lLTj53MDgEaGMAO4UkVF/Rf+tD9Kt0cbXY1rrCmVnvvFuQFAI0OYAdwhMVHq5SU/zVitRlcAABdEB2AAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqhBkAAGBqvM4ALlGsOJVbmxldhmtZmylCcYo3ug4AwAURZnDFiksClCSrTmQ0N7oUF0tSsKyylhwi0ABAI0aYwRUrr/DXCTXX4mlFSro90ehyXMa6pkgZzyWqvMKfMAPAdYqLpfJyo6twrYgIKd64v5SEGbhMUuJJ9epldBUuZD1pdAUAvE1xsZSUJJ04YXQlrhUcLFmthgUawgwAAJ5SXl4fZBYvrg813sBqlTIy6s+NMAMAQBORlCTvupVtLB7NBgAApkaYAQAApkaYAQAApkaYAQAApkaYAQAApkaYAQAApsaj2QAAj2DgW7gLYQYA4HYMfAt3IswAANyOgW/hTm4NM7m5uXr//fe1d+9eNWvWTDfeeKP+9Kc/qWPHjo42/fv318aNG522e/TRR7VgwQLHfHFxsR5//HFt2LBBV111lUaPHq3c3Fz5+5PFAMBMGPgW7uDWNLBx40ZlZmbq+uuv1+nTp/X73/9eaWlp2rNnj5o3b+5oN3bsWL3wwguO+eDgYMfn2tpaDRkyRNHR0dq8ebNKSko0atQoBQQEaPr06e4sHwAAmIBbw8zHH3/sNP/OO+8oMjJSBQUF6tevn2N5cHCwoqOjz7mPtWvXas+ePVq3bp2ioqLUo0cPTZs2TZMmTVJOTo4sFos7TwEAADRyHn00u7KyUpLUsmVLp+VLlixRRESEunTpouzsbJ34RQ+x/Px8de3aVVFRUY5l6enpstls2r179zmPU11dLZvN5jQBAADv5LFOJ3V1dRo/frz69u2rLl26OJaPGDFCCQkJio2N1c6dOzVp0iTt27dP77//viSptLTUKchIcsyXlpae81i5ubmaOnWqW88HAAA0Dh4LM5mZmdq1a5f+8Y9/OC1/5JFHHJ+7du2qmJgYDRw4UAcPHlT79u0bdKzs7GxlZWU55m02m+Li4q6gegAA0Fh55GemcePGafXq1dqwYYPatGlzwbYpKSmSpAMHDkiSoqOjVVZW5tTmzPz5+tkEBgYqNDTUaQIAAN7JrWHGbrdr3LhxWrFihT755BMlJiZedJvCwkJJUkxMjCQpNTVVX331lY4ePepok5eXp9DQUHXu3NmN1QMAADNw689MmZmZWrp0qT744AOFhIQ4+riEhYWpWbNmOnjwoJYuXarbb79drVq10s6dOzVhwgT169dP3bp1kySlpaWpc+fOeuCBBzRz5kyVlpZq8uTJyszMVGBgoDvLBwAAJuDWOzPz589XZWWl+vfvr5iYGMe0fPlySZLFYtG6deuUlpamTp066emnn9awYcP0t7/9zbEPPz8/rV69Wn5+fkpNTVVGRoZGjRrlNC4NAABoutx6Z8Zut19wfVxc3Fmj/55LQkKC1qxZ48LKAACAt/DoODMAAACuRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACmRpgBAACm5m90AWZXXCyVlxtdhWtFREjx8UZXAQDApSHMXIHiYikpSTpxwuhKXCs4WLJaCTQAAHMgzFyB8vL6ILN4cX2o8QZWq5SRUX9uhBkAgBkQZlwgKUnq1cvoKgAAaJoIMwAAeFCx4lRubWZ0Ga5jbaYIxcnIm/mEGQAAPKS4JEBJsupERnOjS3GhJAXLKmvJIcMCDWEGAAAPKa/w1wk11+JpRUq6PdHoclzCuqZIGc8lqrzCnzADAEBTkZR40nv6WlpPGl0Bg+YBAABzI8wAAABTI8wAAABTI8wAAABTI8wAAABTI8wAAABTM02YmTdvntq2baugoCClpKRo69atRpcEAAAaAVOEmeXLlysrK0tTpkzRjh071L17d6Wnp+vo0aNGlwYAAAxmijAzZ84cjR07Vg899JA6d+6sBQsWKDg4WG+//bbRpQEAAIM1+hGAa2pqVFBQoOzsbMcyX19fDRo0SPn5+efcprq6WtXV1Y55m83m1hqta4oaxQiIrmAtCpLUsCG2rZv+Jcnq8pqMUn8+V7Ktd1wLrkM9rkO9K7kO4u/lz9vyb8KlGn2YKS8vV21traKiopyWR0VFae/evefcJjc3V1OnTnV7bRHVRxSscGU85x3v1zgjWFWKqK6QdPUltY9oF6pgVSljfl9pvtvL86hgVSmiXeglt/fWa8F1qMd1qHe510H8vXTg34R7NPow0xDZ2dnKyspyzNtsNsXFxbn8OPGBZbIqVeXTFkiJXvIfaFGRIp57TPGBKy/5P8741Ktl3XxE5YeK3V6ep0W0C1V86qVdB3nxteA61OM61Lvc6yD+Xjrwb8I9Gn2YiYiIkJ+fn8rKypyWl5WVKTo6+pzbBAYGKjAw0CP1xeuw4m+PlnoleeR4brfjJ+m5w5e9WXzq1Yb+Q25MuBb1uA71uA4/4+9lPf5NuF6j7wBssViUnJys9evXO5bV1dVp/fr1Sk1NNbQ2AABgvEZ/Z0aSsrKyNHr0aPXu3Vt9+vTR3LlzVVVVpYceesjo0gAAgMFMEWbuv/9+ff/993r++edVWlqqHj166OOPPz6rUzAAAGh6TBFmJGncuHEaN26c0WUAAIBGptH3mQEAALgQwgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1wgwAADA1f6ML8ApWq9EVuI43nQsAoEkgzFyJiAgpOFjKyDC6EtcKDq4/NwAATIAwcyXi4+vvZJSXG12Ja0VE1J8bAAAmQJi5UvHxfPEDAGAgOgADAABTI8wAAABTc0uY+eabbzRmzBglJiaqWbNmat++vaZMmaKamhqnNj4+PmdNn3/+udO+3nvvPXXq1ElBQUHq2rWr1qxZ446SAQCASbmlz8zevXtVV1en119/Xddcc4127dqlsWPHqqqqSi+++KJT23Xr1um6665zzLdq1crxefPmzRo+fLhyc3N1xx13aOnSpRo6dKh27NihLl26uKN0AABgMj52u93uiQPNmjVL8+fP16FDh6R/35lJTEzUF198oR49epxzm/vvv19VVVVavXq1Y9kNN9ygHj16aMGCBZd8bJvNprCwMFVWVio0NNQFZwMAuCw7dkjJyVJBgdSrl9HVuIY3nlMjc6nf3x7rM1NZWamWLVuetfxXv/qVIiMjddNNN2nVqlVO6/Lz8zVo0CCnZenp6crPz7/gsaqrq2Wz2ZwmAADgnTwSZg4cOKBXX31Vjz76qGPZVVddpdmzZ+u9997Thx9+qJtuuklDhw51CjSlpaWKiopy2ldUVJRKS0sveLzc3FyFhYU5pri4ODecFQAAaAwuK8w8++yz5+y0+8tp7969TtscOXJEt912m+69916NHTvWsTwiIkJZWVlKSUnR9ddfrxkzZigjI0OzZs264pPKzs5WZWWlYzp8+PAV7xMAADROl9UB+Omnn9aDDz54wTbt2rVzfP7uu+80YMAA3XjjjVq4cOFF95+SkqK8vDzHfHR0tMrKypzalJWVKTo6+oL7CQwMVGBg4EWPBwAAzO+ywkzr1q3VunXr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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fin = np.linalg.inv(R).dot(g_obs)\n", "\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),g, label=\"g_obs\", color='none', edgecolor='blue')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some of them are negative" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Such unphysical *oscillations* in the unfolded result are typical for many unfolding techniques.\n", "Suppressing them is a major challenge when unfolding real data. One way to achieve this is regularization.\n", "There are various sophisticated methods for regularization (cf. lecture).\n", "Here is a simple method which can be programmed easily in Python:\n", "\n", "- Diagonalize the migration matrix $R$: $R_\\mathrm{diag} = U^{-1} R U$ such that the eigenvalues $\\lambda_i$ of $R$ form the diagonal of $R_\\mathrm{diag}$.\n", "- Construct the observation vector $\\vec{g}_\\mathrm{diag} = U^{-1} \\vec{g}_\\mathrm{obs}$ and multiply each component $i$ of the resulting vector with the corresponding component of $\\vec{\\lambda}^{-1}$,\n", " where $\\vec{\\lambda}^{-1}$ is a vector containing the reciprocals of the eigenvalues of $R$.\n", "- The *regularization*: Set all elements $i$ of $\\vec{g}_\\mathrm{diag}$ to 0, for which $\\lambda_i$ is smaller than a chosen threshold $\\lambda_\\mathrm{reg}$.\n", " The choice of $\\lambda_\\mathrm{reg}$ is critical and a compromise between suppressing the unphysical oscillations, and keeping as much information as possible of the measurement.\n", "- The unfolded result is $U \\cdot \\vec{g}_\\mathrm{diag}$.\n", "\n", "\n", "**c) Apply the regularization method. Use different thresholds $\\lambda_\\mathrm{reg}$ from -1 to 1.\n", "As a cross-check: if the algorithm is implemented correctly, the result should be identical to the one of exercise 8.2 b), provided that $\\lambda_\\mathrm{reg}$ is smaller than the smallest eigenvalue of $R$.\n", "Discuss different choices for $\\lambda_\\mathrm{reg}$: as measure for how similar the true and the unfolded distributions are, calculate the mean quadratic deviation (average over all bins).\n", "For which choice of $\\lambda_\\mathrm{reg}$ is the unfolded distribution most similar to the true distribution?**" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [], "source": [ "def do_unfolding_with_regularization(lamb_regu):\n", " λ, U = np.linalg.eig(R)\n", " print(λ)\n", " Rdig = np.linalg.inv(U).dot(R.dot(U))\n", " gdig = np.linalg.inv(U).dot(g_obs)*1/λ\n", " gdig -= gdig*(λ" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n" ] }, { "data": { "image/png": "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VM+ePTV9+nQdP3485nHz8vLUunXr6LEbb7xRpaWl2rp1a4Jmc25u/VsKhULKyMhQcnLs203V5T386quvtGHDhpifnaSkJI0YMSL6s/PvioqKYs7XqXsROT+en8e6ZGeO/+748eOqqqpSVlZWzPHVq1erVatW6t69u374wx/q6NGjro+/NnbnV15erg4dOig3N1c333xzzM9RY7yH8+bN0+23365mzZrFHK8P99Cq2n4G3fh+xaNBvFFeXTp8+LAkxfyhinwe+drhw4fVqlWrmK8nJycrKysrek5djdXpOObNm6fLL79cgwYNijn++OOP6/rrr1fTpk21atUq/ehHP1J5ebnuvfdeV+dwIXbnN2HCBHXo0EE5OTn66KOP9PDDD2vHjh165ZVXoo97rvurM+5/XXHjHh45ckRPPPGEfvCDH8Qcr+t7eOTIEdXU1Jzze/vxxx+f85rz3Yszf9ZUy89jXbIzx3/38MMPKycnJ+aX+6hRo3TLLbeoU6dO2r17t/7rv/5Lo0ePVlFRkfx+v+vzOB878+vevbtefPFF9erVS6FQSHPmzNGgQYO0detWtWvXrtHdw3Xr1mnLli2aN29ezPH6cg+tOt/PYGlpqU6cOKF//etfjv/Nx6NBhpFHHnlEs2fPvuA527dvV48ePepsTG6Kd35OnThxQosWLdJPf/rTs7525rG+ffuqoqJCP//5z135Q5bo+Z35RzkvL0/Z2dm64YYbtHv3bnXp0sX241pRV/ewtLRUY8aM0RVXXKGf/exnMV9L5D2EPbNmzVJhYaFWr14d0+R5++23R/8/Ly9PvXr1UpcuXbR69WrdcMMNHo02PgMHDtTAgQOjnw8aNEiXX365nn/+eT3xxBOeji0R5s2bp7y8PPXv3z/meEO+h/VBgwwjDz74oO64444LntO5c2dbj92mTRtJUklJibKzs6PHS0pK1KdPn+g5n332Wcx11dXVOnbsWPR6J+Kdn9NxLFmyRMePH9fEiRNrPXfAgAF64oknVFlZ6fj9C+pqfhEDBgyQJO3atUtdunRRmzZtzuoELykpkc64/07VxRzLyso0atQopaena+nSpUpJSbng+W7ew3Np2bKl/H5/9HsZUVJSct65tGnT5oLnx/PzWJfszDFizpw5mjVrlt566y316tXrgud27txZLVu21K5du+r0D5mT+UWkpKSob9++2rVrl9TI7mFFRYUKCwv1+OOP1/o8Xt1Dq873M5iRkaEmTZrI7/c7/jcRF9e6T+o5qw2sc+bMiR4LhULnbGBdv3599Jw33njDswZWu+MYNmzYWSswzufJJ580LVq0cDReq9z6Pr/33ntGkvnwww+NOaOB9cxO8Oeff95kZGSYL7/80uVZXJjdOYZCIXPNNdeYYcOGmYqKirieqy7uYf/+/c2UKVOin9fU1Ji2bdtesIH161//esyxgQMHntXAeqGfx7pmdY7GGDN79myTkZFhioqK4nqO4uJi4/P5zPLly10ZsxV25nem6upq0717d/Of//mfxjSie2hO/R0JBoPmyJEjtT6Hl/cwIt4G1p49e8YcGz9+/FkNrE7+TcQ1VtceqZ765JNPzMaNG6PLVzdu3Gg2btwYs4y1e/fu5pVXXol+PmvWLNO8eXOzfPly89FHH5mbb775nEt7+/btaz744APz3nvvmcsuu8yzpb0XGsenn35qunfvbj744IOY63bu3Gl8Pp95/fXXz3rMV1991bzwwgtm8+bNZufOnebXv/61adq0qZkxY0adzOlMVue3a9cu8/jjj5v169ebvXv3muXLl5vOnTuboUOHRq+JLO0dOXKk2bRpk1m5cqW59NJLPV3aa2WOoVDIDBgwwOTl5Zldu3bFLCWsrq42xsN7WFhYaILBoFmwYIHZtm2b+cEPfmCaN28eXbn03e9+1zzyyCPR89euXWuSk5PNnDlzzPbt281jjz12zqW9tf081iWrc5w1a5YJBAJmyZIlMfcq8juorKzMPPTQQ6aoqMjs3bvXvPXWW+aqq64yl112WZ2HYzvzmzlzpnnjjTfM7t27zYYNG8ztt99uUlNTzdatW2O+Bw35HkZce+215rbbbjvreH26h2VlZdG/c5LMs88+azZu3Gg++eQTY4wxjzzyiPnud78bPT+ytHfatGlm+/btZu7cuedc2nuh75cbGn0YmTRpkpF01sc777wTPSeyH0NEOBw2P/3pT03r1q1NMBg0N9xwg9mxY0fM4x49etSMHz/epKWlmYyMDPO9730vJuDUldrGsXfv3rPma4wx06dPN7m5uaampuasx3z99ddNnz59TFpammnWrJnp3bu3+c1vfnPOcxPN6vz2799vhg4darKyskwwGDRdu3Y106ZNi9lnxBhj9u3bZ0aPHm2aNGliWrZsaR588MGYZbF1yeoc33nnnXP+m5Zk9u7da4zH9/BXv/qVad++vQkEAqZ///7m/fffj35t2LBhZtKkSTHn//GPfzTdunUzgUDAXHnllebPf/5zzNfj+Xmsa1bm2KFDh3Peq8cee8wYY8zx48fNyJEjzaWXXmpSUlJMhw4dzF133eXqL3qrrMzv/vvvj57bunVrc9NNN5l//OMfMY/X0O+hMcZ8/PHHRpJZtWrVWY9Vn+7h+X4/ROYzadIkM2zYsLOu6dOnjwkEAqZz584xfw8jLvT9coPP1PV6TQAAgDOwzwgAAPAUYQQAAHiKMAIAADxFGAEAAJ4ijAAAAE8RRgAAgKcIIwAAwFOEEQAA4CnCCAAA8BRhBAAAeIowAgAAPEUYAQAAnvr/wTJhZGYSYeAAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n", "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGsCAYAAAD+L/ysAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAl1ElEQVR4nO3de3DU9b3/8dcmmE1CLiSGzQVSCSBgRYxCSJGLscaAh1Ez1XPUVhF7wSMbWwYRRStIkQlStFUs6DglERykMi3YQxENgYTiCXKGglwbEbAoEORQs0uiXQL5/P74wR6XQNgNgf1keT5mdsbsfr7f/b79JpPnfLO7OIwxRgAAABaLCvcBAAAAnA/BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKwXccGybt063XHHHcrKypLD4dDy5ctD3ocxRnPmzFGfPn3kdDrVrVs3zZw586IcLwAAOL9O4T6A9tbY2Kjrr79eP/7xj/WDH/ygTfv4xS9+oQ8++EBz5szRddddp3/+85/65z//2e7HCgAAguOI5H/80OFwaNmyZSouLvbf5/P59Mwzz+jtt99WfX29+vfvrxdeeEEFBQWSpF27dmnAgAHavn27+vbtG8ajBwAAp0Xcn4TOp6SkRDU1NVqyZIm2bt2qf//3f9eoUaO0e/duSdJ//dd/qWfPnlqxYoVycnLUo0cP/fSnP+UKCwAAYXRZBcv+/ftVVlampUuXavjw4erVq5cmTZqkYcOGqaysTJK0d+9e/eMf/9DSpUu1cOFClZeXa9OmTbrnnnvCffgAAFy2Iu41LK3Ztm2bTp48qT59+gTc7/P5dOWVV0qSmpub5fP5tHDhQv+63//+9xo4cKBqa2v5MxEAAGFwWQVLQ0ODoqOjtWnTJkVHRwc8lpCQIEnKzMxUp06dAqLmmmuukU5doSFYAAC49C6rYLnhhht08uRJffnllxo+fPhZ1wwdOlQnTpzQnj171KtXL0nSJ598Ikm66qqrLunxAgCA/y/i3iXU0NCgTz/9VDoVKC+99JJuueUWpaam6jvf+Y4eeOABffjhh3rxxRd1ww036MiRI6qsrNSAAQM0evRoNTc3Ky8vTwkJCfrtb3+r5uZmud1uJSUl6YMPPgj3eAAAXJYiLliqqqp0yy23tLj/oYceUnl5uZqamvT8889r4cKFOnDggNLS0vS9731P06dP13XXXSdJOnjwoB577DF98MEH6ty5s26//Xa9+OKLSk1NDcNEAAAg4oIFAABEnsvqbc0AAKBjIlgAAID1IuJdQs3NzTp48KASExPlcDjCfTgAACAIxhgdO3ZMWVlZiopq/RpKRATLwYMHlZ2dHe7DAAAAbfD555+re/fura6JiGBJTEyUTg2clJQU7sMBAABB8Hq9ys7O9v8eb01EBMvpPwMlJSURLAAAdDDBvJyDF90CAADrhRQspaWlysvLU2Jiolwul4qLi1VbW9vqNn/60580aNAgdenSRZ07d1Zubq4WLVoUsGbs2LFyOBwBt1GjRrVtIgAAEHFC+pNQdXW13G638vLydOLECT399NMqKirSzp071blz57Nuk5qaqmeeeUb9+vVTTEyMVqxYoYcfflgul0sjR470rxs1apTKysr8XzudzguZCwAARJAL+qTbI0eOyOVyqbq6WiNGjAh6uxtvvFGjR4/WjBkzpFNXWOrr67V8+fI2HYfX61VycrI8Hg+vYQEAoIMI5ff3Bb2GxePxSKeuogTDGKPKykrV1ta2CJyqqiq5XC717dtXjz76qI4ePXrO/fh8Pnm93oAbAACIXG2+wtLc3Kw777xT9fX1Wr9+fatrPR6PunXrJp/Pp+joaM2bN08//vGP/Y8vWbJE8fHxysnJ0Z49e/T0008rISFBNTU1io6ObrG/5557TtOnTz/r83CFBQCAjiGUKyxtDpZHH31U7733ntavX3/eD3tpbm7W3r171dDQoMrKSs2YMUPLly9XQUHBWdfv3btXvXr10urVq3Xrrbe2eNzn88nn8/m/Pv0+boIFAICOI5RgadPnsJSUlGjFihVat27deWNFkqKiotS7d29JUm5urnbt2qXS0tJzBkvPnj2VlpamTz/99KzB4nQ6eVEuAACXkZCCxRijxx57TMuWLVNVVZVycnLa9KTNzc0BV0jO9MUXX+jo0aPKzMxs0/4BAEBkCSlY3G63Fi9erHfffVeJiYmqq6uTJCUnJysuLk6SNGbMGHXr1k2lpaXSqc9uGTRokHr16iWfz6eVK1dq0aJFmj9/viSpoaFB06dP1913362MjAzt2bNHkydPVu/evQPe9gwAAC5fIQXL6cg48085ZWVlGjt2rCRp//79Af/iYmNjo8aPH68vvvhC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Jebmm29WVVWVJOm+++7TunXrdPToUXXt2lXDhg3TzJkz1atXr6COy+v1Kjk5WR6PR0lJScGOAwAAwiiU398hBYutCBYAADqeUH5/828JAQAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHoECwAAsB7BAgAArEewAAAA6xEsAADAegQLAACwHsECAACs1yncB9AejDGSJK/XG+5DAQAAQTr9e/v07/HWRESwHDt2TJKUnZ0d7kMBAAAhOnbsmJKTk1td4zDBZI3lmpubdfDgQSUmJsrhcLTrvr1er7Kzs/X5558rKSmpXfdtg0ifT5fBjMzX8UX6jJE+ny6DGS/WfMYYHTt2TFlZWYqKav1VKhFxhSUqKkrdu3e/qM+RlJQUkd+Ep0X6fLoMZmS+ji/SZ4z0+XQZzHgx5jvflZXTeNEtAACwHsECAACsR7Cch9Pp1LRp0+R0OsN9KBdFpM+ny2BG5uv4In3GSJ9Pl8GMNswXES+6BQAAkY0rLAAAwHoECwAAsB7BAgAArEewAAAA6122wTJz5kzddNNNio+PV5cuXVo8/vHHH+v+++9Xdna24uLidM011+jll19usa6qqko33nijnE6nevfurfLy8hZrfve736lHjx6KjY1Vfn6+Nm7ceNHmOu1880nSz3/+cw0cOFBOp1O5ubktHv/ss8/kcDha3DZs2BCwbunSperXr59iY2N13XXXaeXKlRdtrm9rjxklaevWrRo+fLhiY2OVnZ2t2bNnt1gTjhmDmW///v0aPXq04uPj5XK59MQTT+jEiRP+x6uqqs56Duvq6gL2E47vUbXTjLL45/BMf/vb33TbbbepS5cuuvLKKzVu3Dg1NDQErDnb+VqyZEnAmmDmDZdgZmyvcxoOn3zyie666y6lpaUpKSlJw4YN09q1awPWdORzGMx8YTt/5jI1depU89JLL5mJEyea5OTkFo///ve/Nz//+c9NVVWV2bNnj1m0aJGJi4szc+fO9a/Zu3eviY+PNxMnTjQ7d+40c+fONdHR0WbVqlX+NUuWLDExMTFmwYIFZseOHeZnP/uZ6dKlizl8+HBY5zPGmMcee8y8+uqr5sEHHzTXX399i8f37dtnJJnVq1ebQ4cO+W/Hjx/3r/nwww9NdHS0mT17ttm5c6f55S9/aa644gqzbdu2izqfaacZPR6PSU9PNz/60Y/M9u3bzdtvv23i4uLM66+/7l8TrhnPN9+JEydM//79TWFhodm8ebNZuXKlSUtLM1OmTPGvWbt2rZFkamtrA87hyZMn/WvC9T3aXjPa/HP4bQcOHDApKSnmP//zP83f//53s3HjRnPTTTeZu+++O2CdJFNWVhZwvr755puQ5g2XYGZsr3MaLldffbX5t3/7N/Pxxx+bTz75xIwfP97Ex8ebQ4cO+dd05HN4vvnCef4u22A5rays7Jy/7M40fvx4c8stt/i/njx5srn22msD1tx7771m5MiR/q8HDx5s3G63/+uTJ0+arKwsU1pa2i7Hfz7BzDdt2rRWg2Xz5s3n3PY//uM/zOjRowPuy8/PN4888sgFHHVoLmTGefPmmZSUFOPz+fz3Pfnkk6Zv377+r8M947nmW7lypYmKijJ1dXX+++bPn2+SkpL885wOlq+++uqc+w/396i5wBk7ws+hMca8/vrrxuVyBcTi1q1bjSSze/du/32SzLJly865n2DmDZdgZmyvcxoOR44cMZLMunXr/Pd5vV4jyVRUVPjv66jnMJj5wnn+Lts/CbWFx+NRamqq/+uamhoVFhYGrBk5cqRqamokScePH9emTZsC1kRFRamwsNC/piO488475XK5NGzYMP35z38OeOx8/w9sV1NToxEjRigmJsZ/38iRI1VbW6uvvvrKv8bGGWtqanTdddcpPT094Li8Xq927NgRsDY3N1eZmZm67bbb9OGHH/rvt/17NJgZO8rPoc/nU0xMTMA/8BYXFydJWr9+fcBat9uttLQ0DR48WAsWLNC3Py7L1u9HBTlje5zTcLnyyivVt29fLVy4UI2NjTpx4oRef/11uVwuDRw4MGBtRzyHwcwXzvNHsATpv//7v/WHP/xB48aN899XV1cXcNIkKT09XV6vV998843+93//VydPnjzrmjNfQ2CjhIQEvfjii1q6dKn+8pe/aNiwYSouLg6IlnP9P+gI86mV4z/9WGtrwj1jMMeemZmp1157TX/84x/1xz/+UdnZ2SooKNDf/vY3SbL+e/RCzo9tP4ff//73VVdXp1//+tc6fvy4vvrqKz311FOSpEOHDvnX/epXv9I777yjiooK3X333Ro/frzmzp3rf/x884ZTMDO2xzkNF4fDodWrV2vz5s1KTExUbGysXnrpJa1atUopKSn+dR31HAYzXzjPX0QFy1NPPXXWFzt9+/b3v/895P1u375dd911l6ZNm6aioqKLcuzBuFjznUtaWpomTpyo/Px85eXladasWXrggQf061//ut2e40yXesZL7VLP17dvXz3yyCMaOHCgbrrpJi1YsEA33XSTfvOb37Tbc5wp0s/hmYKd99prr9Wbb76pF198UfHx8crIyFBOTo7S09MDrkg8++yzGjp0qG644QY9+eSTmjx58kX9mQvHjLYJdj5jjNxut1wul/76179q48aNKi4u1h133BEQnbadw/aeL1w6hfsA2tPjjz+usWPHtrqmZ8+eIe1z586duvXWWzVu3Dj98pe/DHgsIyNDhw8fDrjv8OHDSkpKUlxcnKKjoxUdHX3WNRkZGSEdhy7SfKHKz89XRUWF/+tz/T9oy3wKw4znOv7Tj7W2JtznMCMjo8U7Xc489rMZPHiw//J8Wlpau36PKgwzXuqfwzOFMu8Pf/hD/fCHP9Thw4fVuXNnORwOvfTSS63+/8jPz9eMGTPk8/nkdDrPO+/F0J4ztsc5bW/BzrdmzRqtWLFCX331lZKSkiRJ8+bNU0VFhd58803/1aQzhfsctud84Tx/ERUsXbt2VdeuXdttfzt27ND3v/99PfTQQ5o5c2aLx4cMGdLi7a0VFRUaMmSIJCkmJkYDBw5UZWWliouLJUnNzc2qrKxUSUlJyMfT3vO1xZYtW5SZmen/esiQIaqsrNSECRP89337/0GoLvWMQ4YM0TPPPKOmpiZdccUV0qnj79u3r/8SaHvO2J7zDRkyRDNnztSXX34pl8vlP66kpCR997vfPed23z6H7f09qjDMeKl/Ds/UlnlPXy5fsGCBYmNjddttt51z7ZYtW5SSkuL/R+fON+/F0J4ztsc5bW/Bzvf1119Lp14D9W1RUVFqbm4+53bhPoftOV9Yz98FvWS3A/vHP/5hNm/ebKZPn24SEhLM5s2bzebNm82xY8eMMcZs27bNdO3a1TzwwAMBb0378ssv/fs4/datJ554wuzatcv87ne/O+vbKZ1OpykvLzc7d+4048aNM126dAl4hXU45jPGmN27d5vNmzebRx55xPTp08e/5vQrvcvLy83ixYvNrl27zK5du8zMmTNNVFSUWbBggX8fH374oenUqZOZM2eO2bVrl5k2bdole1tze8xYX19v0tPTzYMPPmi2b99ulixZYuLj41u8rTkcM55vvtNvLywqKjJbtmwxq1atMl27dg14e+FvfvMbs3z5crN7926zbds284tf/MJERUWZ1atX+9eE63u0vWa0+efwTHPnzjWbNm0ytbW15tVXXzVxcXHm5Zdf9j/+5z//2bzxxhtm27ZtZvfu3WbevHkmPj7eTJ06NaR5w+l8M7bXOQ2HI0eOmCuvvNL84Ac/MFu2bDG1tbVm0qRJ5oorrjBbtmwxpoOfw2DmC+f5u2yD5aGHHjKSWtzWrl1rzKm3wZ7t8auuuipgP2vXrjW5ubkmJibG9OzZ05SVlbV4rrlz55rvfOc7JiYmxgwePNhs2LAh7PMZY8zNN9981jX79u0z5lSwXHPNNSY+Pt4kJSWZwYMHm6VLl7Z4rnfeecf06dPHxMTEmGuvvdb85S9/uejztdeMxhjz8ccfm2HDhhmn02m6detmZs2aZcWMwcz32Wefmdtvv93ExcWZtLQ08/jjj5umpib/4y+88ILp1auXiY2NNampqaagoMCsWbOmxXOF43u0vWY0Fv8cnunBBx80qampJiYmxgwYMMAsXLgw4PH33nvP5ObmmoSEBNO5c2dz/fXXm9deey3gbcImyHnD5XwzmnY8p+HwP//zP6aoqMikpqaaxMRE873vfc+sXLnS/3hHP4fnm8+E8fw5zLffawUAAGAhe1+2DQAAcArBAgAArEewAAAA6xEsAADAegQLAACwHsECAACsR7AAAADrESwAAMB6BAsAALAewQIAAKxHsAAAAOsRLAAAwHr/D7fEBtpizCkTAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "[-0.14058132 0.02590612 0.26648744 0.53351256 0.77409388 1.\n", " 0.94058132]\n" ] }, { "data": { "image/png": "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du3ayc/PT926ddOWLVvsLqtJEWBaoNdee00ZGRmaOnWqtm7dqh49eiglJUVFRUV2l9asjh49qh49emjBggV2l2KrDRs2KD09XZ9++qmysrJUXV2tQYMG6ejRo3aX1uwuvPBCPfnkk8rNzdWWLVt07bXXatiwYdq1a5fdpdli8+bNev7559W9e3e7S7HNZZddpkOHDjmXjz/+2O6Smt0PP/yg/v37y8vLS6tXr9bu3bv1zDPPqG3btnaX1rRc+BBpuEi/fv2s9PR05+uamhorKirKmj59uq112UnSKU8nP18VFRVZkqwNGzbYXUqL0LZtW+uFF16wu4xmd+TIESs+Pt7Kysqyfv/731v33Xef3SU1u6lTp1o9evSwuwzbTZo0ybrqqqvsLqPZ8QtMC1NVVaXc3FwlJyc729zd3ZWcnKzs7Gxba0PLUFpaKkkKDQ21uxRb1dTU6NVXX9XRo0fPy0eMpKena+jQofX+X3E+2rdvn6KionTRRRcpNTVV+fn5dpfU7N555x317dtXN998s8LCwtSrVy8tWbLE7rKaHAGmhSkuLlZNTY3Cw8PrtYeHh6ugoMC2utAy1NbWavz48erfv7+6du1qdzm22LFjh9q0aSMfHx/993//t1auXKkuXbrYXVazevXVV7V161ZNnz7d7lJslZiYqKVLl2rNmjVauHCh8vLy9Lvf/U5Hjhyxu7Rm9c0332jhwoWKj4/X+++/rzFjxujPf/6zli1bZndpTarFPgsJwKnS09O1c+fO8/I8/486deqk7du3q7S0VG+++abS0tK0YcOG8ybE7N+/X/fdd5+ysrLk6+trdzm2GjJkiPPv7t27KzExUbGxsXr99dc1evRoW2trTrW1terbt6+eeOIJSVKvXr20c+dOLVq0SGlpaXaX12T4BaaFad++vTw8PFRYWFivvbCwUBEREbbVBfuNHTtWq1at0vr163XhhRfaXY5tvL29dckll6hPnz6aPn26evTooblz59pdVrPJzc1VUVGRevfuLU9PT3l6emrDhg2aN2+ePD09VVNTY3eJtgkJCdGll16qr776yu5SmlVkZOQpAT4hIaHVn04jwLQw3t7e6tOnj9auXetsq62t1dq1a8/L8/yQLMvS2LFjtXLlSq1bt05xcXF2l9Si1NbWqrKy0u4yms3AgQO1Y8cObd++3bn07dtXqamp2r59uzw8POwu0Tbl5eX6+uuvFRkZaXcpzap///6n3Fph7969io2Nta2m5sAppBYoIyNDaWlp6tu3r/r166c5c+bo6NGj+tOf/mR3ac2qvLy83jepvLw8bd++XaGhoYqJibG1tuaUnp6uFStW6O2331ZgYKBzLlRwcLD8/PzsLq9ZTZ48WUOGDFFMTIyOHDmiFStW6MMPP9T7779vd2nNJjAw8JT5TwEBAWrXrt15Ny/q/vvv1/XXX6/Y2FgdPHhQU6dOlYeHh2677Ta7S2tWEyZM0JVXXqknnnhCt9xyiz777DMtXrxYixcvtru0pmX3ZVBo2Pz5862YmBjL29vb6tevn/Xpp5/aXVKzW79+vSXplCUtLc3u0ppVQ8dAkpWZmWl3ac3urrvusmJjYy1vb2+rQ4cO1sCBA60PPvjA7rJsd75eRn3rrbdakZGRlre3t3XBBRdYt956q/XVV1/ZXZYt3n33Xatr166Wj4+P1blzZ2vx4sV2l9Tk3Ky6/0ECAAAYgzkwAADAOAQYAABgHAIMAAAwDgEGAAAYhwADAACMQ4ABAADGIcAAAADjEGAAAIBxCDAAAMA4BBgAAGAcAgwAADDO/wPlPGvijActyAAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fin = do_unfolding_with_regularization(0)\n", "plt.title(r\"$\\lambda_{reg}=0$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),g, label=\"g_obs\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()\n", "\n", "import scipy\n", "scipy.optimize.minimize(lambda t: np.mean((f-do_unfolding_with_regularization(t)**2)),(-10))\n", "\n", "t = np.linspace(-1,1)\n", "z = [f.dot(do_unfolding_with_regularization(tt)) for tt in t]\n", "plt.plot(t, z)\n", "plt.show()\n", "\n", "t = np.linspace(-1200,-800)\n", "z = [f.dot(do_unfolding_with_regularization(tt)) for tt in t]\n", "plt.plot(t, z)\n", "plt.show()\n", "\n", "\n", "fin = do_unfolding_with_regularization(0.2)\n", "plt.title(r\"$\\lambda_{reg}=-1000$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),g, label=\"g_obs\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are no negative results anymore" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we will apply an iterative method for unfolding.\n", "We start with a flat assumption for $\\vec{f_0}$, i.e., each element is 3000 / 7 in our case, since we have 7 bins and 3000 events.\n", "Then, we fold $\\vec{f_0}$ by multiplication with $R$ and compare the resulting $\\vec{g_0}$ with the observation $g_\\mathrm{obs}$.\n", "Depending on the discrepancy between $g_0$ and $g_\\mathrm{obs}$, we *tune* our next guess for the true distribution $\\vec{f_1}$ and repeat the procedure to obtain $\\vec{g_1}$.\n", "If the *tuning* is reasonable, the guessed distribution will become closer to the the true distribution with each step.\n", "However, in the presence of uncertainties, too many iteration can lead to unreasonable results.\n", "Thus, choosing the number of iterations is again a challenge, similar to choosing the best threshold $\\lambda_{reg}$ in the regularization method.\n", "\n", "We will apply the following unfolding algorithm to improve our guess from iteration step $k$ to step $k+1$ (in a simplified version for symmetric response matrices):\n", "\n", "\n", "1) $\\vec{g}_{k+1} = R \\cdot \\vec{f}_k$\n", "\n", "2) Tuning: calculate a vector $\\vec{c}$ with weights to scale each bin $i$: $c^i =g_\\mathrm{obs}^i / g_{k+1}^i$.\n", " Consequently, the weight for bin $i$ is 1 if the observation is already reproduced by the result of step $k$.\n", " \n", "3) Calculate $\\vec{f}_{k+1}$: Multiply each element of $ \\vec{f}_k$ with the corresponding element of the vector $R \\cdot \\vec{c}$.\n", "\n", "\n", "**d) Apply the iterative method on the distribution you would observe without any experimental uncertainties.\n", " How many iterations do you need to achieve a maximum deviation of 0.1% per bin between the true distribution and the unfolded observation?**" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [], "source": [ "def do_iterative_unfolding(g_in, max_iterations):\n", " f1 = np.array([3000/7]*7)\n", " for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_in/g1\n", " f1 = f1*R.dot(c)\n", " return f1\n", " # TODO: Implement the iterative approach to unfolding in this function.\n", " # The parameter g_in can be used to provide the idealy folded events as input, or the measured events with uncertainty.\n", " # max_iterations shall be used to define the maximal number of interations used by the algorithm." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fin = do_iterative_unfolding(g,2700)\n", "plt.title(r\"$i=5$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),f, label=\"f\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "max_iterations = 30000\n", "fs = []\n", "f1 = np.array([3000/7]*7)\n", "for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g/g1\n", " f1 = f1*R.dot(c)\n", " fs.append(np.max(np.abs((f1-f)/f)))\n", "\n", "plt.plot(fs[10:])\n", "plt.plot(np.arange(max_iterations), np.full((max_iterations),1e-3))\n", "plt.yscale(\"log\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It's slow" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**e) Now, apply the method on the observation with uncertainties $\\vec{g}_\\mathrm{obs}$.\n", " Try and discuss different choices for the number of iterations.**" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGzCAYAAAAxPS2EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAArkUlEQVR4nO3de1SVdb7H8Q/3mwIicpsAmYkz4v1CGmKdUka8jEtHZ8oOzjHz5IwHLWQddVzjpcykrLwu09GZ1JZ6mpnOWOkpksHUSkTFLC97WRYnnBSQpYhgAsI+fzDuIrW87M2zf/h+rbXXkud52M93P6uVb/d+9vN42O12uwAAAAziafUAAAAAN4uAAQAAxiFgAACAcQgYAABgHAIGAAAYh4ABAADGIWAAAIBxCBgAAGAcAgYAABiHgAFgmerqanl6emrJkiVWjwLAMAQMAMscOXJEdrtd3bt3d8nz79y5Ux4eHtd87N271yX7BNAyvK0eAMCdq2/fvvr666/l5+fn0v088cQTuueee5otu/vuu126TwCuRcAAsIynp6f8/f1dvp/77rtPv/zlL12+HwAth4+QAFjmZz/7mVJTU1tkXxcuXNDly5dbZF8AXI93YABY5pNPPtHo0aOvWl5fX6/z58/f0HOEhYXJ0/P7/y02YcIEVVdXy8vLS/fdd59eeOEFJScn3/LcAKxHwACwRHl5ucrLy695Au+HH36oBx988Iaep7i4WB07drzmOl9fX40ZM0bDhg1TeHi4jh07phdffFH33Xef9uzZo169et326wBgDQ+73W63eggAd56///3v+tnPfqb3339fAwYMaLbu3LlzKioquqHnGTBgwE2dR3PixAl1795d999/v3Jzc296bgDugXdgAFji8OHDkqRu3bpdta5du3ZKS0tzyX7vvvtujRw5Un/729/U0NAgLy8vl+wHgGsRMAAs8cknnyguLk4hISFXraurq9PZs2dv6Hk6dOhw0xESGxururo61dTUKDg4+KZ+F4B7IGAAWOKTTz657gXs9uzZ45RzYK7niy++kL+/v9q0aXNTvwfAfRAwAFpcQ0ODjh07piFDhlxzfY8ePZSXl3dDzxUVFXXddWfOnFGHDh2aLfv444/11ltvaejQoT/47SUA7ouAAdDiPvvsM126dOma57/IiefAPPzwwwoICFD//v0VERGhY8eOac2a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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fin = do_iterative_unfolding(g,6)\n", "plt.title(r\"$i=5$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),f, label=\"f\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "max_iterations = 15\n", "fs = []\n", "f1 = np.array([3000/7]*7)\n", "for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_obs/g1\n", " f1 = f1*R.dot(c)\n", " fs.append(np.max(np.abs((f1-f)/f)))\n", "\n", "plt.plot(fs)\n", "plt.plot(np.arange(max_iterations), np.full((max_iterations),1e-3))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "max_iterations = 500\n", "fs = []\n", "f1 = np.array([3000/7]*7)\n", "for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_obs/g1\n", " f1 = f1*R.dot(c)\n", " fs.append(np.max(np.abs((f1-f)/f)))\n", "\n", "plt.plot(fs)\n", "plt.plot(np.arange(max_iterations), np.full((max_iterations),1e-3))\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It get's worse for more iterations after 6." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**f) The choice of $\\vec{f_0}$ is similar to the choice of a prior in a Bayesian analysis and influences the result.\n", " Try different choices for $\\vec{f_0}$ and test the influence on the result for small and large number of iterations.**" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Different options for priors of f_start:\n", "prior1 = np.array([1.,20.,300.,400.,300.,20.,1.])\n", "prior2 = np.array([4.,3.,2.,1.,2.,3.,4.])" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "# TODO: Extend the function do_iterative_unfolding so that a prior can be provided via an argument. This prior should than be used as starting vector for f_0.\n", "import copy\n", "def do_iterative_unfolding(g_in, max_iterations, prior):\n", " f1 = prior[:]\n", " for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_in/g1\n", " f1 = f1*R.dot(c)\n", " return f1\n", " # TODO: Implement the iterative approach to unfolding in this function.\n", " # The parameter g_in can be used to provide the idealy folded events as input, or the measured events with uncertainty.\n", " # max_iterations shall be used to define the maximal number of interations used by the algorithm." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGzCAYAAAAxPS2EAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAshklEQVR4nO3deXDUdZ7/8VcOckISQsilSciMWQ33EcEQdBUyhGMoUBRwwywiK7NsQGN21aF+HIJKFFEQloGBGQELWGe0FhVWozHIoYQriHL0gmjWMEonpiBpEiQJSf/+iLRGbujON5/4fFR1Ff39fru/7/7WjDzp/nZ/vZxOp1MAAAAG8bZ6AAAAgGtFwAAAAOMQMAAAwDgEDAAAMA4BAwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAaBZVVVXy9vbWwoULrR4FQCtAwABoFgcPHpTT6VT37t098vx79uzR1KlT1aVLFwUHBys+Pl5jxozR0aNHm2y3ZcsWeXl5XfS2c+dOj8wGwP18rR4AwC9D37599f3338vf398jz//CCy/ok08+0QMPPKDu3bvLbrfrP//zP9W7d2/t3LlTXbt2bbL9o48+qttvv73JsltuucUjswFwPy8u5gigNdixY4dSUlLk5+fnWvbFF1+oW7duuv/++7V27Vrph3dg7rnnHr3xxhu6//77LZwYwI3gIyQAzeI3v/mN0tLSPPb8/fv3bxIvkpSUlKQuXbrIZrNd9DGnT5/WuXPnPDYTAM/hIyQAzeLzzz/Xfffdd8Hyuro6VVZWXtVzhIeHy9v76v/d5XQ6VVpaqi5dulywbuLEiaqqqpKPj4/uvPNOvfjii0pJSbnq5wZgLQIGgMeVlZWprKzsoifwfvLJJ7rnnnuu6nmKi4vVqVOnq97vunXr9M0332ju3LmuZX5+fho9erSGDRumiIgIHT58WAsWLNCdd96pHTt2qFevXlf9/ACswzkwADzuww8/1G9+8xtt375dAwYMaLLu1KlTKioquqrnGTBggAICAq5q2//93/9Vv3791KVLF23fvl0+Pj6X3PbYsWPq3r277rrrLuXl5V3V8wOwFu/AAPC4AwcOSJK6det2wbr27dsrPT3drfuz2+0aPny4QkND9eabb142XvTDt49Gjhyp//7v/1Z9ff0VtwdgPQIGgMd9/vnnio+PV2ho6AXramtrdfLkyat6no4dO14xLiorKzV06FBVVFRo+/btio2NvarnjouLU21traqrqxUSEnJVjwFgHQIGgMd9/vnnl/wBux07drjtHJizZ89qxIgROnr0qD788EN17tz5qmf86quvFBAQoLZt2171YwBYh4AB4FH19fU6fPiwhgwZctH1PXr0UH5+/lU9V3R09GX3M3bsWBUWFurtt99WamrqRbf77rvv1LFjxybLPvvsM73zzjsaOnToNX3LCYB1CBgAHvXFF1/o7NmzFz3/RW48B+bf//3f9c4772jEiBE6efKk64frzhs/frwkaezYsQoMDFT//v0VGRmpw4cPa8WKFQoKCtLzzz9/w3MAaB58CwmAR73xxhsaM2aMDh06dE0f6Vyru+++W1u3br3k+vP/qVu8eLHWrVunY8eOyeFwqGPHjho0aJBmz57NpQQAgxAwAADAOHzYCwAAjEPAAAAA4xAwAADAOAQMAAAwDgEDAACMQ8AAAADjtNofsmtoaNC3336rdu3aycvLy+pxAADAVXA6nTp9+rRiY2Mv+8vYrTZgvv32W8XFxVk9BgAAuA7Hjx/XzTfffMn1rTZg2rVrJ/1wALiyLAAAZnA4HIqLi3P9PX4prTZgzn9sFBISQsAAAGCYK53+wUm8AADAOAQMAAAwDgEDAACM02rPgQEA4EbU19errq7O6jFaHR8fH/n6+t7wT5wQMAAA/ExVVZX+/ve/y+l0Wj1KqxQUFKSYmBj5+fld93MQMAAA/ER9fb3+/ve/KygoSB07duTHUN3I6XSqtrZW3333nYqLi5WUlHTZH6u7HAIGAICfqKurk9PpVMeOHRUYGGj1OK1OYGCg2rRpo6+//lq1tbUKCAi4rufhJF4AAC6Cd14853rfdWnyHG6ZBAAAoBnxERIAAFejpEQqL2++/UVESPHxzbc/wxAwAABcSUmJlJwsnTnTfPsMCpJsthYdMZ06dVJ2drays7Obfd8EDAAAV1Je3hgva9c2hoyn2WzS+PGN+23BAfNzXl5e2rBhg0aNGuXxfREwAABcreRkqXdvq6e4KrW1tTf0OystHQEDwG2a+xSB5sBpCDDF3Xffra5du8rX11dr165Vt27dtGTJEj3xxBPavn27goODNXjwYC1cuFARERGSpDfffFNz5szRsWPHFBQUpF69euntt99WcHCw7r77bvXs2VOL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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# TODO: Apply this extended function on the measurements with uncertainties using different priors and max_iterations values to optimize the mean quadratic deviation!\n", "fin = do_iterative_unfolding(g_obs, 25, prior1)\n", "plt.title(r\"$i=25$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),f, label=\"f\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 100, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# TODO: Apply this extended function on the measurements with uncertainties using different priors and max_iterations values to optimize the mean quadratic deviation!\n", "fin = do_iterative_unfolding(g_obs, 25, prior2)\n", "plt.title(r\"$i=25$\")\n", "plt.bar(list(np.arange(7)),fin, label=\"result\", color='none', edgecolor='red')\n", "plt.bar(list(np.arange(7)),f, label=\"f\", color='none', edgecolor='blue')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "image/png": "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w2H85S9/MXbu3GncfffdRmJiopGfn292aZaWkZFhPP/888aOHTuMrVu3Gtdee63Rt29fo6SkJNRm6tSpRmpqqrFy5Upjy5YtxoQJE4yLL77Y1LqtbtOmTUb//v2N888/37jvvvtCr3OvW0dhYaHRr18/40c/+pGxceNGY9++fcby5cuNzz77LNRm/vz5htvtNt58801j27Ztxve+9z1jwIABRnl5uam1W82jjz5qJCUlGUuXLjX2799vvPbaa0Z8fLyxYMGCUBvudfO88847xq9+9Svj9ddfNyQZb7zxRtj5xtzXa665xrjggguMDRs2GB9++KExaNAg49Zbb21xbQSYJrjooouMrKys0Pe1tbVGSkqKMW/ePFPr6mwKCgoMScaaNWsMwzCMoqIiIyoqynjttddCbf79738bkozs7GwTK7Wu4uJiY/DgwcaKFSuMb33rW6EAw71uPbNnzzYuvfTSs54PBoOG1+s1nnjiidBrRUVFhtPpNF5++eV2qrJzyMzMNH784x+HvXbjjTcakyZNMgzudav5coBpzH3dtWuXIcnYvHlzqM27775r2Gw24/Dhwy2qhyGkRqqqqlJOTo7S09NDr9ntdqWnpys7O9vU2jobv98vSerevbskKScnR9XV1WH3ftiwYerbty/3vpmysrKUmZkZdk/FvW5Vb731lsaOHasf/OAHSk5O1qhRo/TnP/85dH7//v3y+Xxh99rtdmv8+PHc6ya6+OKLtXLlSu3Zs0eStG3bNq1bt07f+c53JO51m2nMfc3OzlZiYqLGjh0bapOeni673a6NGze26Pd32oc5trbjx4+rtrZWHo8n7HWPx6Pdu3ebVldnEwwGNWPGDF1yySU677zzJEk+n08Oh0OJiYlhbT0ej3w+n0mVWteSJUv08ccfa/PmzV85x71uPfv27dMzzzyjWbNm6Ze//KU2b96se++9Vw6HQ5MnTw7dzzP9N4V73TS/+MUvFAgENGzYMEVERKi2tlaPPvqoJk2aJNX/ey3udatrzH31+XxKTk4OOx8ZGanu3bu3+N4TYNChZGVlaceOHVq3bp3ZpXRKhw4d0n333acVK1YoOjra7HI6tWAwqLFjx+qxxx6TJI0aNUo7duzQokWLNHnyZLPL61ReffVVvfjii3rppZd07rnnauvWrZoxY4ZSUlK4150YQ0iN1KNHD0VERHxlNUZ+fr68Xq9pdXUm06dP19KlS7Vq1Sr16dMn9LrX61VVVZWKiorC2nPvmy4nJ0cFBQUaPXq0IiMjFRkZqTVr1ujpp59WZGSkPB4P97qV9OrVSyNGjAh7bfjw4crLy5Pq/71W/b09Hfe66e6//3794he/0C233KKRI0fq9ttv18yZMzVv3jyJe91mGnNfvV6vCgoKws7X1NSosLCwxfeeANNIDodDY8aM0cqVK0OvBYNBrVy5UmlpaabWZnWGYWj69Ol644039MEHH2jAgAFh58eMGaOoqKiwe5+bm6u8vDzufRNdddVV2r59u7Zu3Ro6xo4dq0mTJoX+zL1uHZdccslXtgPYs2eP+vXrJ0kaMGCAvF5v2L0OBALauHEj97qJysrKZLeHf5xFREQoGAxK3Os205j7mpaWpqKiIuXk5ITafPDBBwoGgxo/fnzLCmjRFOAuZsmSJYbT6TQWL15s7Nq1y7jnnnuMxMREw+fzmV2apU2bNs1wu93G6tWrjaNHj4aOsrKyUJupU6caffv2NT744ANjy5YtRlpampGWlmZq3Z3F6auQDO51q9m0aZMRGRlpPProo8bevXuNF1980YiNjTX+9re/hdrMnz/fSExMNP75z38an376qXH99deztLcZJk+ebPTu3Tu0jPr11183evToYTzwwAOhNtzr5ikuLjY++eQT45NPPjEkGb///e+NTz75xDh48KBhNPK+XnPNNcaoUaOMjRs3GuvWrTMGDx7MMmoz/Pd//7fRt29fw+FwGBdddJGxYcMGs0uyPElnPJ5//vlQm/LycuMnP/mJ0a1bNyM2Ntb4/ve/bxw9etTUujuLLwcY7nXrefvtt43zzjvPcDqdxrBhw4xnn3027HwwGDQeeughw+PxGE6n07jqqquM3Nxc0+q1qkAgYNx3331G3759jejoaGPgwIHGr371K6OysjLUhnvdPKtWrTrjf58nT55sGI28rydOnDBuvfVWIz4+3nC5XMadd95pFBcXt7g2m3H6VoUAAAAWwBwYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOQQYAABgOf8/PVS7hU/urQEAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "max_iterations = 100\n", "fs = []\n", "f1 = prior1[:]\n", "for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_obs/g1\n", " f1 = f1*R.dot(c)\n", " fs.append(np.mean((f1-f)**2))\n", "\n", "plt.plot(fs)\n", "plt.plot(np.arange(max_iterations), np.full((max_iterations),1e-3))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "max_iterations = 100\n", "fs = []\n", "f1 = prior2[:]\n", "for i in range(max_iterations):\n", " g1 = R.dot(f1)\n", " c = g_obs/g1\n", " f1 = f1*R.dot(c)\n", " fs.append(np.mean((f1-f)**2))\n", "\n", "plt.plot(fs)\n", "plt.plot(np.arange(max_iterations), np.full((max_iterations),1e-3))\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`# TODO:` Explain what you observe using the markdown syntax" ] } ], "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.12.2" } }, "nbformat": 4, "nbformat_minor": 4 }