{ "metadata": { "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.4-final" }, "orig_nbformat": 2, "kernelspec": { "name": "python3", "display_name": "Python 3", "language": "python" } }, "nbformat": 4, "nbformat_minor": 2, "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib import cm\n", "import numpy as np\n", "\n", "from constants import *\n", "from maths import gaussian\n", "from markov import MarkovModel" ] }, { "source": [ "State Probability Functions (1)\n", "===================" ], "cell_type": "markdown", "metadata": {} }, { "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 2020-12-23T18:22:04.881073\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", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEICAYAAABS0fM3AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABSn0lEQVR4nO2deXhU5dm47ycrIQuEsAmJEBRQQAIhiNEIbnXXtu5rca9tXfqr1lZrrbW1tra16qd2+bSC1t1aS61+rgSkIhVSQQib7GHfQyAkJHl+f7xn0iEkk5nMnDlvMue+rrmSmTnznnve98w88+6iqvj4+Pj4JC5JXgv4+Pj4+HiLHwh8fHx8Ehw/EPj4+PgkOH4g8PHx8Ulw/EDg4+Pjk+D4gcDHx8cnwfEDgY/niMhJIlLVwdcOFhEVkZQ2nr9HRJ5u7VgReUdEJnfc3A5EpEZEhnjtEQtE5EQRWeq1R6LhB4JOhIiUicgnIrJbRHaIyL9EZLzz3DUiMiuCtEJ+gUbw+hrntlpEftiRtNxEVX+hqje08dxZqjoVIs+/lojIFBGpF5E9zm2hiDwkIj06mma4qGqWqq4M8vh5R9NyyrE2qFxrRGRA7GwPOZ+KyJGB+6r6saoOd+t8Pq3jB4JOgojkAG8B/wP0AgYCPwXqvPQCeqpqFnA5cJ+InNnygI4Gm07Iw6qaDfQBrgWOA/4lIpneakXMeU5wCdw2eC3k4y5+IOg8DANQ1ZdUtVFVa1X1PVVdICJHA38ASp1fcLsAROQcEfmPiFSLyDoRuT8ovZnO313Oa0qd11wnIotFZKeIvCsig8KRU9XZwCJgVKCpR0R+ICKbgGdFJF1EHhWRDc7tURFJD07DacbZ5vwqvTLo8VDvI8B1TrobReTOoNfeLyJ/ac1ZRMpF5IbW8k9ExovIZhFJDjr+AhGZH0Ze7FfVz4DzgTxMUAik0Wb+Or+ObxaR5Y7DkyIiznNHisgMpza4TUReafG6I0XkJuBK4C7nffxDRL4vIn9t8b4fF5HH2nsfLV6zWkROC7rfnK9BtcPJIrLW8ftR0LHJTtmucGpL80SkQEQC1+B8x/dSadFMKCJHO+W0S0QWicj5Qc9NcfLon066c0TkCOc5EZHficgW57r5QkRGRfKeEwpV9W+d4AbkANuBqcBZQG6L568BZrV47CTgGEzAHw1sBr7mPDcYUCAl6PivAl8CRwMpwL3AJ234NL8eEOAEYB9wqnPeBuBXQDqQATwAfAr0xfxi/gT4WZBnA/CIc/wkYC8wPIL38RKQ6Ry3FTjNef5+4C+tvWegHLghRP5VAmcF3f8bcEcb+TEF+Hkrjz8HvBJO/jpubwE9gcOd93Gm89xLwI+cPOgGlLV43ZGteQCHOXnZ07mfAmwBxrXxPlYH8i7U423k6/86ZV2Eqake7Tz/feALYDjmWikC8lq6B5V1lfN/qpNf9wBpwCnAnqDrYgrmM3Gs875eAF52njsDmOfkpTh5fpjXn2Nbb36NoJOgqtVAGf/9wG0VkWki0i/Ea8pV9QtVbVLVBZgvk0khTnMz8JCqLlbVBuAXwJh2agXbgB3A08APVfVD5/Em4CeqWqeqtZhfqg+o6hZV3Ypp1rq6RVo/do6fAfwTuCSC9/FTVd2rql8Az2KaqqJlKnAVgIj0wny5vBhhGhswTXkQXv7+UlV3qepaYDowxnn8ADAIGKCmxhFWf4aqbsTU/i52HjoT2Kaq80K87E3nF/guEXkznPM4/FRNTXU+MB/zhQ9wA3Cvqi5Vw3xV3R5GescBWZg8qVfVjzCBMrhs/6aq/3by8wUOzq9s4ChAnDzfGMF7SSj8QNCJcC7ma1Q1HxgFDAAebet4EZkgItNFZKuI7MZ8EfUOcYpBwGOBLwHMF7xg+iPaoreq5qrq0ar6eNDjW1V1f9D9AcCaoPtrnMcC7FTVva09H+b7WBci7Y7yF+A8MW38lwAfd+DLZCAmHyG8/N0U9P8+zBchwF3Osf92mkiui8ChOaA5f59v5/ivqWpP5/a1CM7TlnsBsCKCdAIMANapalPQY2sII7+coPEE8CSwRUT+JKafzacV/EDQSVHVJZiqcaDds7VlZF8EpgEFqtoD0w4uIY5fB3wz6Eugp6pmqOonHVFscX8D5oswwOHOYwFy5eBO1eDnQ72PAAUh0u6IL6q6HpgNXICpvbT3BXoQIpIFnAZ87DzU4fxV1U2qeqOqDgC+CTwlQaNtQr0P4E1gtNNGfi7ml3Ok7AW6B93vH8Fr1wFHdOCcG4ACEQn+njocWB/Oi1X1cVUdB4zA9LF9vwMOCYEfCDoJInKUiNwhIvnO/QJMFflT55DNQL6IpAW9LBvYoar7ReRY4Iqg57Zimm+Cx5//AbhbREY65+ghIhcTG14C7hWRPiLSG7gP84s7mJ+KSJqInIj5wnotjPcR4Mci0t1xvxZ4pZVjQtFa/oFp478L0/fwRjgJiekYH4f5At6JaaqCKPJXRC4OlL2TpmLKr7X3cdCcAqdm9jomoP7baXaKlM+By0QkVURKgIsieO3TwM9EZKjTiTtaRPLa8g1iDuZX/l3OeU8CzgNebu+EYjr7J4hIKiaI7af1/PLBDwSdiT3ABGCOiOzFBICFwB3O8x9hRu1sEpFtzmPfBh4QkT2YL95XA4mp6j7gQczwxl0icpyq/g3TwfuyiFQ76Z8VI/+fA3OBBZiOwwrnsQCbMF9wGzC/WG92aj0h30cQMzAdix8Cv1HV9yL0ay3/wHQQD8K0Re9rJ427HMftmAAyDzg+0OQVZf6Ox5R9DaZ2dLs6cwda8AwwopX2/amYYBZRrSaIH2N+1e/E9O9E0lfyCKbM3gOqHccM57n7gamO7yXBL1LVeswX/1mYvqingG8EXRehyMH0pe3ENCdtB34dgXNCIar+xjQ+PqEQkRWYJp0PvHbpKCJyOLAE6O8MPPDxacavEfj4hEBELsQ0w3zktUtHcdrYv4cZWukHAZ9DSJQZnz4+ESMi5ZiOxqtbjFzpNDgd8JsxzSOHzPr28QG/acjHx8cn4fGbhnx8fHwSnE7XNNS7d28dPHiw1xrN1NfXk5bWcsShPdjuB/Y72u4H9jva7gdd33HevHnbVLVPq0/Gay2LWN3GjRunNjF9+nSvFUJiu5+q/Y62+6na72i7n2rXdwTmqr/WkDsUFRW1f5CH2O4H9jva7gf2O9ruB4nt6AeCKNmzZ4/XCiGx3Q/sd7TdD+x3tN0PEtvRDwRRsnJla5M77cF2P7Df0XY/sN/Rdj9IbMdO11ns4+Pjc+DAAaqqqti/f3/7B4dJjx49WLx4cczSc4NwHLt160Z+fj6pqalhp+sHgiixaQRTa9juB/Y72u4H9jvG2q+qqors7GwGDx6MSMuFaDtGXV0d6enp7R/oIe05qirbt2+nqqqKwsLCsNP1m4aipFevXu0f5CG2+4H9jrb7gf2Osfbbv38/eXl5MQsCACkp9v8ubs9RRMjLy4u4puQHgiipqKjwWiEktvuB/Y62+4H9jm74xTIIAOzb197ist4TjmNH8sX+EOjj49Mmb78NmzebdmFViPF3o0+C4NcIoiQ3N9drhZDY7gf2O9rqt3kzXHABXHcdXHHFcYwaBZs2tf86L7A1D4NJTk6O6PgHH3yQkSNHMnr0aMaMGcOcOXMAePTRR8P65R7uccH8/e9/Z+TIkSQlJTF37tyIXhsKPxBEie2TUGz3A/sdbfV76imoq4N//AMeeQQqK+HZZ9t/nRfYmofBdO/evf2DHGbPns1bb71FRUUFCxYs4IMPPqCgwOyW6mYgGDduHG+88QYTJ06M6HXt4QeCKJkxY4bXCiGx3Q/sd7TRr7bWBILzzoNzz4Xi4hmUlcHUqWDjgsI25mFLIpmstXHjRnr37t08gqd3794MGDCAxx9/nA0bNnDyySdz8sknA/Ctb32LkpISRo4cyU9+8hOAVo977733KC0tpbi4mIsvvpiamppDzpufn8/w4cOjfauH4PcRRIna+KkLwnY/sN/RRr/nnoNt2+AOZ6NSVWXyZLjxRvj3v2HCBG/9WuJqHn73u/D551Enk9HYCIHmoTFj4NFH2zz29NNP54EHHmDYsGGcdtppXHrppUyaNInbbruNRx55hOnTp9O7d2/ANCH16tWLxsZGTj31VBYsWHDIcdu2bePnP/85H3zwAZmZmfzqV7/ikUce4b777ov6fYWDXyOIkliPXIg1tvuB/Y62+TU1maagceMg0EIgIlx8MXTrZmoFtmFbHkZLVlYW8+bN409/+hN9+vTh0ksvZcqUKa0e++qrr1JcXMzYsWNZtGgRlZWVhxzz6aefUllZyQknnMCYMWOYOnUqa9ascfldBNHWanS23mxbfdTHJ97885+qoPrii4c+d/nlqrm5qvv3x98rnlRWVnqtcBCvvfaannvuuaqqOmjQIN26dauqqq5cuVKPOOII3bFjh6qqTp48WZ999tlDjps2bZpedtllYZ9v0qRJ+tlnn7X5fGv5g7/6qHvMnz/fa4WQ2O4H9jva5vd//wfdu8NFF/33sYDj5Mmwcye89ZZHcm1gWx62RiQdt0uXLmX58uXN9z///HMGDRoEQHZ2dnN/Q3V1NZmZmfTo0YPNmzfzzjvvNL8m+LjjjjuOf/3rX3z55ZcA7N27l2XLlkXlGAl+IIiSnTt3eq0QEtv9wH5H2/xmz4bx4yF4KZmA42mnwYAB8Je/eCTXBrblYWs0NjaGfWxNTQ2TJ09mxIgRjB49msrKSu6//34AbrrpJs4880xOPvlkioqKGDt2LEcddRRXXHEFJ5xwQnMawcf16dOHKVOmcPnllzN69GhKS0tZsmTJIed98803yc/PZ/bs2ZxzzjmcccYZUb9v8DuLfXw6FbW1pl/0zjtbfz45Gc44w9QI/Alm7jFu3Dg++eSTVp+79dZbufXWW5vvt9V30PK4U045hc8++yzkec877zyuuOKKyIXbwa8RRElxcbHXCiGx3Q/sd7TJb+5caGiA0tKDHw92LCmBrVth3bo4y4XApjxsi0jmEXiFW45+IIiSHTt2eK0QEtv9wH5Hm/xmzzZ/jzvu4MeDHUtKzN92flzGFZvysC0aGhq8VmgXtxz9QBAlq1ev9lohJLb7gf2ONvnNng1HHAF9+x78eLBjUZHpP4jhCgRRY1MetkV9fb3XCu3ilqMfCHx8OgmqJhC0bBZqSXo6HHOMXYHAx278QBAlQ4YM8VohJLb7gf2OtvitXm0Wmjv++EOfa+lYUmICgS2Tom3Jw1CkpaV5rdAubjn6gSBKsrOzvVYIie1+YL+jLX6B/oHWagQtHcePh127YMUK973CwZY8DEWkq496gVuOfiCIEtsnytjuB/Y72uI3ezZkZsKoUYc+19Ix0GFsS/OQLXkYitra2oiO92IZ6jvuuIOjjjqK0aNH8/Wvf51du3ZF9Pq28AOBj08n4ZNP4NhjIZwdFUeONOsO2TRyqCvh1TLUJ598MgsXLmTBggUMGzaMhx56qEP+LfEDQZTk5eV5rRAS2/3Afkcb/OrrYcGCtlcVbemYmmoW0LSlRmBDHrZHJM0uXi1DffrppzfvW3zcccdRVVUV1XsOIGpLb1KYlJSUaCx35omWpqYmkpLsjae2+4H9jjb4VVaaX/nPPw9XXXXo86053norTJli+gq8bv6OdR4uXryYo48+GojZKtSAAmYqdjurUFNTU0NZWRn79u07aBlqgMGDBzN37tzmZah37Nhx0DLUjz/+OKNHjz7ouG3btnHBBRfwzjvvNC9DXVdXd8gy1KravJLreeedx6WXXspVrVwQwfkTQETmqWpJa+/H3k9fJ2HmzJleK4TEdj+w39EGv8CyMy0+28205lhSAjU1sHSpi2JhYkMetkckaw15tQx1oJbw4IMPkpKSwpVXXhm2cyj8tYZ8fDoBixebv5FsThVY1eHzz2HEiJgrWUOoX+6RsGdPbUSjm5KTkznppJM46aSTOOaYY5g6dSrXXHPNQcesWrWK3/zmN3z22Wfk5uZyzTXXsH///kPSUlW+8pWv8NJLL7V73ilTpvDWW2/x4YcfxmyfB1drBCJypogsFZEvReSHrTx/jYhsFZHPndsNbvq4QUo4PXceYrsf2O9og9+SJZCfD1lZrT/fmuPQoWbRuVZWM447NuRhLPFqGer333+fhx9+mGnTpsV03SHXSkdEkoEnga8AVcBnIjJNVVvWi15R1Vvc8nCbsrIyrxVCYrsf2O9og9+SJW03C0Hrjt26weDBdjQN2ZCH7RFJbaCmpoZbb72VXbt2kZKSwpFHHsmf/vQn4L/LSw8YMIDp06c3L0NdUFDQ6jLUgeMCy1DX1dUB8POf/5xhw4YddN677rqLuro6vvKVrwAmgPzhD3+I9q27t0MZUAq8G3T/buDuFsdcAzwRSbq27VA2b948rxVCYrufqv2OXvs1NalmZaneemvbx7TleMYZqsXFLolFQKzz0I0dympqamKeZqwJ1zHSHcrcrK8NBIIXwq0CWhv8dqGITASWAf9PVQ9ZPFdEbgJuAhgwYADl5eWAmbaenZ3dPFklLy+PkSNHNndMpaSkUFZWRkVFBdXV1QCUlJSwefNm1jlr9A4dOpT09HQWLlwIQN++fRk2bBizZs0CID09ndLSUubOndvcUTNhwgSqqqpYv349NTU1HHbYYSQnJzd3AvXv35/CwkJmO1NBMzIymDBhAnPmzGmetFJaWsqqVavYtGkTACNGjKCxsZGlzs+3gQMHkp+f3zxJJSsri5KSEmbPnt38i6GsrIxly5axZcsWAEaNGkVdXV1zlbWgoICdO3c251dOTg7FxcXMmjWreRXDiRMnsmjRIrZv3w5AUVERe/bsYeXKlYAZAdGrVy8qKioAyM3NpaioiBkzZjSPYJg0aRLz589v3nykuLiYHTt2NC801l451dTUUFxc7Go5AQwfPrxD5bRly5bmPHSrnPr160dgNFzLctq6NZ2amlJyctZTXr681XKqr6+nurr6kHLKyqpi5sz+lJf/i5NOiq6covk8bdiwgerq6piVU05ODjU1NYEflGRmZlJXV9d8XXfr1g1VbS6D1NRU0tLS2Lt3LwBJSUlkZmYelIaqUltbGzKN1NTU5rH/gTQCzTuB8q+trW3ueM7IyKCxsbF5sbi0tDRSUlKa00hOTqZ79+4HpZGdnc2+ffua0+jevTsNDQ3U19fT2NhIXV0dycnJzddocnIyGRkZhww3bVlOIWkrQkR7Ay4Cng66fzUtfv0DeUC68/83gY/aS9e2GsH06dO9VgiJ7X6q9jt67ffee2aP4o8+avuYthyfeMK8dv16d9zCJdZ56EaNoLq6OuZpxppwHW3as3g9UBB0P995LDgIbVfVOufu08A4F31cod1I6zG2+4H9jl77tTd0FNp2DIwy8rqfwI081BjPgeoqG9N0JF/cDASfAUNFpFBE0oDLgGnBB4jIYUF3zwcWu+jjCps3b/ZaISS2+4H9jl77LVkCPXpAv35tH9OWY6Cv0euRQ7HOw27durF9+/aYBoMDBw7ELC23aM9RVdm+fTvdunWLKF3X+ghUtUFEbgHeBZKBP6vqIhF5AFNFmQbcJiLnAw3ADkzncadi3bp1HHHEEV5rtIntfmC/o9d+ixeb2kCoIeNtOebnQ0aG9zWCWOdhfn4+VVVVbN26NWZp7t+/P+Iv0HgTjmO3bt3Iz8+PKF1XB/eq6tvA2y0euy/o/7sxo4l8fHzaYMkSsyF9R0hKMvMJvK4RxJrU1FQKCwtjmmZ5eTljx46NaZqxxi1Hf4mJKBk6dKjXCiGx3Q/sd/TSb/du2LgxdP8AhHYcPtz7GoHtZQyJ7egHgigJrD5oK7b7gf2OXvoFOoqPOir0caEchw2DVavMCqZeYXsZQ2I7+oEgSgLjpW3Fdj+w39FLv3ADQSjH4cOhsRGcKQeeYHsZQ2I7+oHAx8diliwxewtEs+VvYOSQ181DPvbiB4Io6du3r9cKIbHdD+x39NJv5UqzXlB7a7aFcrRhCKntZQyJ7egHgihpuSiUbdjuB/Y7eum3ciWEMzgmlGNuLvTp422NwPYyhsR29ANBlATWurEV2/3Afkcv/VatCq9ZqD3H4cO9rRHYXsaQ2I5+IPDxsZTdu2H79vBqBO0xdCgELZ/v43MQfiCIEtuHnNnuB/Y7euW3apX5G06NoD3HwkLYtAmcBSvjju1lDInt6G9e7+NjKX/7G1xwAcydC+OiXI7xL3+Bq6+Gysr2J6f5dE38zetdxPagZLsf2O/olV9g3H84NYL2HAPNS87WA3HH9jKGxHb0A0GUtNwMwjZs9wP7Hb3yW7UKevY0o37aoz3HQCAINDfFG9vLGBLb0Q8EPj6WEu7Q0XDo3x/S070LBD524/cRREltbS0ZGRlea7SJ7X5gv6NXfkcfDSNHwuuvt39sOI7Dh8Mxx4SXXqyxvYyh6zv6fQQuUlVV5bVCSGz3A/sdvfBrajK/3sOtEYTjWFjoXR+B7WUMie3oB4IoCWy4bSu2+4H9jl74bdoEdXXhrzEUjmNhoXdNQ7aXMSS2ox8IfHwsJDBiKJZ7rxQWwo4dUF0duzR9ugZ+IIiS4YHdwS3Fdj+w39ELv0gmk0F4joMHH5x2PLG9jCGxHf1AECXJycleK4TEdj+w39ELv5UrzR7FgwaFd3w4jl7OJbC9jCGxHf1AECWVlZVeK4TEdj+w39ELv1WrYOBAM+QzHMJx9HIuge1lDInt6AcCHx8LieUcggB5eZCV5c8l8DkUPxBESf/+/b1WCIntfmC/oxd+K1dGtitZOI4ipp/Ai0BgexlDYjv6gSBKCmP9sy3G2O4H9jvG22//ftiwIbIaQbiOXs0lsL2MIbEd/UAQJbNnz/ZaISS2+4H9jvH2W7cOVCMLBOE6BuYSxHtBAdvLGBLbsd1AICK/FZGRrpzdx8fnENasMX/DHTEUCYWFUFNjNrzx8QkQTo1gMfAnEZkjIjeLSA+3pToTtq9NYrsf2O8Yb79AIDj88PBfE66jV0NIbS9jSGzHdgOBqj6tqicA3wAGAwtE5EURObm914rImSKyVES+FJEfhjjuQhFREWl1QSSbmTBhgtcKIbHdD+x3jLffmjWQlAT5+eG/JlxHryaV2V7GkNiOYfURiEgycJRz2wbMB74nIi+385ongbOAEcDlIjKileOygduBORHbW8CcOXZr2+4H9jvG22/NGhgwAFJTw39NuI5ezSWwvYwhsR3D6SP4HbAEOBv4haqOU9Vfqep5wNgQLz0W+FJVV6pqPfAy8NVWjvsZ8Ctgf8T2FlDr1SawYWK7H9jvGG+/tWsj7x8I1zEnB3r0MOeIJ7aXMSS2Y0oYxywA7lXVva08d2yI1w0E1gXdrwIOqteISDFQoKr/FJHvt5WQiNwE3AQwYMAAysvLARgyZAjZ2dnMnz8fgLy8PEaOHMnMmTMBSElJoaysjIqKCqqdlbZKSkrYvHkz69YZtaFDh5Kens7ChQsB6Nu3L8OGDWPWrFmA2Sy6tLSUuXPnNu8ONGHCBKqqqli/fj01NTVs3LiR5OTk5ll//fv3p7CwsLmHPyMjgwkTJjBnzpzmgiwtLWXVqlVs2rQJgBEjRtDY2MjSpUtN5g0cSH5+fvMvgKysLEpKSpg9ezZ1dXUAlJWVsWzZMrZs2QLAqFGjqKurY/ny5QAUFBTQ2NjYnF85OTkUFxcza9YsGhoaAJg4cSKLFi1iu9N7WFRUxJ49e1jprHo2ePBgevXqRUVFBQC5ubkUFRUxY8YMVBURYdKkScyfP5+dO3cCUFxczI4dO1jtNES3V06BfHWznMCs09KRctq/f39zHrpVTv369WvehnD58lImTUqPqJzq6+uprq4Oq5zy8o7gP//ZT3V1WkTlFM3nqaamhvLyclfLKdrPk6pSWVkZdjl58Xmqqalh7dq1HSqnULS7MY2IfKiqp7b3WCuvuwg4U1VvcO5fDUxQ1Vuc+0nAR8A1qrpaRMqBO1U15K4ztm1MU1dXR3q46wB4gO1+YL9jPP0aG6FbN7jzTnjoofBfF4njeeeZGoHzPRIXbC9j6PqOHdqYRkS6iUgvoLeI5IpIL+c2GPNrvz3WAwVB9/OdxwJkA6OAchFZDRwHTOtsHcarLJ+vb7sf2O8YT7+NG6GhIfKmoUgcBw2Kf9OQ7WUMie0Yqo/gm8A8TAdxhfP/PODvwBNhpP0ZMFRECkUkDbgMmBZ4UlV3q2pvVR2sqoOBT4Hz26sR2EagKmortvuB/Y7x9At8QUcaCCJxHDQIdu2K774EtpcxJLZjm4FAVR9T1UJMc01h0K1IVdsNBKraANwCvIuZi/Cqqi4SkQdE5PyYvQMfny6Em5PJAgTmJ8S7VuBjL212FovIKar6EbBeRC5o+byqvtFe4qr6NvB2i8fua+PYk9q1tZARIw4ZEWsVtvuB/Y7x9OvIZDKIzDEQZNasgVGjIjtPR7G9jCGxHUONGpqE6cw9r5XnFGg3ECQCjY2NXiuExHY/sN8xnn5r1kCvXma56EiIxDEQZAJBJx7YXsaQ2I6hmoZ+4vy9tpXbda7YdEICw9NsxXY/sN8xnn5r1nSsWSgSx/79zWS1eDYN2V7GkNiO4Uwou11EcsTwtIhUiMjprtj4+CQ4HZlMFilJSVBQEN8agY/dhLPExHWqWg2cDuQBVwO/dNWqEzFwYDgjab3Ddj+w3zFefqodrxFE6hjvIaS2lzEktmM4gUCcv2cDz6nqoqDHEp78SFYG8wDb/cB+x3j57dxplojuSCCI1PHww+NbI7C9jCGxHcMJBPNE5D1MIHjXWSSuyRWbTojtC1XZ7gf2O8bLr6MjhiByx0GDzC5oBw5Efq6OYHsZQ2I7hrPW0PXAGGClqu4TkTzgWldsfHwSmHjMIQhw+OGmKaqqKrKd0Hy6Ju0GAlVtEpHNwAgRCSdwJBRZkY7zizO2+4H9jvHy6+isYojcMXCOtWvjEwhsL2NIbMdwFp37FXApUAkEBrGqqnoyO9i2Red8fGLFHXfA738Pe/eCuNwLt2wZDB8OU6fCN77h7rl87KBDi84F8TVguKqerarnOTd/iQgH2ze8tt0P7HeMl9+aNabJpiNBIFLHgoL/njMe2F7GkNiO4QSClUAEeyUlFoG1zG3Fdj+w3zFeftHMIYjUMSMD+vaN3xBS28sYEtsxnDb/fcDnIvIh0Gyhqre5YuTjk6CsWQNjxsTvfIMG+ZPKfAzh9BFMbu1xVZ3qilE72NZH0NDQQEqKvX3otvuB/Y7x8Kuthe7d4Wc/g3vvjfz1HXG86CJYuBCWLIn8fJFiexlD13eMqo/A+cJ/FfhUVacGbh0y6YIsW7bMa4WQ2O4H9jvGw8/Z6bHDTUMdcQzUCNr5LRgTbC9jSGzHcNYaOg/4HPg/5/4YEZkW8kUJRGB/U1ux3Q/sd4yHX6CtviOTyaBjjocfDvv3w7ZtHTtnJNhexpDYjuF0Ft+P2aR+F4Cqfg4MccXGxydBiWYOQUcJ3pfAJ7EJp7HpgKruloPHtPlLTDiMitfOHh3Edj+IkaOq2Y192zbYs8f83B03Lvp0iU8erlljho12dE2xjjgGTyorcXmn8IS5Dl3GLcdwAsEiEbkCSBaRocBtwCeu2HRCbB9yZrsfxMBx1iy46y5oOcb6+OPhe9+Dr3/drL3slV8YrF0LAwaYfQI6Qkcc47lBTUJch3HALcdwPh23AiMxQ0dfAqqB77pi0wlZvny51wohsd0PonA8cAAmT4YTT4TVq+HJJ2HmTKiogMcfh02bzNCYq66KanW1eORhR5efDtARx169IDMzPoGgS1+HccQtx3DWGtoH/Mi5+fjYQUMDXH01vPIK3HOPuWVm/vf5sWPh29+Ghx82z+3eDa+9ZsZoWsjatTB+fHzPKWJqBf4m9j4hawQiMtnZkWyvc5srIv7KJEEUBObqW4rtftABx8ZGuOYaEwQefhgefPDgIBAgORnuvhv+9Cd45x0455wO1QzczsOmJjN8NJoaQUcd4zWprEtehx7glmObgcCZSPZd4A5gADAQuAu4XUSudsWmE9KvXz+vFUJiux90wPHBB+GFF8zf73+//eNvvNGsrlZeDvff775fhGzeDPX1HR86Ch13jNdOZV3yOvQAtxxD1Qi+BXxdVaer6m5V3aWqHwEXAt9xxaYTYtMs59aw3Q8idJw3z0y/vfJK0+QTLldfDddfDw89BB995J5fB4jFPgQddTz8cDPQau/ejp87HLrcdegRbjmGCgQ5qrq65YPOYzmu2Pj4hGL/frNmct++8D//E/nrH3sMhg0zncfxmEUVJtFOJouG4CGkPolLqEBQ28HnEoqcHLtjou1+EIHjj38MlZXwzDOQmxv5iTIz4eWXYft2uPPO2Pt1kFjUCDrqGK9A0KWuQw9xy7HNRedEZB/wZWtPAUNUtZXeuUPSOBN4DEgGnlbVX7Z4/mZMM1MjUAPcpKqVodK0bdE5nzixZAmMGgXXXWc6f6PhrrvgN78xzUxjx8bGLwpuvRWefx527Yr/uQNLX//xj3DTTfE/v0/86Oiic0cD57VyOxcYEcZJk4EngbOc4y8XkZave1FVj1HVMcDDwCPtpWsbs2bN8lohJLb7QZiOP/qRGfr54IPRn/Cee8wg+jvuCGvFNbfzcO3a6JuFOuo4YIAZXOV2jaDLXIce45Zjm4FAVdeEuoWR9rHAl6q6UlXrgZeBr7Y4R3XQ3UwgDusgxpaGhgavFUJiux+E4fjpp/DGG6Y5p0+f6E/Ys6cZPTR9Orz1VvR+URLtZDLouGNKilnWwu0hpF3iOrQAtxw7Pu++fQYC64LuVzmPHYSIfEdEVmBqBP5mNz4Howo/+IHpIP7e92KX7je/aTbtvfNOMznNQ2JRI4iGeA0h9bEXz3dhUNUngSed9YzuBQ7ZCEdEbgJuAhgwYADl5eUADBkyhOzsbObPnw9AXl4eI0eOZObMmQCkpKRQVlZGRUUF1dWm8lFSUsLmzZtZ5ywAP3ToUNLT01m4cCEAffv2ZdiwYc1VsPT0dEpLS5k7dy41NTUATJgwgaqqKtavXw/Axo0bSU5OprLSdG/079+fwsLC5v1FMzIymDBhAnPmzKG21vSzl5aWsmrVKjZt2gTAiBEjaGxsZOnSpQAMHDiQ/Px85syZA0BWVhYlJSXMnj27eb2RsrIyli1b1rw07ahRo6irq2uehl5QUEBxcXFzfuXk5FBcXMysWbOaf1lMnDiRRYsWsX37dgCKiorYs2cPK1euBGDw4MH06tWLiooKAHJzcykqKmLGjBmoKiLCpEmTmD9/Pjt37gSguLiYHTt2sHr16rDKKTk5GaDVctr7+uuMnjmTXT//OQ3797PQ6R/qSDkNHz78oHI68tvfJv/226l84AG2nHJKm+XUr1+/5jyMdTnt25fMzp0n0r9/HeXlsztcToMGDaK6urpD5dStWzcWLOjJ2rVbXPs8AZSXl3eonOL1eTr++OOprKwM+Xnq169f8xBOrz5Pa9eu7VA5hURVQ94w/QJJ7R3XyutKgXeD7t8N3B3i+CRgd3vpjhs3Tm1iwYIFXiuExHY/1XYcTzxRddAg1bq62J+4sVH1qKNUi4pUm5raPMzNPFy4UBVUX3opunSicbznHtXkZNUDB6JzCEWnvw4tIRpHYK628b0aTtPQpcByEXlYRI4K4/gAnwFDRaRQRNKAy4CDNrRxVjMNcA5g/6pPLQhEflux3Q9COM6ZAx9/DP/v/0FaWuxPnJRkRhDNnw/vvhu5XwxwfuQxeHB06UTjOGiQWbVj48boHELRqa9Di3DLMZytKq8CxgIrgCkiMltEbhKR7HZe1wDcArwLLAZeVdVFIvKAiJzvHHaLiCwSkc+B79FKs5BPAvOb35iO3euuc+8cV15pekt/9Sv3zhGCWAWCaIjnctQ+dhJWZ7Ga0T2vY0b+HAZ8HagQkVvbed3bqjpMVY9Q1Qedx+5T1WnO/7er6khVHaOqJ6vqoqjejQcUFRV5rRAS2/2gDccVK8xIoZtvhuyQvzmiIy3NDCMtLzejk8L1ixGrV0O3bhDtEjLROMZjUlmnvQ4twy3HcPYs/qqI/A0oB1KBY1X1LKAIsyBdQrNnzx6vFUJiux+04fjoo2aA+21xGEh2441mpvJvf9vq027m4erV5ov44A0AIycax3jUCDrtdWgZbjmGUyO4APidmolfv1bVLdC8T8H1rlh1IgKjAWzFdj9oxXHnTvjzn02zzWGHuS+QlWWan958s9WGcjfzcPXq2DQLReOYmQm9e/+3mcoNOuV1aCFuOYYTCDap6szgB0TkVwCq+qErVj6JzfPPw7598akNBLj5ZjOf4Omn43dOYhcIomXwYHcDgY/dhBMIvtLKY2fFWqSzMtiGT3EIbPeDFo6qZuGbY4+N7zpARx4Jp59uzt1igplbeVhTYxZBjUXy0ToWFsKqVdF7tEWnuw4txS3HUBvTfEtEvgCOEpEFQbdVwAJXbDohvXr18lohJLb7QQvHWbPMCqPf/Gb8Rb79bVi/Hv7xj4MedisPA23ysfhsR+tYWGh8mpqid2mNTncdWopbjqFqBC9iJpP9nYMXnRvnDCn1geYZgrZiux+0cPzjH6FHD7j00viLnHMOFBTA739/0MNu5WEsh45G6zh4sNklza25BJ3uOrQUtxxDBQJVswnNd4A9QTdExP7Q6dP52LbNbDB/9dWt70HsNikpZi3m99+HL1tbgT222DCHIEBhofnr9xMkJu3VCADmAXOdv/OC7vtg1gqxGdv9IMhx6lTzs9SLZqEA111nZhxPmdL8kFt5GKs5BBC9YyAYudVP0KmuQ4txy7HNjWlsxd+Ypouiajae6dEDPvnEW5ezz4YvvjDf1M6CeG5wySWwYIHZc8dramvNdg8/+xnce6/XNj5u0KGNaUSkONTNPd3OxYwZM7xWCIntfuA4zptnOomvucZrHeNQVQUfmtHRbuVhLIeORuuYkQH9+7tXI+g016HluOUYahnq1qdZGhQ4JcYunRLba1S2+4HjOGWKaSe55BKvdeD8881M4ylT4PTTXcvD1auhOEY/qWLh6OYQ0k5zHVqOW45tBgJVPdmVM3YxJNq1AVzGdj+ApAMH4MUX4WtfM4vMeU23bnDFFfDMM7Brlyt5uHcvbN0auxpBLBwHD25zuaWo6QzXYSI7hmoaOsX5e0FrN1dsOiGTJk3yWiEktvsBTKyuNstK2NAsFODaa2H/fnj5ZVfyMJZzCCA25VxYaBaec2PDts5wHSayY6hRQ4EztrWBvQ807xJkK7b7Aex+/HGzi/ppp3mt8l+Ki+GYY2DKFFfyMNZDR2PhWFho9iVwNgqLKZ3hOkxkx1BNQz9x/l7rypm7CIHt5GzFdj82byZn1iz4/vddHaETMSJmPsNdd7F/4UKI8fK/sQ4EsSjn4CGkgaWpY4X11yGJ7RjOMtR5IvK4iFSIyDwReUxE8lyx8Uk8XnkFaWoyX7q2cfnlIELfDz6IedKxnEMQKwKTytxcc8jHTsJZdO5lYCtwIXCR8/8rbkp1JopjNezDJWz344UXaDzmGBg50muTQ8nPh5NO4vCPPzbzHGJIrPYhCBCLci4oMD5uzC62/joksR3DCQSHqerPVHWVc/s5YNHvGG/ZsWOH1wohsdpv+XL497/Zfa7FXU5XXUXyihXw2WcxTXblytguLRGLck5LM7HPjRqB1dehQyI7hhMI3hORy0QkybldgtmH2AdYbfniLFb7vfgiiLAknstNR8qFF9KUmgp/+UvMklQ1SxkdeWTMkoxZObu1L4HV16FDIjuGGj66R0SqgRsx6w7VO7eXgZtcsfFJHFThhRfgpJOo79PHa5u26dGDbccfDy+/DAcOxCTJHTtg92444oiYJBdT3N6XwMdO2gwEqpqtqjnO3yRVTXFuSaqaE09JmxkyZIjXCiGx1m/uXNM0dOWV9jo6yFVXmdlf778fk/RWrDB/Y1kjiFUeDh5sho/W18ckuWZsL2NIbMdwmoYQkVwROVZEJgZurth0QrKzs71WCIm1fi+8YBqlL7zQXkeHlHPPNTOeX3opJukFVriOZY0gVnk4ZIiprMW6BcL2MobEdgxn+OgNwExMv8BPnb/3u2LTCbF9EoqVfo2N8MorZiOYnj3tdAxi/pIlcNFFZnP7ffuiTm/FCjM6J5Y/7mKVh4FaSqy3Y7C9jCGxHcOpEdwOjAfWOOsPjQV2uWLjkxiUl8OmTWY9n87C5ZebTYbfeivqpL78EgYONPMIbGPoUPM3Dvvy+FhEOIFgv6ruBxCRdFVdAgx3V6vzkJdn99w6K/1eegmys02NAEsdg8jLy4NJk+Cww2LSPLRiRWz7ByB2edinjyma5ctjklwztpcxJLZjOIGgSkR6Am8C74vI34E1rth0QkbaOBEqCOv86urg9dfNSqMZGYCFji0YOXKkWf7i0kvh7bdh166o0vvyy9iPGIpVHoqYWkGsawS2lzEktmO7gUBVv66qu1T1fuDHwDPA18JJXETOFJGlIvKliPywlee/JyKVIrJARD4UkRivcOI+M2fO9FohJNb5/d//mbGTQc1C1jm2oNnv8svNcJo33uhwWnv2wObNsa8RxDIPjzwy9jUC28sYEtsx3FFDxSJyGzAaqFLVdgeXiUgy8CRwFjACuFxERrQ47D9AiaqOBl4HHo5E3qcT8tJL0Ls3nHqq1yaRM368+SkfRfPQypXmr41zCAIMHWpGDcVo2oRPJyCcUUP3AVOBPKA38KyIhLOr6bHAl6q60gkcLwNfDT5AVaeramAYxqdAfiTyNpCSEmqTN++xyq+mBqZNg4svhtTU5oetcmyFZj8RuOwy+Ogj09ndAQJNLrGuEcQyD4880gzsiuUQUtvLGBLbMZxUrwSKgjqMfwl8Dvy8ndcNBNYF3a8CJoQ4/nrgndaeEJGbcGYzDxgwgPLycsBMrsjOzm4eUpWXl8fIkSObq08pKSmUlZVRUVFBdXU1ACUlJWzevJl164za0KFDSU9PZ+HChQD07duXYcOGMWvWLADS09MpLS1l7ty51NTUADBhwgSqqqpY7yzcvnHjRpKTk6msrASgf//+FBYWMnv2bAAyMjKYMGECc+bMoba2FoDS0lJWrVrFJucLZcSIETQ2NrJ06VKTeQMHkp+fz5w5cwDIysqipKSE2bNnU1dXB0BZWRnLli1jy5YtAIwaNYq6ujqWO/X6goICxowZ05xfOTk5FBcXM2vWLBqc3UcmTpzIokWL2L59OwBFRUXs2bOHlc5P18GDB9OrVy8qKioAyM3NpaioiBkzZqCqiAiTJk1i/vz5zUvkFhcXs2PHjubp8IFy2vjb3zKitpYVxx5LYVPTQeUEuF5Ow4cP71A59e7duzkPjznjDPIefJDlDz7I+gsvjLic3nuvADiCjIwNlJcvay6nfv36MXfu3KjKqbq6OibltGfPKqCY999fxRFHDIrJ56mhoYHy8nJXyykWn6fKysqQn6dYlFO0n6e1a9d26HsvJKoa8gZMB3oG3e8JfBTG6y4Cng66fzXwRBvHXoWpEaS3l+64cePUJubNm+e1Qkis8jvnHNWCAtXGxoMetsqxFQ7xGz1a9bjjOpTWjTeq9ukTA6kWxDIPN21SBdXHHotZktaXsWrXdwTmahvfq6HWGvofEXkc2A0sEpEpIvIssJDw5hGsBwqC7uc7j7U8z2nAj4DzVbUujHStIhBxbcUav+3b4d13TdNK0sGXnTWObXCI3+WXm819O7Aoz4oV7vQPxDIP+/Y1Q0hjOXLI9jKGxHYM1UcwF5gH/A24B1MzKMd8af89jLQ/A4aKSKGIpAGXAdOCDxCRscAfMUFgS8T2Pp2Hv/7VbIZ7+eVem0TPZZeZvy+/HPFLY73qqBuIuDNyyMdeRMPYcMP5Ih/m3F2qqmGNJxCRs4FHgWTgz6r6oIg8gKmiTBORD4BjgI3OS9aq6vmh0iwpKdFAG50N1NTUkJWV5bVGm1jjd9JJpoN18eJDdmOxxrENWvU7/njT+b1gQdjp1NWZqRP33Qf33x8Hxyi49FKoqIhdMLC9jKHrO4rIPFVttbMgnFFDJwHLMUNBnwKWhbvonKq+rarDVPUIVX3Qeew+VZ3m/H+aqvZT1THOLWQQsJHNmzd7rRASK/zWr4eZM83cgVa25LLCMQSt+l1+OXzxBSxaFHY6q1aZBd3cqBHEOg+PPNL4xmoIqe1lDIntGM48gt8Cp6vqJFWdCJwB/M4Vm05IYLSErVjh98or5huwjWYhKxxD0KrfJZeYvo4XXww7HTdWHQ0Q6zwcOtQMIV0TozUEbC9jSGzHcAJBqqouDdxR1WVAaojjfXwO5sUXYdy4/65o1hXo1w9OO828tzD3M16yxPwd3glW6goUld9PkBiEEwjmicjTInKSc/tfTEeyD2bctM147rd0KcybB1de2eYhnju2Q5t+V15pZl198klY6SxebOJHr16xcwsQ6zyM9XLUtpcxJLZjOIHgZqASuM25VQLfcsWmE5Kenu61Qkg893vhBdOEEhhp0wqeO7ZDm35f/7rp/Q2zeaiyEo4+OoZiQcQ6DwNDSGNVI7C9jCGxHUMGAme9oPmq+oiqXuDcftcZx/u7RWAGpa146hfYl/iUU8wSzm3QafMwOxvOPx9efbXdXlVVUyNwKxDEOg9FYNgwU6GLBbaXMSS2Y8hAoKqNwFIROdyVs/t0bT791KyyFqJZqNNz5ZWwbRu8917IwzZuNIuujmi57KLFjBgR0aAon05MOE1DuZiZxR+KyLTAzW2xzkLfvn29VgiJp34vvGC24brggpCHdeo8POMM0+j/wgsh01i82Px1q0bgRh6OHGlG/ka5/QJgfxlDYjuGs+jcj105cxdh2LBh7R/kIZ75HThgho2efz7k5IQ8tFPnYVqaGUo6darZbKCNzcXdDgRu5GFgD5TKSjN/LhpsL2NIbMdQaw11E5HvAhcDRwH/UtUZgZsrNp2QwOqXtuKZ33vvmSaTMJqFOn0eXn011NaaZTTaoLISevQI2VUSFW7kYSAQxKJ5yPYyhsR2DNU0NBUoAb7AbC7zW1cMfLomzz0HeXlw5plem7hPaakZb/ncc20eEugobmVitbUMGgTdu/v9BIlAqEAwQlWvUtU/YpaUPjFOTp0K24eceeK3cye8+aZZUiItrd3DO30eisA3vgHTp7c5FdfNEUPgTh4mJRlnZ1uAqLC9jCGxHUMFgubxcKra4MrZuwClpaVeK4TEE79XXjF7+06eHNbhXSIPr7rK/G2l03jHDrNPsZsjhtzKw5EjY1MjsL2MIbEdQwWCIhGpdm57gNGB/0XE/oW744RNK6G2hid+U6fCqFFQXBzW4V0iDwsLYeJE895bLDnhdkcxuJeHI0fChg3RjxyyvYwhsR3bDASqmqyqOc4tW1VTgv4PPQwkgQhst2crcfdbutTMH5g8OewG8S6Th9/4BixbBv/+90EPB5pW3AwEbuVhrDqMbS9jSGzHcOYR+PiEz3PPmcblrjyJrC0uusjMm3j22YMeXrzYPDxokEdeURDLkUM+9hLWxjQ2YdvGNLW1tWRkZHit0SZx9WtsNE0ko0bB22+H/bIulYff+Ab8/e+mPSUzE4CzzjJ78vznP5Y4RkBTk5kGcv318NhjHU/H9jKGru8Y1cY0PqGpqqryWiEkcfV77z1Ytw6uuy6il3WpPLzhBqiuhtdfb35o0SJ3m4XAvTwMjByKtkZgexlDYjv6gSBK1q9f77VCSOLq96c/QZ8+ZjZxBHSpPDzxRLOY/zPPAGZO3bp1MHasS3IObuZhLEYO2V7GkNiOfiDwiQ0bN8I//gHXXBPW3IEui4hpR/n4Y1i6lIoK83CYA6isZORI07S1Y4fXJj5u4QeCKBlu+XZTcfObMsX0EdxwQ8Qv7XJ5OHkyJCfDM880BwK3awRu5uGoUebvF190PA3byxgS29EPBFGSnJzstUJI4uLX1ARPPw2TJplF7COky+Vh//5w3nkwdSoVcxspLHRnV7Jg3MzDcePM32jGaNhexpDYjn4giJLKWMy/d5G4+E2fbvYduPHGDr28S+bhTTfBli3M+7g2Ls1CbuZh375w+OHw2WcdT8P2MobEdvQDgU/0PPWU+cl74YVem9jDGWewc9AYVm7Jav5F3ZkpKYkuEPjYjR8IoqR///5eK4TEdb+1a80CczfcYGZNdYAumYdJSfznzLsBKO65MsZGh+J2Ho4fbyp9He0wtr2MIbEd/UAQJYWFhV4rhMR1v9//3vz99rc7nERXzcOKAecCUDz7yVjqtIrbeTh+vPnb0X4C28sYEtvRDwRRMnv2bK8VQuKqX20t/O//mnkDUayf0FXzsGJJdwoyt9Pnr3+IzX6PIXA7DwPNWx1tHrK9jCGxHV0NBCJypogsFZEvReSHrTw/UUQqRKRBRC5y08XHBV5+GbZvh1tv9drESubNg3Hjk2HfPrMqaSemZ08zT86i1V18YohrgUBEkoEnMbubjQAuF5GWK7KvBa4BXnTLw21sX5vENT9VeOIJM9vo5JOjSqor5mF1tVmItPiUnnDCCWahngb3tvWIRx6OH9/xGoHtZQyJ7ehmjeBY4EtVXamq9cDLwFeDD1DV1aq6AGhy0cNVJkyY4LVCSFzzmzEDKipMbSDK/Re7Yh7On2/+FhcDd94Jq1aF3NM4WuKRh+PHw/r1ZhJ5pNhexpDYjimupGoYCKwLul8FdOhdiMhNwE0AAwYMoLy8HIAhQ4aQnZ3NfOdTl5eXx8iRI5k5cyYAKSkplJWVUVFRQXW12UunpKSEzZs3s26dURs6dCjp6eksXLgQgL59+zJs2LDmTaLT09MpLS1l7ty5zWuBT5gwgaqqKtavX8/evXspLi4mOTm5eYxv//79KSwsbG7Py8jIYMKECcyZM4fa2lrA7DS0atUqNm3aBMCIESNobGxk6dKlJvMGDiQ/P585c+YAkJWVRUlJCbNnz6aurg6AsrIyli1bxpYtWwAYNWoUdXV1LF++HICCggI2bdrEgQNms7mcnByKi4uZNWsWDc6v04kTJ7Jo0SK2b98OQFFREXv27GHlSjPSZfDgwfTq1YsKZ4psbm4uRUVF7LjrLrJyc5lTWMiJwPz589m5cycAxcXF7Nixg9WrV4dVTvv27ePss892tZzAzMrsSDnNmjWreSJPuOX02murgcHU1X1Cw7ln0zh4MPX33ce8vn0Zdcwxh5RTv379mjcd6Ug5qSrjxo07pJxmzJiBqiIiTJo0KapySkvLBYp4+eUVjB27LqJyevfdd8nMzHS1nKL9PKWnp9OjR4+Qn6doy6mtz1O45bR3716OOeaYDn3vhURVXblh9jl+Ouj+1cATbRw7BbgonHTHjRunNjF9+nSvFULiil9FhSqo/uIXMUmuK+bh+eerHnlk0AN//KPJs48+iplXMPHIw5oa1aQk1R//OPLX2l7Gql3fEZirbXyvutk0tB4oCLqf7zzm09l5+GHIzoZvfctrEytpbISZM+Gkk4Ie/MY3zBTdX//aK62oycw0XUItNmDz6QK4GQg+A4aKSKGIpAGXAdNcPJ8n2L7hdcz9VqyAV1+Fm282Q0liQFfLwwULzGjRgwJBt25w223wzjvw+ecxtDPEKw/LyuBf/wKntTFsbC9jSGxH1wKBqjYAtwDvAouBV1V1kYg8ICLnA4jIeBGpAi4G/iginW5DvFWrVnmtEJKY+z38MKSkwHe/G7Mku1oeOl1YTJrU4onvfAd69ID774+F1kHEKw9POw1qaiKvFdhexpDYjq7OI1DVt1V1mKoeoaoPOo/dp6rTnP8/U9V8Vc1U1TxVHemmjxsEOqdsJaZ+K1bAn/9slpMYMCBmyXa1PCwvhyOPhPz8Fk/07Al33GG2spw3L1Z6QPzy8KSTzCCxDz6I7HW2lzEktqM/s9gnfO6/H1JT4d57vTaxllb7B4K5/XbIzYWf/CSeWjGjVy8zy/jDD7028YklfiCIkhEjWs6Rs4uY+S1aBC+8ALfcAocdFps0HbpSHrbaPxBMTg58//vwz3/Cp5/GQg+Ibx6eeirMnm2aiMLF9jKGxHb0A0GUNDY2eq0Qkpj53XcfZGXBD34Qm/SC6Ep5GOgfaDMQgJmE17s3/OhHZoZ2DIhnHp52mpkk/fHH4b/G9jKGxHb0A0GUBCas2EpM/D79FN54A773PcjLiz69FnSlPCwvN2vyDBwY4qCsLBNYP/oIpsVmIF088/CEEyA9PbJ+AtvLGBLb0Q8EPqFpajK/YA87zHR0+rRJQ0M7/QPB3HwzHH20yVNnZmtnISPDBAO/n6Dr4AeCKBkY8qef90Tt9+yzZsnJX//aTCJzga6Sh+Xlpn/grLPCODg1FX73OzMS6/HHo9ED4p+Hp51m1lNyVmNoF9vLGBLb0Q8EUZJ/yBhBu4jKb9cuuPtuM4voiiti5tSSrpKHr71mWn3OPDPMhM84A845B372M4hyWGC88/C008zfd98N73jbyxgS29EPBFESWMTKVqLyu+8+s9/A//xP1CuMhqIr5GFDg+lGOfdc03QSNo88YpqGbrut44LEPw/HjTMb2r/8cnjH217GkNiOfiDwaZ2ZM81+A9/5DowZ47WN9cyYAdu2wcUXR/jCYcPMnILXXjORpJOQlASXX25qBFu3em3jEy1+IIiSrKwsrxVC0iG/mhq49looLISHHoq9VAu6Qh6+9ppZlC2s/oGWfP/7MHas2fe5g7vDe5GHV15pJtC99lr7x9pexpDYjqIxGsccL0pKSnSuv1+eu3znO2ZT+hkz4MQTvbaxnoYGs+LGySfDK690MJHPPzc7v1x2GTz/fCz1XOWYY8zySc62ED4WIyLzVLXVjQn8GkGU2L7hdcR+77wDTz1lFpWLUxDo7Hk4c6ZpHom4WSiYMWPM0h1/+YsZqRUhXuXhFVeY1UidvW3axPYyhsR29ANBlNRZPgY8Ir+VK80nu6gIHnzQPakWdPY8fP556N4dzj47yhPdey+ccoppIlqwIKKXepWHl11m/r70UujjbC9jSGxHPxD4GPbtgwsuMP//9a8RDn1JXDZsMEswXXutCQZRkZwML75oFqW76CJwthm0mcJCOP54eO45M/fQp5PS1tZltt5s26rywIEDXiuEJCy/xkbVK65QFVH95z/dl2pBZ87DH/zAbN+4YkUMTzhjhmpysuoZZ6jW14f1Ei/z8PnnzS6cf/tb28fYXsaqXd8Rj7aqTAiWLVvmtUJI2vVThTvvNL9Ef/azGLRvRE5nzcM9e+APf4ALL4QhQ2J4wokTTcLvvmv2fghjQIeXeXjZZXDEEebyaUvV9jKGxHb0A0GUbAl3jr1HtOv30ENmqYNbb4V77omPVAs6ax7+7//C7t1m9GfMueEG+OlPTZvLD3/YbjDwMg9TUsylU1Fhxhq0hu1lDInt6AeCRObXvzZLIV91FTz6qKuzh7sa9fUmyyZONKM+XeHHPzaL0z38sIk2Fg/1vvpqGDQIHnjAak2ftmirzcjWm219BFu3bvVaISSt+jU2qn7ve6Zh95JLwm6HdovOmIc/+YnJvnffdfnkjY2qt9xiTnb99aoNDWE7xps//MFovv32oc/Z4NceXd0Rv4/APWwfcnaI3969pgbwyCOmOeill8xKmB7S2fJwwQIzuvbKK+H0010+eVKSWZ303nvhmWfg/PNbnX1sQx5ec43Zq/mb3zTrFQZjg197JLKjHwiiZPny5V4rhOQgv0WL4NhjzUphDz0Ejz1mvmg8pjPlYUMDXHed2bv3scfiJCBiemKfegref9+s+FZR0aajV6Snm/lwGzaYqRDB2ODXHons6P23gI/7NDSYFUTHjzcro733numA9PsEIuYXv4B588x6fC5s1haab33L7A/Z0AClpaZBvr4+zhKhmTDBrKH30ktmIJpP58APBFFSUFDgtUJIjty2zdQCbrvN9Gx+/vl/F5O3BNvzMOD31FPmS+7KK818L0+YMMHUBr7+dSMzdix89JFVeXj33WaS2Te/+d81iGzya4tEdvQDQZT069fPa4XW+fe/4bzzyL/4Yti8GV591YztO+wwr80Owdo8dOjXrx9PP23W4jv/fLMUkKeVqT59TPPeP/9p+nxOPZVB111nzcpvKSnmchs40PShvPee/WUMie3oB4IosWol1H37zLjzSZPML8dPPmHVddfBkiVmRTRLm4KsysMW1NbC9dfv5KabzM5jr77qed/6fzn7bFO2jz5K0xdfmEUCS0rg6afNUuIeMnCgWYxv2DA47zz46U/XW78Ehc3XYQC3HP1A0NnZts00xl52GfTvD5Mnm966X/8aVq9mzdVXu7bXcFdGFaZPNy0vr75awE03mX1j0tO9NmtBt25w++18+sILpuNi/3648Ubo29c0Hz33nLkePKBvX5OHxx8Pv/nNcCZNgi++8ETFpx1S3ExcRM4EHgOSgadV9Zctnk8HngPGAduBS1V1tZtOsSYnJyd+J9u924z8WbDAtBPPmgWLF5vn+vWDSy4xM3smTmz+9R9Xvw5ik+PGjTBtmukPWLDAbMf41FPL+da3hnqtFpKsfv3Mrjjf/jZ88onZGOGNN+DNN80Bw4bBCSeYyDZ2LBx1lOntdrmWmJsLH34IDzywmieeGExRkVlg9dpr4atfNXs824JN12FbuOXo2sY0IpIMLAO+AlQBnwGXq2pl0DHfBkar6s0ichnwdVW9NFS6nX5jGlUz6qOuzrQ77Ntnbnv2mNUmd+0yv/K3bzcbmm/YAOvWwYoVB48f79nT/NQqKzOfrPHjrRgKajsHDphm9e3bzR4CGzbA8uWwdKn5/ly61Bw3ZozpE7jiihisKuoVTU3wn/9Aebm5ffqpubYC9OxpFgkqKDBtOf36mf6HvDyz20yPHuabOjPT3Lp1M1Wi1NQOBZDt202lZcoUs39BUpJZ8fy440ycGjLEaOTlmVtmpn9Jx5JQG9O4GQhKgftV9Qzn/t0AqvpQ0DHvOsfMFpEUYBPQR0NIdTQQ/Pnaj/ntix3pKA2RPwqqTUjwh0KDXqNBf7X5BeGfOinJfOhSUiAtDVLTzAexm/NhpP0P4759e+nePTP8c3pAa47tZZO2lsVBt6Yms41iQ4P58q+rM60mbY227NvXNK+ffDKceqoJBIFinTVrFmVlZR1/g3EgLEdVE/k+/xyWLTMRcOVKWL8eqqoOnQUWitRUc02mpJhbcrK5JSX99ybS/Le2ro6Mbt1AhCaS+Li2hA9rS/mkdiz/3j+aPU2tVw26yX66SR1pcoBUaSCZJpKlkSSUJGlCUCToMxr4v61PhkjbF1ZTUxNJlkee68/7nO+91rEha6ECgZtNQwOBdUH3q4AJbR2jqg0ishvIA7YFHyQiNwE3AQwYMIDy8nIAhgwZQnZ2NvPnzwcgLy+PkSNHMnPmTABSUlIoKyujoqKCmgObOCKnkdS0NJqaGmlsaDTHpKYgCAcOHAAgKTmZlJQU6uvrAicnPS2d+vp6mpxvnfT0NBobG2lobERVSUtLA4QDDQ0AJKekkJKayv66OhBBkpLo1j2D2ro6mhRISqJ7VhZ1DQ0caGpCk5PIyM6hKTmZvfX1aGoq6dnZZGRlsWPH9ub3kpvbi+3bt9PUVAtA79692bOnhrq6/QDk5PSgqamJmpo9AGRkdGffvr2I7HXSSCU3N5dt27ah2uSk0Yfq6urm99ujR08aGhrYu9d0NnbvnklaWhq7du0EIDU1jZ49e7J161ZMdBP69OnDrl27OHDAfMv27JlLfX09+/aZ82ZmZpGSksLu3bsASEtLJycnh23bzK7nDQ0NHHZYJjt37qShwZRDbm4v6ur2s2/fPgCys7NISkpm9+7dAHTrlk5OTjZbt25zvm+S6NOnNzt3bqehoYGkJKVfv97s37+X+voaUlOVfv16kp0N1dWbyMlpYPDgTIqK+rFjxxwyMxvJyMhgwoQJzJkzhxkzTB6XlpZSU1PTfM2NGDGCxsZGljpVh4EDB5Kfn8+cOXMAs6dsSUkJs2fPbp4FWlZWxrJly5oXDBs1ahR1dXXNk4MKCgro169fc0dgTk4OxcXFzJo1iwbnmpo4cSKLFi1i+3ZzPRQVFbFnzx5WrlwJQH19PdXV1VQ4E81yc3MpKipixowZqCoiwqRJk5i/bRs7MzNh7FiKr7+eHTt2sNrZXmxIfj45Bw6wfPZsUvbuJTcpicN79WLZf/5D8v79pDQ2UjhgABtXr6Z+3z6SDhygX58+1FZXs3f3bmhqokdWFslJSezasQOamujWrRs5mZns2LiRlORkkpOS6N27N8ds38LRDX/lFv5Kbm4v1u9OYfHOXmyu68X+lL7sPJDNzr1Q25TOAcmE5G5U1zbQpMk0STKpad3YX3eARqcDOj09jQMNjTQ2NgJCSkqqc22Z6yk5OZmkpBTqnV8CkiSkpaZRX19P8O/OpOQkmpxEU1NTUdXmMkhOTiY5OfmQNOrq65p/+6Wnp3PgwAGamtpIIyWZpKQkDtQ73zdJSaSmph40Y/iQNNJSaWpqorGhkeSM/axduzbs771qZ0+LkpJWv///S1trT0R7Ay7C9AsE7l8NPNHimIVAftD9FUDvUOnattbQ9OnTvVYIie1+qvY72u6nar+j7X6qXd+REGsNJUzTkFvYXp203Q/sd7TdD+x3tN0Pur6jV5vXfwYMFZFCEUkDLgOmtThmGjDZ+f8i4KNQQcBGFi1a5LVCSGz3A/sdbfcD+x1t94PEdnStj0BNm/8twLuY4aN/VtVFIvIApooyDXgGeF5EvgR2YIJFpyLQZmsrtvuB/Y62+4H9jrb7QWI7ujqPQFXfBt5u8dh9Qf/vBy5208HHx8fHJzR2N4h1AoqKirxWCIntfmC/o+1+YL+j7X6Q2I5+IIiSPXv2eK0QEtv9wH5H2/3Afkfb/SCxHf1AECWBcdy2Yrsf2O9oux/Y72i7HyS2ox8IfHx8fBIc1+YRuIWIbAXWeO0RRG9azIS2DNv9wH5H2/3Afkfb/aDrOw5S1T6tPdHpAoFtiMjctiZp2IDtfmC/o+1+YL+j7X6Q2I5+05CPj49PguMHAh8fH58Exw8E0fMnrwXawXY/sN/Rdj+w39F2P0hgR7+PwMfHxyfB8WsEPj4+PgmOHwh8fHx8Ehw/EMQIEblDRFREenvt0hIR+bWILBGRBSLyNxHp6bUTgIicKSJLReRLEfmh1z4tEZECEZkuIpUiskhEbvfaqTVEJFlE/iMib3nt0hoi0lNEXneuwcXOXiVWISL/zynjhSLykoh089jnzyKyRUQWBj3WS0TeF5Hlzt/cWJ3PDwQxQEQKgNOBtV67tMH7wChVHQ0sA+722AcRSQaeBM4CRgCXi8gIb60OoQG4Q1VHAMcB37HQEeB2YLHXEiF4DPg/VT0KKMIyVxEZCNwGlKjqKMyy+V4viT8FOLPFYz8EPlTVocCHzv2Y4AeC2PA74C5C7nTvHar6nqo2OHc/BfK99HE4FvhSVVeqaj3wMvBVj50OQlU3qmqF8/8ezBfYQG+tDkZE8oFzgKe9dmkNEekBTMTsPYKq1qvqLk+lWicFyHB2SuwObPBSRlVnYvZoCearwFTn/6nA12J1Pj8QRImIfBVYr6rzvXYJk+uAd7yWwHyhrgu6X4VlX7LBiMhgYCwwx2OVljyK+RHS5LFHWxQCW4Fnnearp0Uk02upYFR1PfAbTI1+I7BbVd/z1qpV+qnqRuf/TUC/WCXsB4IwEJEPnLbDlrevAvcA97WXhseOgWN+hGnueME7086HiGQBfwW+q6rVXvsEEJFzgS2qOs9rlxCkAMXA71V1LLCXGDZpxAKnrf2rmKA1AMgUkau8tQqNs6VvzFogXN2hrKugqqe19riIHIO5eOaLCJgmlwoROVZVN8VRsU3HACJyDXAucKol+0KvBwqC7uc7j1mFiKRigsALqvqG1z4tOAE4X0TOBroBOSLyF1W16UusCqhS1UBN6nUsCwTAacAqVd0KICJvAMcDf/HU6lA2i8hhqrpRRA4DtsQqYb9GEAWq+oWq9lXVwao6GHPRF8c7CLSHiJyJaT44X1X3ee3j8BkwVEQKRSQN0zk3zWOngxAT3Z8BFqvqI177tERV71bVfOfauwz4yLIggPNZWCciw52HTgUqPVRqjbXAcSLS3SnzU7GsQ9thGjDZ+X8y8PdYJezXCBKDJ4B04H2n5vKpqt7spZCqNojILcC7mFEaf1bVRV46tcIJwNXAFyLyufPYPc5e3D7hcyvwghPwVwLXeuxzEKo6R0ReByowTaf/wePlJkTkJeAkoLeIVAE/AX4JvCoi12OW4r8kZuezo5XAx8fHx8cr/KYhHx8fnwTHDwQ+Pj4+CY4fCHx8fHwSHD8Q+Pj4+CQ4fiDw8fHxSXD8QODj4+OT4PiBwMfHxyfB+f8ktn32JgqOBQAAAABJRU5ErkJggg==\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "x = np.linspace(-5, 10, 120)\n", "\n", "state_1_y = [gaussian(i, state1.mean, state1.std_dev) for i in x]\n", "state_2_y = [gaussian(i, state2.mean, state2.std_dev) for i in x]\n", "\n", "plt.plot(x, state_1_y, c='r', label=\"State 1\")\n", "plt.plot(x, state_2_y, c='b', label=\"State 2\")\n", "\n", "plt.legend()\n", "plt.title(\"State Probability Density Functions\")\n", "\n", "plt.ylabel(\"Probability Density\")\n", "plt.grid(linestyle=\"--\")\n", "\n", "plt.show()" ] }, { "source": [ "Output Probability Densities (2)\n", "==========" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "3.8 -> State 1: 0.02185157424475792, State 2: 0.5471239427774459\n4.2 -> State 1: 0.009496655019831194, State 2: 0.5471239427774459\n3.4 -> State 1: 0.04499247209432338, State 2: 0.3947074079064296\n-0.4 -> State 1: 0.16833223796171576, State 2: 1.500652790137751e-09\n1.9 -> State 1: 0.2509478601290037, State 2: 0.006331212017054291\n3.0 -> State 1: 0.08289761566062391, State 2: 0.2054255182126689\n1.6 -> State 1: 0.2933877723035829, State 2: 0.001596702666402633\n1.9 -> State 1: 0.2509478601290037, State 2: 0.006331212017054291\n5.0 -> State 1: 0.0012852324969092556, State 2: 0.2054255182126689\n" ] } ], "source": [ "for obs in observations:\n", " print(f'{obs} -> State 1: {gaussian(obs, state1.mean, state1.std_dev)}, State 2: {gaussian(obs, state2.mean, state2.std_dev)}')" ] }, { "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 2020-12-23T18:22:05.495074\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", "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "x = np.linspace(-5, 10, 120)\n", "\n", "state_1_y = [gaussian(i, state1.mean, state1.std_dev) for i in x]\n", "state_2_y = [gaussian(i, state2.mean, state2.std_dev) for i in x]\n", "\n", "plt.plot(x, state_1_y, c='r', label=\"State 1\")\n", "plt.plot(x, state_2_y, c='b', label=\"State 2\")\n", "\n", "plt.legend()\n", "plt.title(\"State Probability Density Functions\")\n", "\n", "plt.ylabel(\"Probability Density\")\n", "plt.grid(linestyle=\"--\")\n", "\n", "state1_pd = [gaussian(i, state1.mean, state1.std_dev) for i in observations]\n", "state2_pd = [gaussian(i, state2.mean, state2.std_dev) for i in observations]\n", "\n", "#############################################\n", "# Observation Marks \n", "#############################################\n", "\n", "config = {\n", " \"s\": 65,\n", " \"marker\": 'x'\n", "}\n", "\n", "plt.scatter(observations, state1_pd, color=(0.5, 0, 0), **config)\n", "plt.scatter(observations, state2_pd, color=(0, 0, 0.5), **config)\n", "\n", "plt.show()" ] }, { "source": [ "# Forward Procedure (3)" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "[5.63267096e-10 6.02373446e-09]\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "1.9197737567283167e-10" ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "model = MarkovModel(states=[state1, state2], observations=observations, state_transitions=state_transition)\n", "model.populate_forward()\n", "\n", "print(model.forward[:, -1])\n", "\n", "# model.forward\n", "model.p_observations_forward\n" ] }, { "source": [ "# Backward Procedure (4)" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "7 5.0\n6 1.9\n5 1.6\n4 3.0\n3 1.9\n2 -0.4\n1 3.4\n0 4.2\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "2.0542341126222686e-10" ] }, "metadata": {}, "execution_count": 6 } ], "source": [ "model = MarkovModel(states=[state1, state2], observations=observations, state_transitions=state_transition)\n", "model.populate_backward()\n", "\n", "# model.backward\n", "model.p_observations_backward\n" ] }, { "source": [ "# Compare Forward/Backward Final" ], "cell_type": "markdown", "metadata": {} }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "7 5.0\n6 1.9\n5 1.6\n4 3.0\n3 1.9\n2 -0.4\n1 3.4\n0 4.2\nforward: 1.9197737567283167e-10\nbackward: 2.0542341126222686e-10\n" ] } ], "source": [ "model = MarkovModel(states=[state1, state2], observations=observations, state_transitions=state_transition)\n", "model.populate_forward()\n", "model.populate_backward()\n", "\n", "print(\"forward:\", model.p_observations_forward)\n", "print(\"backward:\", model.p_observations_backward)\n" ] } ] }