{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Fisherova diskriminační funkce\n", "-------------\n", "\n", "[lineární testovací statistika](http://en.wikipedia.org/wiki/Linear_discriminant_analysis) je lineární kombinace $t(X)=a^T X$, kde $X=[x_j]$ jsou data ($m$-rozměrná) se střední hodnotou \n", "$\\mu$ ($m$-rozměrný vektor) a varianční maticí $V_{ij} = (X_i-\\mu_i)^T (X_j-\\mu_j)$.\n", "\n", "Pak odhad separace 2 skupin dat $x_0$ a $x_1$, pro které máme projektované střední hodnoty $\\tau_0=\\bar{t(x_0)}$ a $\\tau_1=\\bar{t(x_1)}$ a podobně rozptyly $\\Sigma=a^T V a$\n", " \n", "$$J=\\frac{(\\tau_0-\\tau_1)^2}{\\Sigma_0+\\Sigma_1}$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$(\\tau_0-\\tau_1)^2=a^T B a$, kde $B_{ij}=(\\mu_{0i}-\\mu_{1i})(\\mu_{0j}-\\mu_{1j})$\n", "\n", "maximalizace v $a$: $a \\propto (\\sum V_k)^{-1} (\\mu_0-\\mu_1)$ - \n", "stačí znát $\\mu_k$, $V_{k}$, nemusíme parametrizovat celé rozdělení \n", "\n", "Podle [TAMU](http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf)\n", "jde o maximalizaci poměru rozptylu mezi třídami a ve třídách samotných\n", "\n", "$$J(a)=\\frac{a^T B a}{a^T W a}$$ \n", "\n", "kde $W=V_0 + V_1$. Vektoru $W^{-1} (\\mu_0-\\mu_1)$ odpovídá hodnota $J=(\\mu_0-\\mu_1)^T W^{-1} (\\mu_0-\\mu_1)$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Analýza více skupin vede k analogickému tvaru s $B_{ij}=\\sum_k\\ (\\mu_{ki}-\\nu_i)(\\mu_{kj}-\\nu_j)$, kde $\\nu=\\bar{x}$ je těžiště všech bodů. Hlednání maxima přes $a$ je pak zobecněný problém vlastních hodnot\n", "\n", "$$(B - \\lambda W)\\ a=0$$\n", "optimální $a$ je pak vektor odpovídající největšímu vlastnímu číslu (které odpovídá hodnotě $J(a)$)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x1,y1=10,4\n", "x2,y2=5,8\n", "def ellipse(cn,rd,ang=0,color='k',project=''):\n", " from math import pi\n", " x=rd[0]*cos(r_[:2*pi:20j])\n", " y=rd[1]*sin(r_[:2*pi:20j])\n", " x,y=cos(ang)*x-sin(ang)*y,cos(ang)*y+sin(ang)*x\n", " x+=cn[0]\n", " y+=cn[1]\n", " plot(x,y,color=color)\n", " if 'x' in project:\n", " plot(x,zeros(x.shape),color=color,lw=3)\n", " if 'y' in project:\n", " plot(zeros(y.shape),y,color=color,lw=3)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAELCAYAAAA4HCbKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XlcVFX/B/DPqLjvS1iggSgByiYujxqKGuASZkrlkrtZ\nlntm+XsqyVemZWZottiTS9bjbm6omQskKpmKG+KCOQoqLrEJiGzn98d5GCXQAWa5M3M/79drXjDX\nYe6XufKZM+eee45GCCFAREQ2rZLSBRARkekx7ImIVIBhT0SkAgx7IiIVYNgTEakAw56ISAVMFvaj\nR4+Gvb09PD09ddveeecduLu7w9vbGwMGDEB6erqpdk9ERA8xWdiPGjUKu3btKrYtKCgIcXFxOHny\nJFxdXTF37lxT7Z6IiB5isrD39/dHgwYNim0LDAxEpUpylx07dkRSUpKpdk9ERA+potSOly1bhsGD\nB5f6bxqNxszVEBFZv8dNiKDICdo5c+agatWqGDJkyCMfI4Qw6s0Uz2ns26xZsxSvgXWyTtZpnTXq\nY/aW/YoVK7Bjxw7s3bvX3LsmIlIts4b9rl27MH/+fERFRaF69erm3DURkaqZrBtn8ODB6Ny5M86f\nP49mzZph2bJlmDhxIjIzMxEYGAhfX1+8+eabptq9VQoICFC6hDJhncbFOo3LGupUokaNKEtnj5lp\nNJoy9UEp/ZxERJZCX8bxCloiIhVg2BMRqQDDnohIBRj2REQqwLAnIlIBhj0RkQow7ImIVIBhT0Sk\nAgx7IiIVYNgTEakAw56ISAUY9kREKsCwJyJSAYY9EZEKMOyJiFSAYU9EpAIMeyIiFWDYExGpAMOe\niEgFGPZERCrAsCciUgGGPRGRCjDsiYhUgGFPRKQCDHsiIhUwWdiPHj0a9vb28PT01G1LSUlBYGAg\nXF1dERQUhLS0NFPtnoiIHmKysB81ahR27dpVbNu8efMQGBiICxcuoGfPnpg3b56pdk9ERA/RCCGE\nqZ5cq9UiJCQEp0+fBgC4ubkhKioK9vb2SE5ORkBAAM6dO1eyKI0Gxi7LFM9JRGQp9GVcFTPWgps3\nb8Le3h4AYG9vj5s3bz7ysWFhYbrvAwICEBAQYOLqiIisR2RkJCIjI8v8eLO27Bs0aIDU1FTdvzds\n2BApKSkli2LLnoioXPRlnFlH4xR13wDAjRs38MQTT5hz90REqmXWsO/Xrx9WrlwJAFi5ciX69+9v\nzt0TEamWybpxBg8ejKioKNy5cwf29vaYPXs2XnjhBbz88su4evUqnJycsG7dOtSvX79kUezGISIq\nF30ZZ9I++4pi2BMRlY9F9dkTEZEyGPZERCrAsCciUgGGPRGRCqgi7J96CgAEHByUroSISBmqGI2j\n0Tz43vJ+W1KSEEB2trxlZZW8lba9cmXAzQ1o0wZo1QqoWlXp34KIQy//93wPvre835ZM6e5d4OxZ\n4MwZIC5O3hIS5PasLODePaB6daBmTaBWrQe3f95/eFteHhAfL5/r6lWgRQugdWt5a9NGfm3ZEqhi\n1pmnSO0Y9mDYq8G9ezKAi0K96OutW4C7e/EgdnUF6tZ9EOCVDOjMzMkBzp8v/mYSFwdcuyZb/T4+\nwEcfAc7OxvtdiUrDsAfD3pbcvy/D9eFAj4sDkpJkuBYFelG4OzvLbhdzy86Wbz67dgGLFgHLlwN9\n+pi/DlIPhj0Y9tbsyhXgt9+AvXuBEycArVYGeGndJnZ2Sldbuuho4JVXgDFjgFmzlHnzIdvHsAfD\n3ppkZgKRkcDu3fL2999AYKC8tWsnu2CqVVO6yvJLTgYGDZK1//e/QKNGSldEtoZhD4a9JSsoAGJj\nH4T7sWNAhw5AUJAMeB8fw/rULUl+PjBzJvD558CSJcCbbypdEdkShj0Y9pYmMVF2zezeDezZA9jb\ny3APCgK6dpUnTm2Zv7/s2uH/RTImi1qWkNQpKwuIinrQer91S7bag4NlK9fRUekKzcvLC3jpJaWr\nILVh2JNJnD8P/PKLDPc//5T97UFBwKpVgK+v7XTNVERCAtC3r9JVkNow7MloMjKAdeuAZcuAv/6S\nrde33wa6dQNq11a6OsuRkCBHDxGZE/vsySCFhbKLZvlyYOtWoHt3YPRooFcvyx0KqaTcXKBOHXkF\nL6dZIGNinz2ZxJUrwIoVwMqVstU+apTsf+ca8o935Qrg4MCgJ/Nj2FOZZWfLfvjly+UFToMGAevX\nA23bFv/0RKUTApg/H/jXv5SuhNRI72my6OjoEtsOHjxokmLI8ggBxMQAr78uR82sWgWMGyenJ/jq\nK8DPj0FfFkIAU6YAp08D332ndDWkRnr77H19fREbG6t3m1GLYp+94pKTZbAvXy5neRw1Chg+XH3D\nJI1BCHkxVdG0D/XrK10R2aIK99kfPnwYhw4dwu3bt/HFF1/onuTu3bsoLCw0fqWkOCGAnTuBb76R\nF/28+CKwdCnQpQtb74aYPRuIiJDTQDDoSSmPDPvc3FzcvXsXBQUFuHv3rm573bp1sWHDBrMUR+az\nbx/w73/LUSLTpwOrV3O4pDF89pl8LaOiOB8OKUtvN86VK1fw9NNPAwAKCgqQmZmJevXqmbYoduOY\nzeHDwPvvy0U4PvpIzs7IWRmNY9EiIDwc+P13cElMMjl9uan3BO3MmTORkZGBrKwseHp6wsPDA599\n9plRiyTzi40Fnn9ejqgZMkSu5jRkCIPeWJYuBRYskJ+YGPRkCfSGfVxcHOrWrYvNmzejd+/e0Gq1\nWLVqlUE7nTt3Llq3bg1PT08MGTIE9+/fN+j5qOzi4+WVrX36yLlpLlyQ86zzAijjyMsD5s2T/fR7\n9wL/+1BMpDi9YZ+fn4+8vDxs3rwZISEhsLOzg8aAs3VarRbff/89jh8/jtOnT6OgoABr1qyp8PNR\n2fz1FzBihJy6oF07ecn+xInKzw0fERGB4OBgBAQEIDg4GBEREcoWZIDDh+VQ1H37ZNcNp0QgS6L3\noqrXX38dTk5O8PLyQteuXaHVag3qs69bty7s7OyQnZ2NypUrIzs7Gw78nGsySUnAxx/Li58mTgQu\nXgRMfMqlzCIiIjB58mRcunRJt63o+75WNFNYairw3nvAtm3AF1/I8x4cvUQWR5RTYWGhyM3NLe+P\nFfPdd9+J2rVriyZNmohXX321xL9XoKzHkqdl5U0tbt4UYupUIRo2FGLGDCHu3FG6opKCgoIEgBK3\n4OBgpUsrk8JCIX76SYimTYUYP16I1FSlKyI105ebeuMvNTVVTJkyRbRt21a0bdtWTJs2TaSlpVW4\noISEBOHu7i7u3Lkj8vLyRP/+/cVPP/1UouhZs2bpbvv376/w/uTzPXwrHiyzZs0q9WdmzZpVahBZ\n+uMLCoSYN0+IGjWyBLBIAE0tuv7Sbt26dSv1OSzJ+fNC9OwphLe3EDExSldDarR///5iOakv7PUO\nvRwwYAA8PT0xYsQICCGwatUqnDp1Cps2bSrvhwgAwNq1a/Hbb7/hP//5DwBg1apViImJwZIlS3SP\n4dDLiklJAYYNA9LTgZ9+ApyclK7o8YKDg7F79+5St+/atUuBivTLyQE+/RRYvBj4v/8DJk0CqnCG\nKbIABg+9vHTpEj766CO0aNECLi4uCAsLK9bHWl5ubm6IiYnBvXv3IITAnj174OHhUeHnI+noUXly\n0M0N2L/f8oMeACZNmgQXF5di21xcXDBx4kSFKnq8vXsBb285Cdzx48C0aQx6sh56w75GjRo4cOCA\n7n50dDRq1qxZ4R16e3tj+PDhaNeuHby8vAAA48aNq/DzqZ0QcmKt3r3ljIoLFljPMMq+ffsiPDwc\nwcHBAGSLPjw83OJOzt68Cbz6qpynf/58OfNn8+ZKV0VUPnq7cU6cOIHhw4cjPT0dANCgQQOsXLkS\n3t7epiuK3ThlkpUFjB8vL5DauBFwdVW6oooz9jE3hhs3gCVL5JvpyJHArFmcQoIsl8GLl/j4+ODU\nqVPIyMgAIIdOkvIuXAAGDpTrucbEALVqKV2RYWbNmqV0CTonTgALF8qVt4YMAQ4etO43UiKgDC37\nnJwcbNy4EVqtFgUFBRBCQKPR4MMPPzRdUWzZP9bGjcAbb8jx8+PGcUy3MRQWAtu3y5C/eBGYMEG+\ntg0bKl0ZUdkY3LJ/4YUXUL9+ffj5+aF69epGLY7KJy8PePdd2We8c6e8EpYMk5kpl1b88ks5/fDU\nqXI6CWs570FUVnrD/tq1a/j111/NUQvpMXSoDKdjx9jiNFRiolxp64cfgK5d5SItnLefbJne0Tid\nO3fGqVOnzFELPcauXXK43y+/MOgNceQIMHiwHEJ5/768v2kT8OyzDHqybXr77N3d3ZGQkABnZ2dU\n+9+sWRqNxqRvAOyzLy43F/D0lMMqn39e6WqsT0EBsHmz7I9PTAQmT5YzfVrKHEFExmBwn/3OnTuN\nWhCV35dfAq1a2XbQh4WFISwszKjPee0asHatvNr1ySdlf/yLL/JCKFKnR7bsU1JSHvuDDU3Yl8CW\n/QPXrskuh5gY254y11jHXKuVo5U2bgTOnQNCQuS1CP/6l+E1ElkyfX9Djwx7Jyenx85bf/nyZcOr\ne1RRDHudoUPlAhiffKJ0JaZlyDE/f/5BwCcmAi+8IK9B6NEDqFrVyIUSWagKh72SGPbSgQPyop74\neNu/crM8x1wI4MwZYMMGGfApKcCAATLg/f3ZTUPqZHCffWFhIX7++WdcvnwZH374Ia5evYrk5GR0\n6NDBqIVSSd98I2dVtPWgLwsh5JDTohZ8bq4M96VLZRdNJb3jyojUTW/L/o033kClSpWwb98+nDt3\nDikpKQgKCsLRo0dNVxRb9gCANWtk4EdFKV2J6ZV2zAsL5VJ/GzfK4ZFVqwKhoTLk27blUEmihxnc\nsv/jjz8QGxsLX19fAPLEbF5envEqpEcaOBCYMUO2aP38lK7GtIrmxsnJAQ4dkgH/yy9Ao0byddi2\nDWjThgFPVFF6w75q1aooKCjQ3b99+zYq8TOzWdjZyXVjFy6Ui5HYGiHkCdXDh4G0tDB07Cj74tu0\nAfr3ByIjOQEZkbHo7cb56aefsG7dOhw7dgwjRozAhg0b8PHHH+Pll182XVHsxtFJSwNatABOnwas\nfV32nBz5KeXwYTmU9PBhID8f6NTpwa1dO8CA5RKIVMsoo3Hi4+Oxd+9eAEDPnj3h7u5uvApLK4ph\nX8ykScBffwEffAB06GAdXRkPt9qLbmfOyJW0Hg53Z2fr+H2ILJ3BYT9s2DCsWrVK7zZjYtgXl54u\nJ+1auVL+LsOHy5WTnn5a6coeyMmRc/c8HO55eSVb7dY+7z6RpTI47H19fREbG6u7n5+fDy8vL5w9\ne9Z4Vf6zKIZ9qYSQE3etXAmsWwd4ecngHzgQqFPHtPvOzASSkmRr/Z9fExOBy5eBZ54pHu4tWrDV\nTmQuFQ77Tz75BHPnzsW9e/dQo0YN3XY7OzuMGzcO8+bNM361RUUx7PW6fx+IiAB+/FGeyOzdG3Bx\nkWPya9eWLejHfV+r1oOLj4qC/FFhnpQk9+foCDRrVvrXli0Na7WbYm4cIjUxuGX/3nvvmTTYS8Ow\nL5/bt+WsjsnJMrizsuRXfd9XrSpH/OTnPz7IHR3ltMqmbKVb4hq0RNbEKCdoU1NTcfHiReTk5Oi2\nde3a1TgVllaUkf/wHRyA69eBp56SE4uRfNPLyZFXotatq3x3C8OeyDAGh/3333+PRYsWITExEb6+\nvoiJiUGnTp2wb98+oxerK8oEf/gME8vG40NkGH1/Q3qvjgoPD8eRI0fg5OSE/fv3IzY2FvW46gMR\nkVXRG/bVq1fXnaDNycmBm5sbzp8/b/LCiIjIePROl+Do6IjU1FT0798fgYGBaNCgAZycnMxQGqlJ\n0dw4RGQa5ZrPPjIyEhkZGejVqxeqmnBVCPbZExGVj8F99hMnTsShQ4cAAAEBAejXr5/BQZ+WlobQ\n0FC4u7vDw8MDMTExBj0fERE9nt6w9/Pzw8cff4wWLVpg+vTpRpnHfvLkyejTpw/i4+Nx6tQpk8+1\nQ0SkdmXuxvn777+xadMmrF69GlevXkVCQkKFdpieng5fX1/89ddfjy6K3ThEROVi8OIlRRISEnDu\n3DlcuXIFHh4eFS7o8uXLaNKkCUaNGoWTJ0/Cz88P4eHhqPmPeW0fvnQ+ICAAAQEBFd4nEZGtiYyM\nRGRkZJkfr7dlP2PGDPzyyy9o0aIFBg0ahBdffBH169evcIFHjx5Fp06dcOjQIbRv3x5TpkxB3bp1\nMXv27AdFsWWvOpwbh8gwBl9B++233yI0NBSNGzc2SkHJycno1KkTLl++DACIjo7GvHnzsH379jIX\nXREMe8vG40NkGIO7cd544w1s2bIFv//+OwDZpRISElLhgpo2bYpmzZrhwoULcHV1xZ49e9C6desK\nPx8REelXplkv//zzTwwdOhRCCKxZswbt2rXD3LlzK7zTkydPYuzYscjNzYWLiwuWL19ebAoGtuzV\nh8eHyDAGd+N4enrixIkTqFy5MgCgoKAAPj4+OH36tHErfbgohr3q8PgQGcbgi6o0Gg3S0tJ099PS\n0qBRej5cIiIqF7199jNnzkTbtm3RvXt3CCEQFRVl9sVMyPZxbhwi03psN05hYSHWr18Pf39//Pnn\nn9BoNGjfvj2efPJJ0xbFbhwionIxuM/ez88Px44dM3phj8OwJyIqH4P77AMDA/H5558jMTERKSkp\nuptVeeopCECuT0hEpEJ6W/ZOTk6lnpAtuijKJEUZuxVu6yuOE9kKIeRC0devA1lZD27Z2WW/n50N\nNGwItG4NtGkjv7ZuDdjbK7/YsgkZZcFxc2PYE9k4IYBbt4AzZ4C4uAdf4+KA6tWBZs2AWrWK32rW\n1L+tZk15u3XrwfMVPT9QPPyLbk2aKPtaGIlRwv7MmTM4e/YscnJydNuGDx9unApLK4phrzqcG8eG\n/f138UAv+iqEDN9/BrCRpmYpRgjg5s2SbwBxcYCzM7B2LeDqavz9mpHBYR8WFoaoqCjExcWhb9++\n2LlzJ5599lls2LDB6MXqimLYqw5PoNuA9PSSQXrmDHDvXvFAL/reErpVhACWLgU++AD47jvgxReV\nrccABod9mzZtcPLkSbRt2xYnT57EzZs3MXToUOzZs8foxeqKYtirDsPeCt27B0RHA7/9BuzeDSQk\nAB4exQO9TRs5MELpUNfnzz+B0FBg0CBgzhygSplnf7cYBk+EVqNGDVSuXBlVqlRBeno6nnjiCSQm\nJhq1SCKyAkLIlvru3fJ26BDg5QUEBQHffAO0b2+VIQlA1n7sGDBkCBAYCKxZIz952BC9R6Z9+/ZI\nTU3Fa6+9hnbt2qFWrVro3LmzOWojIqXdvAns2SPD/bff5MnPoCBg/Hhg3TrgoQkMrV7jxsDOncBH\nHwFNmwIbNgADBypdldGUazSOVqtFRkYGvLy8TFkTu3FUiN04FiInBzh48EHrXasFuneXAR8YCLi4\nKF2heWg0QGws4OOjdCVlZnA3jhACmzZtQnR0NDQaDfz9/U0e9qQ+nBtHIULIE6lF4X7wIODpKcN9\nyRKgQwfr7ZqpqNxcoGpVef7Bhuht2Y8fPx6XLl3C4MGDIYTAunXr0KJFC3z99demK4oteyLTEUKG\n+sqVQEQEUK0aEBwsA75HD8CAZUdtwsWL8vX46y+lKykXg1v2+/fvx9mzZ1GpkpxZYeTIkQYtOE5E\nCklKAn78EVixQrbWR40C3n1Xds1Y+mgZc0pIAFq2VLoKo9Mb9i1btsTVq1fh5OQEALh69Spa2uAL\nQWSTcnKArVuB5cuBI0eAl14CVq2S3TMM+NKpNewzMjLg7u6ODh06QKPR4MiRI2jfvj1CQkKg0Wiw\ndetWc9RJRGUlBHD8uAz4NWvkScZRo4CNG+VoGnq8c+fUGfazZ89+5L9xxSoiC3L7NvDzz8CyZUBm\nJjBypBw7/vTTSldmPbZskUMuDxxQuhKjK9PQS61Wi4SEBDz33HPIzs5Gfn4+6tata7qieIJWdTg3\nTgXl58ux4cuXA/v2Af36AaNHA127ApX0zmBOD/v1V2DYMGDHDqBdO6WrKTeDp0tYunQpvv/+e6Sk\npODSpUu4cOECxo8fj7179xq9WF1RDHvV4Tj7cjp7Vgb8Tz8BLVrIbpqXXwZM2Aizafv3y9dvyxbA\nSi8aNXjxkiVLliA6OlrXknd1dcWtW7eMVyERlY0Qcqhk587yAqcqVYDISDmMcuxYBn1FHTwog379\neqsN+rLQ22dfrVo1VKtWTXc/Pz+fffVE5rZvH/D++0BGhryc/4UX1HexkykcPSpnuvzpJyAgQOlq\nTErv/5Zu3bphzpw5yM7Oxm+//Yavv/4aISEh5qiNiGJigH//G7h6VYb8K68AlSsrXZVtOHkSeP55\n4D//kRdR2Ti9ffYFBQX44YcfsHv3bgBAcHAwxo4da9LWPfvs1Yd99v9w4oRsyZ8+DXz4ITB8OGBn\np3RVtuPsWaBnT2DRInntgQ0wuM++cuXKGDduHDZs2IClS5fqxtsbqqCgAL6+vvyUQAA4N45OfLzs\nP+7TR7Y2L1wAxoxRNOgjIiIQHByMgIAABAcHIyIiQrFaDFZYKFvyAQHAZ5/ZTNCXRZm6cbZt24b8\n/Hz4+fmhSZMm6NKlCxYuXGjQjsPDw+Hh4YG7d+8a9DxkG1Q/7PKvv2Q3zc6dwNtvy5E2tWopXRUi\nIiIwefJkXLp0Sbet6Pu+ffsqVVbFnDkDvPEGkJcnJ32zohktjUFvyz49PR1169bFpk2bMHz4cBw5\ncsTgVaqSkpKwY8cOjB07lh/dSd2SkmQAtW8v10K9eFHOV2MBQQ8AixYtKhb0gAz7xYsXK1RRBWRn\nA++9J6dqHjpULrqisqAHyhD2BQUFuHHjBtatW6d7Jze0G2fq1KmYP3++bnK10hRdZBMWFobIyEiD\n9vcwjUZT7PaoFmVYWFiJx/LxfLzRHn/rFjBtGuDtDdSrh0/HjIHmo4+gqV/fouovOlf3Tzk5OaVu\ntzgREXJ5xKtX5fmP8eNt5gR3ZGRksZzUS+ixbt064enpKd544w0hhBAJCQliwIAB+n7skbZt2ybe\nfPNNIYQQ+/fvF88//3yJx5ShrPKRp2XljUhp69cL0bixEBMmCHH9utLVPFZQUJAAUOIWHBysdGmP\nl5QkxMCBQri4CPHrr0pXYxb6ctPs6Tdz5kzh6OgonJycRNOmTUXNmjXFsGHDihfFsCdblJsrxJQp\nQjg7C3H0qNLVlMn27duFi4tLsaB3cXER27dvV7q00uXnC/Hll0I0aiTEBx8IkZ2tdEVmoy83y7Us\nobFFRUXh888/x7Zt24pt59BL9bH5uXGuXZOjbBo0kHPKN2yodEVlFhERgcWLF+PcuXNwc3PDxIkT\nLfPk7NGjwOuvyyuJv/kGcHNTuiKzMnhuHFOKiorCggULSkyTzLBXH5seZ793L/Dqq8DEifJEoZVO\nUGaxxyg9HfjgA7kA+mefycnMVHiVf4XC/vDhw2jbtm2xaRLMiWGvPhYbJIYoLATmzQMWL5aX4/fs\nqXRFBrG4Y3T5srwo6scfgYED5WttRZ+YjK1CyxLev38fISEh+OGHH7Bu3bpSn3TatGnGq5LI1qSm\nyqteU1KAP/8EHB2Vrsg2FK2fu3AhEBUlLzg7cQJo1kzpyixeqWEfEBAAV1dXnDlzBnfv3i021FII\nwYnQiB7n2DF5ZeYLL8huBU5zYLi8PLmoyBdfAGlpwJQpcsH02rWVrsxqKNpn/yjsxlEfi+siqKj/\n/AeYORNYskSekLUhihyj1FRg6VLgq6/kUoFTp8rJy6z0vIcpVWhunPj4eN33M2bMQEZGBvLy8tCz\nZ080btwYq1atMn6lpGo2MTfO/v3A7NlySTsbC3rAzMfowgXgrbcAFxc5adnWrfL17dePQV9Bpb5q\n9+/fx8iRIwEAv/76K+rWrYvt27fDyckJly5dwvz5881ZI6mA1Q+7zMuTo22+/NJmh/yZ/BgJIQM9\nJAR49lk5TDUuTnbX+Pqadt8qUGqfvZ2dHQoLCwHIxUoAYPv27QgNDUW9evXYZ0/0T19/DTz5pFwI\ng8rn/n1gzRp50vX+fdlVs3YtULOm0pXZlFLDXgiB5cuXAwBCQkLg5uaG6tWr45tvvsGtW7dQvXp1\nsxZJZNFu3gQ+/hj4/XdVju+ukMJC4MgRYONGOSzV0xOYO1dO68xuGpMo0wnalJQU1KtXD5UrV0ZW\nVhYyMjLw5JNPmq4onqAlazJ6tBzf/fnnSldi2QoKgOhoGfCbNskrXQcOBAYNkpOVkUEqNM7+Yffu\n3cPy5csRHR0NjUYDf39/jB8/3qhFElmtP/4Adu0Czp1TuhLLlJcn++E3bgQ2b5ZdXQMHyvnkPTyU\nrk5V9H5eGj58OM6ePYtJkyZhwoQJiIuLw7Bhw8xRG6mIVZ6gLSyUJ2XnzZOtVBtX5mOUkwNs2waM\nHAk0bSqnMnBxkfPInzgh7zPozU5vN46HhwfOnj2rd5tRi2I3jupY5Tj7nBygSRPZqndwULoak3vs\nMcrKkp9wNm4EduwAvLxkC37AAF7daiYGr0Hbtm1bHD58WHc/JiYGfn5+xqmOyJpVry5br19/rXQl\nysjIAP77XxnqTz0lZ5rs2lW++f3+OzB5MoPeguht2bu5ueHChQto1qwZNBoNrl69imeeeQZVqlSB\nRqPBqVOnjF8UW/aqY5UtewBISAA6dQKuXLH5oYJVNBrkHz8OHD4sW++//w74+8uwf+EFoFEjpUtU\nNYOnONZqtY/dgZOTU0XqeiyGvfpYbdgDQP/+QK9eci1ZW3L7tgz2/93uRkWhjru7fHPr0UNOW1Cv\nntJV0v8YZT77AwcOICEhAaNGjcLt27eRmZkJZ2dnoxZarCiGvepYddhHRQHjxgHx8dY7Rjw/Hzhz\nRgb7oUPy6+3bQMeOMtw7dUKD3r2Raq3HSAUMHnoZFhaGY8eO4fz58xg1ahRyc3Px6quv4uDBg0Yt\nlNTNqufG6doVaNwY6NJF9uEXrUhlye7cAWJiHrTcjx6VJ5k7dZK/z7vvAu7uxRbnnmzNx4j0t+y9\nvb0RGxtUt8knAAAQPElEQVQLPz8/xMbGAgC8vLxM0levK4ote7I2eXly7PjKlcCvvwJBQcCIEfKK\nUCWnOBYC+PtveU7hzz8fhPvNm0CHDrpWOzp2VPXCH7bA4JZ9tWrVUOmhj6ZZWVnGqYzIltjZAX37\nyltqKrB+vRx/P2YMMHiwXMjE19e40ykUBXlSEpCYKL8+/H3R1xo1gObNgbZt5QRj06fLce4PtdrJ\n9ult2c+fPx8JCQnYvXs3Zs6ciWXLlmHIkCGYNGmS6Ypiy55sRUICsGqVXDovL0+2nmvVkotu1K79\n6O8fvn///uOD3NFRDnEs7aujo3wesnlGOUG7e/du7N69GwAQHByMwMBA41VYWlHGDnsHB+D6dTkW\n+No14z0vUVkVFgJaLZCZ+eCWlVW276tUKT3MHRy4UhPpGCXszc0UIzOserQHEZEeFb6Ctnbt2qhT\np06pt7oqmAeEzMsq58ZRGR4j68aWPVkEHh/Lx2Nk2QyeG4eIiKwfw56ISAXMHvaJiYno3r07Wrdu\njTZt2mDRokXmLoGISHXM3mefnJyM5ORk+Pj4IDMzE35+fti8eTPc3d0fFMU+e9Xh8bF8PEaWzeL6\n7Js2bQofHx8AcsSPu7s7rl+/bu4yyMJY9dw4KsFjZN0UHY2j1WrRrVs3xMXFofZDF4ewZU9EVD4G\nz41jKpmZmQgNDUV4eHixoC/y8JjegIAABAQEmK84IiILFxkZicjIyDI/XpGWfV5eHp5//nn07t0b\nU6ZMKVkUW/ZEROVicdMlCCEwYsQINGrUCAsXLiy9KIY9EVG5WFzYR0dHo2vXrvDy8oLmf7NRzp07\nF7169XpQFMOeiKhcLC7sy4Jhrz5hYWGce8XC8RhZNoa9CZ+TjIfHx/LxGFk2ixtnT0RE5sewJyJS\nAYY9EZEKMOyJiFSAYU8WgfOuWD4eI+vG0ThERDaAo3GIiIhhT0SkBgx7IiIVYNgTEakAw54sAudc\nsXw8RtaNo3HIIvD4WD4eI8vG0ThERMSwJyJSA4Y9EZEKMOyJiFSAYU8WgfOuWD4eI+vG0ThERDaA\no3GIiIhhT0SkBgx7IiIVYNgTEakAw54sAuddsXw8RtaNo3HIIvD4WD4eI8vG0ThERKRM2O/atQtu\nbm5o1aoVPv30UyVKICJSFbN34xQUFOCZZ57Bnj174ODggPbt22P16tVwd3d/UBS7cVSHx8fy8RhZ\nNn3Hp4oZawEAHDlyBC1btoSTkxMAYNCgQdiyZUuxsCfgqaeAGzeUrsKcBDQapWswLwHr+oUFAPUd\nJNt5czN72F+7dg3NmjXT3Xd0dMQff/xR4nEaE/ynMsVzmo7t/CcjslbWlRmPZ/awL+uLp/ZuHAcH\n4Pp1pasgUjdrygx92Wr2sHdwcEBiYqLufmJiIhwdHc1dhsW7dk3pCsj0rCdIyPqZfTROu3btcPHi\nRWi1WuTm5mLt2rXo16+fucsgIlIVs7fsq1Spgq+++grBwcEoKCjAmDFjeHKWiMjEeAUtEZEN4BW0\nRETEsCciUgOGPRGRCjDsiYhUgGFPRKQCDHsiIhVg2BMRqQDD3oJERkYqXUKZsE7jYp3GZQ11KlEj\nw96CWMN/UoB1GhvrNC5rqJNhT0REJsGwJyJSAYudG4eIiMrHopYlLAsLfP8hIrJq7MYhIlIBhj0R\nkQow7ImIVEAVYb9r1y64ubmhVatW+PTTT5Uup1SJiYno3r07WrdujTZt2mDRokVKl/RIBQUF8PX1\nRUhIiNKlPFJaWhpCQ0Ph7u4ODw8PxMTEKF1SqebOnYvWrVvD09MTQ4YMwf3795UuCQAwevRo2Nvb\nw9PTU7ctJSUFgYGBcHV1RVBQENLS0hSsUCqtznfeeQfu7u7w9vbGgAEDkJ6ermCFpddYZMGCBahU\nqRJSUlJMXofNh31BQQEmTJiAXbt24ezZs1i9ejXi4+OVLqsEOzs7LFy4EHFxcYiJicGSJUsssk4A\nCA8Ph4eHh0WPmpo8eTL69OmD+Ph4nDp1yiKXvtRqtfj+++9x/PhxnD59GgUFBVizZo3SZQEARo0a\nhV27dhXbNm/ePAQGBuLChQvo2bMn5s2bp1B1D5RWZ1BQEOLi4nDy5Em4urpi7ty5ClUnlVYjIBt4\nv/32G55++mmz1GHzYX/kyBG0bNkSTk5OsLOzw6BBg7BlyxalyyqhadOm8PHxAQDUrl0b7u7uuH79\nusJVlZSUlIQdO3Zg7NixFjtqKj09HQcOHMDo0aMByHWP69Wrp3BVJdWtWxd2dnbIzs5Gfn4+srOz\n4eDgoHRZAAB/f380aNCg2LatW7dixIgRAIARI0Zg8+bNSpRWTGl1BgYGolIlGW0dO3ZEUlKSEqXp\nlFYjAEybNg2fffaZ2eqw+bC/du0amjVrprvv6OiIa9euKViRflqtFrGxsejYsaPSpZQwdepUzJ8/\nX/fHZIkuX76MJk2aYNSoUWjbti1ee+01ZGdnK11WCQ0bNsTbb7+N5s2b46mnnkL9+vXx3HPPKV3W\nI928eRP29vYAAHt7e9y8eVPhivRbtmwZ+vTpo3QZJWzZsgWOjo7w8vIy2z4t9y/WSCy5q6E0mZmZ\nCA0NRXh4OGrXrq10OcVs374dTzzxBHx9fS22VQ8A+fn5OH78ON58800cP34ctWrVsoguh3+6dOkS\nvvzyS2i1Wly/fh2ZmZn4+eeflS6rTDQajcX/bc2ZMwdVq1bFkCFDlC6lmOzsbHzyySf46KOPdNvM\n8fdk82Hv4OCAxMRE3f3ExEQ4OjoqWNGj5eXlYeDAgXj11VfRv39/pcsp4dChQ9i6dSucnZ0xePBg\n7Nu3D8OHD1e6rBIcHR3h6OiI9u3bAwBCQ0Nx/Phxhasq6ejRo+jcuTMaNWqEKlWqYMCAATh06JDS\nZT2Svb09kpOTAQA3btzAE088oXBFj7ZixQrs2LHDIt88L126BK1WC29vbzg7OyMpKQl+fn64deuW\nSfdr82Hfrl07XLx4EVqtFrm5uVi7di369eundFklCCEwZswYeHh4YMqUKUqXU6pPPvkEiYmJuHz5\nMtasWYMePXrgxx9/VLqsEpo2bYpmzZrhwoULAIA9e/agdevWCldVkpubG2JiYnDv3j0IIbBnzx54\neHgoXdYj9evXDytXrgQArFy50iIbJIAcfTd//nxs2bIF1atXV7qcEjw9PXHz5k1cvnwZly9fhqOj\nI44fP276N0+hAjt27BCurq7CxcVFfPLJJ0qXU6oDBw4IjUYjvL29hY+Pj/Dx8RE7d+5UuqxHioyM\nFCEhIUqX8UgnTpwQ7dq1E15eXuLFF18UaWlpSpdUqk8//VR4eHiINm3aiOHDh4vc3FylSxJCCDFo\n0CDx5JNPCjs7O+Ho6CiWLVsm/v77b9GzZ0/RqlUrERgYKFJTU5Uus0SdP/zwg2jZsqVo3ry57u9o\n/PjxFlFj1apVda/lw5ydncXff/9t8josciI0IiIyLpvvxiEiIoY9EZEqMOyJiFSAYU9W48SJE7hw\n4QIuXbqEo0ePPvJxmzZtQn5+PtavX4/CwkLd9q+++gpZWVkmqy8zMxNff/21yZ6fyBAMe7Iarq6u\nePfddzFjxgw888wzAOTUCN98802xx7Vq1QrPPfcccnNzdVf6fvvtt8jOzkatWrWMUsuKFSswceLE\nYtvef/99uLq6PvYxpvLll1/i3r17ZtkXWSeGPVmNmjVrYurUqXjrrbdQp04dAEBqamqJ1rSnpyci\nIyMxdOhQAPIahmrVqmHGjBkmqy07OxvPPvtssekOzHmFaXh4uEVOCUGWg2FPFmXmzJnFwjssLAwL\nFiwAAMyfPx/Tp0/H1KlTERYWBgB47733cOnSJfj6+uLdd99FcnIyunbtCl9fX3h6euLgwYPQaDSY\nPXt2iWlkv/vuu2JvAEUt8e+++w6+vr7w9fWFs7MzevToAQBYvnw5nnnmGXTs2LHYla7btm1Djx49\nMGfOHAQGBpZ6JeTt27cRGhqKDh06oEOHDrqfDwsLw+jRo9G9e3e4uLhg8eLFup/54osv4OnpCU9P\nT4SHhwMAsrKy0LdvX/j4+MDT0xPr1q3D4sWLcf36dXTv3h09e/Y05OUnW2bykfxE5RAbGyu6deum\nu+/h4SGSkpLEr7/+Kl577TUhhBD5+fmiT58+IioqSmi1WtGmTRvd4xcsWCDmzJkjhBCioKBA3L17\nVwghhJOTU4kLV27fvi1atmypu9+7d29x8OBB3f28vDzh7+8vtm/fLq5fvy6aN28u7ty5I3Jzc0WX\nLl3ExIkThRCi2MVF3377rXj77beFEEIsX75cTJgwQQghxODBg0V0dLQQQogrV64Id3d3IYQQs2bN\nEl26dBG5ubnizp07olGjRiI/P18cPXpUeHp6iuzsbJGZmSlat24tYmNjxYYNG3SvgxBCZGRkPPL3\nI3qYRS44Turl4+ODW7du4caNG7h16xYaNGgABwcHLFy4EIcOHUL37t0ByL56rVaL5s2bF/v59u3b\nY/To0cjLy0P//v3h7e39yH01btwYLVq0wB9//IGWLVvi3Llz6Ny5s+7fJ02ahJ49e6Jv377YvHkz\nunfvjkaNGgEAXnnlFd10DNeuXcOwYcOQnp6O7OzsUi9737NnT7H1Ce7evYusrCxoNBr07dsXdnZ2\naNSoEZ544gkkJycjOjoaAwYMQI0aNQAAAwYMwIEDB9CrVy9Mnz4d7733Hp5//nk8++yzFXylSW0Y\n9mRxXnrpJWzYsAHJyckYNGiQbvvEiRPx+uuvF3usVqstdt/f3x8HDhzA9u3bMXLkSEybNg3Dhg17\n5L4GDRqEdevWwc3NDQMGDNBtX7FiBRITE3VdShqNptjMhA9/P2HCBMycORNBQUHYv38/Zs+eXWI/\nQgj88ccfqFq1aol/e3hb5cqVkZ+fX+r+NBoNWrVqhdjYWEREROD9999Hz5498cEHHzzy9yMqwj57\nsjivvPIKVq9ejQ0bNuCll14CAAQHB2P58uW6oZNJSUm4ffs26tSpg7t37+p+9urVq2jSpAnGjh2L\nMWPGIDY29rH7evHFF7F582asXr1a98Zy7NgxLFiwAKtWrdI9rkOHDoiKikJKSgry8vKwfv163QnY\ntLQ0NG7cGAB0E4X9U1BQULGlJk+ePPnImjQaDfz9/bF582bcu3cPWVlZ2Lx5M/z9/XHjxg1Ur14d\nQ4cOxfTp03W/X506dZCRkfHY35XUjS17sjgeHh7IzMyEo6OjbrGMwMBAxMfHo1OnTgDkal4///wz\nnJ2d0aVLF3h6eqJ3795o06YN5s+fDzs7O9SpU0c3K+ejRsbUr18fHh4eiI+PR7t27QAAS5YsQWpq\nqq7LqH379li6dCnCwsLQqVMn1K9fH76+vrrn+PDDDxEaGoqGDRuiR48euHr1qm6fRftdtGgR3nrr\nLXh7eyM/Px/dunUr9qnhn3x9fTFy5Eh06NABAPDaa6/B29sbu3fvxjvvvINKlSrBzs4O3377LQBg\n3Lhx6NWrFxwcHLB3714DXn2yVZwIjYhIBdiNQ0SkAgx7IiIVYNgTEakAw56ISAUY9kREKsCwJyJS\nAYY9EZEK/D8x1dDF2LFNeAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(x1,y1,'o',color='k')\n", "plot(x2,y2,'o',color='k')\n", "plot([0,x1],[y1,y1],'--',color='k')\n", "plot([x1,x1],[0,y1],'--',color='k')\n", "plot([0,x2],[y2,y2],'--',color='k')\n", "plot([x2,x2],[0,y2],'--',color='k')\n", "axhline(0,color='k')\n", "axvline(0,color='k')\n", "ellipse([x1,y1],[3,1],ang=20,color='red',project='xy')\n", "ellipse([x2,y2],[3,1],ang=20,color='blue',project='xy')\n", "xlim(-1,15)\n", "ylim(-1,12)\n", "xlabel(u'větší vzdálenost')\n", "ylabel(u'lepší separovatelnost')\n", "\n" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(-1, 12)" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXEAAAD9CAYAAABKgkezAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XdcVfX/wPEXbk0xTUWWC8Q9cC8KUcCRuEG0vq60vhqO\nyjL7fcuGXy2bjqYNzMSNojjSEL8quRIVt6IkMjRUlsg+vz9OYuQILvfec8f7+XjcR9fLuee8+XR5\n8+F9PsNGURQFIYQQZqmc1gEIIYTQnSRxIYQwY5LEhRDCjEkSF0IIMyZJXAghzJgkcSGEMGOPTOIT\nJkzAzs6ONm3aFL02a9YsWrRoQbt27Rg2bBhpaWkGD1IIIcSDPTKJjx8/nu3btxd7zcfHh1OnTnH8\n+HHc3NyYP3++QQMUQgjxcI9M4h4eHtSqVavYa97e3pQrp76ta9euXL161XDRCSGEeKQKZXnzd999\nR2Bg4H2v29jYlOW0QghhtUo7iV7nG5vz5s2jUqVKjB49+qGB6Pp46623SnRcbGwsdevWJS8vr0zX\ns7RHWdvfmh8l/ezJQ9rPEA9d6JTEf/jhB7Zu3cpPP/2k00X1pUmTJjRq1Ijdu3drGocQQmil1El8\n+/btLFy4kE2bNlGlShVDxFQq/v7+rF69WuswhBBCE49M4oGBgfTo0YNz587h7OzMd999R1BQEJmZ\nmXh7e+Pu7s6UKVP0HpSnp2eJjx05ciShoaHk5eXpPQ5hfUrz2RP3k/YzPhtF10LMo05qY6NzfUcX\n3bt3580336R///5Gu6YpM3b7CyH0Q5efXYuYsRkQEMCaNWu0DkMIIYzOInriV69epW3btiQlJVG5\ncmWjXddUSU9cCPNktT1xJycnWrVqxc6dO7UORQghjMoikjioJRUZpSKEsDYWUU4BSEpKomXLliQl\nJZnE0EctSTlFCPNkteUUAHt7e9q3b3/fgl1CCGHJLCaJgzrxR0apCCGsicWUUwCuX7+Om5sbiYmJ\nVKtWzejXNxVSThHCPFl1OQWgXr16dOrUiW3btmkdihBCGIVFJXGQUSpCCOtiUeUUgJSUFFxcXEhM\nTOSxxx7TJAatSTlFCPNk9eUUgDp16tC9e3e2bNmidShCCGFwFpfEQUapCCGsh8WVUwBu3bpFo0aN\nuHr1KjVq1NAsDq1o3f5CCN1IOeVPtWrVolevXmzevFnrUIQQwqAsMomDjFIRQlgHiyynAKSlpeHs\n7Ex8fDw1a9bUNBZjM4X2F0KUnpRT/qJmzZr07t2bTZs2aR2KEEIYjMUmcZBNlIUQls9iyykAGRkZ\nODo68vvvv1OrVi2twzEaU2l/IUTpSDnlb2rUqEHfvn0JDQ3VOhQhhDAIi07iIJsoCyEsm0WXUwAy\nMzNxdHQkNjaWOnXqaB2OUZhS+wshSk7KKQ9QvXp1fH19paQihLBIFp/EQUapCCEs1yOT+IQJE7Cz\ns6NNmzZFr928eRNvb2/c3Nzw8fEhNTXV4EGW1YABAzh8+DDXr1/XOhQhhNCrRybx8ePH37fx8IIF\nC/D29ub8+fP06dOHBQsWGDRAfahWrRoDBgxg/fr1WocihBB69cgk7uHhcd/46rCwMMaOHQvA2LFj\n2bhxo+Gi0yMZpSKEsEQVSvuGa9euYWdnB4CdnR3Xrl174HFz584teu7p6Ymnp6dOAepLv379GD9+\nPElJSdjb22saixBCAERGRhIZGVmmc/zjEMO4uDgGDRpETEwMoC7zeuvWraKv165dm5s3bxY/qYkO\ncXv22Wfp2rUrL774otahGJSptr8Q4tGMMsTQzs6O5ORkAJKSkqhXr15pT6EZWZ5WCGFpSp3E/fz8\nCA4OBiA4OJghQ4boPShD8fb25tSpUyQkJGgdihBC6MUjk3hgYCA9evTg3LlzODs78/333zN79mx2\n7tyJm5sbERERzJ4921ixllnlypUZPHgwa9eu1ToUIYTQC4ufdv9327Zt49133yUqKkrrUAzGlNtf\nCPFwuvzsWl0Sz8vLw97enqNHj9KgQQOtwzEIU25/IcTDydopJVCxYkWGDBkiJRUhhEWwuiQOMkpF\nCGE5rK6cApCfn4+DgwMHDx6kcePGWoejd6be/kKIB5NySglVqFCBYcOGyTR8YXIUBfLytI5CmBOr\n7IkDREREMGvWLH777TetQ9E7c2h/a1BYCGfPQnQ03LwJ6en3Hmlpxf/919cUBVxdoXt39dGtG7Rq\nBeXLa/0dCUOT0SmlUFBQgKOjI/v27cPV1VXrcPTKHNrfEqWlwcGD8Ouv6uPgQahdGzp1grp1wdYW\natZU//v3x93Xa9RQk/WpU/fO8+uvcO0adO58L6l7eKjHC8siSbyUpk6diqOjI3PmzNE6FL0yl/Y3\nZ3d72QcO3Eu0cXHQseO9HnT37qCvVSlu3Ch+rYsXITISLPCWjlWTJF5K//vf/wgKCuL48eNah6JX\n5tL+5uTOHdi3D6Kiiveyu3W7l7DbtoWKFY0Tz9Kl8OGHsGcPWOh0B6skSbyUCgoKcHZ2JiIigubN\nm2sdjt6YS/ubuoICNUmuWAGhodC6NfTsea+k8eeKzJr57DNYvFjtkTs5aRuL0A9J4jqYPn06Tzzx\nBG+++abWoeiNObW/KTpxQk3cK1eq5ZAxY2DUKHB01Dqy+334IXz9tZrIHRy0jkaUlSRxHezfv5/J\nkydz6tQprUPRG3Nqf1MRH68m7Z9+Um9QjhmjPlq10jqyfzZjhtorz8+XESzmTpK4DgoLC2nYsCHb\nt2+nlTn8xJaAObW/llJTYf16tdd94gSMGKEm7l69oJwZzaA4fBi8vdXvR5g3meyjg3LlyjFy5EiZ\nhm8FMjMzWbNmI6tX32HkSGjYELZuhWnTIDERvvoKnnzSvBI4QEKCGrewTqXeY9MSBQQEMHbsWN5+\n+21sbGy0DkfoUWJiIps3b2bdugj+9z93FOXfdOgAzz2n1pL/tg+4Wbp6VW5sWjNJ4kCXLl3Izs7m\nxIkTtGvXTutwhJ688cYbLF0agpPTR1y5spyAABveeqsSLi5aR6ZfCQmmedNVGIeZ/eFoGDY2Nvj7\n+8taKhbkxg24c2cO5cvH0r37UI4fr8zy5ZaXwEF64tZOkvif/P39Wb16tdwQNBOpqamEhIQQGBjI\n2LFji16/cQPeeAPc3CAz8zF++82Gb76x3JmNiqLO3pSeuPWSJP6njh07oigK0dHRWociHuL27dt8\n9tln9OnThwYNGrBy5Uq8vLxYsGABKSkwZ46avFNS4Lff1Jp3o0ZaR21YwcHqolk9e2odidCK1MT/\nZGNjU7RZRIcOHbQORzxAhQoVOH36NNOmTaNv37489thjpKTARx+pCXvkSDh6VB11Yg3OnoVZs2D3\nbqhaVetohFasfpz4Xx07doyhQ4dy6dIlsx6lYq7tD3Dnzh0iIiLo0aMHtR4xdOSPP9Tk/c034O8P\nr79uXWuIZGdD164wdSpMnqx1NEJfZJx4GbVr145KlSpx+PBhrUOxKtevX+f7779n6NCh1K9fn4UL\nF5KcnPzAYwsL1cWfmjdXywjR0fDFF9aVwAFeeQWaNYNJk7SORGhNyil/8ddRKl26dNE6HKswf/58\n3n//fXx8fBg+fDjLli3jiSeeeOCxV67AhAmQmamuJtismZGDNRGhoeokpaNHwYz/YBR6IuWUvzl5\n8iQDBgwgLi6OcuY2de9P5tT+f/zxB7a2tlSuXPmhxygK/PADvPoqvPSSWgeuYKXdj99/hy5dICxM\nLacIy6LLz66V/ig8XKtWrahevToHDx6ke/fuWodj1jIyMtixYwdhYWHk5OQ8cGmDunXrPvIcyclq\nzffKFfjlF3XNbmuVlwejR6ulFEng4i6du5rz58+nVatWtGnThtGjR5OTk6PPuDTz11EqovSys7P5\n4osv6NevHw4ODixbtoxu3brx4Ycflvpca9ZAu3Zq4j50yLAJPDw8HF9fXzw9PfH19SU8PNxwF9PB\nzZswYIC6NO7LL2sdjTApig4uX76sNG7cWMnOzlYURVH8/f2VH374oejrOp7WZJw+fVpxcHBQCgoK\ntA5FJ1q2f15enjJp0iRl7dq1Slpamk7nSElRlFGjFKVZM0U5cEDPAT7Ali1bFBcXFwUoeri4uChb\ntmwx/MVL4ORJRXFxUZRXXlGUvDytoxGGpMvPrk49cVtbWypWrEhWVhb5+flkZWXhaEFTxlq0aMET\nTzzB/v37tQ7FJOXk5LBjxw6uX79+39cqVKjA119/zYgRI7DVYSff8HC1x21vr448MUbZYNGiRcTG\nxhZ7LTY2lsWLFxv+4v9g40bw9IS33oKFC633XoB4OJ0+ErVr1+bll1+mQYMGVK1aFV9fX/r27Vvs\nmLlz5xY99/T0xNPTsyxxGt3dUSoeHh5ah2ISbty4wdatWwkLC2Pnzp20atWKJUuWUE9POwGnp8PM\nmerElZUr4amn9HLaEnlYKTA7O9t4QfxNYSG89546Dn7rVnWne2F5IiMjiYyMLNtJdOnyX7x4UWnR\nooWSkpKi5OXlKUOGDFFWrFhRpj8JTM25c+eU+vXrK/n5+VqHUmr6bv/PPvtMsbW1VYYMGaJ89913\nyrVr1/R6/hs3FMXdXVEmTFCU9HS9nrpEfHx8ipVS7j58fX2NH4yiKBkZijJsmKJ0764oiYmahCA0\nosvPrk7llCNHjtCjRw+eeOIJKlSowLBhw4iKiirbbxMT4+bmRv369dm7d6/WoWhu9OjRJCcnExoa\nyvjx4/XW+wa4dQt8fMDLC5Ytgxo19HbqEps2bRouf1ve0MXFhaCgIKPHcvky9OgBjz+u/lVib2/0\nEISZ0amc0rx5c959913u3LlDlSpV2LVrl0VOjrk7SsXcSkGlcfv2bXbt2kVYWBgpKSls2rTpvmPq\n1KljkGunpoKvL3h4qPVerSauDBw4EIDFixeTnZ1NlSpVCAoKKnrdWCIi1CGEb7wBL74oE3lEyeg8\n2eeDDz4gODiYcuXK0aFDB5YtW0bFihXVk5rRZJNHuXTpEt26dSMxMZEKZnRH6Z/aPy8vjx9++IGw\nsDD27NlD586d8fPzY9CgQTRp0sQoMaalqT3wbt3g00+tO2EVFsKiRbBggXo/wMtL64iEVmSjZAPo\n3Lkz8+fPv+/GrSn7p/ZXFIUpU6bw5JNP0q9fv0cuNGUI6elqD7xTJzV5WXMCj4pS9/isWBF++gmM\n9DtUmChJ4gawcOFCzp8/zzfffKN1KCVmY2NDbm4u+/bto1mzZjg4OGgdUpGMDOjXT53Es3Sp9Sbw\nhAR47TWIjFR74KNHm98GzUL/ZBVDA/D39yc0NJS8vDytQ/lHaWlpRTNN7ezsePXVV7ly5YrGUd2T\nmanOOmzdGpYssc4Enp0N8+apY+EbNlTXBH/mGUngQnfy0fkHDRs2xNXVlV9++UXrUB7p22+/xdnZ\nmeXLlwMQExPD4cOH6datm8aRqbKz1QTevLm6dKy1JS1FUVcfbNlS3XXo8GE1mVevrnVkwtxJOaUE\nPvnkE2JiYvjuu++0DuWhbty4QeXKlalevbpJtv/nn6sr723dan0J/ORJmD4drl2Dzz6DPn20jkiY\nKqmJG0h8fDzt2rUjOTmZSpUqGf362dnZREREEBYWRlxcHNu3b3/k8abW/gUFag/8u+/U4YTW4uZN\nePNNdSGvt96C55+XafPi0aQmbiDOzs60bNmSnTt3Gu2ahYWFBAcHM2zYMOzs7FiwYAGurq4sWrTI\naDHoy+bNUKsW9OqldSTGkZ+v/uXRooX67zNn1G3UJIELQ5CPVQn5+/uzevVqo00AKVeuHIcOHWLw\n4MF8/fXXBptwYwwffaQun2rpNzIzMuDHH9Vhkw4OsGsXtGmjdVTC0kk5pYQSExNp1aoVSUlJVKlS\nRS/nLCgoICoqioYNG9JAj5tEmlL7HzqkbmR88aLl9kQvXFBH26xYAb17Q1AQPPmk5f/SEvon5RQD\ncnBwoG3btuzYsaNM58nMzGTDhg2MGzeO+vXrM23aNC5duqSnKE3PRx/BjBmWl8ALC2HbNnXETc+e\n8NhjcOwYrFunrsAoCVwYi/TES+Hzzz9n//79/PTTTzq9f9WqVUyePJnu3bsXTXPXZw/8LlNp/ytX\noEMHdVEnLRa2MoS0NHW/z6VL1e8pKAhGjQI9/XEmrJyMTjGwa9eu0axZM5KSkqhatWqp33/r1i3K\nlStHzZo1DRDdPabS/hcvqjczExKgfHmtoymbM2fUkklIiLpkQFAQdO8uPW6hX1JOMTA7Ozs6duzI\ntm3b7vtabm4uO3fuJCgoiN69ez/wf0StWrUMnsBNiaureoPPXFfzvXYthbAw8PZWa9116qhjvkNC\n1OViJYELUyBJvJT+uomyoiisXLmSgIAA7OzsePPNN3FwcGDJkiUaR2k6/P3BXPacVhSFkyfP8O9/\n/4iT0w/Y22cyd24eY8fC77/D22+rv5SEMCVSTimllJQUXFxcSExM5LHHHmPmzJm0bt2agQMHUr9+\nfa3DA0yr/S9dUpebTUw03ZubN2/C9Onb2Lgxl6wsD2rVysLbO5egICd69DD+5C5hvaQmbgCFhYUc\nPnyYunXrFq217evry8SJE/H399c4ugcztfbv3Bn++1+1LGEKFAVOnFCXAAgPV5+3bv0HXl53mDzZ\nmQYNpE4itCE1cT3Jyspi8+bNTJo0CQcHByZMmMC5c+eKvn53E2VRMtOmqSM4Xn8drl/XJoazZ6/y\nwgtb8fI6T4MGMGwYJCXBf/6jxhQVVZf33msgCVyYHemJ/01YWBjPPPMMHTt2LBoG6OrqWuyYmzdv\n0rhxY65evUoNExw7Z4rt//vv6hZsK1fCv/4Fr7wCTk6GuZaiQEKCwtatF9mw4SJRUTXJyGhL/fq/\nM2RIRaZPd6NZM7kxKUyPlFP0IC0tjYKCAmrXrv3I4wYMGMCzzz5LYGCgkSIrOVNu/6QkdQLQd9/B\nyJEwa5a6m01pVzZUFEhJgfPn1RmTd/9791G1aj63bx+jadN8/P1tmTLFjdq1TbQoL8SfJIkbUXBw\nMKGhoWzcuFHrUO5jDu2fkqIuy/rll+qNRVtbqFlTfTz++P3PH39c3VTirwnbxgaaNMmnZcvyNG1q\nQ9Om4OamDm2sWVMdbWIj3W1hRiSJG1FqaioNGjTg6tWr2Nraah1OMebW/vn56r6baWnqIzX1/uep\nqVC1qpqkq1SJ5+zZMHbtWsOxY9GcOHGCRo0aaf1tCFFmksSNzM/Pj5EjR/Lss89qHUoxltr+X375\nJYsWLeLWrVv4+fnh5+eHl5eXTrNnhTBFksSNbMWKFaxevZrNmzdrHUoxltr+e/bsoWrVqnTq1Ily\n1rY9kLAKksSNLD09HWdnZ+Li4qhVq5bW4RQx1/ZPSkpiy5YtlC9fngkTJmgdjhBGJ+PEjczW1hYv\nLy+TvLlpDhRFISYmhnnz5tG1a1datmxJREQEdnZ2WocmhNmQnngZrVq1iuDg4AcuiqUVc2n/hIQE\nevXqVVTf9vDw0GQPUyFMhZRTNJCZmYmjoyOXLl3iiSee0DocwPTaPy0tjerVq1P+AevRyjBAIe4x\najklNTWVESNG0KJFC1q2bMmBAwd0PZVZq169Oj4+PoSGhmodikmJi4tj8eLFeHt74+zsXGzZgr+S\nBC5E2eicxKdPn86AAQM4c+YMJ06coMXdrb2t0N1NlIU6Capdu3Z06dKF6Ohopk6dSlJSEi1bttQ6\nNCEskk7llLS0NNzd3R+6N6Sp/TlvaFlZWdjb23Px4kXq1q2rdTiatv++ffuwsbGhW7duDyyfCCEe\nTpefXZ0Wk7h8+TJ169Zl/PjxHD9+nI4dO/LZZ59RrVq1omPmzp1b9NzT0xNPT09dLmUWqlWrRv/+\n/Vm/fj0vvPCC1uEY1B9//EF4eDjZ2dkP/F579eqlQVRCmKfIyEgiIyPLdA6deuJHjhyhe/fuREVF\n0blzZ2bMmIGtrS3vvPOOelIr64kDhIaGsnjxYiIiIrQORe/tf+7cOcLCwti0aRMxMTF4e3szZswY\nhg4dqrdrCCGMODolOTmZ7t27c/nyZUD9E3rBggVs2bJF50DM3Z07d7C3t+fs2bOa7/Cjz/a/efMm\n7u7uDBw4ED8/Pzw9PakiW7sLYRBGK6fUr18fZ2dnzp8/j5ubG7t27aJVq1a6nMpiVK1alaeffpr1\n69czdepUrcMptczMTCpXrkzFihWLvV67dm3i4uJkFIkQJkrn0SmLFy9mzJgxtGvXjhMnTjBnzhx9\nxmWWzG2USkJCAl9++SUDBgzAwcGB48ePP/A4SeBCmC6Z7KNHOTk52NvbExMTg6Ojo2Zx/FP7r1mz\nhg8++IDLly8zYMAA/Pz88PX1NbkldYWwNjJj0wSMGzcOd3d3pk+frlkM/9T+Bw4cIDs7m549e95X\nPhFCaEeSuAnYunUr8+bNY//+/ZrFYGNjw4oVK7h16xYvvviiZnEIIUpHVjE0AX379uXs2bPEx8cb\n9bqxsbF88skn9O7dG1BLJqaylosQwnCkJ24AEydOpFWrVrz00ktGud7t27dp2bIlPj4+RSsCWnP7\nC2GupJxiIn7++Wf+85//cPDgQb2eNysriwoVKjxwuda/rgZo7e0vrICiwJ079zZnTU+/9yhXDjp1\nAg0HF+hKkriJyMvLw8HBgcOHD5d5A99r166xZcsWwsLC2L17N5s3b+app5565Husvf2FBbh6FX79\nFQ4cgDNniifpu49KlcDWVn3UrHnveU4OHDoE1apB9+73Hu7u6ntMmCRxE/L888/j4uLCq6++qtP7\nw8LCmD9/PmfOnMHX1xc/Pz/69+9P7dq1//G90v7CrOTkQHS0mrTvPrKz7yXf1q3h8ceLJ+saNeBR\nI6sUBS5eLH7OCxegfXvo1g3+/W9wdTXe91hCksRNyC+//MJrr73GkSNHdHr/kSNHuHXrFk899VSp\nd7uR9hcmLSGheHI9fhzc3Ir3ml1cQN+TzDIz4fBh+Pln+PFH2L0bmjbV7zXKSJK4CcnPz8fR0ZH9\n+/fj+oDf+Onp6ezYsYOEhARmzJih12tL+wuTcusWrFsHu3apSTsrq3jC7twZqlc3bkzLlsE776iJ\n3MXFuNd+BBliaEIqVKjA8OHDWbt2bdFrV65cYenSpfj6+uLk5MT3339PzZo1NYxSCAPJzoYNG2DY\nMGjcGHbuhIED4Zdf4I8/YPNmmDMHevc2fgIHeO459fp9+kBcnPGvr0fSEzegPXv2MH36dI4dO0Zu\nbi7NmjXjySefxM/PDx8fH2rUqGGQ60r7C00UFsLevbBihZrA27eHZ55RE7mpdlaWLIH/+z+1xNKl\ni9bRSDnFFOTk5KAoClWqVKGgoABnZ2d2795Ns2bNjLYpsDW3v9DAyZPw00/qo1YtNXEHBoKTk9aR\nlYyrK8TGqjdDNSblFI2kpKSwfPlyRowYQb169Yo2hihfvjwjRoxgzZo1gKwGKCxIQgJ8+KHa2+7f\nX02A4eHqTcpZs8wngQOMHAnvvqt1FDqTJF4GP//8M0899RQuLi5s3LiRp59+mosXLzJgwICiY8xt\neVohHiozE374Afr2hTZt4OxZ+PRT+P13WLBAfc0cJSSY1y+dv9FpUwihqlu3Lq+++ip9+vR56G43\nPXr0IDU1lVOnTln9xhnCvCiKwqFDhwgNDua16tWp9cMP0KOHOsZ64ECwlB2erl41y9mdd0lN3Ahm\nzpyJra0tb7/9tlGuJ+0vyuLkyZOEhISwZeVKxmZkMPnOHcr370/V996D5s21Dk//mjWDjRuhRQut\nI5GauKkKCAhgzZo1kliFyfvggw8Y6euLx549HElLY2b//lQ/epSq69ZZZgJXFLPviUsSN4KuXbuS\nlZVFTEyM1qEI8XBpaczIyOB0bi79mjSh4oED2Pz4o9pTtVRHj6prrJjxrlaSxI3AxsYGf3//olEq\nQmjlxo0bfP3117zwwgv3XkxLU2cvurpS6coVbPbvh+XL1anwliwjQx0KuWiR1pGUiSRxI7k7SkVK\nKsLYMjIyWLFiBQMHDqRJkybs2rULX19flFu34O231XHSly5BVBQEB1t+8r7rxRfBw0NN5GZMRqcY\nSadOnSgoKODYsWO4u7trHY6wIr1796Z+/fqMHj2aVatWUUNR4JNPYNIkGDRIXc/EBFf0M6jly9XF\nsA4f1jqSMpMkbiR3SyqrV6+WJC6M6tdff723IfYvv8DEifDkk+pa3daWvAHOnYOXX4aICHjsMa2j\nKTMZYmhE0dHRDB8+nNjYWIPO3pT2tx6FhYVERUUREhJC8+bNCQoKevCBt2/D7NnqULpvvoF+/Ywb\nqKm4u07588/DX+8LmAgZYmji2rdvT4UKFXReY1wIUCfhHD16lFmzZtGoUSNeeOEFHBwcePrppx/8\nhqgodVeb1FQ4ccJ6EzjAq6+qS88+/7zWkeiNlFOM6K+jVDp37qx1OMJMnTt3jhEjRhAYGEh4eDht\nHjbdPScH3npLvVm5dKm6mqA1CwlRl8CNjtb/hhMa0rmcUlBQQKdOnXBycmLz5s3FTyp/zj9UTEwM\nTz/9NHFxcQYrqUj7W75/XBHz6FEYO1bduebLL6FePYPGEx4ezqJFi8jJyaFy5cpMmzaNgQMHGvSa\nJaYoMG8efPWVmsTbt9c6oofS5WdX5574Z599RsuWLcnIyND1FFapdevWVKtWjYMHD9KtWzetwxEm\n6Nq1a6xdu5ZVq1bxxRdfPLCn/dAEnpcH8+er62R//DGMGWPwXmd4eDjTp08nNja26LW7zzVP5JmZ\nMH68Oivz0CGwt9c2HgPQqSZ+9epVtm7dynPPPSc9vlKysbEhICBAVjYUxaSmpvL999/j4+NDs2bN\nOHDgAK+//jrNSjNb8vRpdYGqqCi1J/7MM0YpGyxatKhYAgc1iS9evNjg136kuDjo2VPdOWj3botM\n4KBjT3zmzJksXLiQ9PT0hx4zd+7coueenp54enrqcimL5O/vj4+PDx999BHlysm9ZQHffPMNUVFR\nPPfcc2zcuJFq1aqV7gSLF6uzLufNU8d/G7Hmm5OT88DXs7OzjRbDfSIj1Uk8r78OQUEmWwOPjIwk\nMjKybCe5Hd8EAAAVlUlEQVRRSmnz5s3KlClTFEVRlN27dytPP/30fcfocFqr07p1a2Xv3r0GObe0\nv+kqLCzU/0nnzVOUZs0UJTZW/+cuAR8fHwW47+Hr62v8YAoLFWXJEkWpV09Rdu0y/vXLSJef3VJ3\nA6OioggLC6Nx48YEBgYSERHBv/71r7L9JrFCspaK9SgoKCAiIoJJkybRrVs3/ZYg339fHX2yezc0\naaK/85bCtGnTcPnbjvEuLi4PH7NuKLm5MHkyfPGFWlLq08e419dImSb77Nmzhw8//FBGp+jg3Llz\neHp6cvXqVcqXL6/Xc0v7m4YDBw4QEhLCmjVrsLe3JzAwkICAABo0aKCfC3z4IXz9tVo6cHDQzzl1\nFB4ezuLFi8nOzqZKlSoEBQUZ96bmtWswfDjUratOqTfQJuSGZtTRKX+9qCi9Zs2aYWdnx759+3jq\nqae0DkcYwKeffkqLFi2IjIws3Q3Kkvj4Y3XInAkkcFBHoWg2EmXbNnXyzoQJ8OabYGX3mWTavYbm\nz59PfHw8n3/+uV7PK+1vXAUFBXr/a+qRPv1UvZEZGQnOzsa7rqk5fx5mzoSLF9XlZH19tY6ozGTa\nvZnx9/dn/fr15Ofnax2KKKWEhAQ++eQTunTpwltvvWW8Cy9erCas3butN4GnpcErr6jDKb28ICbG\nIhK4riSJa8jFxQVnZ2f27NmjdSiiBNLT0/nqq6/w9PSkTZs2xMTE8N577xUbTmtQS5eqZZTdu0Ff\ndXVzUlgI336rbhN36xacOqWuRlipktaRaUrWTtHY3VEqfazkTro5S01NJSIighkzZtCvXz+qGHO3\n97VrYeFCNYE3bGi865qK/fth+nSoXFmdOt+pk9YRmQypiWssLi6Ozp07k5iYeG/N5zKS9i+b7Oxs\nKlWqZDoTsQoLoVUrtSfu5aV1NMZ19aq68uDevepwysBAk524ow9SEzdDjRo1okmTJkRERGgdilXL\ny8tj+/btjBs3DgcHB06dOqV1SPds2wZVqkDv3lpHYjx37sB770G7dur49zNnYPRoi07gupIkbgIC\nAgJk4o9GoqOjmTJlCo6OjsydOxd3d3dOnTr18OVdtfDRR+qNPGtIYIWFsG4dtGypLhl75IiazKtX\n1zoykyXlFBMQHx9P+/btSUpKopIebtJI+5fc6tWriY2NZdSoUTTRaMbjI0VHg5+fupGxnsptJikt\nDb7/Xi0Z2dqq9X9rKx2h28+uJHET0bNnT9544w0GDBhQ5nNJ+98vJSWFOnXqaB1G6T3zjFpSmDVL\n60gM4/RpddnckBB1mGBQkDp00Br+6ngAqYmbsbubKAv9+f3333n//fdp3749Pj4+WodTevHxsHWr\nuiqhJSkogE2boG9ftbddpw6cPAmrVqlLx1ppAteV9MRNREJCAq1btyY5OZnKlSuX6VzW3v5ffPEF\nK1as4Ny5cwwfPpzAwEA8PDyMO6tSH+bNUxP5l19qHYl+3LwJ332nlkzq1VN73SNHqsMGBaDR2ilC\nPxwdHWnTpg07duzAz89P63DMWmpqKm+88Qbe3t56G7apiRYtwBJGLcXEqDNN166FgQPVHnfXrlpH\nZTGkJ25Cli5dyq+//sqKFSvKdB5raP/bt2+TmZmJnZ2d1qEYzp076m40586BuX2f+flqyWTxYnWN\nkxdeUJeJrV9f68hMmtTEzdzw4cPZsmULd+7c0ToUk5Sbm8vmzZsZPXo0jo6OrFy5UuuQDKtqVbXn\nun691pGUyJ3ERA6+/DKFzz6rrqz48cdq8o6LU1cXlARuEJLETUj9+vXp0KED27dv1zoUk3L16lWe\ne+457O3tWbhwIR4eHpw/f56ZM2dqHZrhBQSAqc4hUBTyjh3j7IQJnLWzI8/RkcLgYNJbtlQ3Jd6/\nH0aNsvq1TQxNauIm5u4mykOHDtU6FJNRtWpVmjdvzrFjx3C2tpX7fH1h3Dj49Vfo3l3raCArS63T\nh4eTvno1qWlpnKxbl4pDh1Lz1Vfpbopj7S2c1MRNzB9//IGrqytJSUml3yz3T+bY/oqiEBMTQ/Pm\nzfUy4cmirFyprh/Spg288Qb06mXc61++DOHh6nDHffugQwcYOJCzLi5Ubt+expK49UYm+1gIHx8f\nJk2axMiRI3V6vzm1/8WLFwkJCWHVqlXcvn2bHTt26H8XHEuQk6PupblggboM7f/9n7qHpD7HVGdl\nQWyseiPywgW4cIGcPXtQUlKoMmSIWp/39obHH9ffNUUxksQtxLJly9ixYwdr167V6f3m0P4bN25k\n3rx5xMfHM3LkSAIDA+nevbts9/dP8vPV2Y3//S/UrKlOBKpXT31es6aaYGvWVKeuP2gVxtxcdQr/\nhQvFkjXnz0NKCjRuTJajIzE5Oey4dImDubl0mTKFt4y1ZrqVkyRuIW7cuEGTJk1ISEigug4L/5hD\n++/fv5+srCx69+5NhQpya6bUCgpgwwZ1GF9qqrr2SFraveeZmeqiUXcTe40akJwMCQnqjkBNm4Kb\nm/rfP58XOjrSx8eHkydPFpskZTJL8loBSeIWpH///owdO5ZRo0aV+r2m0v7p6emcOHGCXsau4Qo1\nyWdk3EvuaWnqWPPGjR+5kNaRI0do166deU+SMmMyTtyC3B2lYm7u3LnD+vXrGTFiBM7OznzxxRda\nh2SdypdXe+ANG0LbtuDhAW5u3M7NJSQkhIMHDz7wbZ06dZIEbmYkiZuowYMHExERQXp6utahlIii\nKDz//PM4ODjw+eef069fPy5fvsxPP/2kdWhWLycnh7CwMAIDA3F0dGT58uXk5ORoHZbQEymnmLBB\ngwYREBDAM888U6r3adX+mzdvplOnTtjb2xv92uLBDhw4wMCBA2ndujWBgYGMGDHCPJfktRJSE7cw\nP/74I2vXriUsLKxU7zNU+yuKwm+//UalSpVo27at3s8v9C8rK4ubN2/i5OSkdSiiBKQmbmEGDx5M\nZGQkqampmsZx+vRp3nzzTdzc3Bg1ahRnz57VNB5xj6IoHD9+nDlz5pCVlXXf16tVqyYJ3MLplMTj\n4+Pp3bs3rVq1onXr1ixatEjfcQnA1tYWLy8vNm3apMn1z549S7t27fDx8eH27duEhIRw4cIF/P39\nNYlH3HPhwgXeeecdWrZsyeDBgyksLCQ7O1vrsIQGdCqnJCcnk5ycTPv27cnMzKRjx45s3LiRFi1a\nqCeVcorehISE8OOPP7J169YSv0df7X/79m2OHDkiY4VNzKuvvsry5cvx9/cnMDCQbt26ySQpC6FZ\nTXzIkCEEBQXRp08fnQMRD5aRkYGTkxOXL1+mdu3aJXpPadr/1q1bbNiwgYCAAJ0mFgnjS0lJ4fHH\nH5dJUhZIk5194uLiiI6OpuvfduqY+5dpup6ennh6epb1UlapRo0aeHt7ExoaysSJE/Vyztu3bxMW\nFkZISAh79uyhb9+++Pj4SBI3Eenp6WzcuJGrV68yZ86c+74uo0ssR2RkJJGRkWU7iVIGGRkZSseO\nHZXQ0NBir5fxtOJvVq9erXh7e5f4+Ee1/6JFi5SaNWsq/fr1U4KDg5W0tDR9hCjKKCsrS1m7dq0y\nbNgwxdbWVvHz81PWrVundVjCyHTJnTqXU/Ly8nj66afp378/M2bMKPY1Kafo1+3bt3FwcODixYvU\nrVv3H49/VPtfvnyZ6tWrl+g8wjgKCgpo3Lgxbm5uBAYGMmzYMGrVqqV1WEIDRquJK4rC2LFjeeKJ\nJ/jkk0/0Eoh4tICAALy8vHj++ecfeZyiKJQrV46vvvqKyZMnGyk6UVaZmZlSzhLGGye+f/9+VqxY\nwe7du3F3d8fd3V22FDOwgIAA1jxkmy7lz7HCs2fPpnHjxoB6w1KYBkVROHz4MC+99NJDh4tKAhe6\nkhmbZuLOnTvY29tz7ty5Yju8K4pCz549SUxMZNSoUQQGBtK+fXtpfxNw6tSpog0vbGxsCAwMZNy4\ncTSRnXDEQ8i0ews3ZswYevbsyZQpU4q9HhsbS5MmTYrGCkv7a2/Xrl2MGzeu6Bdrhw4dZCy3+EeS\nxC3UH3/8wbp160hOTiYyMpI9e/Y88nhpf+0VFBRgY2Mjk6REqcjaKRYkLS2N4OBg+vXrh6urK//7\n3//w8vLixIkTJCYmah2e1bt58ybLli3Dx8eHmzdv3vf18uXLSwIXRiGfMhN09OhRGjRowIYNGxg3\nbhyJiYmEhITw1FNPMWjQINatW6d1iFYpMzOTlStXMmjQIBo3bsyOHTt4/vnneeyxx7QOTVgxKaeY\noPz8fDIyMh44Vjg8PJz58+ezb9++h75f2t8wpk6dyuXLlwkMDGTw4MHY2tpqHZKwMFITNxOFhYXs\n3buXVatW8e6775ZqGnVubi729vYcO3YMZ2fnBx4j7W8YiqLIzUlhUFITN2F/HSvs7OzM9OnTadiw\nIeXLly/VeSpVqsTgwYOlpKJnhYWF7N+/n6CgIMaMGfPAYySBC1MkSdxI5syZw+jRo6levTo7d+7k\n2LFjzJ49W6fp1ea6ibKpURSFY8eO8dprr9G4cWMmTZpEvXr1ii3eJoSpk3KKkWRlZVG1alW99Oby\n8vJwcHDg8OHDNGrU6L6vS/uXTH5+Pj179sTLy4vAwEDatGkjvW2hKamJW5HJkyfTtGlTZs2add/X\npP3vJ/VsYQ6kJm5F/P39H7qWilBdv36dzz//HA8PD7766iutwxHCIKQnbqby8/NxcHDg119/xcXF\npdjXrLn909PT2bBhAyEhIRw8eJABAwYQGBiIr68vlSpV0jo8IR5JeuJWpEKFCgwfPpy1a9dqHYpJ\niYmJYePGjYwfP56EhISiyTmSwIWlkp64GYuMjGTmzJlER0cXe90a2r+goKDUwzOFMHXSE7cyHh4e\nJCcnc/78ea1DMYqCggJ2797N5MmTsbe35/r161qHJITmJImbsfLlyzNixAiLv8EZHR3NzJkzcXZ2\n5qWXXsLV1ZXDhw9Tr149rUMTQnNSTjFze/fuZerUqZw4caLoNUtr/48++oj09HQCAwNp3ry51uEI\nYTAyTtwKFRYW4uzszK5du2jRogVgvu2flZVFtWrVtA5DCM1ITdwKlStXjpEjR5rtNPzExEQ+/fRT\nunXrxtChQ7UORwizI0ncAtzdRNlcet/5+fl88803eHl50apVK44dO8bbb7/Nli1btA5NCLNTQesA\nRNl17dqVzMxMTp48SZs2bbQO5x+VL1+e6OhogoKC6N+/P1WqVNE6JCHMltTELcQrr7xC1apVeffd\nd02m/XNycsjNzaVGjRpahyKEWZCauBXz9/dn9erVmifv/Px8fv75Z8aPH4+9vT2hoaGaxiOEpZMk\nbiE6d+5MXl4ex48f1+T6sbGxTJ06FUdHR/7zn//Qtm1bYmJi+Ne//qVJPEJYC6mJWwgbG5ui3rgW\ncnJycHBwICoq6r4FuYQQhiM1cQty9OhRRo4cyaVLlwzW/pcuXaJJkyYGObcQ1s6oNfHt27fTvHlz\nmjZtyvvvv6/raYQeubu7G2TjgytXrvDBBx/g7u5Or169SElJ0fs1hBC60SmJFxQU8OKLL7J9+3ZO\nnz5NSEgIZ86c0XdsopRsbGwICAjQ2/nWrFlDr1696NChAxcvXuTjjz8mPj6eOnXq6O0aQoiy0SmJ\nHzp0CFdXVxo1akTFihUZNWoUmzZt0ndsQgf+/v4AeimnVKxYkdmzZ5OYmMjXX39N7969ZflXIUyM\nTjc2ExIScHZ2Lvq3k5MTBw8eLHaM7GeorXLlZOCRENZApyRekgQtNza1Y2NjQ0FBwUMTeW5uLj//\n/DMhISGEh4cTEBAge1AKYQJ06fzq1F1zdHQkPj6+6N/x8fE4OTnpciphIA9K4Lm5uUyaNAkHBwcW\nLFhAjx49OH/+vCRwIcyYTkMM8/PzadasGb/88gsODg506dKFkJAQs18K1VI8qv2//fZbvL29adCg\ngZGjEkL8E6OuJ75t2zZmzJhBQUEBEydO5PXXXy9TIEJ/bGxsuHLlSrH7FkII0yebQlix2NhYVq1a\nRUhICKdOnSI8PJwBAwZoHZYQohRkASwrdPjwYbp06UKPHj1ISkoqqm9LAhfCOkhP3MwlJiZy8uRJ\nvLy8qFBBHWwk7S+EeZJyioXKyMhg27ZtjBw5skRDkKT9hTBPUk6xINnZ2WzYsAF/f3+cnJxYvnw5\nqampWoclhDAxksRN0H//+18cHBxYsmQJ3t7eXL58mS1btlCrVi2tQxNCmBgpp5ig6Oho7OzscHBw\n0On90v5CmCepiQtA2l8Ic2UxNfHIyEitQxBWSj57ZSPtZ3ySxIX4C/nslY20n/GZZBIXQghRMpLE\nhRDCjBnsxqYQQojSK21K1mlTCH0HIYQQQjdSThFCCDMmSVwIIcyYJHEhhDBjJpvE586di5OTE+7u\n7ri7u7N9+3atQzIL27dvp3nz5jRt2pT3339f63DMTqNGjWjbti3u7u506dJF63BM2oQJE7Czs6NN\nmzZFr928eRNvb2/c3Nzw8fGRRdse4UHtp0veM9kkbmNjw0svvUR0dDTR0dH069dP65BMXkFBAS++\n+CLbt2/n9OnThISEcObMGa3DMis2NjZERkYSHR3NoUOHtA7HpI0fP/6+JLNgwQK8vb05f/48ffr0\nYcGCBRpFZ/oe1H665D2TTeIgo1xK69ChQ7i6utKoUSMqVqzIqFGj2LRpk9ZhmR353JWMh4fHfStr\nhoWFMXbsWADGjh3Lxo0btQjNLDyo/aD0nz+TTuKLFy+mXbt2TJw4Uf4sK4GEhIRimyM7OTmRkJCg\nYUTmx8bGhr59+9KpUye++eYbrcMxO9euXcPOzg4AOzs7rl27pnFE5qe0eU/TJO7t7U2bNm3ue4SF\nhfHvf/+by5cvc+zYMezt7Xn55Ze1DNUsyCSrstu/fz/R0dFs27aNpUuXsnfvXq1DMls2NjbymSwl\nXfKeQSb7lNTOnTtLdNxzzz3HoEGDDByN+XN0dCQ+Pr7o3/Hx8Tg5OWkYkfmxt7cHoG7dugwdOpRD\nhw7h4eGhcVTmw87OjuTkZOrXr09SUhL16tXTOiSz8tf2KmneM9lySlJSUtHz0NDQYndwxYN16tSJ\nCxcuEBcXR25uLqtXr8bPz0/rsMxGVlYWGRkZANy+fZuff/5ZPnel5OfnR3BwMADBwcEMGTJE44jM\niy55T9Oe+KO89tprHDt2DBsbGxo3bsxXX32ldUgmr0KFCixZsgRfX18KCgqYOHEiLVq00Doss3Ht\n2jWGDh0KQH5+PmPGjMHHx0fjqExXYGAge/bsISUlBWdnZ9555x1mz56Nv78/3377LY0aNWLNmjVa\nh2my/t5+b7/9NpGRkaXOewZZAEsIIYRxmGw5RQghxD+TJC6EEGZMkrgQQpgxSeJCCGHGJIkLIYQZ\nkyQuhBBm7P8BOWeXyx1q4/kAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "angle=20*pi/180.\n", "dx,dy=3,1\n", "\n", "plot(x1,y1,'o',color='k')\n", "plot(x2,y2,'o',color='k')\n", "plot([0,-tan(angle)*12],[0,12],color='k')\n", "sa,ca=sin(angle),cos(angle)\n", "rdx=-sa*dy\n", "rdy=ca*dy\n", "plot([-sa*y1+rdx,x1+rdx],[ca*y1-sa*x1+rdy,y1+rdy],'--',color='k')\n", "plot([-sa*y1-rdx,x1-rdx],[ca*y1-sa*x1-rdy,y1-rdy],'--',color='k')\n", "#plot([x1,x1],[0,y1],'--',color='k')\n", "plot([-sa*y2+rdx,x2+rdx],[ca*y2-sa*x2+rdy,y2+rdy],'--',color='k')\n", "plot([-sa*y2-rdx,x2-rdx],[ca*y2-sa*x2-rdy,y2-rdy],'--',color='k')\n", "#plot([x2,x2],[0,y2],'--',color='k')\n", "axhline(0,color='k')\n", "axvline(0,color='k')\n", "ellipse([x1,y1],[dx,dy],ang=angle,color='red')\n", "ellipse([x2,y2],[dx,dy],ang=angle,color='blue')\n", "\n", "xlim(-6,15)\n", "ylim(-1,12)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.6" } }, "nbformat": 4, "nbformat_minor": 2 }