Explained row order access of cholesky #316

This commit is contained in:
Roger Labbe committed 2020-05-04 15:34:45 -07:00
1 parent aeb79fb811
commit 3b6d8b6bef
1 file changed
+19 -8
+19 -8
View File
@@ -80,7 +80,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3QAAAGACAYAAADlDCCdAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXwb1b0//M9ol/cltmPHcew4XhJnIWUPoTjJpYFSIClQlh/chl4KpUDhdoO2UAy0wHNbbm+f9tLSUpZfoaF9CqUQSgsFEiBtKGsSO4sdx/u+K7a1zfL8oWiisWRbsSVLI3/er5dfiedojs58dSzNV+fMGUFRFAVERERERESkO4ZYN4CIiIiIiIhmhgkdERERERGRTjGhIyIiIiIi0ikmdERERERERDrFhI6IiIiIiEinmNARERERERHpFBM6IiIiIiIinWJCR0REREREpFNM6IiIiIiIiHSKCR0REREREZFOMaEjOkkffPABrr/+eixduhR2ux1paWlYtWoVvvWtb6GjoyMiz7Ft2zYIgoDm5uaI1DcTO3fuhCAIqKmpiVkbiIiIiGhqTOiIwqQoCu68806cfvrpeOaZZ1BZWYmvfe1r+I//+A8kJSXhxz/+McrLy/HHP/4x1k0lIiIionnCFOsGEOnF/fffj//6r/9CcXExduzYgaqqKk35888/j2uvvRZXXXUVXnvtNWzcuDFGLSUiIiKi+YIjdERhaGpqwg9+8AOYzWa89NJLQckcAFx22WX4yU9+AkmScPPNN0OWZQBATU0NBEHAzp07g/Zpbm6GIAjYtm2buk0QBDz99NMAgJKSEgiCAEEQUFxcrD6muroagiDA7Xbj7rvvRklJCaxWK0pLS3HffffB4/FM+zyB/PX5bdu2DRs2bAAA3HfffWobJjsOIiIiIooNjtARheHJJ5+EKIq44oorsGrVqkkfd8MNN+D+++9HfX09du3apSZFJ+Pee+/Fiy++iL179+L2229HRkYGAKj/BvrCF76A999/H5dffjnMZjP+/Oc/o6amBh988AFeeuklTZJ2MrZs2QIAePrpp3HeeeehurpaLQtMLImIiIgotpjQEYXh3XffBQCcf/75Uz7OZDKhuroa27dvx+7du2eU0NXU1KC5uRl79+7FHXfcMWUCdfDgQdTV1SEzMxMA8MMf/hAbNmzAjh078Mwzz+C666476ecHfAldRkYGnn76aVRXV3NhFCIiIqI4xSmXRGHo7u4GACxevHjax/of09nZGdU2AcA999yjJnMAYLPZ8NBDDwEAnnjiiag/PxERERHFFhM6ojAoigIAYU1h9D9mptMdT8Z5550XtO3cc8+FyWTCxx9/HPXnJyIiIqLYYkJHFIb8/HwAQFtb27SPbW9v1+wTTXl5eUHbjEYjsrOz4XA4ov78RERERBRbTOiIwrB+/XoAwN///vcpHydJEt566y0AwDnnnAMAMBh8f2aiKAY9fnh4eFbt6unpCdmGgYEBpKWlqdumakMk2kFEREREscGEjigM27Ztg9FoxAsvvIADBw5M+rgnnngCnZ2dqKioUKdD+q9xCzW698EHH4Ssx2g0AvAlZ1PZtWtX0LZ33nkHoihi7dq16rap2uBwOFBfXz/jNhARERFR7DChIwrD0qVL8d3vfhderxcXX3xxyKTuxRdfxO233w6j0YhHH31UHRU788wzAZy49YFfW1sb7r///pDPl52drT5mKg888ACGhobU310uF77zne8AAK6//np1e2pqKpYvX47du3dr2i5JEr7+9a/D6XTOuA1EREREFDu8bQFRmGpqajA2Nob//u//xpo1a7B582ZUVVXB6/XiH//4B9577z3Y7XZs374dGzduVPc744wzUF1djZ07d+KMM87Axo0b0dPTg5dffhmbN28OmTBt2rQJP/rRj/DlL38Zl112GVJSUpCRkYFbb71V87gVK1agqqpKcx+6xsZGXHTRRUG3LLjzzjuxbds2nHPOObjiiitgs9nw1ltvwev1Ys2aNdi7d6/m8RUVFVi0aBGee+45mM1mFBUVQRAEXHfddViyZEkEI0tEREREM6YQ0Ul57733lH//939XiouLFZvNpiQnJytVVVXKN77xDaWtrS3kPsPDw8qNN96o5OTkKBaLRamqqlIee+wxpampSQGgfPGLXwza55FHHlEqKysVi8WiAFCWLFmilp133nkKAMXlcinf+973lOLiYsVisSglJSVKTU2N4nK5QrbjiSeeUFasWKFYLBYlLy9PufHGG5X+/n61von+9a9/KRs3blTS0tIUQRAUAMpbb701k7ARERERURQIinJ8PXYi0o3q6mrs2rUL/PMlIiIimt94DR0REREREZFOMaEjIiIiIiLSKSZ0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 truncated
"text/plain": [
"<Figure size 900x400 with 3 Axes>"
]
@@ -122,7 +122,7 @@
"outputs": [
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 900x400 with 2 Axes>"
]
@@ -218,12 +218,12 @@
"name": "stdout",
"output_type": "stream",
"text": [
"Difference in mean x=-0.037, y=43.103\n"
"Difference in mean x=-0.157, y=43.481\n"
]
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 900x400 with 2 Axes>"
]
@@ -350,7 +350,7 @@
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAz0AAAFrCAYAAAD7IOe2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeXxU5dn/8c9kZpIQAoGEBEIgYUkgyCoIlbqwiHWvjxRta61PF39txVq11F2p1geV7WnV2trWulTtU2uKrcVa1xj3urIFAiEkQEggIQkJWWfmzPn9MWTIJMNkOQOThO/79fKFmXvOPfc5c82duXLOuW6baZomIiIiIiIi/VRUpAcgIiIiIiJyPCnpERERERGRfk1Jj4iIiIiI9GtKekREREREpF9T0iMiIiIiIv2aI9IDAPB6vXi93oDHbDYbNpstQiMSEREREZHeyDRN2hegjoqKIirq2Odzek3S09DQEOlhiIiIiIhIHzRw4MCQSY8ubxMRERERkX5NSY+IiIiIiPRrSnpERERERKRf6xX39AQrWNDZdXkiIiIiInLyCVYPoLMCaN1Ket5++20WLFgQtO3DDz/k9NNP9//8xhtvcPfdd7Nx40bi4uK4+OKLWbVqFSkpKR22DTbIziowiIiIiIiIQJiTnlb3339/h+RnypQp/v/Py8vjggsu4KKLLuIf//gHFRUV3HrrrZxzzjl8+umnxMTE9ORlRUREREREuq1HSU9WVlbAWZ32br75ZiZMmEBOTg4Oh+8lxo4dyxlnnMETTzzBtdde27PRnmA7duzA4/HgcDiYMGFCpIcjfZBiSKxSDEk4KI7EKsWQWBXpGAr79WP79u3jk08+4dvf/rY/4QH48pe/zIQJE3jxxRfD/ZLHTVNTE42NjTQ1NUV6KNJHKYbEKsWQhIPiSKxSDIlVkY6hHp3pue666/jGN75BXFwcc+fO5e677+bMM88EYMuWLQBMmzatw3bTpk3j/fff79Jr5Ofnk5GRweDBg/2PtbS0UFBQAMDQoUNJT08P2KawsJDGxkYApk+fHtB28OBB9u3bB0B6ejpDhw71txmG4R/3oEGDGDduHOC7NtBms2EYBhs3bgRg8uTJAcncoUOH2L17NwAjR44kOTk54HU3bdqEaZoMGDCgQ1a7d+9eqqurAZg4cSKxsbH+tvr6eoqKigBISUkhNTU1YNutW7fidrtxOp2ccsopAW3l5eVUVFQAMH78eOLj4/1tzc3NbN++HYDExERGjx4dsO2OHTtoamrCZrN1eA8rKyspKysDICMjgyFDhvjbPB4P+fn5AAwePJixY8cGbLtr1y4OHz4M+C6FtNvt/raamhr27NkDQFpaGsOGDQvYtvXYx8XFkZWVFdC2Z88eampqAMjOzg64dLKuro7i4mIAhg8fzogRIwK2zc/Px+PxEBMTQ3Z2dkBbWVkZlZWVAGRmZjJw4EB/W2NjI4WFhQAkJSUxatSogG23b99Oc3MzdrvdH0Ot15lWVFRQXl4OwJgxY0hISPBv53K52LZtGwAJCQmMGTMmoN+ioiLq6+sBmDp1asA9b1VVVZSWlgIwatQokpKS/G1er5fNmzcDEB8fz/jx4wP6LSkpoba2FoBJkyYRHR3tb6utraWkpASA1NTUDvfkbdmyBcMwiI2NZeLEiQFtpaWlVFVVAb6zw3Fxcf62hoYGdu7cCUBycjIjR44M2LagoICWlhYcDgeTJ08OaNu/fz8HDhwAfGeQIzlHtCouLqaurg4I/xzhdrsJRnPEUX15jmh7aTgcvznC6/UC4Ha7qaqq0hxB/5kjTtT3iLa/y1o/c5oj+s8ccSK+R3i93oA4gp7PEa2f0+7oVtKTkJDADTfcwPz580lKSmLnzp2sXr2a+fPn8/LLL3Peeef5B5eYmNhh+8TERH97ZzweD6ZpBjxmmqb/C4DH4wm6zbG+IHi9Xn9b6+TfVrB+Wz+shYWF/jez/Zja9msYRtB+TdPE6XR2aDMMw79tT/o91r627bf9vrY9hsH6bT2GwW4G62q/J+K9CdZvqHg51jH0eDxBC2aEem+60q/b7cYwDGbOnNnlftvua3ff864ew2Dbtx1Te53tq8vlwuv1BvzyCdZvT49hsGPU1X57SxxanSNatf+yozniqL48R3Sn39ZtO+s3mFGjRvm/WGuO6F1x2Fe+R7R+J2pqavInJ5oj+s8ccSK+R6SlpXVIvq3MEd3VraTn1FNP5dRTT/X/fNZZZ3HZZZcxdepUbrnlFs477zx/27EqKHRWWcE/MIejw3NtNpv/Q9/2ryRttwk2KYCvGlxrW7Dg7Gq/7cfUtt9gb5jT6cQ0zaD92u12S/22/fdY/bbf17bHMFi/rfsa7H3qar+95b3pbF9b97OzY9iTfg3DCNoWqt/WbUP1a/UYdrav7XW2r9HR0RiGcVyOodfr7fbnpjfGoeaIjv32lvdGc0THfjVHaI5o36/mCM0RbfvtTXNEd9nMnqRK7Vx77bU89thjNDY28s4773D++efz8ssvc+GFFwY87/LLL+f999/3n9ps5fV6/acsWw0aNEglq0VEREREJEBPcoewZBWteZPNZvNfe9h67V9bmzdv7nBtooiIiIiI9GK5D0DequBteat87b2c5aSnpqaG9evXM2PGDGJjY0lLS2POnDk8++yzAdcTfvTRR2zfvp3FixdbfckTprKykv379/tvRBPpLsWQWKUYknBQHIlViqGTXJQdcld0THzyVvkej+p46Vp7kY6hbt3Tc+WVV5Kens5pp53GsGHDKCwsZO3atRw4cICnnnrK/7yVK1dy7rnncvnll7N06VIqKiq47bbbmDJlCt/97nfDvQ/HTVlZmb+ySftqKiJdoRgSqxRDEg6KI7FKMXSSm3eL79/cFUd/bk14Ftx5tD2ESMdQt5KeadOm8fzzz/PYY49RX19PYmIiZ555Js888wyzZ8/2P2/+/Pn861//Yvny5VxyySXExcVx8cUXs3r16oBSgCIiIiIi0ge0TXzeWQ2Gq8sJT28QlkIGVvXWQgaHDh3C6/USFRUVUEtepKsUQ2KVYkjCQXEkVimGpPJwC0++X8zPPj6LKK8L7NFwd9cvVQtnDPUkd+jR4qQnC32oxSrFkFilGJJwUByJVYqhk1fxwQZ+/84u/vZ5KT80c4hyHkl4DJfvErcunumJdAwp6RERERERkQCbSg/xWF4Rr2zZj2nC9fZ1LHPmsHPyT8i8/L6j9/RAn7jETUmPiIiIiIhgmibvFh7ksbwiPiiq8j/+yxGvcdmhHMz5d5A5/1bfg8GKG/RiSnpC8Hg8mKaJzWYLuoqvSGcUQ2KVYkjCQXEkVimG+jeP4eXlzeX8Lm8XW8vrAHBE2fjq9JH8YN44srdtgqg7sbVPbFp/9hp0JtIxpEIGIWzcuNFfWm/69OkRHYv0TYohsUoxJOGgOBKrFEP9QO4DvvV02iQuTS6Dv366F9dbD9LQ3MKvPEuIi7bzjdnpfP+ssaQNGRC2lw9nDKmQgYiIiIiIdNS6wChQc9qN/OnD3Tz9YQnfav4Ly5w5/Mb5dX66YAJXz81gSFx0ZMd6HCjpCWHw4MF4PB6dxpUeUwyJVYohCQfFkVilGOr7amffxN59tUzJXcHTb+zgV+7L/MUJNmQu5btX/A8Dou3H7fUjHUO6vE1EREREpC8IcomaX94q3701C273P1Tb6ObVrfv51+Zy3t95ELdh+hMdNw6ceDDm3YF9wa0ncCes0+VtIiIiIiL9VZtL1AISn9by0Qvu5FCji9e2HuDlTb5Ex+M9en4je8QgnFNvw3z/JZxHFhjtawlPTynpERERERHpC4KViT6S8GyZ8GNWF83n/Vff6JDoXDg1lQunppKZEn/kjFDPFhjty5T0iIiIiIj0FW0SHyNvFXavm196LuehTV8GKgFfonPR1FQunJbK+OT4o9u2OSPUNmEK6LefUtITwq5du/w3XI0bNy7Sw5E+SDEkVimGJBwUR2KVYqj3KD7YwNO1F3GHuZJor5sW08FDnsuOnei0ap/wwAldYDTSMaSkJ4TDhw/764mL9IRiSKxSDEk4KI7EKsVQZHm9Ju8UVvLUByW8vb2S6+3riHZ6cOEgxubh87M/J/HCuzvpxAhMeFp1Y4FRKyIdQ0p6RERERER6ocPNbv72WSl/+nA3uw42APATxzp+6sihZOqNpF92D7y7msTcFTAwJvSZmjZV3Tro55e2gUpWh2QYRzNeu/341S2X/ksxJFYphiQcFEdilWLoxCo+2MDTH5SQ81kp9S0eAAbFOHg47XUWlP2h4xmbYJeu9TLhjCGVrA4zfajFKsWQWKUYknBQHIlViqHjz+s1ySus5Okjl7C1Gp88kO98eQyLZ45i4Aefw8TIXaJmRaRjSGd6RERERES6q5sLhR5L6yVsT3+4m+Ijl7DZbLBwYgrfOWMMZ2YOw2azhXv0fZrO9IiIiIiInAhdWCg0mNomN9Xr72FvrYtfuv6LzaW1/nV1BsU6eGTk68wYNYghF/78eO/BSUVJTwg1NTV4vV6ioqIYOnRopIcjfZBiSKxSDEk4KI7EKsVQECEWCm17b03l4RY+Kanm4+Jq/lNcTcH+On4ctZ9lzhw+cVfzhXcxmSnx/PeXx/D1hv8j+t0/+C5h62ciHUNKekLYs2ePv7SePuDSE4ohsUoxJOGgOBKrFEPH0DbxeWc1GC5qT7+ZNwddycd/28THJdXsqmzosNnLQ7/N1LgEllX8kWvOGsvg8+7E9s5qePeBXl2MwIpIx5CSHhERERGRnpp3C9681UQZLlw4mP72qcBGf7PNBhOHD+JLYxOZMzaJ2WOHkjIoFpgPeSNIyF0BnzwEhqvfJjy9gZKeENLS0vyn4UR6QjEkVimGJBwUR2KVYii4z3ZXsyvn51zuddFi+hYKvcHxInmp3z2S5CRyWkYiCXHHWJBz3i3+M0TYo/t1whPpGFLLine truncated
"image/png": "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 truncated
"text/plain": [
"<Figure size 900x400 with 1 Axes>"
]
@@ -789,7 +789,7 @@
"\\mu + \\left[ \\sqrt{(n+\\lambda)\\Sigma}\\right ]_{i}& \\text{for i=1 .. n} \\\\\n",
"\\mu - \\left[ \\sqrt{(n+\\lambda)\\Sigma}\\right]_{i-n} &\\text{for i=(n+1) .. 2n}\\end{cases}\n",
"$$\n",
"The $i$ subscript chooses the i$^{th}$ column vector of the matrix.\n",
"The $i$ subscript chooses the i$^{th}$ roth vector of the matrix.\n",
"\n",
"In other words, we scale the covariance matrix by a constant, take the square root of it, and ensure symmetry by both adding and subtracting it from the mean. We will discuss how you take the square root of a matrix later.\n",
"\n",
@@ -2067,7 +2067,7 @@
"\n",
"The Python is not difficult once we understand the $\\left[\\sqrt{(n+\\lambda)\\Sigma} \\right]_i$ term.\n",
"\n",
"The term $\\sqrt{(n+\\lambda)\\Sigma}$ is a matrix because $\\Sigma$ is a matrix. The subscript $i$ in $[\\sqrt{(n+\\lambda)\\Sigma}]_i$ is choosing the column vector of the matrix. What is the square root of a matrix? There is no unique definition. One definition is that the square root of a matrix $\\Sigma$ is the matrix $S$ that, when multiplied by itself, yields $\\Sigma$: if $\\Sigma = SS$ then $S = \\sqrt{\\Sigma}$.\n",
"The term $\\sqrt{(n+\\lambda)\\Sigma}$ is a matrix because $\\Sigma$ is a matrix. The subscript $i$ in $[\\sqrt{(n+\\lambda)\\Sigma}]_i$ is choosing the i-th row vector of the matrix. What is the square root of a matrix? There is no unique definition. One definition is that the square root of a matrix $\\Sigma$ is the matrix $S$ that, when multiplied by itself, yields $\\Sigma$: if $\\Sigma = SS$ then $S = \\sqrt{\\Sigma}$.\n",
"\n",
"We will choose an alternative definition that has numerical properties which make it easier to compute. We can define the square root as the matrix S, which when multiplied by its transpose, returns $\\Sigma$:\n",
"\n",
@@ -2088,7 +2088,7 @@
"\n",
"SciPy provides `cholesky()` method in `scipy.linalg`. If your language of choice is Fortran, C, or C++, libraries such as LAPACK provide this routine. Matlab provides `chol()`.\n",
"\n",
"By default `scipy.linalg.cholesky()` returns a upper triangular matrix, so I elected to write the code to expect an upper triangular matrix. If you provide your own square root implementation you will need to take this into account."
"By default `scipy.linalg.cholesky()` returns a upper triangular matrix, so I elected to write the code to expect an upper triangular matrix. For this reason I access the result by row, so that the first sigma point, which is the center point, is affected by a full row of non-zero values. If you provide your own square root implementation you will need to take this into account. You will find UKF algorithms in the literature that take the values column first. This is fine if the cholesky is lower-triangular, or if you are using a different algorithm that computes a symmetric matrix so row vs column order doesn't matter. "
]
},
{
@@ -2096,6 +2096,15 @@
"execution_count": 41,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"cholesky:\n",
"[[1.414 0.071]\n",
" [0. 1.731]]\n"
]
},
{
"data": {
"text/plain": [
@@ -2112,6 +2121,8 @@
"import scipy\n",
"a = np.array([[2., .1], [.1, 3]])\n",
"s = scipy.linalg.cholesky(a)\n",
"print(\"cholesky:\")\n",
"print(s)\n",
"np.dot(s, s.T)"
]
},