{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "toc": "true"
   },
   "source": [
    "<h1>Table of Contents<span class=\"tocSkip\"></span></h1>\n",
    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#非線形最小2乗法の原理\" data-toc-modified-id=\"非線形最小2乗法の原理-1\"><span class=\"toc-item-num\">1&nbsp;&nbsp;</span>非線形最小2乗法の原理</a></span></li><li><span><a href=\"#python-code\" data-toc-modified-id=\"python-code-2\"><span class=\"toc-item-num\">2&nbsp;&nbsp;</span>python code</a></span></li><li><span><a href=\"#具体的な手順\" data-toc-modified-id=\"具体的な手順-3\"><span class=\"toc-item-num\">3&nbsp;&nbsp;</span>具体的な手順</a></span></li><li><span><a href=\"#pythonによる解法の指針\" data-toc-modified-id=\"pythonによる解法の指針-4\"><span class=\"toc-item-num\">4&nbsp;&nbsp;</span>pythonによる解法の指針</a></span></li><li><span><a href=\"#Gauss-Newton法に関するメモ\" data-toc-modified-id=\"Gauss-Newton法に関するメモ-5\"><span class=\"toc-item-num\">5&nbsp;&nbsp;</span>Gauss-Newton法に関するメモ</a></span></li><li><span><a href=\"#課題\" data-toc-modified-id=\"課題-6\"><span class=\"toc-item-num\">6&nbsp;&nbsp;</span>課題</a></span><ul class=\"toc-item\"><li><span><a href=\"#Gaussian(正規分布)へのフィット\" data-toc-modified-id=\"Gaussian(正規分布)へのフィット-6.1\"><span class=\"toc-item-num\">6.1&nbsp;&nbsp;</span>Gaussian(正規分布)へのフィット</a></span></li></ul></li></ul></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<br />\n",
    "\n",
    "<div style=\"text-align: center;\">\n",
    "<font size=\"7\">非線形最小2乗法(NonLinearFit)</font>\n",
    "</div>\n",
    "<br />\n",
    "<div style=\"text-align: right;\">\n",
    "<font size=\"4\">file:/Users/bob/Github/TeamNishitani/jupyter_num_calc/nonlinearfit</font>\n",
    "<br />\n",
    "<font size=\"4\">https://github.com/daddygongon/jupyter_num_calc/tree/master/notebooks_python</font>\n",
    "<br />\n",
    "<font size=\"4\">cc by Shigeto R. Nishitani 2017-8 </font>\n",
    "</div>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 非線形最小2乗法の原理\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "前章では，データに近似的にフィットする最小二乗法を紹介した．ここでは，フィット式が多項式のような線形関係にない関数の最小二乗法を紹介する．図のようなデータにフィットする場合を考えよう．\n",
    "\n",
    "![image.png](attachment:image.png)\n",
    "![C9_NonLinearFitplot2d1.png](figs/C9_NonLinearFitplot2d1.png)\n",
    "\n",
    "このデータにあてはめるのはローレンツ関数，\n",
    "\n",
    "$$\n",
    "F \\left(x;\\mathbf{a} \\right)=a _{1}+ \\frac{a _{2}}{a _{3}+\\left(x -a _{4}\\right)^{2}}\n",
    "$$\n",
    "である．この関数の特徴は，今まで見てきた関数と違いパラメータが線形関係になっていない．誤差関数は，いままでと同様に\n",
    "\n",
    "$$\n",
    "\\chi ^{2}\\left(\\mathbf{a} \\right)={\\sum_i^N }d _{i }^{2}=\\sum_i^N \\left(F \\left(x _{i };\\mathbf{a} \\right)-y _{i }\\right)^{2}\n",
    "$$\n",
    "で，$\\mathbf{a}=\\{a_0, a_1,..\\}$をパラメータとして変えた時に最小となる値を求める点もかわらない．しかし，線形の最小二乗法のように微分しても一元の方程式にならず，連立方程式を単に解くだけでは求まらない．\n",
    "\n",
    "そこで図のような2次関数の最小値を求める場合を考える．最小値の点$a_0$のまわりで，Taylor展開すると，$\\mathbf{d,D}$をそれぞれの係数とすると，\n",
    "\n",
    "$$\n",
    "\\chi^2 \\left( \\mathbf{a} \\right)= \\chi^2 \\left( \\mathbf{a_0}  \\right) - \\mathbf{d} \\left(\\mathbf{a}-\\mathbf{a_0} \\right) +\\frac{1}{2} \\mathbf{D} \\left(\\mathbf{a}-\\mathbf{a_0} \\right)^{2}\n",
    "$$\n",
    "である．最小の点$a_0$は，微分が$0$になるので，\n",
    "\n",
    "$$\n",
    "\\mathbf{a _{0}}=\\mathbf{a} + \\mathbf{D} ^{-1} \\times (-\\mathbf{d})\n",
    "$$\n",
    "と予測される．\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "図を参照して上の式を導け．またその意味を考察せよ．\n",
    "![image.png](attachment:image.png)\n",
    "![non_linear_fit_graph](figs/non_linear_fit_graph.png)\n",
    "\n",
    "現実には高次項の影響で計算通りにはいかず，単に最小値の近似値を求めるだけである．これは，$ \\chi \\left(\\mathbf{a} \\right)  ^{2}$の微分関数の解をNewton法で求める操作に対応する．つまり，この操作を何度も繰り返せばいずれ解がある精度で求まるはず．\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# python code\n",
    "\n",
    "幾つもの関数が用意されている．\n",
    "* curve_fit\n",
    "* curve_fit with bounds\n",
    "* least square fit\n",
    "\n",
    "全部を理解する必要はないが，manualを見ながら使うことができるといいね．\n",
    "boundsとかparamsの初期値が重要．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0.96841251 10.29487687  1.02875755  4.00673941]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.optimize import curve_fit\n",
    "\n",
    "def func(t, a1, a2, a3, a4):\n",
    "    return a1+a2/(a3+(t-a4)**2)\n",
    "\n",
    "xdata = np.linspace(0, 10, 100)\n",
    "y = func(xdata, 1, 10, 1, 4)\n",
    "y_noise = 0.2 * np.random.normal(size=xdata.size)\n",
    "ydata = y + y_noise\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata)\n",
    "print(popt)\n",
    "plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 10.98942083  40.38847822 380.43816378  90.64593936 127.89666184]\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.optimize import curve_fit\n",
    "\n",
    "def func(t, a1, a2, a3, a4, a5):\n",
    "    return a1+a2*1000/(a3+(t-a4)**2)+a2*1000/(a3+(t-a5)**2)\n",
    "\n",
    "xdata = np.linspace(0, 256, 256)\n",
    "y = func(xdata, 10, 40, 380, 90, 128)\n",
    "y_noise = 10 * np.random.normal(size=xdata.size)\n",
    "ydata = y + y_noise\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata, bounds=(0, [15,50,400,100,150]))\n",
    "plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')\n",
    "\n",
    "print(popt)\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 10.98940239  40.38851397 380.43848891  90.64591573 127.89666248]\n"
     ]
    }
   ],
   "source": [
    "import scipy.optimize\n",
    "from numpy import *\n",
    "\n",
    "params0=[15,50,400,100,150]\n",
    "\n",
    "def fit_func(params,t,y):\n",
    "    a1,a2,a3,a4,a5=params\n",
    "    residual=y-(a1+a2*1000/(a3+(t-a4)**2)+a2*1000/(a3+(t-a5)**2))\n",
    "    return residual\n",
    "\n",
    "params, cov=scipy.optimize.leastsq(fit_func,params0,args=(xdata, ydata))\n",
    "print(params)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "?curve_fit"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 具体的な手順\n",
    "\n",
    "パラメータの初期値を\n",
    "\n",
    "$$\n",
    "\\boldsymbol{a}_0 + \\Delta \\boldsymbol{a} = \\left\\{a_{{0}}+\\Delta\\,a,\\,b_{{0}}+\\Delta\\,b,\\,c_{{0}}+\\Delta\\,c,\\,d_{{0}}+\\Delta\\,d\\right\\}\n",
    "$$\n",
    "とする．このとき関数$f$を真値$a_0, b_0, c_0, d_0$のまわりでテイラー展開し，高次項を無視すると\n",
    "\n",
    "$$\n",
    "\\Delta\\,f=f \\left( a_{{0}}+\\Delta\\,a_{{1}},b_{{0}}+\\Delta\\,b_{{1}},c_{{0}}+\\Delta\\,c_{{1}},d_{{0}}+\\Delta\\,d_{{1}} \\right) -f \\left( a_{{0}},b_{{0}},c_{{0}},d_{{0}} \\right)\n",
    "$$\n",
    "\n",
    "\n",
    "$$\n",
    "=\\left(\\frac{\\partial }{\\partial a }f \\right)_{0}\\Delta a _{1}+\\left(\\frac{\\partial }{\\partial b }f \\right)_{0}\\Delta b _{1}+\\left(\\frac{\\partial }{\\partial c }f \\right)_{0}\\Delta c _{1}+\\left(\\frac{\\partial }{\\partial d }f \\right)_{0}\\Delta d _{1}\n",
    "$$\n",
    "となる．\n",
    "\n",
    "課題でつくったデータはt = 1からt = 256までの時刻に対応したデータ点$f_{1},\\,f_{2},\\,\\cdots  f_{256}$とする．各測定値とモデル関数から予想される値との差$\\Delta f_1,\\Delta f_2,\\cdots,\\Delta f_{256}$は，\n",
    "$$\n",
    "\\left(\\begin{array}{c}\\Delta f _{1} \\\\\\Delta f _{2} \\\\ \\vdots \\\\\\Delta f _{256} \\\\\\end{array}\\right)=J \\left(\\begin{array}{c}\\Delta a _{1} \\\\\\Delta b _{1} \\\\\\Delta c _{1} \\\\\\Delta d _{1} \\\\\\end{array}\\right)\n",
    "$$\n",
    "となる．ここで$J$はヤコビ行列と呼ばれる行列で，4列256行\n",
    "$$\n",
    "J =\\left(\\begin{array}{cccc}\\left(\\frac{\\partial }{\\partial a }f \\right)_{1} & \\left(\\frac{\\partial }{\\partial b }f \\right)_{1} & \\left(\\frac{\\partial }{\\partial c }f \\right)_{1} & \\left(\\frac{\\partial }{\\partial d }f \\right)_{1} \\\\ \\vdots & \\vdots  &  \\vdots & \\vdots  \\\\\\left(\\frac{\\partial }{\\partial a }f \\right)_{256} & \\left(\\frac{\\partial }{\\partial b }f \\right)_{256} & \\left(\\frac{\\partial }{\\partial c }f \\right)_{256} & \\left(\\frac{\\partial }{\\partial d }f \\right)_{256} \\\\\\end{array}\\right)\n",
    "$$\n",
    "である．このような矩形行列の逆行列は転置行列$J^T$を用いて，`\n",
    "$$\n",
    "J ^{-1}=\\left(J ^{T }J \\right)^{-1}J ^{T }\n",
    "$$\n",
    "と表わされる．したがって，真値からのずれは\n",
    "$$\n",
    "\\left(\\begin{array}{c}\\Delta a_2 \\\\\\Delta b_2 \\\\\\Delta c_2 \\\\\\Delta d_2 \\\\\\end{array}\\right)\n",
    "=\\left(J ^{T }J \\right)^{-1}J ^{T }\n",
    "\\left(\\begin{array}{c}\\Delta f _{1} \\\\\\Delta f _{2} \\\\ \\vdots \\\\\\Delta f _{256} \\\\\\end{array}\\right)\n",
    "$$\n",
    "で求められる．理想的には$(\\Delta a_2,\\,\\Delta b_2,\\,\\Delta c_2,\\,\\Delta d_2)$は$(\\Delta a,\\,\\Delta b,\\,\\Delta c,\\,\\Delta d)$に一致するはずだが，測定誤差と高次項のために一致しない．初期値に比べ，より真値に近づくだけ．そこで，新たに得られたパラメータの組を新たな初期値に用いて，より良いパラメータに近付けていくという操作を繰り返す．新たに得られたパラメータと前のパラメータとの差がある誤差以下になったところで計算を打ち切り，フィッティングの終了となる．\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# pythonによる解法の指針\n",
    "\n",
    "まずは，お任せでcurve_fitを試しましょう．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.optimize import curve_fit\n",
    "\n",
    "def func(t, a1, a2, a3, a4):\n",
    "    return a1+a2/(a3+(t-a4)**2)\n",
    "\n",
    "ndata = 8\n",
    "nparam = 4\n",
    "xdata = np.linspace(1, 8, ndata)\n",
    "y = func(xdata, 1, 10, 1, 4)\n",
    "#y = func(xdata, 5,-2,0,7)\n",
    "ydata = y\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata)\n",
    "plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 5.4714478  -2.5260854   0.4296826   7.52394083]\n"
     ]
    }
   ],
   "source": [
    "print(popt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "うまくいってません．curve_fitの失敗の原因は，ほとんどが初期値の取り方のせいです．\n",
    "\n",
    "では，手計算でどうなるかを観て行きましょう．まずは初期値として適当な値を取ります．さらに，numpyと線形代数計算のためにscipy.linalg as linalgを呼びだしておきます．サンプルデータydataと初期値で予測される関数を同時にplotして観ます．\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "guess1 = [1, 8, 1, 4.5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAD4CAYAAAD1jb0+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAs9klEQVR4nO3dd3hU1dYG8HcnIRCa9CZVUJQmJQKCgIooKiIqYqF3yL1ewfKJFAsCduVeNXSQoqAg6kW9CEoJoKChSFURpISW0CFASFnfHysxAikzycwpM+/vefIAyZw5iySz5py9117biAiIiMh9QuwOgIiI8oYJnIjIpZjAiYhcigmciMilmMCJiFwqzMqTlSlTRqpXr27lKYmIXG/9+vVHRaTs5Z+3NIFXr14dsbGxVp6SiMj1jDF7s/o8h1CIiFyKCZyIyKWYwImIXIoJnIjIpZjAiYhcigmciMilmMCJiFyKCZxcIy0NmDIFOHnS7kiInIEJnFxj0SJgwADgjTfsjoTIGZjAyTWio/XPqVOBpCR7YyFyAiZwcoWdO4ElS4DbbwcSEoDPPrM7IiL7MYGTK0ycCISFAXPmANdem3k1ThTMmMDJ8c6dA2bMAB56CKhYERg8GFizBvjlF7sjI7IXEzg53iefACdOAFFR+u9evYCICGDCBFvDIrIdEzg5XnQ0ULcu0KqV/rtkSeCxx3Q45dQpe2MjshMTODnazz8DsbF69W1M5uejooDERGD2bPtiI7IbEzg5WnQ0ULQo0K3bpZ9v0gRo2lS/LmJPbER2YwInxzp2DJg3D+jeHShe/MqvR0UBO3YAK1daHxuREzCBk2N9+CFw4YJWnWSlSxegVCmWFFLwYgInR0pL0yqTVq2A+vWzfkxEBNCnD/D558DBg9bGR+QETODkSEuXArt2ZZYOZmfQICAlRZfXEwUbJnBypOhooFw54MEHc35czZpA+/bApElAcrI1sRE5BRM4Oc7evcBXXwH9+wPh4bk/PipKh1AWLfJ/bEROwgROjjN5sv45YIBnj7/nHqBqVU5mUvBhAidHSUrS8ez77tOk7InQUB0L//574Ndf/RsfkZMwgZOjLFwIxMfnPnl5ub59gQIFtGshUbDINYEbY6YbY+KNMVv/9rlSxpilxpid6X+W9G+YFCyio4FatYA77vDuuHLlgIcf1trxxES/hEbkOJ5cgX8IoP1lnxsG4HsRuRbA9+n/JsqXzZuB1at14U5IHu4No6K0udXcub6PjciJcn2ZiEgMgOOXffp+ADPT/z4TQCffhkXBaMIEoFAhbRebFy1aAA0aAB98wP4oFBzyOgZeXkQOAUD6n+Wye6AxZoAxJtYYE5uQkJDH01GgO31aOws+9pguj88LY/QqfNMmYN06n4ZH5Eh+n8QUkckiEikikWXLlvX36cilZs/WsWtvJy8v17UrUKwYSwopOOQ1gR8xxlQEgPQ/430XEgUbEU24N90EREbm77mKFgV69tRdfI4e9U18RE6V1wT+XwA90//eE8CXvgmHglFMDLB9e/6vvjMMHgxcvAhMn+6b5yNyKk/KCOcC+BFAbWNMnDGmL4DXALQzxuwE0C7930R5Eh2t26Q98ohvnq9OHeDWW7UmPDXVN89J5ERhuT1ARB7L5kttfRwLBaFDh3TxzpNPantYX4mK0n7h336rS+2JAhFXYpKtpk7VdrCDBvn2eTt1AipU4GQmBTYmcLJNSoq2gb3rLl196UsFCmgzrG++Af7807fPTeQUTOBkm0WLgAMHfDd5ebn+/XVF56RJ/nl+IrsxgZNtoqO14+C99/rn+StXBu6/H5g2TffWJAo0TOBki99+A777Dhg4UNvB+ktUlNaDL1jgv3MQ2YUJnGwxcaKOU/ft69/z3H47ULs2JzMpMDGBk+USE4EZM4DOnYHy5f17LmN0Yc+PPwIbN/r3XERWYwIny82bp21f/TV5ebmePbXGfMIEa85HZBUmcLKUiLZ7rV8faNnSmnOWKKFNrj76CDh50ppzElmBCZws9dNPOpQRFaXDG1YZPBg4dw6YNcu6cxL5GxM4WSo6Wtu9du1q7XkbNwaaN9fzc7MHChRM4GSZo0e1zWuPHprErRYVpeWLy5dbf24if2ACJ8vMmAEkJelwhh0efhgoXZolhRQ4mMDJEmlpWgXSpg1Qt649MRQqpHXnX3yhS/iJ3I4JnCzx7bfaVMqq0sHsDByobyZTptgbB5EvMIGTJaKjtb1rp072xnHNNcDddwOTJwPJyfbGQpRfTODkd3v2AF9/rd0Bw8PtjkbvAg4dAr7kRoDkckzg5HeTJmlb1wED7I5EtW8PVK/OyUxyPyZw8qukJN11p2NHbe/qBKGhugPQ8uXAjh12R0OUd0zg5FcLFmj9t92Tl5fr00eHc9gfhdyMCZz8KjoauO46bevqJGXL6qbHM2cCZ8/aHQ1R3jCBk99s2gT88IMu3Alx4G9aVBRw+jTw8cd2R0KUNw58WVGgmDBB27j27Gl3JFlr3hxo2FC7I7I/CrkREzj5xalTwJw5wOOPAyVL2h1N1ozRq/DNm3XDByK3YQInv5g1S9u3Om3y8nKPPw4UL86SQnInJnDyORFNiM2aaRtXJytSBOjVC5g/H4iPtzsaIu8wgZPPrVgB/Pqr86++MwweDFy8CEyfbnckRN5hAiefi44GSpXSMj03uP56LXOcOBFITbU7GiLPMYGTTx08CHz+ubZtLVTI7mg8FxUF7N0L/O9/dkdC5DkmcPKpKVO0XevAgXZH4p2OHYFKlTiZSe7CBE4+k5ysbVrbtwdq1rQ7Gu8UKKDNthYvBnbtsjsaIs8wgZPP/Pe/OoTilsnLy/XvrytGJ02yOxIizzCBk89ERwPVqumGCW5UqRLwwAPAtGnA+fN2R0OUu3wlcGPMUGPMNmPMVmPMXGOMi6atyJd27ACWLdM2raGhdkeTd1FRwPHjWhdO5HR5TuDGmKsB/AtApIjUAxAK4FFfBUbuMnGitmft08fuSPLn1lu1rJCTmeQG+R1CCQMQYYwJA1AYwMH8h0Ruk5gIfPgh8PDDQLlydkeTPxn9UdatA9avtzsaopzlOYGLyAEAbwHYB+AQgFMisuTyxxljBhhjYo0xsQkJCXmPlBzr44+1LatbJy8v16MHULgwN3sg58vPEEpJAPcDqAGgEoAixphulz9ORCaLSKSIRJYtWzbvkZIjZfQ9ufFG4Oab7Y7GN666CujWTd+YTpywOxqi7OVnCOUOAH+KSIKIJANYCKCFb8Iit1i7VjduiIrS4YdAMXiwVqLMnGl3JETZy08C3weguTGmsDHGAGgLgFvEBpnoaG3H+vjjdkfiWw0bAi1a6P8vLc3uaIiylp8x8HUAFgDYAGBL+nNN9lFc5AIJCcCnn+qOO0WL2h2N70VFATt3ankkkRPlqwpFRF4UketFpJ6IdBeRJF8FRs43fbq2YR082O5I/KNzZ6BMGZYUknNxJSblSWqq1n7fdhtwww12R+MfBQsC/foBX34JxMXZHQ3RlZjAKU8WLwb27Amc0sHsDByolTaTOThIDsQETnkSHQ1UrAjcf7/dkfhX9erAvfdqm9yLF+2OhuhSTODktd27deODAQO0DWugi4oCDh8GvvjC7kiILsUETl6bNEnbrvbvb3ck1rjrLqBGDU5mkvMwgZNXLlzQdqudOgFXX213NNYICdFKm5UrgW3b7I6GKFOY3QGQu8yfDxw7ZtPk5eHDwB13aL9Xiz2VBnQFUKQpgKu8OLBNG12TH0jLVMkxmMDJK9HRQO3aWj5ouVdeAX77DejVy/KEGArg9xXAn3uArncB4Z6M/R84AMybp/HedZdf46PgxAROHtuwQXuf/PvfNlxQ7t6ttXz9+tnWJjBiHdCnOZDUTDeuyNXFi/puN3w4cOedvAonn+MYOHlswgRts9qjhw0nf+klICwMGDXKhpOrpk2Bxo31LkTEgwPCw4GXX9Z3vs8+83t8FHyYwMkjJ08CH30EdO0KlChh8cm3bgXmzAGeeEI3rrRJxmYPW7YAa9Z4eFDXrkCdOsDIkUBKil/jo+DDBE4emTlT26vaMnk5ahRQrBjw3HM2nPxSjz2m/cI9LikMDQXGjNGx+9mz/RobBR8mcMpVxqYNN9+sbVYttW6drqB55hmgdGmLT36lwoWB3r2BBQuAI0c8PKhTJ+Cmm3QYKIn93sh3mMApV8uWAb//btPV94gRQNmywJAhNpw8a4MGAcnJWg/vEWOAceOAfft0FRSRjzCBU66io7WtaufOFp/4++/1Y/hwHUJxiNq1tRx94kTtyuiRtm219nLMGODsWb/GR8GDCZxyFBen7VT79gUKFbLwxCKauKtU8bBmz1pRUcD+/cDXX3t4QMZVeEKC1mES+QATOOVoyhTdUmzgQItP/OWXwE8/6bixpe8cnrnvPm0l4FV/lObNtX3jm2/aspqUAg8TOGUrOVnXztxzjzZzskxqqpbd1a5tU9F57sLC9E3t22+BP/7w4sAxY4DTp4E33vBbbBQ8mMApW198oe1HLJ+8/Phj7Rr1yiuaKR2qXz8Nb+JELw6qV09rw//zH+DQIb/FRsHBiEdLynwjMjJSYmNjLTsf5c9ttwF79+rGvqGhFp304kXg+ut1tVBsrLYCdLBHHgGWLtW2JxERHh60a5f+H/v3Z49a8ogxZr2IRF7+eWe/Osg227cDK1bo/KFlyRsApk4F/vxTJ/wcnrwBvTs5cQL45BMvDqpZU5P3lCna44Uoj5z/CiFbTJigm/r26WPhSRMTddikVSvXdO9r3VpXynt9IT1ypG5n9OKLfomLggMTOF3h7FldOt+li9Z/W+b993XQ/dVXXdO5L6M/ys8/64fHKlXS3i4ffaS9XojygAmcrvDRR8CZMxZPXp48Cbz+uu4g3LKlhSfOv+7dgSJF8tDl9rnndIHSyJF+iYsCHxM4XSKj70mjRkCzZhae+K23dDB5zBgLT+obxYtrEp8718vy7lKlgGef1Zr3dev8Fh8FLiZwusQPPwCbN+vVt2WjGEeOAOPHA48+akO3LN8YPFj3C/3wQy8PHDJEe70MH+6HqCjQMYHTJaKjtV3qY49ZeNKxYzX7jR5t4Ul9q0ED4JZbdBglLc2LA4sW1YZdy5YB333nt/goMDGB01/i43XT4l69dEzXEnv36kqYPn2Aa6+16KT+ERWlqzK9zsODBmnPl+HDPdzqh0gxgdNfpk3T5fODB1t40pde0nrvF16w8KT+8eCDQLlyeSgpLFhQvw8//6zLX4k8xAROALT9yMSJ2vW0dm2LTrpjBzBrFvCPfwCVK1t0Uv8pWFCX1y9apK2/vdKjh37jR470okctBTsmcAIAfPONJh1LSwdHjdItboYNs/Ck/jVggP45ebKXB4aF6SKm7du1jpPIA0zgBEBv+ytVAjp2tOiEsbG6U/vTT2sVRoCoVg3o0EFXyV+86OXBDz2k296/+GIeDqZgxARO2LULWLxY26Na1vxvxAjd4/Kppyw6oXWionRCeOFCLw8MCdEeMHv26DsAUS7ylcCNMSWMMQuMMb8aY3YYY272VWBknYkTNXH362fRCVesAJYsAZ5/XlfBBJh27bRfVZ4aDd55pzZYeeUV7Q1DlIP8XoH/G8BiEbkewI0AduQ/JLLS+fPA9OnAAw/oEIrfZWyVdvXVNu2S7H8hIVrJs2oVsGWLlwdnbL125Ajw3nt+iY8CR54TuDGmOIDWAKYBgIhcFJGTPoqLLPLJJ7r827Jc+tVXwI8/atmgxw203adXL90JLk9X4S1bak+Y11/X9gJE2cjPFfg1ABIAzDDGbDTGTDXGXLH8wxgzwBgTa4yJTUhIyMfpyNdOnNCqtQYNgDZtLDhhWpqOfdeqBfTubcEJ7VO6tPZHmToV2LgxD08wdqw2+HrrLV+HRgEkPwk8DEBjABNEpBGARABX1IOJyGQRiRSRyLIBVG0QCP75T71TnzbNor4n8+bpmMLo0doLO8C99poW2HTrpp0CvHLjjdobZvx4bbFLlIX8JPA4AHEiktFGbQE0oZMLfPqpbj05ahQQecVGTX6QnKzDJg0a6D5kQaBUKZ1f2L49jx1jR48GkpJ0TJwoC3lO4CJyGMB+Y0zGur22ALb7JCryq0OHdJKtaVMLm+BNn671imPHumKrNF9p316/1++8A6xc6eXB116rPWImTtTSQqLL5GtTY2NMQwBTAYQD2A2gt4hkO+vCTY3tJ6LzYytW6NisJcvmz5/Xce/q1YHVq12z246vJCZql9zkZG3V61XlZFycfu8efTQPvWopUPhlU2MR2ZQ+vt1ARDrllLzJGSZPBv73P+CNNyzsefLBB8DBg67aKs2XihQBZs8G9u/X9t9eqVxZJytmz9axGKK/CZ57WcIff+jCx3btLCwbPHVKE/ddd+kClSDVvLmuW5oxQzfg8cqwYfouMGqUX2Ij92ICDxIpKdrwLjxch6MtG4Z+5x0tNB871qITOtcLL+hWdf3761J7j5Upoz1jFi70cudkCnRM4EHizTd1/cwHH1jYuTUhQRN4585AkyYWndS5wsN1JOT0ae1a6NX009ChWlw+YoTf4iP3YQIPAps2aYO7Ll0s3irt1VeBc+e0rwcBAOrW1arAL7/0ck6yeHEtGVq6FFi+3F/hkcvkqwrFW6xCsd6FC1rnffy4rqEpXdqiE+/fr2Vwjz+uYzb0l7Q04PbbgQ0btCqlenUPDzx/Xr+nVaro7tNBOCEcrPxShULON2oUsG2brra0LHkDughFRLcKo0uEhAAzZ+rfe/b0YhPkiAi9lVq7VnvKUNBjAg9gK1cCb7+te+befbeFJ/79dy23GDwYqFrVwhO7R7VqwH/+A8TEAO++68WBvXrpVfiIEV5kfgpUTOAB6vRpvbq75hqdwLTUqFHais+yZZ7u1LMncP/9+m3autXDgwoU0LubLVuAuXP9Gh85HxN4gBo6VIehZ88Giha18MQbN2qjlaFDdYt2ypYxurCqRAntXOjxLmpdumizqxde0OWdFLSYwAPQl1/qvOGwYcDNVu+RNGIEULKk1i1TrsqV0yS+aRPw8sseHhQSonX1u3fr5AYFLVahBJj4eKBePd3wZt06rT22zKpVutry9deB//s/C0/sfn366MTmqlVAixYeHCACtGqlSXzXroDeHINYhRIURHSByKlTOnRiafLO2CqtYkXt3UFeGT9e53t79ADOnvXggIyt1w4dAt5/39/hkUMxgQeQmTN1+GTcOL0Kt9TixdppcNQooHBhi0/ufsWL68Ke3buBZ5/18KDWrbVf7Wuv6bs2BR0m8ACxZw/wr3/pa9rrjnf5lZamV981agB9+1p88sDRpo02G5s4UTtGemTsWF2l9fbbfo2NnIkJPACkpWl5MKBX4aGhFgcwf77Owo0ebfG4TeAZM0bvnvr2BY4d8+CAxo2Bhx/WnjNedciiQMAEHgDGj9dFO//+txfLsn0lJUWHTerVs7jRSmAqVEjnL44e1Za/HtUYvPKKLrN/9VW/x0fOwgTuctu26ehFx46ZV+GW+vBDYOdOvXS0/NI/MDVsqB0IPv3Uw7U6tWvrDz86Gti3z7/BkaOwjNDFLl7UjQLi4nQln+XrZi5c0GXdV1+tvWrZXMlnUlJ0PmPHDl10mWsL4H379GfRvTswdaolMZJ1WEYYgEaP1oWPU6bYtOhxwgR99xg3jsnbx8LCgFmz9E26Tx8P2p5Uraq9Z2bMAH77zZIYyX5M4C61dq0Oefbqpf00LHfmjCbuO+7Q3qjkc7VqaXHJ0qX6Xpmr4cN1Qc8LL/g9NnIGJnAXSkzUO+UqVXTi0hbvvqszbdwqza8GDtROks8+68GFdbly2oPm00+12TgFPCZwF3r2WV09PXOmLgCx3NGjwFtvAQ88ADRtakMAwcMYbXcSEaGrNFNScjngmWe0Fw23XgsKTOAu8+23ejs9dKgu/LDF66/rem9ulWaJihX1Z/7TTx5UCl51lXYxW7xYm41TQGMVioscP67l1qVKAbGxWjNsuQMHdHC2S5fMbWXIEl276ujI2rW57BF97pz+jK65RrtjcYLZ9ViFEgCionSj99mzbUregF51p6ZyqzQbvP8+UL480K2brtvJVuHCOpG5Zo0Xa/LJjZjAXWLePOCTTzRvNmpkUxB//KEDsgMGaN8TslTJklol+OuvHmx21KePXoEPH86t1wIYE7gLHDigJb7NmwPPPWdjIC++qFt6jRxpYxDBrV077dY7fjywbFkODwwP14UCv/yivWooIHEM3OFEtGPo6tXaL+raa20KZPNmXeP93HPsuWGzc+f0Luz8ef2xlCiRzQNTU/VnlpSkPRcKFLAwSvIljoG71IQJwJIlWrVnW/IG9Kq7eHHutOMAhQvrPMjBg8CTT+bwwNBQrdPfuZMTzgGKCdzBfv9dy3rbtwcGDbIxkB9+ABYt0uRdsqSNgVCGpk211HvWLGDhwhweeN99Ovb28svau4YCChO4Q6Wk6GrLQoV03tC2SrCMrdLKlcvlco+sNnKklhMOGAAcPpzNgzK2XouL026FFFCYwB3qtdd04caECUClSjYGsnSpNhsfORIoUsTGQOhyBQroUEpiItC/fw69w2+7TXvWjBsHnD5taYzkX0zgDrR+vd7xPvYY8MgjNgaScfVdrZpe5pHj3HCDvtl/9ZXeqWVr3Djd4ufddy2Ljfwv3wncGBNqjNlojPnKFwEFu/PndeikXDnggw9sDmbhwsx3k4IFbQ6GsvPEE9oQcuhQ3RQ5SzfdBDz4oLY3PHrU0vjIf3xxBf4kgB0+eB6CTkzt2KELNmydL0xJ0WGTG27QpX/kWCEh+vsSEgL07KnVg1l65RUdb3ntNUvjI//JVwI3xlQGcC8AbgHiA8uX6x3uP/4B3HmnzcHMmaNL/rhVmitUrapL7VevzmGD+jp19Pbu/fd1UpNcL18LeYwxCwC8CqAYgGdEpEMWjxkAYAAAVK1atcnevXvzfL5AduoUUL++Vp1s3GjzfGFSEnDddTqO89NPbIbkEiJA5846Hv7zz0CDBlk8aM8e/dn27g1MmmR1iJRHPl/IY4zpACBeRNbn9DgRmSwikSISWbZs2byeLuA9+aQuzJg92wHFHpMm6R6L3CrNVYzRH13JknqhnZSUxYOqV9ddIqZN0wU+5Gr5GUJpCaCjMWYPgHkAbjfGzPFJVEHm8891odzw4UCzZjYHc/asrt679VYtPSNXKVNG9zTevFlb12RpxAidlM72AeQWeU7gIvK8iFQWkeoAHgWwTEQ42+Wlw4e1Qq9xY2DUKLujge7RFh+v/U549e1KHToA/foBb7yhY+JXqFBBb/nmztVmV+RarAO3kYgm7zNndOjE9l5Dx48Db74JdOyoy6/Jtd55R0dLevTQ368rPPusdsFiZ0lX80kCF5EVWU1gUs6mT9cWI6+9pgUCtnvjDV2pN2aM3ZFQPhUrpn1S9uwBnn46iweULKm9bb76Sjd+IFdiO1mb7N4N3Hijrq/47jut4bXVoUNAzZq62GMOpzICxXPP6fvyokU6tHKJxET9mdeuDaxYwSEzB2M7WQdJTQV69dKk/eGHDkjegF51JyfrqksKGKNHazlhv35ZLMAsUkSHUGJitGcxuY4TUkfQeecd3Wv2vfd0AYbtdu8GJk/WV3nNmnZHQz5UsKDOrxw/ri2Jr7jhHjBAB8u59ZorMYFbbPNmveh54AGt1XWEl14CwsI4oRWgGjTQVfSffZbF6Fh4uP78N2zIpbE4ORHHwC2UlKSN+I8cAbZsARyxrmnrVn2FP/OMDpZSQEpN1dL+zZv1R16lymVfrF9fr8C3btU3c3IUjoE7wEsv6QtoyhSHJO/vvtMdW4oVs3m3ZPK30FBdLJYx/3LJaEnG1mu//aYznfv22RUmeYkJ3CJr1ugFbt++mjNtdeqU7gDQrp3eQi9eDJQubXNQ5G/XXKPN0pYt0/mXS3TqlNkNq25dYOJEjom7AIdQLHD2rJYMiujCt2LFbAzm66+1F8ahQzps8tJLQESEjQGRlUR0ndZ33+mw9w03XPaAP//UN/fvv9edfKZM4cS2A3AIxUZPP62vi5kzbUzex47prGmHDroCb+1a4PXXmbyDjDGak4sU0V+H5OTLHlCjhm6jN2WKbuZRvz4wfnwOTcbJTkzgfvbNN1qh98wzQKtWNgXx2We61HPePOCFF/SFedNNNgVDdqtQQbsWrl+vQ99XMEZLSrdty9zqp1Ur7Q9PjsIE7kdHj+qYd/36WsZluSNHgIcf1ibRlSsDsbHcHo0AAA89pFfgY8Zoy/csVa6sSzjnzNEJzoYNte9DSoqVoVIOmMD9RAQYPFhHLmbPtjhnigAffaRX3f/9r3YWXLdOB+KJ0v3nP0ClSprIz53L5kHGAF27Atu36/Db889ro7PNmy2NlbLGBO4nH38MLFigS5ktzZsHDugsVbduuvPKpk3AsGGs7aUrlCihe2n+/rv+iuSofHn9hZ4/H9i/H2jSRCfAL160IFLKDhO4H+zfr/tatmypXTstIaK7rNSpoxUE776rJWFXlBkQZWrbVluDv/eezl3mqnNnvRp/9FEdjouM1KE5sgUTuI8dP647g6ekaNWJJfsB79mjuyD366c7Q2zZAgwZws2IySOvvgpcf71uk7lrlwcHlC6t44KLFukYYbNmegl//rzfY6VLMYH7yJEj+jtcrZruLv/eexaUz6al6eKLevW0LHDCBL36Zt0ueSEiQvPxiRM66ta9u15k56pDB61U6dNHS1IbNWJvcYsxgedTXJzeglavrpvZdOig8zu9e/v5xDt3anOLJ54AbrlFX0iDBjmkNy25TWQk8McfWjH4+ed6TdC5M7BxYy4HliihNeNLlgAXLmi54ZAh2muc/E9ELPto0qSJBIpdu0T69xcpUEAkLEykd2+R336z4MQpKSJvvSVSqJBIiRIiM2aIpKVZcGIKFgkJIiNHihQvLgKI3HuvyA8/eHDgmTMi//ynHlSjhsj33/s91mABIFayyKlM4F7avl2ke3eR0FCRggVFoqJE9uyx6ORbt4o0bao/tvvvFzl40KITUzA6cUJkzBiR0qX1V+7220WWLfPgeiEmRqRWLT1owACRkyetCDegMYHn08aNIp07ixgjUriwyFNPiRw4YNHJL14UeeUVkfBwkTJlRObN41U3WebMGZG33xapUEEzxs03i3z9dS6/gomJIs88IxISIlK5ssg331gWbyBiAs+jH37QW0hAbylHjNBbTMts2CDSsKEG8MgjIvHxFp6cKNP58yLR0SJVq+qvY6NGIgsWiKSm5nDQ2rUideroAT16iBw7Zlm8gYQJ3AtpaXqrePvt+h0qXVpvJU+csDCICxf03SI0VC99Pv/cwpMTZe/iRZHp00WuvVZfH3XqiMyZI5KcnM0BFy7ooHpYmEj58iILF1oabyBgAvdAWpreGrZood+ZChV0vvDMGYsD+ftVS69eIsePWxwAUe5SUkTmzhWpV09/Va+5RmTKFJGkpGwO2LhRL9sBkS5dRI4csTJcV8sugbPmDFpOvXChrg6+914tDfzgA20B+/TTQNGiFgVy7py2LWzRAjhzBvjf/3Stc8mSFgVA5LnQUF2Q+csvwBdfAKVKaSvxmjV1HcQV63oaNtSePGPH6gF16gBz52ax0zJ5LKus7q8Pp12BJyfrrV/GxW6tWnprmO0VhD+tXJk5cz9okMipUzYEQZR3aWkiixeL3HKL/hqXLy/y+usip09n8eBt20SaNdMHduxoYUWAO4FX4JkuXgSmTtXlw9266dqXjz/Wdse9e+suY5Y5cwb45z+BNm30VmDZMl1RWby4hUEQ5Z8xwF13AatWAStX6l7Zzz2nq5NHj9aVnn+pU0dXbb79ti4CqlNH7zZ5Ne6drLK6vz7svgI/d07kvfdEqlTRN/4mTXRuMMdZdH9askSkWjWtTRwyROTsWZsCIfKPdev0AhsQKVZMZNiwLIa+f/9dpHVrfdCdd1q4sMI9EMyTmKdPi7zxht7SAXqLt3ixjaXUJ06I9O2rwdSuLbJmjU2BEFnjl1+0CtYYkYgIkSefFImL+9sDUlNFPvhApEgRkaJF9e+2XVk5T1Am8OPHRV5+WaRUKf2ftmunQ822WrRIpFIlLQ8cNkyLa4mCxK+/ivTsqb/+4eG6UHPXrr894M8/9YUKiLRpI7Jzpz2BOkxQJfD4eJHnn9dbtow5knXrLDl19o4eFenaVQNq0EAkNtbmgIjss3u3ztWHh2sy795d21SIiN4aT5smctVVern+zjtasxjEgiKBx8XpUHJEhN6qdekismmTX0/pmfnzRcqV085XL79sU5kLkfPExYkMHZr5mn34YS0XFxGtTLnvPk1TzZtr5UqQCugEvnu3yMCBme/mPXuK7Njhl1N559AhkYce0m9zZKTI5s12R0TkSPHxIsOHZ941d+gg8uOPolfjH3+sy6HDw0XGjtWloEEmIBP4jh3aXiFjPG3QIE3mtktLE5k9WwffCxbUYths1xkTUYbjx0VGj86ct2rbVmT5cpG0w0f08jyjCctfl+nBwecJHEAVAMsB7ACwDcCTuR3jqwS+aZMOj2TMaA8ZctmMth3S0nQQb9IkkTvu0G9tixY6a0NEXjlzRuTNNzMrx1q21IaGafMX6CfDwnQGdP58kcOH7Q7X7/yRwCsCaJz+92IAfgdQJ6dj8pvA167NHBIrVkwnKm1rp5CSIrJ+vcj48SIPPihStqwGBohUrKifD/KJF6L8OndO5P33M9duNG4ssmjmMUnr1Vv7Ome85mrXFunXT2TWrICsI88ugRv9Wv4ZY74E8L6IZLu3dWRkpMTmYQfr1at1JdfSpdpvYcgQXbxoaYuQpCTdfXvVKiAmRleRnT6tX6tRA2jdOvOjZk1dlkZEPnHxou7b+eqruvFy3bpAVP9ktCm2AdcdjkGBH2M0UZw8qQdUraqvxVat9M/atV39mjTGrBeRyCs+74sEboypDiAGQD0ROX3Z1wYAGAAAVatWbbJ3716vn/+pp3Sp+9NP67aPxYrlO+TcJSbqRsExMfqxdq3u+Qfost+MZN2qFVC5sgUBEVFKCvDpp8C4cboNLKBNterWBSIbp6Fdxa1olhSDKntiELYmRncbB4CyZS9N6A0a6IEu4bcEbowpCmAlgLEisjCnx+b1CvzUKe1PEhGRxyA9ceKEXlVnJOz16/W3JSREd9vOSNi33AKUKePHQIgoNyLAvn36Mv37x9Gj+vXQUKDODYJ7rvsD7QrFoP6JGJTZHoOQvXv0AcWL62s5I6FHRlrcBMk7fkngxpgCAL4C8K2IvJPb4/OawP3i8OHM4ZCYGGDLFv2tCA8HmjbNfLdu0YKNpYhcQATYv//KpJ6QoF8PCQFuq7UfncuvQsu0GNQ8EIPCe3boFyMigObNM1/3zZsDRYrY95+5jM8TuDHGAJgJ4LiIDPHkGNsSuAiwd29mso6JAXbu1K8VKaJJOuOduGlTP1/qE5FVRIADB65M6hkjK+VNPB65ejXuLroKjc7GoNzBTTBpaUBYmF6VZ9x5t2wJlChh2//DHwn8FgCrAGwBkJb+6eEi8k12x1iWwEW0N+zfE3ZcnH6tZEm9dcr4wTRqBBQo4P+YiMgRRICDB69M6ocPA8VxCi3xAx4oHYPWIatQ6/hPCE1NhhgD06DBpXNf5ctbFrNfJzE95bcEnpqq24JkJOtVqzIHwypUuLRCpG5dvZciIvqbQ4euTOrHD55HM6xDG8SgfeEYNEr6EYVSzwEAUmtdh9Bb/5ZbqlXzW2yBlcAzSvoyEvaaNboxAsCSPiLymcOHL03ov8Qmo/zBDWiNGP0IWY2r0k4CAC6Uq4KQW1sjvG1rn5cuujuBJyYCP/6YmbDXrWNJHxHZ4sgRTeYbNgAbYtNwdu1WXHck5q+kXgE6wH6uSFmcbdwKxe5pjYi78le66O4E3qsXMHMmS/qIyJHi4zWhr48VHFy5E0U2rELd45rQa2APAGDrSwtQ78WH8vT87k7gP/8MHDvGkj4ico2jR/VK/Y9l+5CyfBXu/nd7XHdz6Tw9l7sTOBFREMsugbMcg4jIpZjAiYhcigmciMilmMCJiFyKCZyIyKWYwImIXIoJnIjIpZjAiYhcytKFPMaYBADe76mmygA46sNw/M1N8bopVsBd8bopVsBd8bopViB/8VYTkbKXf9LSBJ4fxpjYrFYiOZWb4nVTrIC74nVTrIC74nVTrIB/4uUQChGRSzGBExG5lJsS+GS7A/CSm+J1U6yAu+J1U6yAu+J1U6yAH+J1zRg4ERFdyk1X4ERE9DdM4ERELuX4BG6MmW6MiTfGbLU7ltwYY6oYY5YbY3YYY7YZY560O6acGGMKGWN+Msb8kh7vy3bHlBtjTKgxZqMx5iu7Y8mNMWaPMWaLMWaTMcbRO5kYY0oYYxYYY35N//292e6YsmOMqZ3+Pc34OG2MGWJ3XNkxxgxNf31tNcbMNcYU8tlzO30M3BjTGsBZALNEpJ7d8eTEGFMRQEUR2WCMKQZgPYBOIrLd5tCyZIwxAIqIyFljTAEAqwE8KSJrbQ4tW8aYpwBEAiguIh3sjicnxpg9ACJFxPGLTYwxMwGsEpGpxphwAIVF5KTNYeXKGBMK4ACAZiKS10WCfmOMuRr6uqojIueNMZ8C+EZEPvTF8zv+ClxEYgActzsOT4jIIRHZkP73MwB2ALja3qiyJ+ps+j8LpH849h3dGFMZwL0AptodSyAxxhQH0BrANAAQkYtuSN7p2gLY5cTk/TdhACKMMWEACgM46KsndnwCdytjTHUAjQCsszmUHKUPSWwCEA9gqYg4Od7xAP4PQJrNcXhKACwxxqw3xgywO5gcXAMgAcCM9OGpqcaYInYH5aFHAcy1O4jsiMgBAG8B2AfgEIBTIrLEV8/PBO4HxpiiAD4DMERETtsdT05EJFVEGgKoDKCpMcaRw1TGmA4A4kVkvd2xeKGliDQGcDeAf6QPBzpRGIDGACaISCMAiQCG2RtS7tKHejoCmG93LNkxxpQEcD+AGgAqAShijOnmq+dnAvex9LHkzwB8JCIL7Y7HU+m3zCsAtLc3kmy1BNAxfVx5HoDbjTFz7A0pZyJyMP3PeACfA2hqb0TZigMQ97e7rwXQhO50dwPYICJH7A4kB3cA+FNEEkQkGcBCAC189eRM4D6UPik4DcAOEXnH7nhyY4wpa4wpkf73COgv26+2BpUNEXleRCqLSHXobfMyEfHZlYyvGWOKpE9kI3044k4AjqykEpHDAPYbY2qnf6otAEdOvF/mMTh4+CTdPgDNjTGF0/NDW+jcmE84PoEbY+YC+BFAbWNMnDGmr90x5aAlgO7Qq8OMEqd77A4qBxUBLDfGbAbwM3QM3PHleS5RHsBqY8wvAH4C8LWILLY5ppw8AeCj9N+FhgDG2RtOzowxhQG0g17ROlb6Xc0CABsAbIHmXJ8tqXd8GSEREWXN8VfgRESUNSZwIiKXYgInInIpJnAiIpdiAicicikmcCIil2ICJyJyqf8HPrfV/jROycEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from pprint import pprint\n",
    "import scipy.linalg as linalg\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "plt.plot(xdata, func(xdata, *guess1), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ydataと予測した関数との差をdfに入れます．\n",
    "\n",
    "見やすいように，小数点以下を3桁表示に制限しています．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([ 0.396,  0.897,  2.538,  3.6  , -1.4  , -0.462, -0.103, -0.016])\n"
     ]
    }
   ],
   "source": [
    "np.set_printoptions(precision=3, suppress=True)\n",
    "\n",
    "df=np.zeros([ndata])\n",
    "for i in range(0,ndata):\n",
    "    df[i] = ydata[i]-func(xdata[i], *guess1)\n",
    "\n",
    "pprint(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "ローレンツ型の関数を仮定し，関数として定義．\n",
    "```python\n",
    "def func(t, a1, a2, a3, a4):\n",
    "    return a1+a2/(a3+(t-a4)**2)\n",
    "```\n",
    "ヤコビアンの中の微分を新たな関数として定義します．\n",
    "$$\n",
    "{\\it dfda1}\\, := \\,x\\mapsto 1 \\notag \\\\\n",
    "{\\it dfda2}\\, := \\,x\\mapsto  \\left( {\\it a3}+ \\left( x-{\\it a4} \\right) ^{2} \\right) ^{-1}\n",
    "\\notag \\\\\n",
    "{\\it dfda3}\\, := \\,x\\mapsto -{\\frac {{\\it a2}}{ \\left( {\\it a3}+ \\left( x-{\\it a4} \\right) ^{2} \\right) ^{2}}} \\notag \\\\\n",
    "{\\it dfda4}\\, := \\,x\\mapsto -{\\frac {{\\it a2}\\, \\left( -2\\,x+2\\,{\\it a4} \\right) }{ \\left( {\\it a3}+ \\left( x-{\\it a4} \\right) ^{2} \\right) ^{2}}}  \\notag\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dfda1(x, a1, a2, a3, a4):\n",
    "    return 1\n",
    "def dfda2(x, a1, a2, a3, a4):\n",
    "    return (a3 + (x - a4)**2)**(-1)\n",
    "def dfda3(x, a1, a2, a3, a4):\n",
    "    return -a2/(a3 + (x -a4)**2)**2\n",
    "def dfda4(x, a1, a2, a3, a4):\n",
    "    return -a2*(-2*x +2*a4)/(a3 + (x-a4)**2)**2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Jacobian行列を作ります．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([[ 1.   ,  0.075, -0.046, -0.319],\n",
      "       [ 1.   ,  0.138, -0.152, -0.761],\n",
      "       [ 1.   ,  0.308, -0.757, -2.272],\n",
      "       [ 1.   ,  0.8  , -5.12 , -5.12 ],\n",
      "       [ 1.   ,  0.8  , -5.12 ,  5.12 ],\n",
      "       [ 1.   ,  0.308, -0.757,  2.272],\n",
      "       [ 1.   ,  0.138, -0.152,  0.761],\n",
      "       [ 1.   ,  0.075, -0.046,  0.319]])\n"
     ]
    }
   ],
   "source": [
    "Jac=np.zeros([ndata,nparam])\n",
    "for i in range(0,ndata):\n",
    "    Jac[i,0] = dfda1(xdata[i], *guess1)\n",
    "    Jac[i,1] = dfda2(xdata[i], *guess1)\n",
    "    Jac[i,2] = dfda3(xdata[i], *guess1)\n",
    "    Jac[i,3] = dfda4(xdata[i], *guess1)\n",
    "pprint(Jac)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "J ^{-1}=\\left(J ^{T }J \\right)^{-1}\n",
    "$$\n",
    "を求めます．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 1.017 -6.476 -0.821  0.   ]\n",
      " [-6.476 50.763  6.775 -0.   ]\n",
      " [-0.821  6.775  0.933 -0.   ]\n",
      " [ 0.    -0.    -0.     0.016]]\n"
     ]
    }
   ],
   "source": [
    "iJac = linalg.inv(np.dot(np.transpose(Jac),Jac))\n",
    "print(iJac)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([  5.451,   2.537, -12.975, -33.309])\n"
     ]
    }
   ],
   "source": [
    "Jdf = np.dot(np.transpose(Jac),df)\n",
    "pprint(Jdf)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.235,  5.592,  0.613, -0.52 ])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.dot(iJac, Jdf)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "これをまたもとの近似値(guess)に入れ直して表示させると以下のようになる．カーブがデータに近づいているのが確認できるでしょう．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([ 0.765, 13.592,  1.613,  3.98 ])\n"
     ]
    }
   ],
   "source": [
    "guess1 = guess1 + np.dot(iJac, Jdf)\n",
    "pprint(guess1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata)\n",
    "plt.plot(xdata, func(xdata, *guess1), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "この操作をずれが十分小さくなるまで繰り返します．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "array([1.151, 7.778, 0.655, 4.004])\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "df=np.zeros([ndata])\n",
    "for i in range(0,ndata):\n",
    "    dy = ydata[i]-func(xdata[i], *guess1)\n",
    "    df[i]=dy\n",
    "#pprint(df)\n",
    "Jac=np.zeros([ndata,nparam])\n",
    "for i in range(0,ndata):\n",
    "    Jac[i,0] = dfda1(xdata[i], *guess1)\n",
    "    Jac[i,1] = dfda2(xdata[i], *guess1)\n",
    "    Jac[i,2] = dfda3(xdata[i], *guess1)\n",
    "    Jac[i,3] = dfda4(xdata[i], *guess1)\n",
    "# pprint(Jac)\n",
    "iJac = linalg.inv(np.dot(np.transpose(Jac),Jac))\n",
    "# print(iJac)\n",
    "Jdf = np.dot(np.transpose(Jac),df)\n",
    "# pprint(Jdf)\n",
    "guess1 = guess1 + np.dot(iJac, Jdf)\n",
    "pprint(guess1)\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata)\n",
    "plt.plot(xdata, func(xdata, *guess1), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "4回ほど繰り返すと以上の通り，いい値に収束してます．"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Gauss-Newton法に関するメモ\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "このGauss-Newton法と呼ばれる非線形最小二乗法は線形問題から拡張した方法として論理的に簡明であり，広く使われている．しかし，収束性は高くなく，むしろ発散しやすいので注意が必要．2次の項を無視するのでなく，うまく見積もる方法を用いたのがLevenberg-Marquardt法である．明快な解説がNumerical Recipes in C(Ｃ 言語による数値計算のレシピ）WilliamH.Press 他著，技術評論社1993にある．\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 課題\n",
    "\n",
    "##  Gaussian(正規分布)へのフィット\n",
    "\n",
    "正規分布で知られる，ガウス関数\n",
    "$$\n",
    "f(x)= \\frac{1}{\\sqrt{2\\pi\\sigma}}\n",
    "\\exp \\left(\\frac{- (x-\\mu)^2}{2\\sigma^2} \\right)\n",
    "$$\n",
    "でフィットをやってみましょう．\n",
    "\n",
    "例えば，平均値($\\mu$)が60点，偏差値($\\sigma$)が15点，ピークの人数が20人としましょう．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsNElEQVR4nO3deXhU9dn/8fc9WSFAWBIwrGEJIQm7YVURsewurWgLLrVWpSpu3ZTWto/2Vx+tVuvaolVbF+qK1o1NqYhWUMIeCEsgLGFL2BIghGz3748ZfNI4kZCZyZnlfl1Xrsycc2bO5yvJx8l3zpwjqooxxpjw5XI6gDHGmMCyojfGmDBnRW+MMWHOit4YY8KcFb0xxoS5aKcDeJOUlKSpqalOxzDGmJCxYsWKA6qa7G1dUBZ9amoqOTk5TscwxpiQISI76ltnUzfGGBPmrOiNMSbMWdEbY0yYs6I3xpgwZ0VvjDFh7rRFLyJdROQTEckTkfUicodneVsR+UhEtni+t6nn8RNEZJOI5IvITH8PwBhjzLdryCv6KuDnqpoBDAdmiEgmMBNYpKppwCLP/f8iIlHA08BEIBOY5nmsMcaYJnLaolfVvaq60nP7KJAHdAIuBV70bPYi8F0vDx8K5KvqNlWtAF7zPM4YcxqHtx7ii9tf49PLnyT/vQ1ojZ1S3DTOGX1gSkRSgUHAl0AHVd0L7v8ZiEh7Lw/pBOyqdb8QGFbPc08HpgN07dr1TGIZE1aW/uxNWvztUTKPfcVIatwL50BhVDfyB17OsIX/j2Ztmzkb0oSUBr8ZKyItgDnAnapa2tCHeVnm9WWJqj6rqtmqmp2c7PVTvMaENa1RFo/6HSP+/H3iK4/y2ajfkPu3pRR+VsCSq55hd/JARq94hPxuYyjO3e90XBNCGvSKXkRicJf8bFV927N4v4ikeF7NpwBFXh5aCHSpdb8zsMeXwMaEo/Ij5awccB2jd77GZ2nXMWzlLNJaxH69vvO57j94l931Nv0fvppDA4ex5c0PSPteX+dCm5DRkKNuBHgeyFPVR2uteg+41nP7WuBdLw9fDqSJSHcRiQWmeh5njPGoqaphXe/LGLnzNRZPeJBzNz5PbK2Sr234Q5ex/cUlRGsF7S87hx2L8ps4rQlFDZm6OQe4BhgjIqs9X5OAB4GxIrIFGOu5j4h0FJG5AKpaBdwKLMD9Ju4bqro+AOMwJmQt+d6fGVI8jyVT/8LoeXcjLm8znv8n84fZVH36BTUSxfFLplFxrKKJkppQJcF4cfDs7Gy1s1eaSJD3ygp6XjOClR0vZtiut05b8rUtu+tthj88hcXD7mb0sgcDmNKEAhFZoarZ3tbZJ2ONccixfceI//E0Drrak77kb2dU8uCexlnSZzqjvnyIlQ8vClBKEw6s6I1xyMoLfk63ynz2P/IKbXq2bdRznP3poxTEptNx5jWU7Dji34AmbFjRG+OALe/kcu7Gv7Fk8J0MvHN0o58noX0CFc+/wlk1e1l15cP+C2jCihW9MQ44dMtvOEpL+r92j8/PlXH12XzRdSpDvniMorX7/JDOhBsremOaWO5zyxi2711WXfhL2qa188tzdnzu98Rxkryr7/fL85nwYkVvTBPSGqXyl7+iWNqT/cqdfnve1LFpfJFxAyPWPcOuJQV+e14THqzojWlCK//4EYOOLGbDZb+hxVkt/PrcaS/9lmqi2HHd//j1eU3os6I3polojRJ//28ojOrG8Bem+/35U7I78eWQ2xi57RW2fpDn9+c3ocuK3pgmkvu3pWQdX862K+4mrlVcQPbR98VfUkEsu2c+GZDnN6HJit6YJnL0f5+khEQG//magO0jKSOZ5b2mMXj9S5TsLAnYfkxosaI3pgnsW7mHITvfYtXgH/t9br6upHtvowXHWX3H3wO6HxM6rOiNaQIbf/oMUVTT/eEZAd9XxlWDWdtyJN0+fJqaqpqA788EPyt6YwKs4lgFmZ8/Q077SXQb07NJ9nnsR7eRWpnPivvnN8n+THCzojcmwJbf9Sbta/bjuv22JtvnkAensM+VAk/Zm7LGit6YgGv18lMUxPRm8N1jm2yfMc1j2Hj+TQw5MJ+CBZubbL8mOFnRGxNA+e9toN+xZeyYdBOu6Kb9dct8bDpVRLHj9y826X5N8GnIpQRfEJEiEcmttez1Wleb2i4iq+t57HYRWefZzq4kYiJO4QMvU0UUWX+4ssn33b7/WaxKHkevL1+xN2UjXENeYvwDmFB7gar+QFUHqupA3BcNf9vL4065wLOt1yufGBOuaqpqSFs+m1XJ40nu28GRDJU/uIbO1TtZ+9QSR/ZvgsNpi15VlwCHvK3zXDj8+8Crfs5lTMhb88SndKreReXUwH1A6nQG/s+llNKSo3952bEMxnm+ThqeB+xX1S31rFdgoYisEJFvPbmHiEwXkRwRySkuLvYxljHOOzbrZUppyaB7L3UsQ/Ok5qzpNYUBW97kxKETjuUwzvK16Kfx7a/mz1HVwcBEYIaIjKpvQ1V9VlWzVTU7OTnZx1jGOKvsQBkDt7zJmrTLada2maNZWtx0Da04yqp733U0h3FOo4teRKKBy4DX69tGVfd4vhcB7wBDG7s/Y0LJ6vvepSXHaHnLD52OwoA7RrM7qgsxr9n0TaTy5RX9d4CNqlrobaWIJIhIy1O3gXFArrdtjQk3Ma+/TGFUV/rfWu8fsU3GFe1iy5CrGFS8gOLc/U7HMQ5oyOGVrwJLgXQRKRSR6z2rplJn2kZEOorIXM/dDsDnIrIG+Ar4UFXt89gm7B3IK2ZQ8ULyh1zZ5MfO16fzr64hmmo23PuG01GMA6JPt4GqTqtn+Y+8LNsDTPLc3gYM8DGfMSEn78F3OY9qUu78gdNRvtbrkky2xGWR+PEcoOlOxWCCQ3C83DAmjMTPncOO6B70viK4XufsHjaFfiWfUby+yOkopolZ0RvjR0cKDjPgwCIKBk1BXOJ0nP/S8bYpRFFD3gP/cjqKaWJW9Mb4Ue4D7xNLJUk/meJ0lG9Iu6wf22N6kTDvLaejmCZmRW+MH8W8P4fdUV3Iui74jiQWl7D97Mvpf+gTDm/1+mF3E6as6I3xk6N7jjJg3wLy+10WdNM2p7S/eQoxVLH+gfecjmKakBW9MX6y7o9zieckra8PvmmbUzKuPpvCqG7Evj/H6SimCVnRG+MnMuct9rvOou/0kU5HqZe4hPyBUxhQtJDSwlKn45gmYkVvjB+cOHSC/rvnsinje0TFRjkd51u1u3EKcVSw7oEPnI5imogVvTF+sO6xRSRQRsLV33M6ymllXT+c/a6zkPdtnj5SWNEb4wflb77PUVrQ79bznY5yWq5oF5t7TSZr13wqyyqdjmOagBW9MT7SGiVt8wfkdhpPbItYp+M0SOxlF5FICbmzPnc6imkCVvTG+Gjjq6tIqdlD9cSLnY7SYH1/OpZy4iiZ/b7TUUwTsKI3xkf7n3ufGoQ+P5vkdJQGS2ifwLrkMaSuex+tUafjmACzojfGR+2/ep/cliNIygitK6OduPBiUivzKZi/yekoJsCs6I3xwb6Ve8gsW8GhERc5HeWM9bx9MgA7/2KHWYY7K3pjfLD5sQ8B6HRT6MzPn9JpRFc2xQ+g9ec2Tx/uGnKFqRdEpEhEcmstu1dEdovIas+X18lJEZkgIptEJF9EZvozuDHBIG7h++yKTqXXpVlOR2mUvdkX07fkP3aSszDXkFf0/wAmeFn+Z1Ud6PmaW3eliEQBTwMTgUxgmohk+hLWmGBy4tAJ+u3/mG2ZFwftScxOJ/nHF7svMfjIPKejmAA6bdGr6hKgMf+7Hwrkq+o2Va0AXgMubcTzGBOUcp9aTHNO0GJq6M3Pn5JxTTZFrg4w9xuv1UwY8WWO/lYRWeuZ2mnjZX0nYFet+4WeZV6JyHQRyRGRnOLiYh9iGdM0yubMo4xmZN08yukojeaKdrE5dTx9di6guqLa6TgmQBpb9H8FegIDgb3AI1628fa3bL0H7Krqs6qararZycmhdZiaiUzd8uaxPvkC4lvHOx3FJ65JE2inB8l7OcfpKCZAGlX0qrpfVatVtQb4G+5pmroKgS617ncG9jRmf8YEmx2L8kmtzKfs/IlOR/FZn9vHUY2LA6/MdzqKCZBGFb2IpNS6+z0g18tmy4E0EekuIrHAVMBOl2fCwvZZ7lJMvTn0i75tWjs2tBhK0nJ7QzZcNeTwyleBpUC6iBSKyPXAQyKyTkTWAhcAP/Vs21FE5gKoahVwK7AAyAPeUNX1ARqHMU2q+afz2B7Ti25jejodxS8OZk8g8/hXHNx0wOkoJgAactTNNFVNUdUYVe2sqs+r6jWq2k9V+6vqJaq617PtHlWdVOuxc1W1t6r2VNX7AzkQY5pK+ZFysoo/YUdG6L+aPyX5hxNxoWx8YqHTUUwA2CdjjTlD6/+6hOacoPmU8Cn6jGuyOSBJ6Hybpw9HVvTGnKFjb86jnDiybgn+i4w0lCvaxaau40gvmE9NVY3TcYyfWdEbc4a6rJ9HbrvRNE9q7nQU/5o4kWQtZuM/VzqdxPiZFb0xZ2DXkgJ6VGzi+KjwmbY5Jf328dQgFL1oR9+EGyt6Y85AwawFAHS5YbzDSfwvKSOZjc3Ppu3yBU5HMX5mRW/MGYhdvJDCqK50n5DudJSAKBo4jsyjyyjZWeJ0FONHVvTGNFBlWSUZexexLW18yJ6t8nTaTB1PNNXkPf1vp6MYP7KiN6aB8l78ikRKiZk0zukoAZNx3XCO0oKKD+x4+nBiRW9MAx16dQHVuMi49UKnowRMbItYNpw1htTNC+yi4WHEit6YBkpauZANLYbSuru3s3KHj/LzxtG1qoCdn2x1OorxEyt6Yxrg8NZDZBxfzsGzw+9om7pSf+Ie4/Zn7OibcGFFb0wDbHx6EVHU0G5a+M7Pn9L1gp7sjO5O/Gc2Tx8urOiNaYDKuQspIZGMa71deiG8iEvY3ns8mfv+TWVZpdNxjB9Y0RtzGlqj9MxfQF7HC4mOj3Y6TpOIvWgcLTnGhueXOh3F+IEVvTGnUTB/E52qd1FxQfjPz5+SMWMMVURx+DWbpw8HDbnwyAsiUiQiubWWPSwiGz0XB39HRFrX89jtnguUrBYRuyClCUm7nnfPVXefPtbhJE0nsWsiG1oOJ3nNR05HMX7QkFf0/wAm1Fn2EdBXVfsDm4FffcvjL1DVgaqa3biIxjir2ecLKYhJo8uo7k5HaVKHsseRcTyHQ1sOOh3F+KghV5haAhyqs2yh51KBAMtwX/jbmLBTcayCzKLF7OwT/kfb1JV05Tj3Vaf+ssjpKMZH/pij/zFQ33lNFVgoIitEZPq3PYmITBeRHBHJKS4u9kMsY3y34fmltOA48RdFzrTNKX2uzqaERKrm2fRNqPOp6EXkHqAKmF3PJueo6mBgIjBDREbV91yq+qyqZqtqdnJysi+xjPGbI28spIooMm65wOkoTS46Ppq8jhfSI3+hnQ4hxDW66EXkWuAi4CpV9fpToKp7PN+LgHeA8D8I2YSV9qsXsr7VCFp1buV0FEdUjB5H5+qdFCzY7HQU44NGFb2ITADuBi5R1bJ6tkkQkZanbgPjgFxv2xoTjA5tOUifshUcPjvypm1OSb3RPfZdL9j0TShryOGVrwJLgXQRKRSR64GngJbAR55DJ2d5tu0oInM9D+0AfC4ia4CvgA9V1S4xb0LGxr8swoWSdGXkvRF7StfRPdgR3dNOhxDiTvsxP1Wd5mXx8/VsuweY5Lm9DRjgUzpjHFQ9dyFHpDV9ro7sI4N3pI9j0PqXqSyrJKZ5jNNxTCPYJ2ON8UJrlO5bP4qo0x7UJ+5iz+kQXljmdBTTSFb0xnhRsGAznat3Unl+5M7Pn9Ln5gvcp0N43aZvQpUVvTFenDrtwak3IyOZ+3QIw0heZee9CVVW9MZ40eyzhWyP6UXX0T2cjhIUDp3tPh3C4a2HTr+xCTpW9MbU4T7twSfsSI/co23qajfNczqEp+10CKHIit6YOr4+7cHFVvSnZPxwCCUkUjnX5ulDkRW9MXUceWMhlURH5GkP6mOnQwhtVvTG1NF+9QI2RPBpD+pTccF49+kQ5m9yOoo5Q1b0xtRyIK+YPmUrOTzEpm3qOnXhlVNHJJnQYUVvTC2b/+o+7UHyVVb0dXUZ1Z2CmDSafW5FH2qs6I2ppXr+Qg5LG/pcdbbTUYLSzj7jyCr6hJOlJ52OYs6AFb0xHlqj9Nq6kI2dvkNUbJTTcYJS/MXjSKCMvBeWOh3FnAEremM8tr6/gZSa3VSNsWmb+mTcPJpKojnyun1KNpRY0RvjUfh399zzqTcdzTe16tyKDa1G0GGNFX0osaI3xqPF5/PZGtuHzud0czpKUDs8dDwZJ1ZRnLvf6SimgazojQFOHDpB1sElFGZNcDpK0Otwrfu/0ean7apToaIhV5h6QUSKRCS31rK2IvKRiGzxfG9Tz2MniMgmEckXkZn+DG6MP63/y6c0o5yEKVb0p5M+dRDFkgzz7YJxoaIhr+j/AdT96Z8JLFLVNGCR5/5/EZEo4GlgIpAJTBORTJ/SGhMgx+fM5wTxZN08yukoQc8V7WJT6njSdyygpqrG6TimAU5b9Kq6BKh7btJLgRc9t18EvuvloUOBfFXdpqoVwGuexxkTdLpsmE9u0miatW3mdJSQIBMmkKQH2PjPlU5HMQ3Q2Dn6Dqq6F8Dzvb2XbToBu2rdL/Qs80pEpotIjojkFBcXNzKWMWeu8PPt9KjYRNm5452OEjJ6z3AfmVT0kk3fhIJAvhkrXpbVe9o7VX1WVbNVNTs5OTmAsYz5b9v+6j5UsMuNNj/fUMlZ7dnQ/GzaLLfDLENBY4t+v4ikAHi+F3nZphDoUut+Z2BPI/dnTMDEfjKfwqhudJ+Q7nSUkFI0aAJZpUsp2XHE6SjmNBpb9O8B13puXwu862Wb5UCaiHQXkVhgqudxxgSNimMVZO5dxLbeExCXtz9CTX3aXjmBaKrZ8JRddSrYNeTwyleBpUC6iBSKyPXAg8BYEdkCjPXcR0Q6ishcAFWtAm4FFgB5wBuquj4wwzCmcTY8v5RWHCX2YpufP1MZPxpGCa2ofN/m6YNd9Ok2UNVp9ay60Mu2e4BJte7PBeY2Op0xAXbktfnuq0nNGON0lJAT0zyGvI7foVf+fLRG7S+iIGafjDURrePqD8ltfS6JXROdjhKSKsdOomN1IVveXud0FPMtrOhNxNrz5S56l6+jZOSk029svEq7fSIAe56zP9yDmRW9iVj5T7jLqfNPJjucJHSdNbgjec0G0Wbph05HMd/Cit5ErLhFH7IrOpWeF2U4HSWk7T97Mn1Lv+Dw1rofoDfBworeRKTyI+X03b+IbX0m2ZuIPmp3zSSiqCHvcbuWbLCyojcRKffpT0mgjOaX27SNrzJ/NJQDkkTNBzZ9E6ys6E1EOv7mXE4QT9/bLnA6SsiLio1iY+oE+myfT3VFtdNxjBdW9CbiaI2Suv5DcpPH2Nkq/cQ1eRJJeoC8l5Y7HcV4YUVvIk7Bgs10q9pK2RibtvGXjDvHU42LAy/a9E0wsqI3EWfnM+7DKnveasfP+0ubnm3JbTWSDius6IORFb2JOImfvk9+XCadz011OkpYOTxiMhknVrE3Z7fTUUwdVvQmohzeeoh+R5ZQONguduZvnW+5BIAtj9hJaoONFb2JKBsemUc01SRdb0Xvbz0vymB7TC+afWxFH2ys6E1Ecb3/LvtdZ5F57RCno4QdcQnb+19C/wP/5uieo07HMbVY0ZuIcbL0JH0L57Gp98W4ou1HPxDaXHspcVSQ+yc7R30wsZ92EzHWPbmYlhyj2Q9s2iZQsm4cyUFpR/W/bPommDS66EUkXURW1/oqFZE762wzWkRKam3zO58TG9NIZa++y3Ga0/d2u8hIoETHR5PXfTJZ2z+ksqzS6TjGo9FFr6qbVHWgqg4EzgbKgHe8bPrZqe1U9feN3Z8xvtAaJS3vPdaljLdPwwZY9JRLaaOHyZ31udNRjIe/pm4uBLaq6g4/PZ8xfrXxnytJqdlN1WSbtgm0vj8bRzlxlL5i0zfBwl9FPxV4tZ51I0RkjYjME5Gs+p5ARKaLSI6I5BQXF/spljFu+599l2pcZPzCTnsQaC3OasG65Avpvu5dtEadjmPwQ9GLSCxwCfCml9UrgW6qOgB4EvhXfc+jqs+qaraqZicnJ/say5j/0umrd1iXeC7t0pOcjhIRTkz4Ll2rCtj81lqnoxj884p+IrBSVffXXaGqpap6zHN7LhAjIvabZprUtrkbSTuZS8l3Lnc6SsTI/NV3qcbF3iffcjqKwT9FP416pm1E5CwREc/toZ79HfTDPo1psJ1/ngNA75mXOZwkciRlJLOmzWi6fvWmTd8EAZ+KXkSaA2OBt2stu0lEbvLcvRzIFZE1wBPAVFW1f3XTpFI+f5O1LUeSkt3J6SgR5dj4y+lRsYn8d9c7HSXi+VT0qlqmqu1UtaTWslmqOstz+ylVzVLVAao6XFW/8DWwMWdi+0dbSC9fw6ExNm3T1Pr86nvUIOx+3KZvnGafjDVhbfsj7mmbtLunOJwk8rTvfxZrE8+j0zIreqdZ0Zuw1v6zt8hNGEqnEV2djhKRSr5zOWkn17P1gzyno0Q0K3oTtnYtKSCzbAUHzrdpG6ecegN812NzHE4S2azoTdja+pC7XHr80qZtnJKS3cn9Rvh/bPrGSVb0JmwlL36DvGaD6Tq6h9NRItqhMZeTXr6GbfM2OR0lYlnRm7C0/aMtZB1fzv4x05yOEvHSf/N9ahB2PvhPp6NELCt6E5a23z+bGoT0e63onZaS3YnVbS6g+xez7cNTDrGiN2FHa5TUL2azpvVo+5BUkDh+6VV0q9rK+r9/5XSUiGRFb8LOhheXk1qZz7FLr3I6ivHof98Uyonj4BOznY4SkazoTdg58PhsThJL//vsaJtgkdg1kVWdLiJz3etUlVc5HSfiWNGbsFJVXkXm2tdY1fEiEru1djqOqUWuuopkLWL1nz52OkrEsaI3YWX1I4tI1iK4yqZtgs2geyZxRFpT/oJN3zQ1K3oTVspfmM0Rac3AX09yOoqpI65VHGvTr2BgwTscLzrudJyIYkVvwkZpYSmDts1hbfoVxLeOdzqO8SLxlqtpwXFW/cZOidCUrOhN2Fg98zUSKKPtL653OoqpR/8Z57E9phctX3/O6SgRxdcLj2wXkXUislpEcrysFxF5QkTyRWStiAz2ZX/GfJt2/3qOLXF9ybpuqNNRTD3EJWy/8AYGlH5mp0RoQv54RX+Bqg5U1Wwv6yYCaZ6v6cBf/bA/Y75h81tryTq+nD2TbkBc4nQc8y0y/3gtVUSx894XnI4SMQI9dXMp8JK6LQNai0hKgPdpItDePzzPSWLp98ernY5iTqN9/7PISbmYrOX/oLKs0uk4EcHXoldgoYisEJHpXtZ3AnbVul/oWfYNIjJdRHJEJKe4uNjHWCaSlB8pp//al1nR9TLaprVzOo5pgKjpN5CsRay47wOno0QEX4v+HFUdjHuKZoaIjKqz3tvf0F7PaqSqz6pqtqpmJycn+xjLRJKVv32HNnqY+FtvcDqKaaBBM8ez19WJqL/bm7JNwdeLg+/xfC8C3gHqvgtWCHSpdb8zsMeXfRpTV/zs59gZ3Z2BP73A6SimgaLjo9k08joGF89nz5e7Tv8A45NGF72IJIhIy1O3gXFAbp3N3gN+6Dn6ZjhQoqp7G53WmDry39vA4MP/ZtsFN+CKtqOFQ0mvB9yHwW7+2SyHk4Q/X34zOgCfi8ga4CvgQ1WdLyI3ichNnm3mAtuAfOBvwC0+pTWmjj0zn6CcOPo96e0tIhPMOp+byvKUS+i39BlOHDrhdJyw1uiiV9VtqjrA85Wlqvd7ls9S1Vme26qqM1S1p6r2U9VvHGtvTGMdKThMdt5LLE+7inbpSU7HMY0Q94vbaacHyfn5q05HCWv2t64JWatvfY7mnKDD/97hdBTTSAPvHM2m+P60f+1xu/pUAFnRm5BUVV5FrwVPsar1aHpf3t/pOKaRxCUU/eB20svXsuaJT52OE7as6E1IWv7bd+lcvZOKm+zVfKjLfvRKDko7yh963OkoYcuK3oSk5s8+zs7o7mTfd7HTUYyPmrVtxroRP2Ho3nfZtaTA6ThhyYrehJx1z3zhPinW5NuIio1yOo7xg/THb6GKaLbN+JPTUcKSFb0JOeW//QMHJIkhz9ohleEiJbsTy/r8iGG5z7NvpX2m0t+s6E1IyXtlBUOK55E79mcktE9wOo7xo9S/ziSaKjbeaK/q/c2K3oSUkrv+wBFpzeDnZzgdxfhZ19E9WNbjKoaunEXx+iKn44QVK3oTMjbPWcfwvf9i9ag7aNW5ldNxTAB0fOrXxFPO+hv+7HSUsGJFb0LGgZ/ez1FaMOD5252OYgKkx8R0lnX5Pmcve4rDWw85HSdsWNGbkLB5zjqG73qDFcNm0KZnW6fjmABK+vM9tOQYa66xuXp/saI3IaHkprsolUQGzL7L6SgmwHpP6cd/Uq9i2NI/2ymM/cSK3gS9FQ9+xJAD81k9+Tf2aj5CdHvlfgRl25W/cTpKWLCiN0GtuqKaFvf9kl3RqYyYfavTcUwT6XxON5YNuZ2R215m0+urnY4T8qzoTVBbOuMV0svXsOvmB4hrFed0HNOEBr35a45IG47f/As7s6WPrOhN0DpedJyeL9zD+oQhjHjsB07HMU0ssVtr1n33dww+vIic/zfP6TghzZdLCXYRkU9EJE9E1ovIN04jKCKjRaRERFZ7vn7nW1wTSZZPvpeUmt1UP/Qo4vJ2nXkT7ka8dDMFMb3p8IdbKTtQ5nSckOXLK/oq4OeqmgEMB2aISKaX7T5T1YGer9/7sD8TQfJmr+S8nEdZ0udG+t9yrtNxjENiW8RS8vCzdK0q4KtJ9zodJ2T5cinBvaq60nP7KJAHdPJXMBO5qsqr4MYbOehKpv/cPzodxzhs4B3n81nv6zl3+aNsfHWV03FCkl/m6EUkFRgEfOll9QgRWSMi80Qk61ueY7qI5IhITnFxsT9imRD1+RWPk3FiJVvveJLW3ds4HccEgX7zH+aQK4maG250vxAwZ8TnoheRFsAc4E5VLa2zeiXQTVUHAE8C/6rveVT1WVXNVtXs5ORkX2OZELVjUT5DPvgdX3a4mOF/utzpOCZItO7ehvzbnyCzbAWfT7Hz4Jwpn4peRGJwl/xsVX277npVLVXVY57bc4EYEUnyZZ8mfJ0sPcnxS6ZSIXF0efdpewPW/JcRj1zBspTvMXLuPWx4KcfpOCHFl6NuBHgeyFPVR+vZ5izPdojIUM/+DjZ2nya8LRs9k8yyFWy++wU6DuvidBwTZMQlpH/2HEVRKSRc/wNKdpY4HSlk+PKK/hzgGmBMrcMnJ4nITSJyk2eby4FcEVkDPAFMVVX75IP5hq9++z7nr3qMT/vfxrAHvut0HBOk2vRsy6En/0mnqh2sP/cn9kGqBpJg7N3s7GzNybE/zSJF4X920Py8wRTFdyV1z1LiW8c7HckEucXj/pfRH93DkitnMWr2T5yOExREZIWqZntbZ5+MNY4q2VnCiQsnE6VVxL3zupW8aZBRc2eS0248I/55Kysf+tjpOEHPit44prKskvxBl5N6chNbH3qb7uN7Ox3JhAhXtIu0la+zPa4PPe+ewpZ3cp2OFNSs6I0jtEZZNvAmzj70MV9e/zcG//JCpyOZEJPYNZHmn3zICVcCza6YzP7Ve52OFLSs6E2T0xrl02F3cd6WF1g86nec+9yPnI5kQlSnEV05/NIHtK4+SMmI8XZR8XpY0ZsmpTXKksF3MjrnT3zabwbnf3Kv05FMiMu4ajCbH3qXzuX5lA4eba/svbCiN02mpqqGz/rezPlrnmDx2T9j1Oon7UNRxi8G//JCNj82jw4VOykbej57lxc6HSmoWNGbJnFs3zG+TP0+o/KeYfGIX3H+V3+ykjd+NfCO8ymYtZC2lfupGTGSvNkrnY4UNKzoTcDtXLyNPd1HMnT3Oyy+9FHO//x+K3kTEP1+MpJ9r32KIqRefQ5f3Paq05GCghW9Cajl982lxZghJJ8sZPUD8xn9r59ayZuASv/BQOLWLGdT4lBGPnUli7N/zsnSk07HcpQVvQmIkh1H+CztOobcO5kDcZ0o/Xg5Z88c63QsEyGSs9qTtedjPu03g9ErHmVX+8FseHG507EcY0Vv/EprlGV3vU1Zj76MyH+ZxSN/Tbf9y+k2pqfT0UyEiWkew/lrn2L5fXNJqCyh949GsHjY3ZQW1j2bevizojd+s+6ZL1jX+lyGPzyFYzFt2PziMkb/537iWsU5Hc1EsCG/m0jzbbksTbuW0V89xMmuvfj0iqeoOFbhdLQmY0VvfKI1ysqHPmZ5+8n0u+kc2h8vYMk1z9L9yCoyf+j1/ErGNLnEbq05b/PzbHhxOYWJWZz/1m3sbZPBp5c/ybF9x5yOF3BW9KZRDm05yJIrZ7ElYQCD7x5L6oEcFn/nD7Tcu4VRL91IdHy00xGN+YbMH2Yz8OC/Wf4/H1Aa357z59xOdUpnFmf/nM1vrXU6XsDYaYpNgxWvL2LTkwuIfecNBhXNJ4YqNsX3p2janQx5dJqdedKEnNznllH6+8cYuustoqlmS1xfdo+aRsfpF5F2Wb+QOkLs205TbEVv6lW0dh8Fry7jxL+X0mHdx2SccH8AZa+rE5sGTyPlF1fR+4oBIfXLYIw3B/KKWX/fm7SZO5v+R78AYJ8rhfzUsdSccy4p3xtBj8kZRMVGOZy0fgErehGZADwORAHPqeqDddaLZ/0koAz4kaqe9uNqVvRNp7qimv2r9lD8VQGlq7ZSnZtHwvZcOh1aR8dq98fIK4ghr9UwDg+dQIdrJ5A+dRCuaJv1M+Fpb85u8v+ykKiPF5Be+DHt1H3106O0YHuLfhzu3BfNyKJ5/160ze5Bx5GpNGvbzOHUASp6EYkCNgNjgUJgOTBNVTfU2mYScBvuoh8GPK6qw0733Fb0p1dTVUNlWSUVxyqoPF5BxdGTVJSWU1FygoojZVQcKaPyyHEqD5RQdaiUmsMlcPAgUUcOElt6gISje2lbvofk6n3EUPX185YTx474PhzokEXlwGzaTRpO2vcH2bSMiUhao+xYlE/hnGVUf/EliTtz6VKa+3X5n3JQ2nEwriOlCSmUt2pPdWI7tG07pG0botq0IiYpkZg2LYhJbE5c2wRiE5sR2yre/dUyjpjmMcS2iPXpL4ZvK3pf3jEbCuSr6jbPTl4DLgU21NrmUuAlz3Vil4lIaxFJUdWAnF5uQ0I2sdUnzugx4tPUlffHSq3l//f8+vVy9zL3fUG93K9BUFzU4NJqoqj++ns0VcRQSRQ1xAFncuDiSWI55EriaGw7ShNS2JqSyebkFFw9Ukno252kId3pdE4q6fHRpDfmP4cxYUZcQurYNFLHpuG+RLa7/Ivzitm/dBslq7ZRuWkbrn17iDu4h4Sje2lfsoXEgoMkcubH6+93nUWHav/Xoy9F3wnYVet+Ie5X7afbphPwjZGIyHRgOkDXrl0bFehw+z64KhvxUWdp/Byz1vvYWss927i3la+XqYhnnfz3fXGhLheIC1wu1BUFUVFoVBREx0B0tPsrNhZiY5HYGKR5M1zN43E1iyM6MYGY1gnEtkmgWYdWND+rFS07J9I8qTkpLiGl0aM1xohLSM5qT3JWe2B4vdtVHKvg6O5Sju0uoWxvCRWHj7v/yi45Ts2xE9ScOElNWTl6ohwqK91f8fF0CEBmX4reW8PVfYnbkG3cC1WfBZ4F99RNYwKdU/BKYx5mjDF+F9silnbpSbRLT3I6ik/H0RcCXWrd7wzsacQ2xhhjAsiXol8OpIlIdxGJBaYC79XZ5j3gh+I2HCgJ1Py8McYY7xo9daOqVSJyK7AA9+GVL6jqehG5ybN+FjAX9xE3+bgPr7zO98jGGGPOhE+fU1fVubjLvPayWbVuKzDDl30YY4zxjX3qxRhjwpwVvTHGhDkremOMCXNW9MYYE+aC8uyVIlIM7DiDhyQBBwIUJ1hF4pghMscdiWOGyBy3L2PupqrJ3lYEZdGfKRHJqe9kPuEqEscMkTnuSBwzROa4AzVmm7oxxpgwZ0VvjDFhLlyK/lmnAzggEscMkTnuSBwzROa4AzLmsJijN8YYU79weUVvjDGmHlb0xhgT5kK66EVkgohsEpF8EZnpdJ5AEZEuIvKJiOSJyHoRucOzvK2IfCQiWzzf2zid1d9EJEpEVonIB577kTDm1iLylohs9Pybjwj3cYvITz0/27ki8qqIxIfjmEXkBREpEpHcWsvqHaeI/MrTb5tEZHxj9xuyRe+5OPnTwEQgE5gmIpnOpgqYKuDnqpqB+9plMzxjnQksUtU0YJHnfri5A8irdT8Sxvw4MF9V+wADcI8/bMctIp2A24FsVe2L+7TnUwnPMf8DmFBnmddxen7HpwJZnsf8xdN7Zyxki55aFydX1Qrg1MXJw46q7lXVlZ7bR3H/4nfCPd4XPZu9CHzXkYABIiKdgcnAc7UWh/uYWwGjgOcBVLVCVY8Q5uPGfcr0ZiISDTTHfSW6sBuzqi4BDtVZXN84LwVeU9WTqlqA+7oeQxuz31Au+vouPB7WRCQVGAR8CXQ4dcUuz/f2DkYLhMeAu4CaWsvCfcw9gGLg754pq+dEJIEwHreq7gb+BOwE9uK+Et1CwnjMddQ3Tr91XCgXfYMvPB4uRKQFMAe4U1VLnc4TSCJyEVCkqiucztLEooHBwF9VdRBwnPCYsqiXZ076UqA70BFIEJGrnU0VFPzWcaFc9BF14XERicFd8rNV9W3P4v0ikuJZnwIUOZUvAM4BLhGR7bin5caIyCuE95jB/XNdqKpfeu6/hbv4w3nc3wEKVLVYVSuBt4GRhPeYa6tvnH7ruFAu+oZcnDwsiIjgnrPNU9VHa616D7jWc/ta4N2mzhYoqvorVe2sqqm4/23/rapXE8ZjBlDVfcAuEUn3LLoQ2EB4j3snMFxEmnt+1i/E/T5UOI+5tvrG+R4wVUTiRKQ7kAZ81ag9qGrIfuG+8PhmYCtwj9N5AjjOc3H/ybYWWO35mgS0w/0u/RbP97ZOZw3Q+EcDH3huh/2YgYFAjuff+19Am3AfN3AfsBHIBV4G4sJxzMCruN+HqMT9iv36bxsncI+n3zYBExu7XzsFgjHGhLlQnroxxhjTAFb0xhgT5qzojTEmzFnRG2NMmLOiN8aYMGdFb4wxYc6K3hhjwtz/Bz+XckHiFbVlAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.optimize import curve_fit\n",
    "\n",
    "def func(x, a1, a2, a3):\n",
    "    return a1*np.exp(-(x-a2)**2/a3**2)\n",
    "\n",
    "ndata = 100\n",
    "xdata = np.linspace(1, ndata, ndata)\n",
    "y = func(xdata, 20, 60, 15)\n",
    "ydata = y\n",
    "plt.plot(xdata, ydata, 'b-', label='data')\n",
    "\n",
    "popt, pcov = curve_fit(func, xdata, ydata)\n",
    "plt.plot(xdata, func(xdata, *popt), 'r-', label='fit')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[20. 60. 15.]\n"
     ]
    }
   ],
   "source": [
    "print(popt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "```python\n",
    "guess1 = [10,50,10]\n",
    "```\n",
    "から初めてGauss-Newton法でfittingしなさい．\n",
    "\n",
    "ただし，Gauss関数\n",
    "$$\n",
    "f(x) = {\\it a_1}\\,{\\exp \\left(-1/2\\,{\\frac { \\left( x-{\\it a_2} \\right) ^{2}}{{{\n",
    "\\it a_3}}^{2}}}\\right)}\\\\\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "それぞれのパラメータでの微分は，\n",
    "$$\n",
    "\\frac{\\partial f}{\\partial a_1}\n",
    "={\\exp \\left({-\\,{\\frac { \\left( x-{\\it a_2} \\right) ^{2}}{{2{\\it a_3}}^{2\n",
    "}}}}\\right)} \\\\\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "$$\n",
    "\\frac{\\partial f}{\\partial a_2}\n",
    "={\\frac {{\\it a_1}\\, \\left( x-{\\it a_2} \\right) }\n",
    "  {{{\\it a_3}}^{2}}\n",
    "  }\n",
    "\\exp\\left({\n",
    "      - {\\frac { \n",
    "      \\left( x-{\\it a_2} \\right) ^{2}}\n",
    "      {{2 \\it a_3^{2}}}}\n",
    "    }\\right)\n",
    "$$\n",
    "$$\n",
    "\\frac{\\partial f}{\\partial a_3}\n",
    "={\\frac {{\\it a_1}\\, \\left( x-{\\it a_2} \\right) ^{2}}{{{\\it a_3}}^{3}}\n",
    "{\n",
    "\\exp\\left({-\n",
    "{\\frac { \\left( x-{\\it a_2} \\right) ^{2} }\n",
    "{2{\\it a_3}^2} \n",
    "}}\\right)}}\n",
    "$$　\n",
    "これらの関数は次の通り定義される．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pprint import pprint\n",
    "import scipy.linalg as linalg\n",
    "\n",
    "def dfda1(x,a1,a2,a3):\n",
    "    return np.exp(-(x - a2) ** 2 / a3 ** 2 / 2)\n",
    "def dfda2(x,a1,a2,a3):\n",
    "    return  a1 * (x - a2) / a3 ** 2 * np.exp(-(x - a2) ** 2 / a3 ** 2 / 2)\n",
    "def dfda3(x,a1,a2,a3):\n",
    "    return a1 * (x - a2) ** 2 / a3 ** 3 * np.exp(-(x - a2) ** 2 / a3 ** 2 / 2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "以下の初期条件からfittingをおこなえ．"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "nparam = 3\n",
    "guess1 = [10, 50, 10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  },
  "latex_envs": {
   "LaTeX_envs_menu_present": true,
   "autocomplete": true,
   "bibliofile": "biblio.bib",
   "cite_by": "apalike",
   "current_citInitial": 1,
   "eqLabelWithNumbers": true,
   "eqNumInitial": 1,
   "hotkeys": {
    "equation": "Ctrl-E",
    "itemize": "Ctrl-I"
   },
   "labels_anchors": false,
   "latex_user_defs": false,
   "report_style_numbering": false,
   "user_envs_cfg": false
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {
    "height": "12px",
    "width": "252px"
   },
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": true,
   "toc_position": {},
   "toc_section_display": "block",
   "toc_window_display": true
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
