{ "cells": [ { "cell_type": "markdown", "id": "3f33bc73", "metadata": {}, "source": [ "# Fitting HG1G2 with constrains using Python and sbpy" ] }, { "cell_type": "markdown", "id": "2f7a8f90", "metadata": {}, "source": [ "*2023, Antti Penttilä \n", "Department of Physics, University of Helsinki, Finland*" ] }, { "cell_type": "code", "execution_count": 1, "id": "8d109366", "metadata": {}, "outputs": [], "source": [ "# We need astropy for astropy Tables, and sbpy for H,G2,G2 base functions\n", "import numpy as np\n", "import scipy.optimize as sco\n", "from matplotlib import pyplot as plt\n", "%matplotlib inline\n", "from astropy.table import Table\n", "from astropy import units as un\n", "import sbpy.photometry as pm" ] }, { "cell_type": "markdown", "id": "7ab48e6d", "metadata": {}, "source": [ "## Example data" ] }, { "cell_type": "markdown", "id": "cebf79f7", "metadata": {}, "source": [ "An example of usage, fit data from asteroid Nysa with all methods \n", "\n", "Data needs to be in Astropy Table format. Phase angles in degrees, brightness in magnitudes" ] }, { "cell_type": "code", "execution_count": 2, "id": "905c1985", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "phase V \n", " deg mag \n", "----- -----\n", " 0.17 6.911\n", " 0.36 6.972\n", " 0.63 7.014\n", " 0.75 7.033\n", " 0.98 7.052\n", " 1.23 7.08\n", " 1.62 7.105\n", " 2.02 7.126\n", " 4.95 7.235\n", " 8.27 7.304\n", " ... ...\n", " 13.2 7.426\n", "13.27 7.427\n", "13.58 7.433\n", "13.81 7.437\n", "13.89 7.434\n", "17.16 7.511\n", "18.52 7.524\n", " 19.0 7.551\n", " 19.4 7.545\n", "21.47 7.599\n", "Length = 23 rows\n" ] } ], "source": [ "t1 = [0.17, 0.36, 0.63, 0.75, 0.98, 1.23, 1.62, 2.02, 4.95, 8.27,\n", " 9.78, 11.59, 12.94, 13.2, 13.27, 13.58, 13.81, 13.89, 17.16,\n", " 18.52, 19., 19.4, 21.47]\n", "t2 = [6.911, 6.972, 7.014, 7.033, 7.052, 7.08, 7.105, 7.126, 7.235,\n", " 7.304, 7.341, 7.385, 7.425, 7.426, 7.427, 7.433, 7.437, 7.434,\n", " 7.511, 7.524, 7.551, 7.545, 7.599]\n", "nysa = Table([t1,t2], names=('phase','V'))\n", "nysa['phase'].unit = 'deg'\n", "nysa['V'].unit = 'mag'\n", "print(nysa)" ] }, { "cell_type": "markdown", "id": "cab5c160-45b8-4c88-a571-7b0bac95c90f", "metadata": {}, "source": [ "Show data in phase-magnitude plot." ] }, { "cell_type": "code", "execution_count": 3, "id": "1de28024", "metadata": {}, "outputs": [ { "data": { "image/png": "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1a9fP40dO1ZhYWHq06ePVqxYUeE5RUVFatSokUdb48aNtX37dl24cKE2ywUAAHWAqeHmm2++0fLly9WpUyetX79e99xzj2bOnKm///3v5Z4TFxenv/3tb/r8889lGIY+++wz/e1vf9OFCxf03XfflepfVFSkwsJCjwcAALAuU+fcOJ1O9evXT4sWLZIk9enTR3v27NHzzz+vpKSkMs9ZsGCB8vPzdcMNN8gwDIWHhyspKUmPP/54mRtppaamauHChbX6c0iSwyFlZ0t5eVJkpBQbK9nttf62AADgMqaO3ERGRupnP/uZR1u3bt2Uk5NT7jmNGzfWiy++qB9++EGHDx9WTk6OYmJiFBwcrFatWpXqP2/ePBUUFLgfubm5Xv85MjKkmBhp6FBpwgTXnzExrnYAAOBbpo7c3Hjjjdq7d69H2759+9SuXbsrntuwYUP3rqCrV6/WL3/5yzJHboKCghQUFOSdgsuQkSGNGSNdPi372DFX+9q1UkJCrb09AAC4jKkjN7Nnz9Ynn3yiRYsW6cCBA3rttdf0wgsvKDk52d1n3rx5SkxMdD/ft2+f0tPTtX//fm3fvl133HGH9uzZ47605UsOh5SSUjrYSD+1zZrl6gcAAHzD1HDTv39/rVu3TqtWrVL37t31yCOPaMmSJbrzzjvdffLy8jwuUzkcDj311FPq1auXhg8frvPnz2vbtm2KiYnxef3Z2dLRo+UfNwwpN9fVDwAA+Iap69yYwZvr3Kxa5ZpjcyWvvSaNH1+jtwIAoF6rM+vc1HWRkd7tBwAAao5wUwOxsVJUlGSzlX3cZpOio139AACAbxBuasBul5Yudf398oBT8nzJEta7AQDAlwg3NZSQ4Lrdu00bz/aoKG4DBwDADKauc2MVCQlSfDwrFAMA4A8IN15it0tDhphdBQAA4LIUAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwlAZmF2BVDoeUnS3l5UmRkVJsrGS3m10VAADWR7ipBRkZUkqKdPToT21RUdLSpVJCgnl1AQBQH3BZyssyMqQxYzyDjSQdO+Zqz8gwpy4AAOoLwo0XORyuERvDKH2spG3WLFc/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2bOHeYX/w8hNNbRs2VJ2u73UjPMTJ04oIiLCpKpwJU2bNlXnzp114MABs0tBOUq+P3y36p727durZcuWfL9MMGPGDL399tvatGmToqKi3O0REREqLi7W6dOnPfrXh+8T4aYaAgMD1bdvX23cuNHd5nQ6tXHjRg0cONDEylCRs2fP6uDBg4qMjDS7FJTjmmuuUUREhMd3q7CwUJ9++infLT939OhRff/993y/fMgwDM2YMUPr1q3Thx9+qGuuucbjeN++fdWwYUOP79PevXuVk5Nj+e8Tl6Wqac6cOUpKSlK/fv00YMAALVmyROfOndOUKVPMLg3/c99992nUqFFq166djh8/rgcffFB2u13jx483u7R67ezZsx7/dX/o0CHt2rVLzZs3V9u2bTVr1iz9+c9/VqdOnXTNNddowYIFat26tW699Vbziq6HKvqcmjdvroULF+q2225TRESEDh48qD/84Q/q2LGj4uLiTKy6fklOTtZrr72mN954Q8HBwe55NKGhoWrcuLFCQ0M1bdo0zZkzR82bN1dISIjuvfdeDRw4UDfccIPJ1dcys2/XqsuWLVtmtG3b1ggMDDQGDBhgfPLJJ2aXhEuMGzfOiIyMNAIDA402bdoY48aNMw4cOGB2WfXepk2bDEmlHklJSYZhuG4HX7BggREeHm4EBQUZv/jFL4y9e/eaW3Q9VNHn9MMPPxg333yz0apVK6Nhw4ZGu3btjLvvvtvIz883u+x6pazPR5KRlpbm7vPjjz8a06dPN5o1a2ZcddVVxujRo428vDzzivYRm2EYhu8jFQAAQO1gzg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg1Qj8XExGjJkiVml2GKzZs3y2azldp3pzpuuukmvfbaaxX2sdlsyszMrPF7XeqOO+7QU0895dXXBKyAcAMANfDmm2/qxIkTHrtk+8qf/vQnPfrooyooKPD5ewP+jHADADXwzDPPaMqUKQoI8P3/nXbv3l0dOnRQenq6z98b8GeEG8CihgwZohkzZmjGjBkKDQ1Vy5YttWDBAl2+48oPP/ygqVOnKjg4WG3bttULL7zgcXzu3Lnq3LmzrrrqKrVv314LFizQhQsX3Me//PJLDR06VMHBwQoJCVHfvn312WefuY9v2bJFsbGxaty4saKjozVz5kydO3eu3LoPHjyo+Ph4hYeHq0mTJurfv7+ysrI8+sTExGjRokUV1r1t2zb17t1bjRo1Ur9+/ZSZmSmbzaZdu3aV+95VrfW///2vPvzwQ40aNcqjff/+/brpppvUqFEj/exnP9OGDRtKnZubm6vbb79dTZs2VfPmzRUfH6/Dhw+7j1+8eFEzZ85U06ZN1aJFC82dO1dJSUmlNhAdNWqUVq9eXW6NQH1EuAEs7O9//7saNGig7du3a+nSpXr66af1t7/9zaPPU089pX79+umLL77Q9OnTdc8992jv3r3u48HBwXrppZf073//W0uXLtWKFSv0l7/8xX38zjvvVFRUlHbs2KHPP/9c999/vxo2bCjJFVRuueUW3Xbbbfrqq6+0Zs0abdmyRTNmzCi35rNnz+r//u//tHHjRn3xxRe65ZZbNGrUKOXk5FS67sLCQo0aNUo9evTQzp079cgjj2ju3LkV/ltVp9YtW7boqquuUrdu3dxtTqdTCQkJCgwM1Keffqrnn3++1HtfuHBBcXFxCg4OVnZ2trZu3aomTZrolltuUXFxsSTpscce06uvvqq0tDRt3bpVhYWFZc7ZGTBggLZv366ioqIKfz6gXjF5404AtWTw4MFGt27dDKfT6W6bO3eu0a1bN/fzdu3aGRMnTnQ/dzqdRlhYmLF8+fJyX/eJJ54w+vbt634eHBxsvPTSS2X2nTZtmvHrX//aoy07O9sICAgwfvzxx0r/LNdee62xbNmySte9fPlyo0WLFh7vsWLFCkOS8cUXXxiG8dOu16dOnap2rX/5y1+M9u3be7StX7/eaNCggXHs2DF323vvvWdIMtatW2cYhmG88sorRpcuXTw+m6KiIqNx48bG+vXrDcMwjPDwcOOJJ55wH7948aLRtm1bIz4+3uP9vvzyS0OScfjw4TJrBOqjBuZGKwC16YYbbpDNZnM/HzhwoJ566ik5HA7Z7XZJUs+ePd3HbTabIiIi9O2337rb1qxZo2eeeUYHDx7U2bNndfHiRYWEhLiPz5kzR3fddZdeeeUVDRs2TGPHjlWHDh0kuS5ZffXVV3r11Vfd/Q3DkNPp1KFDhzxGPEqcPXtWDz30kN555x3l5eXp4sWL+vHHH0uN3FRU9969e9WzZ081atTI3WfAgAEV/ltVp9Yff/zR4z0k6euvv1Z0dLRat27tbhs4cGCp9zpw4ICCg4M92s+fP6+DBw+qoKBAJ06c8KjZbrerb9++cjqdHuc0btxYkuvyIgAXwg1Qz5VcQiphs9ncv0A//vhj3XnnnVq4cKHi4uIUGhqq1atXe9x+/NBDD2nChAl655139N577+nBBx/U6tWrNXr0aJ09e1a/+c1vNHPmzFLv27Zt2zLrue+++7RhwwY9+eST6tixoxo3bqwxY8a4L9dUpu7qqE6tLVu21KlTp6r1Xn379vUIUiVatWpVpdc6efJktc4DrIxwA1jYp59+6vH8k08+UadOndyjNleybds2tWvXTvPnz3e3HTlypFS/zp07q3Pnzpo9e7bGjx+vtLQ0jR49Wtddd53+/e9/q2PHjpWueevWrZo8ebJGjx4tyRUELp1oWxldunRRenq6ioqKFBQUJEnasWNHhedUp9Y+ffooPz9fp06dUrNmzSRJ3bp1U25urvLy8hQZGSnJ9e9++XutWbNGYWFhHqNglwoPD9eOHTt00003SZIcDod27typ3r17e/Tbs2ePoqKi1LJly0rXDVgdE4oBC8vJydGcOXO0d+9erVq1SsuWLVNKSkqlz+/UqZNycnK0evVqHTx4UM8884zWrVvnPv7jjz9qxowZ2rx5s44cOaKtW7dqx44d7ks4c+fO1bZt2zRjxgzt2rVL+/fv1xtvvFHhJN1OnTopIyNDu3bt0pdffqkJEyZUeUSm5Jxf//rX+vrrr7V+/Xo9+eSTkuRxme5S1am1T58+atmypbZu3epuGzZsmDp37qykpCR9+eWXys7O9giHkmsSdsuWLRUfH6/s7GwdOnRImzdv1syZM3X06FFJ0r333qvU1FS98cYb2rt3r1JSUnTq1KlS9WdnZ+vmm2+u0r8PYHWEG8DCEhMT9eOPP2rAgAFKTk5WSkqKfv3rX1f6/F/96leaPXu2ZsyYod69e2vbtm1asGCB+7jdbtf333+vxMREde7cWbfffrtGjBihhQsXSnLNi/noo4+0b98+xcbGqk+fPnrggQc85qNc7umnn1azZs00aNAgjRo1SnFxcbruuuuq9HOHhITorbfe0q5du9S7d2/Nnz9fDzzwgCSVmiNTojq12u12TZkyxePyUkBAgNatW+f+d7/rrrv06KOPepx31VVX6Z///Kfatm2rhIQEdevWTdOmTdP58+fdIzlz587V+PHjlZiYqIEDB6pJkyaKi4vzqP/8+fPKzMzU3XffXaV/H8DqbIZx2aIXACxhyJAh6t27d73dXuFyr776qqZMmaKCggL3JFxvyM/P17XXXqudO3eqXbt2XnvdyzmdTnXr1k233367HnnkEUnS8uXLtW7dOn3wwQe19r5AXcScGwCW9PLLL6t9+/Zq06aNvvzyS82dO1e33367V4ONJEVERGjlypXKycnxarg5cuSIPvjgAw0ePFhFRUV69tlndejQIU2YMMHdp2HDhlq2bJnX3hOwCsINAEvKz8/XAw88oPz8fEVGRmrs2LGlLg95y+WrBntDQECAXnrpJd13330yDEPdu3dXVlaWxy3pd911l9ffF7ACLksBAABLYUIxAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwFMINAACwlP8PsG3rA/cYhU8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "g,p1=plt.subplots(1,1)\n", "p1.plot(nysa['phase'],nysa['V'],'bo')\n", "p1.set_title('Nysa')\n", "p1.set_xlabel('phase angle (deg)')\n", "p1.set_ylabel('mag')\n", "p1.invert_yaxis()" ] }, { "cell_type": "markdown", "id": "ba4af1aa", "metadata": {}, "source": [ "## Fit HG" ] }, { "cell_type": "markdown", "id": "a0eacfcf", "metadata": {}, "source": [ "Define the fit function." ] }, { "cell_type": "code", "execution_count": 4, "id": "13905263", "metadata": {}, "outputs": [], "source": [ "# Photometric system from sbpy package, photometry submodule\n", "def pf(xdeg,par1,par2):\n", " return pm.HG.evaluate(xdeg*np.pi/180,par1,par2)\n", "\n", "# Sum-of-squares\n", "def sse_fun(x,data):\n", " return sum([(pf(d[0],x[0],x[1])-d[1])**2 for d in data])\n", "\n", "# Fit function\n", "def fit_fun(data, x0=[6,0.12]):\n", " cv = ({'type': 'ineq', 'fun': lambda x: x[1]},\n", " {'type': 'ineq', 'fun': lambda x: 1-x[1]})\n", " return sco.minimize(sse_fun,x0,args=data,constraints=cv,method='COBYLA')" ] }, { "cell_type": "code", "execution_count": 5, "id": "bb4fd42c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMS of H,G-fit is 0.00663333\n", "Fitted H=6.9567 and G=0.512114\n" ] } ], "source": [ "# Do fit\n", "res = fit_fun(nysa)\n", "print(\"RMS of H,G-fit is {:2.8f}\".format(res.fun))\n", "print(\"Fitted H={:1.4f} and G={:1.6f}\".format(res.x[0],res.x[1]))" ] }, { "cell_type": "code", "execution_count": 6, "id": "aeac9a5a", "metadata": {}, "outputs": [ { "data": { "image/png": "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iWb2VEyMGYsTEmJadlKMGAEjR0Lx4vD771CsmFWlioiIONSN/P5WuHElCQlQty7s3Ant28PcuVZXJCIi4hA38vtb3VKuxNvbdE95eJhNqZYutboiERERp6Nw4+QSE2HNGpg/33xMvP0OGDDAPPnss2aQsYiIiKRQuHFi4eH/babZ1PRCNW1qjr+6fSRUrAhHjkC/fhZXKSIi4lwUbpzU1ZtpJjtyBB596hbWdPnYzBX/+GOIiLCgQhEREeekcOOEMtpMEy6f6/R+Q5IGvmQOnn4a/vrLcQWKiIg4MYUbJ5TRZprJ7HY4dAgim42EGjXg779NwMldE99ERETSpXDjhK61meaVjp7wgU8/vby43yef5GxhIiIiLkDhxgldbzPNVNfVqgWvvWZO9OkDUVE5VpeIiIgrULhxQtfbTNNmg6Agcx1gNtRs0ABOn4awMDNoR0REJJdSuHFCmdlMc/LkK7Zm8PSE2bMhf35YuxbGjnVUqSIiIk5H4cZJXW8zzdDQq26oUAHeecd8Pnw4bNzokDpFREScjfaWcnLX3UzzSnY7PPWUWc44OBi2bgU/PwdWKyIikjNcZm+p4OBgbDZbmkevXr3Svf63337jscceS7lv8uTJji3YAp6e0KQJtGtnPmYYbMD0WU2bZoLNwYNme4bclV1FRESsDTebN28mJiYm5bF8+XIA2rZtm+71586do3z58owdO5aSJUs6slTX4ednWm48PWHBAk0PFxGRXMfScFO8eHFKliyZ8li6dCkVKlSgcePG6V5/xx13MH78eJ588kl8fHwcXK3zSrO55h13w8iR5snevWH3bivLExERcSinGVCckJDAnDlz6Nq1K7aM5kBnQXx8PHFxcake7iSjzTXDK79s+rHOnoW2beH8eYsrFRERcQynCTcRERGcOnWKzp07Z+vrjhkzBj8/v5RHUFBQtr6+la61uWabJzz55qm5UKIEbN9uWnBERERyAacJNzNnzqRFixaUKlUqW1938ODBxMbGpjwOHTqUra9vlcxsrvnsa6VI/HSeGWj80UdmB3ERERE35xThJioqihUrVtC9e/dsf20fHx98fX1TPdxBpjfX9L738vibnj1hxw7HFCgiImIRpwg3s2bNokSJErRs2dLqUlxGZjfXjIkBhgyB++83427atjXbNIiIiLgpy8NNUlISs2bNIiwsDC8vr1TP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IiJOyvJws2LFCqKjo+natWua56Kjo4mJiUk5njZtGgkJCbRp04aAgICUx1tvveXIksXRvL3h/ffh3XfB0xPmzoVGjeDwYasrExERJ+Q0A4odRevcuLg1a6BNGzhxAvz94fPPISTE6qpERCSHudyAYpFMa9IENm+GGjXMFPF77oEpUzQOR0REUijciOspVw42boR27eDSJejXDzp0MNs3iIhIrqdwI64pf34z9mbyZDMOZ948s7P43r1WVyYiIhZTuBHXZbNB376wapUZf7NjB9StC198YXVlIiJiIYUbcX2NGsEvv0DDhhAXZwYc9+tnNuMUEZFcR+FG3EPp0mbLhhdfNMdTpmAPacTGhdHMn28mWSUmWlqhiIg4iMKNuI88ecwKxl99RUL+Qtg2/UTlJ+swv/1imjaF4GAID7e6SBERyWkKN+J2wi89zK1nt7CZehTlXxbTmsn05e/D8bRpo4AjIuLuFG7ErSQmmjHGByjH/1jHRPoD0Je32UB9Ktl306+fuqhERNyZ1/UvSevRRx/FZrOlOW+z2cibNy8VK1akffv2VKlS5aYLFLkRkZGXd2VIwIcXmMhK7uUTwridX/mF2+l16F0if+hEk6Zp/xsWERHXl6WWGz8/P1atWsWWLVuw2WzYbDZ+/fVXVq1axaVLl1i4cCG1atVi/fr12V2vyDVdsRVZim9oSS22sZomFOAsn9CZcq+0g5MnHV+giIjkuCyFm5IlS9K+fXv279/PF198wRdffMG+ffvo0KEDFSpU4I8//iAsLIxBgwZld70i1xQQkP75o5SmGSsYwutcwpOyPy6EWrVg7VrHFigiIjkuSxtnFi9enPXr11O5cuVU53fv3k2DBg34559/2LFjByEhIZw6dSq7as0W2jjTvSUmmllRR46kv92UzQYti29iccH22PbtMydefhlGjDC7j4uIiFPK8Y0zL126xJ9//pnm/J9//knifyM18+bNm+64HJGc5Olp9tEEk1uulHzcZdqd2LZuhW7dTAIaMwbuvht++82htYqISM7IUrjp2LEj3bp1Y9KkSaxbt45169YxadIkunXrRqdOnQBYu3Yt1apVy9ZiRTIjNBQWLTLr+l0pMNCcDw0FChSADz80J4oWhV9/NVs3TJigqVQiIi4uS91SiYmJjB07lnfeeYfjx48D4O/vz/PPP8+gQYPw9PQkOjoa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2dSpU+1lypSxe3t72++88077jz/+aHVJcoUnnnjCHhAQYPf29raXLl3a/sQTT9j37t1rdVm53urVq+1AmkdYWJjdbjfTwYcOHWr39/e3+/j42O+99177rl27rC06F7rW9+ncuXP2+++/3168eHF7njx57GXLlrX36NHDfuzYMavLzlXS+/4A9lmzZqVcc/78eXvPnj3thQsXtt9yyy32Rx991B4TE2Nd0Q5is9vtdsdHKhEREZGcoTE3IiIi4lYUbkRERMStKNyIiIiIW1G4EREREbeicCMiIiJuReFGRERE3IrCjYiIiLgVhRuRXCw4OJjJkydbXYYl1qxZg81mS7PvTlY0atSIefPmXfMam81GRETETb/XlZ588kkmTJiQra8p4g4UbkREbsLixYs5fvx4ql2yHeXVV1/ljTfeIDY21uHvLeLMFG5ERG7C22+/TZcuXfDwcPz/TqtXr06FChWYM2eOw99bxJkp3Ii4qSZNmtC7d2969+6Nn58fxYoVY+jQoVy948q5c+fo2rUrBQsWpEyZMkyfPj3V84MGDaJy5crccsstlC9fnqFDh3Lx4sWU57dt20bTpk0pWLAgvr6+1K1bl59//jnl+XXr1hESEkK+fPkICgqiT58+nD17NsO69+3bR+vWrfH396dAgQLccccdrFixItU1wcHBjB49+pp1b9iwgdq1a5M3b17q1atHREQENpuNrVu3ZvjeN1rr33//zapVq2jVqlWq83v27KFRo0bkzZuX2267jeXLl6e599ChQzz++OMUKlSIIkWK0Lp1aw4ePJjy/KVLl+jTpw+FChWiaNGiDBo0iLCwsDQbiLZq1YoFCxZkWKNIbqRwI+LGPvnkE7y8vNi0aRNTpkxh4sSJfPjhh6mumTBhAvXq1ePXX3+lZ8+ePPfcc+zatSvl+YIFC/Lxxx/z+++/M2XKFGbMmMGkSZNSnn/qqacIDAxk8+bN/PLLL7z88svkyZMHMEHlgQce4LHHHmP79u0sXLiQdevW0bt37wxrPnPmDA8++CArV67k119/5YEHHqBVq1ZER0dnuu64uDhatWpFjRo12LJlC6NGjWLQoEHX/LfKSq3r1q3jlltuoWrVqinnkpKSCA0Nxdvbm59++on3338/zXtfvHiR5s2bU7BgQSIjI1m/fj0FChTggQceICEhAYBx48Yxd+5cZs2axfr164mLi0t3zM6dd97Jpk2biI+Pv+bXJ5KrWLxxp4jkkMaNG9urVq1qT0pKSjk3aNAge9WqVVOOy5Yta+/QoUPKcVJSkr1EiRL2adOmZfi648ePt9etWzfluGDBgvaPP/443Wu7detmf/rpp1Odi4yMtHt4eNjPnz+f6a+lWrVq9qlTp2a67mnTptmLFi2a6j1mzJhhB+y//vqr3W6/vOv1yZMns1zrpEmT7OXLl091btmyZXYvLy/7kSNHUs59++23dsD+5Zdf2u12u/3TTz+1V6lSJdX3Jj4+3p4vXz77smXL7Ha73e7v728fP358yvOXLl2ylylTxt66detU77dt2zY7YD948GC6NYrkRl7WRisRyUl33303Npst5bh+/fpMmDCBxMREPD09AahZs2bK8zabjZIlS/LXX3+lnFu4cCFvv/02+/bt48yZM1y6dAlfX9+U5wcMGED37t359NNPadasGW3btqVChQqA6bLavn07c+fOTbnebreTlJTEgQMHUrV4JDtz5gwjRozg66+/JiYmhkuXLnH+/Pk0LTfXqnvXrl3UrFmTvHnzplxz5513XvPfKiu1nj9/PtV7APzxxx8EBQVRqlSplHP169dP81579+6lYMGCqc5fuHCBffv2ERsby/Hjx1PV7OnpSd26dUlKSkp1T758+QDTvSgihsKNSC6X3IWUzGazpfwC3bhxI0899RQjR46kefPm+Pn5sWDBglTTj0eMGEH79u35+uuv+fbbbxk+fDgLFizg0Ucf5cyZMzzzzDP06dMnzfuWKVMm3XoGDhzI8uXLeeutt6hYsSL58uWjTZs2Kd01mak7K7JSa7FixTh58mSW3qtu3bqpglSy4sWL39Br/fvvv1m6T8SdKdyIuLGffvop1fGPP/5IpUqVUlptrmfDhg2ULVuWIUOGpJyLiopKc13lypWpXLky/fv3p127dsyaNYtHH32U22+/nd9//52KFStmuub169fTuXNnHn30UcAEgSsH2mZGlSpVmDNnDvHx8fj4+ACwefPma96TlVrr1KnDsWPHOHnyJIULFwagatWqHDp0iJiYGAICAgDz7371ey1cuJASJUqkagW7kr+/P5s3b6ZRo0YAJCYmsmXLFmrXrp3qup07dxIYGEixYsUyXbeIu9OAYhE3Fh0dzYABA9i1axfz589n6tSp9O3bN9P3V6pUiejoaBYsWMC+fft4++23+fLLL1OeP3/+PL1792bNmjVERUWxfv16Nm/enNKFM2jQIDZs2EDv3r3ZunUre/bs4auvvrrmIN1KlSoRHh7O1q1b2bZtG+3bt7/hFpnke55++mn++OMPli1bxltvvQWQqpvuSlmptU6dOhQrVoz169ennGvWrBmVK1cmLCyMbdu2ERkZmSocghmEXaxYMVq3bk1kZCQHDhxgzZo19OnTh8OHDwPw/PPPM2bMGL766it27dpF3759OXnyZJr6IyMjuf/++2/o30fE3SnciLixTp06cf78ee6880569epF3759efrppzN9/8MPP0z//v3p3bs3tWvXZsOGDQwdOjTleU9PT06cOEGnTp2oXLkyjz/+OC1atGDkyJGAGRezdu1adu/eTUhICHXq1GHYsGGpxqNcbeLEiRQuXJgGDRrQqlUrmjdvzu23335DX7evry9Llixh69at1K5dmyFDhjBs2DCANGNkkmWlVk9PT7p06ZKqe8nDw4Mvv/wy5d+9e/fuvPHGG6nuu+WWW/jhhx8oU6YMoaGhVK1alW7dunHhwoWUlpxBgwbRrl07OnXqRP369SlQoADNmzdPVf+FCxeIiIigR48eN/TvI+LubHb7VYteiIhbaNKkCbVr18612ytcbe7cuXTp0oXY2NiUQbjZ4dixY1SrVo0tW7ZQtmzZbHvdqyUlJVG1alUef/xxRo0aBcC0adP48ssv+f7773PsfUVckcbciIhbmj17NuXLl6d06dJs27aNQYMG8fjjj2drsAEoWbIkM2fOJDo6OlvDTVRUFN9//z2NGzcmPj6ed955hwMHDtC+ffuUa/LkycPUqVOz7T1F3IXCjYi4pWPHjjFs2DCOHTtGQEAAbdu2TdM9lF2uXjU4O3h4ePDxxx8zcOBA7HY71atXZ8WKFammpHfv3j3b31fEHahbSkRERNyKBhSLiIiIW1G4EREREbeicCMiIiJuReFGRERE3IrCjYiIiLgVhRsRERFxKwo3IiIi4lYUbkRERMStKNyIiIiIW/k//Lz/7kKytzwAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot result\n", "fx=np.linspace(nysa['phase'][0],nysa['phase'][-1],100)\n", "fy=np.array([pf(x,res.x[0],res.x[1]) for x in fx])\n", "g,p1=plt.subplots(1,1)\n", "p1.plot(nysa['phase'],nysa['V'],'bo')\n", "p1.plot(fx,fy,'r')\n", "p1.set_title('Nysa')\n", "p1.set_xlabel('phase angle (deg)')\n", "p1.set_ylabel('mag')\n", "p1.invert_yaxis()" ] }, { "cell_type": "markdown", "id": "4d206d46", "metadata": {}, "source": [ "## Fit HG12" ] }, { "cell_type": "markdown", "id": "5efaedbc", "metadata": {}, "source": [ "Define the fit function." ] }, { "cell_type": "code", "execution_count": 7, "id": "1900d547", "metadata": {}, "outputs": [], "source": [ "# Photometric system from sbpy package, photometry submodule\n", "def pf(xdeg,par1,par2):\n", " return pm.HG12.evaluate(xdeg*np.pi/180,par1,par2)\n", "\n", "# Sum-of-squares\n", "def sse_fun(x,data):\n", " return sum([(pf(d[0],x[0],x[1])-d[1])**2 for d in data])\n", "\n", "# Fit function\n", "def fit_fun(data, x0=[6,0.12]):\n", " cv1 = ({'type': 'ineq', 'fun': lambda x: x[1]+0.0818919},\n", " {'type': 'ineq', 'fun': lambda x: 0.2-x[1]})\n", " cv2 = ({'type': 'ineq', 'fun': lambda x: x[1]-0.2},\n", " {'type': 'ineq', 'fun': lambda x: 0.909714-x[1]})\n", " res1 = sco.minimize(sse_fun,[6,0.12],args=data,constraints=cv1,method='COBYLA')\n", " res2 = sco.minimize(sse_fun,[6,0.32],args=data,constraints=cv2,method='COBYLA')\n", " if(res1.fun < res2.fun):\n", " return res1\n", " else:\n", " return res2" ] }, { "cell_type": "code", "execution_count": 8, "id": "26f4bb19", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMS of H,G12-fit is 0.00196114\n", "Fitted H=6.8952 and G12=-0.064504\n", " meaning that G1=0.013088 and G2=0.689001\n" ] } ], "source": [ "# Do fit\n", "res = fit_fun(nysa)\n", "print(\"RMS of H,G12-fit is {:2.8f}\".format(res.fun))\n", "print(\"Fitted H={:1.4f} and G12={:1.6f}\".format(res.x[0],res.x[1]))\n", "print(\" meaning that G1={:1.6f} and G2={:1.6f}\".format(pm.HG12._G12_to_G1(res.x[1]),pm.HG12._G12_to_G2(res.x[1])))" ] }, { "cell_type": "code", "execution_count": 9, "id": "15ddcd3f", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABT2klEQVR4nO3de3zO9f/H8ce18xw25xkbc4jk3EHhK3xTSJJFIm0s1Tfk1EG+JaRCklOlklaRQ2lUOohCDinl/K2cbcPogM1xY9f1++P925gdzFy7PteuPe+323XbdX2u93Vdr9l37fl9H20Oh8OBiIiIiIfwsroAEREREWdSuBERERGPonAjIiIiHkXhRkRERDyKwo2IiIh4FIUbERER8SgKNyIiIuJRFG5ERETEoyjciIiIiEdRuBERERGPonAjIpZ7//33sdlsBAQEcPDgwWzPt2nThgYNGlhQmYgURQo3IuI2UlNTGT9+vNVliEgRp3AjIm6jSZMmzJw5k0OHDlldiogUYQo3IuI2/vvf/5Kenp5n703r1q1p3Lhxjs/VrVuX9u3bZz6eP38+N9xwA6VLlyYoKIiGDRsyderUzOePHj3Kk08+ScOGDSlVqhRBQUF07NiRLVu2OO+bEhGXU7gREbdRo0YNoqKi8uy9efDBB9m6dSvbt2/Pcn3Dhg3s3LmT3r17A7Bs2TJ69uxJ2bJlmTBhAuPHj6dNmzasXbs28zV79+5l8eLF3HXXXbz22ms89dRTbNu2jdatW6v3SKQI87G6ABGRiz377LN8+OGHTJgwIUsvS4bu3bvz+OOPM2fOnCw9PHPmzKFkyZJERkYC8OWXXxIUFMTSpUvx9vbO8bMaNmzIzp078fK68P/zHnzwQa699lpmzZrFyJEjnfzdiYgrqOdGRNxKzZo1efDBB3nnnXdISkrK9nxwcDBdunRh3rx5OBwOANLT01mwYAH33HMPJUuWBKBMmTKcOnWKZcuW5fpZ/v7+mcEmPT2df/75h1KlSlG3bl02btxYCN+diLiCwo2IuJ3nnnuO8+fP5zr3JioqioSEBFavXg3A8uXLOXLkCA8++GBmm/79+1OnTh06duxIWFgYMTExfPPNN1nex263M3nyZK655hr8/f2pUKECFStWZOvWrSQnJxfeNygihUrhRkTcTs2aNendu3euvTft27cnJCSEOXPmAGZIqnLlyrRr1y6zTaVKldi8eTOff/45d999NytWrKBjx45ER0dntnn55ZcZNmwYt956K3PmzGHp0qUsW7aM+vXrY7fbC/8bFZFCoXAjIm4po/dmwoQJ2Z7z9vamV69eLFy4kGPHjrF48WJ69uyZbW6Nn58fnTt35s0332TPnj08+uijfPjhh+zevRuAhQsX0rZtW2bNmsX999/PHXfcQbt27Th+/LgrvkURKSQKNyLilmrVqkXv3r15++23OXz4cLbnH3zwQY4dO8ajjz7KyZMnM1dJZfjnn3+yPPby8qJRo0aA2SwQTEjKmLeT4ZNPPslxl2QRKTq0WkpE3Nazzz7L7Nmz2bFjB/Xr18/yXNOmTWnQoAGffPIJ9erV4/rrr8/yfL9+/Th69Cj//ve/CQsLIz4+nunTp9OkSRPq1asHwF133cULL7xA3759adGiBdu2beOjjz6iZs2aLvseRcT51HMjIm6rdu3a2XpkLhYVFQWQZSJxht69exMQEMCbb75J//79+eCDD+jRowdff/115gqp//73vzzxxBMsXbqUwYMHs3HjRr788kvCw8ML5xsSEZewOS7tkxURKSKmTp3K0KFD2b9/P9WqVbO6HBFxEwo3IlIkORwOGjduTPny5VmxYoXV5YiIG9GcGxEpUk6dOsXnn3/OihUr2LZtG5999pnVJYmIm1HPjYgUKfv376dGjRqUKVOG/v3789JLL1ldkoi4GYUbERER8ShaLSUiIiIeReFGREREPEqxm1Bst9s5dOgQpUuXxmazWV2OiIiI5IPD4eDEiRNUqVIlc6+q3BS7cHPo0CFt0CUiIlJEJSYmEhYWlmebYhduSpcuDZh/nKCgIIurERERkfxISUkhPDw88+94XopduMkYigoKClK4ERERKWLyM6VEE4pFRETEoyjciIiIiEdRuBERERGPonAjIiIiHsXycHPw4EF69+5N+fLlCQwMpGHDhvzyyy95vuaNN96gXr16BAYGUrduXT788EMXVSsiIiLuztLVUseOHaNly5a0bduWr7/+mooVK7Jr1y7Kli2b62tmzJjBiBEjmDlzJjfddBM///wzDz/8MGXLlqVz584urF5ERETckaUHZz7zzDOsXbuW1atX5/s1LVq0oGXLlkycODHz2hNPPMFPP/3EmjVrLvv6lJQUgoODSU5O1lJwERGRIuJK/n5bOiz1+eef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WQDq1atHYmIiSUlJhIaGAubf/dLPWrBgAZUqVcrSC3axkJAQNmzYwK233gpAeno6GzdupEmTJlnabd++nbCwMCpUqJDvukU8nSYUi3iwhIQEhg0bxo4dO5g3bx7Tp09n8ODB+X79NddcQ0JCAvPnz2fPnj1MmzaNRYsWZT5/5swZBg4cyMqVK4mPj2ft2rVs2LAhcwhn+PDhrFu3joEDB7J582Z27drFZ599luck3WuuuYa4uDg2b97Mli1b6NWr1xX3yGS85pFHHuH3339n6dKlvPrqqwBZhukuVpBamzZtSoUKFVi7dm3mtXbt2lGnTh2io6PZsmULq1evzhIOwUzCrlChAl26dGH16tXs27ePlStXMmjQIA4cOADA448/zrhx4/jss8/YsWMHgwcP5tixY9nqX716NXfccccV/fuIeDqFGxEPFhUVxZkzZ2jWrBkDBgxg8ODBPPLII/l+/d13383QoUMZOHAgTZo0Yd26dYwcOTLzeW9vb/755x+ioqKoU6cO9913Hx07dmTMmDGAmRezatUqdu7cSatWrWjatCnPP/98lvkol3rttdcoW7YsLVq0oHPnzrRv357rr7/+ir7voKAgvvjiCzZv3kyTJk149tlnef755wGyzZHJUJBavb296du3b5bhJS8vLxYtWpT5796vXz9eeumlLK8rUaIEP/zwA9WqVSMyMpJ69erx0EMPcfbs2cyenOHDh9OzZ0+ioqJo3rw5pUqVon379lnqP3v2LIsXL+bhhx++on8fEU9nczgu2fRCRDxCmzZtaNKkSbE9XuFSH330EX379iU5OTlzEq4zHD58mPr167Nx40aqV6/utPe9lN1up169etx3332MHTsWgBkzZrBo0SK+/fbbQvtckaJIc25ExCN9+OGH1KxZk6pVq7JlyxaGDx/Offfd59RgA1C5cmVmzZpFQkKCU8NNfHw83377La1btyY1NZXXX3+dffv20atXr8w2vr6+TJ8+3WmfKeIpFG5ExCMdPnyY559/nsOHDxMaGkr37t2zDQ85y6W7BjuDl5cX77//Pk8++SQOh4MGDRqwfPnyLEvS+/Xr5/TPFfEEGpYSERERj6IJxSIiIuJRFG5ERETEoyjciIiIiEdRuBERERGPonAjIiIiHkXhRkRERDyKwo2IiIh4FIUbERER8SgKNyIiIuJR/g+lv9adoXoLsgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot result\n", "fx=np.linspace(nysa['phase'][0],nysa['phase'][-1],100)\n", "fy=np.array([pf(x,res.x[0],res.x[1]) for x in fx])\n", "g,p1=plt.subplots(1,1)\n", "p1.plot(nysa['phase'],nysa['V'],'bo')\n", "p1.plot(fx,fy,'r')\n", "p1.set_title('Nysa')\n", "p1.set_xlabel('phase angle (deg)')\n", "p1.set_ylabel('mag')\n", "p1.invert_yaxis()" ] }, { "cell_type": "markdown", "id": "6a76da1d", "metadata": {}, "source": [ "## Fit HG12*" ] }, { "cell_type": "markdown", "id": "5ede034d", "metadata": {}, "source": [ "Define the fit function." ] }, { "cell_type": "code", "execution_count": 10, "id": "625d12d2", "metadata": {}, "outputs": [], "source": [ "# Photometric system from sbpy package, photometry submodule\n", "def pf(xdeg,par1,par2):\n", " return pm.HG12_Pen16.evaluate(xdeg*np.pi/180,par1,par2)\n", "\n", "# Sum-of-squares\n", "def sse_fun(x,data):\n", " return sum([(pf(d[0],x[0],x[1])-d[1])**2 for d in data])\n", "\n", "# Fit function\n", "def fit_fun(data, x0=[6,0.12]):\n", " cv = ({'type': 'ineq', 'fun': lambda x: x[1]},\n", " {'type': 'ineq', 'fun': lambda x: 1-x[1]})\n", " res = sco.minimize(sse_fun,x0,args=data,constraints=cv,method='COBYLA')\n", " return res" ] }, { "cell_type": "code", "execution_count": 11, "id": "88f12150", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMS of H,G12*-fit is 0.19110857\n", "Fitted H=6.6982 and G12=0.000000\n", " meaning that G1=0.000000 and G2=0.535134\n" ] } ], "source": [ "# Do fit\n", "res = fit_fun(nysa)\n", "print(\"RMS of H,G12*-fit is {:2.8f}\".format(res.fun))\n", "print(\"Fitted H={:1.4f} and G12={:1.6f}\".format(res.x[0],res.x[1]))\n", "print(\" meaning that G1={:1.6f} and G2={:1.6f}\".format(pm.HG12_Pen16._G12_to_G1(res.x[1]),pm.HG12_Pen16._G12_to_G2(res.x[1])))" ] }, { "cell_type": "code", "execution_count": 12, "id": "b291ee77", "metadata": {}, "outputs": [ { "data": { "image/png": "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cCrCjRe73lTxHO0YLkl+ftKcOVKJEmb14uefd1qtAAA4C1PBfUBGU8Vz1GJzreXLpXbtzOOVK82MKgAA8lFOvr8JN8idp56S3nordQ+q8uWtrggA4MVY5wb57/XXzSDjEyfMVg3sHg4AcBOEG+ROYKD0ySdS0aLSd99Jw4dbXREAAJIIN8iLihWlDz80j6dMycZmVQAA5D/CDfLmwQelZ54xj3v3lvbts7YeAIDPI9wg7159VWraVEpIkB5+WDp3zuqKAAA+jHCDvCtYUFq4UCpdWvrpJ6lfP/afAgBYhnAD5yhXzqwMWKCAtGCBNGmS1RUBAHwU4QbOExWVuufD8OHS6tXW1gMA8EmEGzjXE09IffpISUnSo49KBw5YXREAwMcQbuBcNpv09ttSo0Zmgb/27RlgDABwKcINnC8oyKx5U6aMGWDcvbtpyQEAwAUK5OZNDz30kGw2W7rjNptNQUFBqlKlirp27arq1avnuUB4qHLlpCVLpObNpaVLpREjpAkTrK4KAOADctVyExISorVr12rbtm2y2Wyy2Wzavn271q5dqytXrmjhwoWqV6+eNm3a5Ox64UmaNJE++MA8fu211McAAOSjXIWb0NBQde3aVb///rs+/fRTffrpp9q/f7+6d++uypUr69dff1XPnj01nP2G0LWrNGqUedy/vxQba2k5AADvZ3M4cr7aWqlSpbRp0yZVq1YtzfHffvtNt99+u/7++2/9/PPPioqK0qlTp5xVq1PkZMt0OInDYULOggVSsWLSli3SNf/bAQAgKzn5/s5Vy82VK1e0e/fudMd3794tu90uSQoKCspwXM7VIiMjU7q1rr4NGDAgw/NnzJihqKgoFStWTMWKFVOLFi30/fff5+ZHgCvZbKZLqnFj6eRJ6f77pT//tLoqAICXylW46dGjh/r27as33nhDGzdu1MaNG/XGG2+ob9++io6OliStX79etWrVyvI6W7duVXx8fMpt9f8WfevYsWOG58fGxqpLly5at26dNm/erIiICLVs2VJHjhzJzY8BVypUSFq2TIqMNJtrPvAAU8QBAPkiV91Sdrtd48eP11tvvaXjx49LksqUKaOnnnpKw4cPl7+/v+Li4uTn56fw8PBsX3fIkCFasWKF9u7de91Wn+Q6ihUrprfeeislVF0P3VIW27NHuv12swbOffeZmVQFC1pdFQDA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IiJChw8fVnBwsJMqhLPxe/IM/J48A78nz+CNvyeHw6EzZ86obNmy8vPLelSNz7Xc+Pn5KTw83KnXDA4O9pr/8Xgzfk+egd+TZ+D35Bm87fd0vRabZAwoBgAAXoVwAwAAvArhJg8CAwM1atQoBQYGWl0KssDvyTPwe/IM/J48g6//nnxuQDEAAPButNwAAACvQrgBAABehXADAAC8CuEGAAB4FcJNHrz99tuKjIxUUFCQGjdurO+//97qknCV0aNHy2azpbnVqFHD6rJ83jfffKO2bduqbNmystlsWrp0aZrXHQ6HXnzxRYWFhalQoUJq0aKF9u7da02xPux6v6devXql+/tq3bq1NcX6qHHjxunWW29VkSJFVLp0abVv31579uxJc87Fixc1YMAAlShRQoULF9bDDz+s48ePW1Sx6xBucmnhwoUaNmyYRo0apW3btqlevXpq1aqV/vzzT6tLw1Vq1aql+Pj4lNvGjRutLsnnnTt3TvXq1dPbb7+d4euvvfaa3nzzTb377rv67rvvdOONN6pVq1a6ePGiiyv1bdf7PUlS69at0/x9zZ8/34UVYv369RowYIC2bNmi1atX6/Lly2rZsqXOnTuXcs7QoUP12WefadGiRVq/fr2OHj2qDh06WFi1iziQK40aNXIMGDAg5bndbneULVvWMW7cOAurwtVGjRrlqFevntVlIAuSHEuWLEl5npSU5AgNDXVMnDgx5dipU6ccgYGBjvnz51tQIRyO9L8nh8Ph6Nmzp6Ndu3aW1IOM/fnnnw5JjvXr1zscDvO3U7BgQceiRYtSzvn1118dkhybN2+2qkyXoOUmFy5duqQff/xRLVq0SDnm5+enFi1aaPPmzRZWhmvt3btXZcuWVaVKldStWzfFxcVZXRKycODAAR07dizN31ZISIgaN27M35Ybio2NVenSpVW9enU98cQT+ueff6wuyaedPn1aklS8eHFJ0o8//qjLly+n+XuqUaOGypcv7/V/T4SbXPj7779lt9tVpkyZNMfLlCmjY8eOWVQVrtW4cWPNnj1bX375paZPn64DBw4oKipKZ86csbo0ZCL574e/LffXunVrzZkzR19//bUmTJig9evXq02bNrLb7VaX5pOSkpI0ZMgQNW3aVLVr15Zk/p4CAgJUtGjRNOf6wt+Tz+0KDt/Rpk2blMd169ZV48aNVaFCBX3y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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot result\n", "fx=np.linspace(nysa['phase'][0],nysa['phase'][-1],100)\n", "fy=np.array([pf(x,res.x[0],res.x[1]) for x in fx])\n", "g,p1=plt.subplots(1,1)\n", "p1.plot(nysa['phase'],nysa['V'],'bo')\n", "p1.plot(fx,fy,'r')\n", "p1.set_title('Nysa')\n", "p1.set_xlabel('phase angle (deg)')\n", "p1.set_ylabel('mag')\n", "p1.invert_yaxis()" ] }, { "cell_type": "markdown", "id": "94014813", "metadata": {}, "source": [ "Nysa is E-type and not well covered with the G12*-system, therefore the fit is not very good." ] }, { "cell_type": "markdown", "id": "f757adcb", "metadata": {}, "source": [ "## Fit HG1G2" ] }, { "cell_type": "markdown", "id": "19bd35a0", "metadata": {}, "source": [ "Define the fit function." ] }, { "cell_type": "code", "execution_count": 13, "id": "4dbd4b40", "metadata": {}, "outputs": [], "source": [ "# Photometric system from sbpy package, photometry submodule\n", "def pf(xdeg,par1,par2,par3):\n", " return pm.HG1G2.evaluate(xdeg*np.pi/180,par1,par2,par3)\n", "\n", "# Sum-of-squares\n", "def sse_fun(x,data):\n", " return sum([(pf(d[0],x[0],x[1],x[2])-d[1])**2 for d in data])\n", "\n", "# Fit function\n", "def fit_fun(data, x0=[6,0.1,0.1]):\n", " cv = ({'type': 'ineq', 'fun': lambda x: x[1]},\n", " {'type': 'ineq', 'fun': lambda x: x[2]},\n", " {'type': 'ineq', 'fun': lambda x: 1-x[1]-x[2]})\n", " res = sco.minimize(sse_fun,x0,args=data,constraints=cv,method='COBYLA')\n", " return res" ] }, { "cell_type": "code", "execution_count": 14, "id": "2073863a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "RMS of H,G1G2-fit is 0.00200390\n", "Fitted H=6.9118, G1=0.093060, and G2=0.648455\n" ] } ], "source": [ "# Do fit\n", "res = fit_fun(nysa)\n", "print(\"RMS of H,G1G2-fit is {:2.8f}\".format(res.fun))\n", "print(\"Fitted H={:1.4f}, G1={:1.6f}, and G2={:1.6f}\".format(res.x[0],res.x[1],res.x[2]))" ] }, { "cell_type": "code", "execution_count": 15, "id": "70f63768", "metadata": {}, "outputs": [ { "data": { "image/png": "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dKFUqVLUqVMn3eyowYMH51iBOU1jbsQpEhPNdg6vvgr/WxOK5s3h9dfNVxERuS65PqB4+vTpPProo/j5+VGiRAlsl02Btdls7Nmz5/qrdhKFG3GqEyfMgOOJEy+tidO+vVkjp25dKysTEclTcj3cBAUFMXjwYJ5++mk8PLJ1Z8syCjdiiUOHzCDjy8fgPPigOVetmrW1iYjkAbk+WyopKYkHHnggzwUbEcuUKQMffAB//WVCDZhByLVqmXE5sbHW1ici4kaylU4iIyOZPXt2Ttci4v6qVYOZM2HjRrjnHtOLkzJ9/LHHLi0KKCIi2Zat21KDBw/mk08+oV69etStWzfdgOK33norxwrMabotJS5l3TqzA/ny5ea5jw888gg8/bQWAhQRuUyu35basmULDRo0wMPDg61bt7Jx48bUY9OmTVl+n9DQUGw2W7pjwIABGbafN28ejRo1omjRohQqVIj69evz6aefZudbEHENt94Ky5bBypVmC4ekJJg8GSpVgsGD4eBBqysUEclzsr23VE74999/06xovHXrVu68805WrFhBy5Yt07VfuXIlx48fp0aNGvj4+LBw4UIef/xxFi1aRHh4eJY+Uz034rIcDvjhB9OTs26dOefrC/36mZ6csmVz5GPsdli92izDExwMYWFms3MREVfmlI0zc8PQoUNZuHAhO3fuTDO9/Gpuvvlm2rVrx+jRo7PUXuFGXF5KyHnxRVizxpzz8YE+fWDECLMTeTbNmwdDhqQd2lOunNnzMyLixsoWEclNuX5bKjckJSURExNDVFRUloKNw+Fg+fLlbN++ndtuuy3TdomJiSQkJKQ5RFyazQZ33AE//mjG4qTcrpoyBapUMSFn167rftt586Bz5/Rjlg8eNOfnzcuh+kVELOYy4WbBggWcOHGCXr16XbXdyZMnKVy4MD4+PrRr147Jkydz5513Ztp+zJgxBAQEpB4hISE5XLlILrHZ4PbbYdUqc7RuDRcvwkcfQfXq0L07/Plnlt7Kbjc9Nhn106acGzpU22CJiHtwmdtS4eHh+Pj48M0331y1XXJyMnv27OH06dMsX76c0aNHs2DBggzH6IDpuUlMTEx9npCQQEhIiG5LSd70009mdeNvv710rlMnePZZaNgw08tWroRWra799itWQCa/SiIilspzt6ViY2NZtmwZffv2vWZbDw8PqlSpQv369Xn88cfp3LkzY8aMybS9r68v/v7+aQ6RPKtZM1i0CH7/He67z/TuzJ8PjRpBmzbmVlYG/70SH5+1t89qOxERV+YS4SY6OprSpUvTrl276742OTk5Tc+MSL5w880wdy5s3Qo9epjpTosXQ4sWZvrTt9+mCTnBwVl726y2ExFxZZaHm+TkZKKjo4mMjMTLyyvNaz179mTkyJGpz8eMGcPSpUvZs2cP27Zt48033+TTTz+le/fuzi5bxDXUqgWffAI7dsCjj5pZVWvXQrt20KABzJ4NdjthYWZWVGZj9W02CAkxuUhEJK+zPNwsW7aMuLg4oqKi0r0WFxdH/GX95GfOnKF///7cdNNNNG/enC+//JKYmJgs3c4ScWuVKpnZVPv2wRNPQKFCsHmz2ceqZk08Z0zn7fFJQPqAk/J84kStdyMi7sFlBhQ7i9a5kXzh2DGz0vHbb5vHAGXLsvmuJ+iyuB87DxVKbRoSYoKN1rkREVeWZxfxcwaFG8lXTp+GqVPhzTfh0CEAHCVKsK/9YDbcOpASVYtrhWIRyRMUbq5C4UbypcRE+PRTGDsWdu825woXNuN0hg3TJp0i4vLy3FRwEcllvr7Qty/8/TfMnAl165penfHjoWJFsxN5SugREcnjFG5E8hMvLzPIeNMms15O8+Zma4epU6FaNeja1QxEFhHJwxRuRPIjmw3uvttszPnjj9C2LSQnw6xZUL++mUqesmmniEgeo3Ajkt+lLPq3caPp1fHwMM/DwjJcEFBExNUp3IiIUb++GY+zfTs8/LBZEHDNmksLAs6aZTbuFBFxcQo3IpJWlSrwwQewdy88/vilBQG7doUaNcxr589bXaWISKYUbkQkY2XKmNlUcXHw8stQooSZUfXoo2aG1bhxkJBw3W9rt5tdymfONF/t9hyvXETyOYUbEbm64sVh1CiIjTVLGZcrB4cPw1NPQYUK8Nxz8O+/WXqrefMgNBRatYJu3czX0FBzXkQkpyjciEjWFCoEQ4aY3pvoaHOL6sQJePVVE3IGDTIBKBPz5kHnznDgQNrzBw+a8wo4IpJTFG5E5Pr4+ECvXvDnnyaRNG4M587BO++Y8TqRkfDXX2kusdtNLspo0lXKuaFDdYtKRHKGwo2IZI+HB3TqBL/8AsuWQevWZjbVJ5/ATTdBx47w888ArF6dvsfmcg4H7N9v2omI3CiFGxG5MTYb3HEHLF0Kv/5qthe32eCrr6BZM2jVCsfiJcC118qJj8/9ckXE/SnciEjOadwYvvzS3Jbq1cts97ByJa3GhvMbjejMHDzI/N5TcLDzShUR96VwIyI5r0YNM+h4zx4YMgRHwYI0ZANzuJ9t1KQPH+JDYmpzmw1CQsyCyCIiN0rhRkRyT0gITJyILTaWbV2e5xjFqMZOPqQfe6jEcN6kMKcBM8vc09PackXEPSjciEjuK1mSml+8xOqYOF4OeJODlKEsh3iTJ9jvUZ4/O79AxG3/WV2liLgJm8ORv3bES0hIICAggJMnT+Lv7291OSL5jt0Oa5Yn4jc3hjrfv0HB/TvMCwULQr9+ZsuHkBBrixQRl3M9f7/VcyMiTuXpCS3u8qXp1D4U3PsXzJkDN98MZ8/CpElQqRL07g1//211qSKSRynciIh1PD3N8sS//QZLlpj9GC5ehBkzoFYtuO8+WL/e6ipFJI9RuBER69lscOed8MMPZuG/jh3Nyn7z5kGTJmaBwOXLM17iWETkCgo3IuJamjaF+fPN9g49e5reneXLTcBp2tQEnuRkq6sUERemcCMirqlWLfj4Y7NR56BBUKCAuUV1331me4cZMyApyeoqRcQFKdyIiGurUAHefhv27YNnn4WAADPYuHdvs1HnpElw5ozVVYqIC1G4EZG8oXRpeOUViIuDN96AoCCz2+bQoSYAjR4Nx49bXaWIuACFGxHJW/z94cknYe9eeP99M3X86FF4/nkoX968duiQ1VWKiIUUbkQkb/Lzg0cege3b4fPPoW5dOH0axo+HihXh4YfNeB0RyXcUbkQkb/Pygq5dYdMmWLgQmjc3A42nTYNq1cxrf/xhdZUi4kQKNyLiHmw2aNcO1qyBH3+ENm3MlPFZs6BePbjnHli3zuoqRcQJFG5ExP2EhcF338GGDXD//Sb4LFpkenVatIDFizNcENBuh5UrYeZM89Vud3rlIpIDFG5ExH01aACzZ5txOX37grf3pV6dhg3Nvlb/SzDz5kFoqNkBols38zU01JwXkbxFu4KLSP5x8CC89RZ88MGltXGqVeP31iO49b3uJOGTprnNZr7OnQsREU6uVUTSuJ6/3wo3IpL/HD0KkyebxQH/tzbOfsoxjif5kL6co2BqU5sNypUzM889Pa0qWESu5++3bkuJSP5TogS8+CLExrLrsfEcIpgQDvA2Q4ilAs/wKgGcAMzQnP37YfVqSysWkeugcCMi+VeRIqwPe5xK7OER3mcPFSnFf7zKc8RRntcYSWmOABAfb3GtIpJlCjcikq8FB0MifkzlEaqxg258xlZuwp9TjGQs+wjlbQYR6hFndakikkUKNyKSr4WFmTE1NhvY8WIm3ajLH9zLV/xCEwpwnkG8wy3dK0NUlJl5JSIuzdJwExoais1mS3cMGDDgmtfOmjULm81Gx44dc79QEXFbnp5mY3G4NDvKgQffcC/N+JnWLOOfOndgu3gRoqOhZk2zds6mTZbVLCJXZ2m4Wb9+PfHx8anH0qVLAejSpctVr9u3bx9PPPEEYWFhzihTRNxcRISZ7l22bNrz5UJs9P/yDkr/sQx++gnuvdeMMJ4zx6yh066dVj0WcUEuNRV86NChLFy4kJ07d2JL+U+oK9jtdm677TaioqJYvXo1J06cYMGCBVn+DE0FF5HM2O1mVlR8vBmLExaWwfTvLVtgzBizOGBysjnXogU8+yy0bn2p+0dEclSenAqelJRETEwMUVFRmQYbgJdffpnSpUvTp0+fLL1vYmIiCQkJaQ4RkYx4ekLLlmavzZYtM1nXpk4dswv55aser1oFd90FTZvCV19dCj0iYgmXCTcLFizgxIkT9OrVK9M2a9asYfr06UybNi3L7ztmzBgCAgJSj5CQkByoVkTyvSpVzM7je/bAkCFQoACsXw8dO5qNOmfO1OZUIhZxmXAzffp02rZtS5kyZTJ8/dSpU/To0YNp06ZRsmTJLL/vyJEjOXnyZOqxf//+nCpZRMRMtZo4Efbtg5Ejwd8ftm41G1TVqAHTp0NSktVViuQrLjHmJjY2lkqVKjFv3jw6dOiQYZtNmzbRoEEDPC/rJ07+X9evh4cH27dvp3Llytf8LI25EZFcdeIEvPOOCTxHj5pzISHw5JPmNlaBAlZWJ5Jn5bkxN9HR0ZQuXZp27dpl2qZGjRps2bKFTZs2pR733nsvrVq1YtOmTbrdJCKuoWhReO4505MzfjwEBZn9GwYPhooVYdw4OHXK6ipF3Jrl4SY5OZno6GgiIyPx8vJK81rPnj0ZOXIkAH5+ftSuXTvNUbRoUYoUKULt2rXx8fHJ6O1FRKxRuDA8/rjZcfO996BCBThyBJ56CkJDYfRo08sjIjnO8nCzbNky4uLiiIqKSvdaXFwc8drQRUTyMj8/eOwx2LnTLAJYtSocOwbPPw/ly8Mzz8C//1pdpYhbcYkxN86kMTciYim73SwC+OqrZuAxQMGC8Mgj8MQTkMmkCpH8Ls+NuRERyTc8PeHBB2HzZuzzFpBQvRGcPQsTJuCoWBH694fYWKurFMnTFG5ERCwwb4EHoYM7ELD9V8L5njU0x5aUBFOm4KhShUNt+zBhwC5GjYLly7Vkjsj1ULgREXGyefOgc2c4cADAxhLCCWM1rVjBUlpju3iRMt9/xOD3qlP9le4Mav0XgYHmOhG5NoUbEREnstvNgsbpRzvaWElL7mIpzVjHQtrhSTLd+Yyt1GbK0S68fN8mBRyRLFC4ERFxotWrU3psMvczzWjPQhqwgS+JwAMHXZjLJhpQ5KF7ubBuPStXmh0eVq68dMvKbifD8yL5jcKNiIgTXc/qFptoQGe+pDZb+Jyu2PHgzvPf4N28CedbteGdbmtp1cosm5OyfE6rVmbnh5Tz6umR/EjhRkTEiYKDr/+aP6nNQ3xOTbYxg0gu4kkbFrOW/2M5t1PlwArGjXOk6xE6eNCM7VHAkfxG4UZExInCwsxemzbb9V+7k2r0ZgbV2MFU+pGEN7ezghXczmrCuJMlwKXBPCnjeoYO1S0qyV8UbkREnMjTEyZNMo+zE3AA9lKJR5hKFXbxDgM4jy//x1qWEM5PNONuFpESchwOs7XV6tU5U79IXqBwIyLiZBERMHculC2b9nyJEtf3PvspzyDeoRJ7mMBQzlKAW/iFRdzDbzSiAwuwkQxc31gfkbxO4UZExAIREWbj8BUr4PPPzdcjR+DLLzMOOVdbbT6eMgxnAhXZyxs8yWkK0ZANLKATm6hPZ+YQHJica9+LiKvR3lIiIi4mZUr3ypXmecuWZqxO5cpmkPC1/l+7BP8xlIkM5m38OQWAo1YtbM8+Cw88YO6NieQx1/P3W+FGRCSPSFnZGK4dcACKcpwhTGKE3yQKnD9hTlarBs89B127gpdXrtUqktO0caaIiBvKbKxOZk5QjHdKvIjPwX0wejQULw47dkDPnlCjBkRHw4ULuVqziBUUbkRE8pArx+q89JKZdZXZzKupU8GzeIDprdm3D8aOhZIlYfduiIoyPTnTpkFSkjO/DZFcpdtSIiJ53Lx5Zr+qyxfxCwmBiRNNGErn9Gl4/30YNw7++cecK18eRo6E3r3B19cZZYtcF425uQqFGxFxR3a7WcsmPt6sghwWloVxw2fPwgcfwBtvwOHD5ly5cvD009CnD/j55XrdIlmlcHMVCjciIlc4dw4+/NDcsjp0yJwrWxZGjIB+/RRyxCVoQLGIiGRdgQIwaJAZh/Puu6b35uBBGDwYKlUySyqfO2d1lSJZpnAjIiKGnx/07w+7dsGUKWbgTny82ZyqUiWYMMHcyhJxcQo3IiKSlq8vPPqoCTkffAAVKpgxOcOHm5Dz5ptw5ozVVYpkSuFGREQy5uMDDz9s1saZNg1CQ80eEU88YULO+PEKOeKSFG5EROTqfHygb18TcqZPN8Hmn3/gySehYkUz2+r0aaurFEmlcCMiIlnj7W0W/vv7b/joIxNy/v3XzKpSyBEXonAjIiLXx9vbLPb3999mC4fKleG//xRyxGUo3IiISPZ4e0OvXibkzJgBVaqkDTmvv66QI5ZQuBERkRvj5QWRkbBtG3z88aWQ8/TT6skRSyjciIhIzvDyMjuOXxlydLtKnEzhRkREcta1Qs64cZpCLrlK4UZERHLH5SFnxoxLA4+fesqEHK2TI7lE4UZERHJXypiclIHHlSubKeRPPnlpxWNt6yA5SOFGRESc4/KQEx19aTHAJ54wPTlvvaWQIzlC4UZERJzLy+vSFPKPPjLB5p9/4PHHTeCZOFG7kMsNUbgRERFrpCwGuH07fPjhpb2rhg0zt67efhvOn7e6SsmDFG5ERMRa3t7Qp48JOVOnQvnyEB8PQ4aYkPPOOwo5cl0UbkRExDX4+EC/frBzJ7z/PoSEwKFDMGiQmU4+ZQokJlpdpeQBCjciIuJafHzgkUdMyHnvPShXDg4ehP79oWpV+OADSEqyukpxYZaGm9DQUGw2W7pjwIABGbafMWNGurZ+fn5OrlpERJzC1xcee8yEnMmToUwZ2L8fHn0UqlWD6dPhwgWrqxQXZGm4Wb9+PfHx8anH0qVLAejSpUum1/j7+6e5JjY21lnlioiIFfz8YOBA2L3bzKQKCoLYWOjbF2rUMGvnXLxodZXiQiwNN6VKlSIoKCj1WLhwIZUrV6ZFixaZXmOz2dJcExgY6MSKRUTEMn5+ZpDx7t1m4b/SpWHPHjPjqlYtiIkBu93qKsUFuMyYm6SkJGJiYoiKisJms2Xa7vTp01SoUIGQkBA6dOjAn3/+edX3TUxMJCEhIc0hIiJ5WMGCMHy4CTZvvAElSphbVz16QO3aMGsWJCdbXaVYyGXCzYIFCzhx4gS9evXKtE316tX56KOP+Oqrr4iJiSE5OZlbb72VAwcOZHrNmDFjCAgISD1CQkJyoXoREXG6QoXMFg5798Jrr0GxYmZhwK5doW5dmDtXISefsjkcDofVRQCEh4fj4+PDN998k+VrLly4QM2aNenatSujR4/OsE1iYiKJl00dTEhIICQkhJMnT+Lv73/DdYuIiItISIBJk8wtq5Mnzbl69bC/8BKri95L/GEbwcEQFgaentaWKtcvISGBgICALP39domem9jYWJYtW0bfvn2v6zpvb28aNGjArl27Mm3j6+uLv79/mkNERNyQvz+MGgX79sHzz0ORIrB5M54RHSl8e2Niui2iVSsHoaEwb57VxUpucolwEx0dTenSpWnXrt11XWe329myZQvBwcG5VJmIiOQ5RYvCSy/xzeR9vMYznKYQjfidRdzDTzSj1oEldL7PoYDjxiwPN8nJyURHRxMZGYmXl1ea13r27MnIkSNTn7/88sssWbKEPXv2sGHDBrp3705sbOx19/iIiIh7s9uh/3PFeZZXqche3uBJzlKAW/iFxYSzituY/egKTa5yU5aHm2XLlhEXF0dUVFS61+Li4oiPj099fvz4cfr160fNmjW5++67SUhIYN26ddSqVcuZJYuIiItbvRpS5pr8RylG8AaV2MMEhnIeX8JYw+x/byeh8e2wdq21xUqOc5kBxc5yPQOSREQkb5o5E7p1y/i1MhzkGV6jH9Pw4X8rHIeHw+jR0Lix84qU65LnBhSLiIjkpKsNxTxEWQbyLlXYxaF2/cDLCxYvhiZN4N57YdOmG/psux1WrjQBa+VKrStoBYUbERFxO2FhZr/NzNaEtdmAkPIEfjUVtm+HyEjw8IBvvoEGDaBLF7jGIrEZmTcPQkOhVSvTc9SqFZqdZQGFGxERcTuenmbJG0gfcFKeT5z4v/VuKlUy+1P99ZdZANBmMwsA1qkDDz0EO3Zk6TPnzYPOnS+N9Ulx8KA5r4DjPAo3IiLiliIiTEYpWzbt+XLlzPmIiCsuqF4dPv8c/vgD7rsPHA7zvGZNs3/V3r2Zfpbdbra9ymgUa8q5oUN1i8pZNKBYRETcmt1uZk/Fx3N9KxRv3GgWA1y40Dz38oI+feC550xCuszKleYW1LWsWAEtW17vdyCgAcUiIiKpPD1NoOja1XzN8tYLDRqYMTg//wx33gkXL8IHH0CVKqYb5vDh1KaXrVpyVVltJzdG4UZERORqmjaFJUtg1Sq47TZITDQDeipXhqefhqNHrzo763JaUN85FG5ERESy4rbbzP2nJUvMtPGzZ+H116FiRW5b/gI1y5y86uyskBBzS0xyn8KNiIhIVtls5hbVzz+bW1b168OpU3i88jKbEirytGMMhTmd7hK4bHaW5DqFGxERketls8E998Dvv8OcOVCzJj6nj/Maz7DXoxJDmYAf54CrzM6SXKPZUiIiIjfKbjdLEr/4IuzeDcDZ4mU5EPkclV+NwrOAT7bfNlszvdyQZkuJiIg4k6cndO8O27bB1KkQEkLBYwepNuExPG+qAR9/bGZbXQetdpx9CjciIiI5xdsb+vWDnTvh7bchMNAs/terF9SuDV98AcnJ13wbrXZ8Y3RbSkREJLecPQvvvgtjx8KxY+ZcvXpmB/J77sGebEt32wlMD82VwSaFzWbG8ezdm79uUem2lIiIiCsoWBCefNIkkRdfhCJFYPNmuPdejlVvxkNBy9Pddnr11cyDDZjtHPbvN2NxJGMKNyIiIrnN3x9eeMGEnBEjuOhTgOI7f2HWf61Zzu00Yx1gbju98ELW3lKrHWdO4UZERMRZSpTA/upYmpTYwyQGk4gPt7OCdTRnIe2o59iY5bfSaseZU7gRERFxotWrYWN8EEOZRFV2Mo2+XMSTdnzLRm7mC7pQg22ZXq/Vjq9N4UZERMSJLr+dtJ/yPMw0arKNz+hGMja6MJet1GYGkVRkb5prtdpx1ijciIiIOFFGt5N2UZXufEY9NjOfjniSTCSfsJ1qvEt/gjkEaLXjrFK4ERERcaKwMBNSMtpkcyt1uM82n3tK/4qj9Z14c5H+TCHOuzKxDzzJ3vX/KdhkgcKNiIiIE3l6wqRJ5vGVASfledSUxtiWLjG7kDdvjteF85SfPR7PqpXMlPKEBGeWnOco3IiIiDhZRIS5vVS2bNrz6W47tWhhRiAvWgQNGsCpU/DSS1CpEowfD+fOOb32vEArFIuIiFjkujbGTE6GL7+E55+Hv/8258qUgVGjICoKfLK3OWdecT1/vxVuRERE8pKLFyEmxtyeio015ypVMj06Xbu67TQqbb8gIiLirry8zEac27fD5Mlmc849e6BHD7Nv1fz5Zo+GfEzhRkREJC/y9YWBA2H3brMxZ7Fi8OefZsBO06awbFm+DTkKNyIiInlZoUIwYoTpvXnuOfN8/Xq480644w74+WerK3Q6hRsRERF3ULQojB5tQs7QoWaA8YoV0KwZdOgAW7ZYXaHTKNyIiIi4k9KlYcIE2LkT+vQBDw/4+mszHqd7d9i1y+oKc53CjYiIiDsqXx4+/BD++gvuv9+Mv/nsM6hZEx59FA4etLrCXKNwIyIi4s6qV4fZs2HDBmjb1kwl/+ADqFIFnnwSjh61usIcp3AjIiKSHzRoAN9+Cz/+CP/3f3D+vFnluGJFePlls/qxm1C4ERERyU/CwkzAWbTIjMM5dQpeeAEqV4aJE03oyeMUbkRERPIbmw3uvtvcqpo1C6pWhX//hWHDoFo1+Ogjc/sqj1K4ERERya88POCBB8zif1Onmp089+83s6zq1DG7eObBhQAVbkRERPI7b2/o189MHx8/HkqUMJtzdukCjRvDkiVZCjl2O6xcCTNnmq92e65XniGFGxERETEKFIDHHzcLAT7/PBQuDL//DuHhZrXjX37J9NJ58yA0FFq1gm7dzNfQUHPe2SwNN6GhodhstnTHgAEDMr3mxIkTDBgwgODgYHx9falWrRrffvutE6sWERFxc/7+Zpfx3bthyJBLqx3fcgt07GhuY11m3jzo3BkOHEj7NgcPmvPODjg2h8O6m2n//vsv9sv6rLZu3cqdd97JihUraNmyZbr2SUlJNG/enNKlS/PMM89QtmxZYmNjKVq0KPXq1cvSZ17PlukiIiICxMaasPPxx5CcbAYk9+gBL72EPSSU0ND0wSaFzQblysHeveDpmf0Srufvt6Xh5kpDhw5l4cKF7Ny5E5vNlu71999/n3HjxvH333/j7e2drc9QuBEREcmmbdvM5pwpXTHe3hy451Eazn+Wfwi86qUrVkAG/RZZdj1/v11mzE1SUhIxMTFERUVlGGwAvv76a5o1a8aAAQMIDAykdu3avPbaa2l6f66UmJhIQkJCmkNERESyoWZN+PJLM/bmjjvgwgXKzZ/MbirzMqPw52Sml8bHO69Mlwk3CxYs4MSJE/Tq1SvTNnv27GHu3LnY7Xa+/fZbRo0axZtvvskrr7yS6TVjxowhICAg9QgJCcmF6kVERPKRJk1g2TJYupSEGo0pzBlG8Qp7qMRw3sSPc+kuCQ52Xnkuc1sqPDwcHx8fvvnmm0zbVKtWjfPnz7N37148/3fj7q233mLcuHHEZxIJExMTSUxMTH2ekJBASEiIbkuJiIjkAPtFB48GzWf40Wepyd8AHKAsN7OBfyltyZgbl+i5iY2NZdmyZfTt2/eq7YKDg6lWrVpqsAGoWbMmhw8fJikpKcNrfH198ff3T3OIiIhIzvD0stF2agR12UIfprOfcmyjZmqwAbOrw40Em+vlEuEmOjqa0qVL065du6u2a968Obt27SI5OTn13I4dOwgODsbHxye3yxQREZEMRETA7C+9WFIuiqrspBczANNjM3eued2ZLA83ycnJREdHExkZiZeXV5rXevbsyciRI1OfP/bYYxw7dowhQ4awY8cOFi1axGuvvXbVdXFEREQk90VEwL598P0KP8Z/XpYVK8ytKGcHGwCvazfJXcuWLSMuLo6oqKh0r8XFxeHhcSl/hYSEsHjxYoYNG0bdunUpW7YsQ4YMYcSIEc4sWURERDLg6Xlj071zissMKHYWrXMjIiKS9+S5AcUiIiIiOUXhRkRERNyKwo2IiIi4FYUbERERcSsKNyIiIuJWFG5ERETErSjciIiIiFtRuBERERG3onAjIiIibkXhRkRERNyKwo2IiIi4Fcs3znS2lK20EhISLK5EREREsirl73ZWtsTMd+Hm1KlTgNlhXERERPKWU6dOERAQcNU2+W5X8OTkZA4dOkSRIkWw2Ww39F4JCQmEhISwf/9+7TDuwvRzyhv0c8ob9HPKG9zx5+RwODh16hRlypTBw+Pqo2ryXc+Nh4cH5cqVy9H39Pf3d5v/8bgz/ZzyBv2c8gb9nPIGd/s5XavHJoUGFIuIiIhbUbgRERERt6JwcwN8fX154YUX8PX1tboUuQr9nPIG/ZzyBv2c8ob8/nPKdwOKRURExL2p50ZERETcisKNiIiIuBWFGxEREXErCjciIiLiVhRubsC7775LaGgofn5+NG3alF9//dXqkuQyL774IjabLc1Ro0YNq8vK93788Ufat29PmTJlsNlsLFiwIM3rDoeD559/nuDgYAoUKEDr1q3ZuXOnNcXmY9f6OfXq1Svd71ebNm2sKTafGjNmDI0bN6ZIkSKULl2ajh07sn379jRtzp8/z4ABAyhRogSFCxfmvvvu48iRIxZV7DwKN9k0e/Zshg8fzgsvvMCGDRuoV68e4eHh/PPPP1aXJpe56aabiI+PTz3WrFljdUn53pkzZ6hXrx7vvvtuhq+/8cYbvP3227z//vv88ssvFCpUiPDwcM6fP+/kSvO3a/2cANq0aZPm92vmzJlOrFBWrVrFgAED+Pnnn1m6dCkXLlzgrrvu4syZM6lthg0bxjfffMOcOXNYtWoVhw4dIiIiwsKqncQh2dKkSRPHgAEDUp/b7XZHmTJlHGPGjLGwKrncCy+84KhXr57VZchVAI758+enPk9OTnYEBQU5xo0bl3ruxIkTDl9fX8fMmTMtqFAcjvQ/J4fD4YiMjHR06NDBknokY//8848DcKxatcrhcJjfHW9vb8ecOXNS22zbts0BOH766SerynQK9dxkQ1JSEr///jutW7dOPefh4UHr1q356aefLKxMrrRz507KlClDpUqVeOihh4iLi7O6JLmKvXv3cvjw4TS/WwEBATRt2lS/Wy5o5cqVlC5dmurVq/PYY49x9OhRq0vK106ePAlA8eLFAfj999+5cOFCmt+nGjVqUL58ebf/fVK4yYb//vsPu91OYGBgmvOBgYEcPnzYoqrkSk2bNmXGjBl8//33TJkyhb179xIWFsapU6esLk0ykfL7o98t19emTRs++eQTli9fzuuvv86qVato27Ytdrvd6tLypeTkZIYOHUrz5s2pXbs2YH6ffHx8KFq0aJq2+eH3Kd/tCi75R9u2bVMf161bl6ZNm1KhQgW++OIL+vTpY2FlInnfgw8+mPq4Tp061K1bl8qVK7Ny5UruuOMOCyvLnwYMGMDWrVs1rvB/1HOTDSVLlsTT0zPdiPMjR44QFBRkUVVyLUWLFqVatWrs2rXL6lIkEym/P/rdynsqVapEyZIl9ftlgYEDB7Jw4UJWrFhBuXLlUs8HBQWRlJTEiRMn0rTPD79PCjfZ4OPjQ8OGDVm+fHnqueTkZJYvX06zZs0srEyu5vTp0+zevZvg4GCrS5FMVKxYkaCgoDS/WwkJCfzyyy/63XJxBw4c4OjRo/r9ciKHw8HAgQOZP38+P/zwAxUrVkzzesOGDfH29k7z+7R9+3bi4uLc/vdJt6Wyafjw4URGRtKoUSOaNGnCxIkTOXPmDL1797a6NPmfJ554gvbt21OhQgUOHTrECy+8gKenJ127drW6tHzt9OnTaf7rfu/evWzatInixYtTvnx5hg4dyiuvvELVqlWpWLEio0aNokyZMnTs2NG6ovOhq/2cihcvzksvvcR9991HUFAQu3fv5qmnnqJKlSqEh4dbWHX+MmDAAD7//HO++uorihQpkjqOJiAggAIFChAQEECfPn0YPnw4xYsXx9/fn0GDBtGsWTNuueUWi6vPZVZP18rLJk+e7ChfvrzDx8fH0aRJE8fPP/9sdUlymQceeMARHBzs8PHxcZQtW9bxwAMPOHbt2mV1WfneihUrHEC6IzIy0uFwmOngo0aNcgQGBjp8fX0dd9xxh2P79u3WFp0PXe3ndPbsWcddd93lKFWqlMPb29tRoUIFR79+/RyHDx+2uux8JaOfD+CIjo5ObXPu3DlH//79HcWKFXMULFjQ0alTJ0d8fLx1RTuJzeFwOJwfqURERERyh8bciIiIiFtRuBERERG3onAjIiIibkXhRkRERNyKwo2IiIi4FYUbERERcSsKNyIiIuJWFG5E8rHQ0FAmTpxodRmWWLlyJTabLd2+O9lx22238fnnn1+1jc1mY8GCBTf8WZd78MEHefPNN3P0PUXcgcKNiMgN+Prrrzly5EiaXbKd5bnnnuPVV1/l5MmTTv9sEVemcCMicgPefvttevfujYeH8//vtHbt2lSuXJmYmBinf7aIK1O4EXFTLVu2ZODAgQwcOJCAgABKlizJqFGjuHLHlbNnzxIVFUWRIkUoX748U6dOTfP6iBEjqFatGgULFqRSpUqMGjWKCxcupL6+efNmWrVqRZEiRfD396dhw4b89ttvqa+vWbOGsLAwChQoQEhICIMHD+bMmTOZ1r179246dOhAYGAghQsXpnHjxixbtixNm9DQUF577bWr1r1u3Trq16+Pn58fjRo1YsGCBdhsNjZt2pTpZ19vrf/++y8//PAD7du3T3N+586d3Hbbbfj5+VGrVi2WLl2a7tr9+/dz//33U7RoUYoXL06HDh3Yt29f6usXL15k8ODBFC1alBIlSjBixAgiIyPTbSDavn17Zs2alWmNIvmRwo2IG/v444/x8vLi119/ZdKkSbz11lt8+OGHadq8+eabNGrUiI0bN9K/f38ee+wxtm/fnvp6kSJFmDFjBn/99ReTJk1i2rRpTJgwIfX1hx56iHLlyrF+/Xp+//13nn76aby9vQETVNq0acN9993HH3/8wezZs1mzZg0DBw7MtObTp09z9913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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot result\n", "fx=np.linspace(nysa['phase'][0],nysa['phase'][-1],100)\n", "fy=np.array([pf(x,res.x[0],res.x[1],res.x[2]) for x in fx])\n", "g,p1=plt.subplots(1,1)\n", "p1.plot(nysa['phase'],nysa['V'],'bo')\n", "p1.plot(fx,fy,'r')\n", "p1.set_title('Nysa')\n", "p1.set_xlabel('phase angle (deg)')\n", "p1.set_ylabel('mag')\n", "p1.invert_yaxis()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.0" } }, "nbformat": 4, "nbformat_minor": 5 }