diff --git a/doc/src/LectureNotes/_build/.doctrees/chapter1.doctree b/doc/src/LectureNotes/_build/.doctrees/chapter1.doctree new file mode 100644 index 000000000..eeb601dca Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/chapter1.doctree differ diff --git a/doc/src/LectureNotes/_build/.doctrees/chapter2.doctree b/doc/src/LectureNotes/_build/.doctrees/chapter2.doctree new file mode 100644 index 000000000..6a273686b Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/chapter2.doctree differ diff --git a/doc/src/LectureNotes/_build/.doctrees/chapter3.doctree b/doc/src/LectureNotes/_build/.doctrees/chapter3.doctree new file mode 100644 index 000000000..14b23d1e0 Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/chapter3.doctree differ diff --git a/doc/src/LectureNotes/_build/.doctrees/chapter4.doctree b/doc/src/LectureNotes/_build/.doctrees/chapter4.doctree new file mode 100644 index 000000000..374dbd1bd Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/chapter4.doctree differ diff --git a/doc/src/LectureNotes/_build/.doctrees/chapter5.doctree b/doc/src/LectureNotes/_build/.doctrees/chapter5.doctree new file mode 100644 index 000000000..ea5b98e84 Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/chapter5.doctree differ diff --git a/doc/src/LectureNotes/_build/.doctrees/environment.pickle b/doc/src/LectureNotes/_build/.doctrees/environment.pickle new file mode 100644 index 000000000..b40d128e0 Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/environment.pickle differ diff --git a/doc/src/LectureNotes/_build/.doctrees/logistic.doctree b/doc/src/LectureNotes/_build/.doctrees/logistic.doctree new file mode 100644 index 000000000..4d46013f0 Binary files /dev/null and b/doc/src/LectureNotes/_build/.doctrees/logistic.doctree differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/introduction.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/chapter1.ipynb similarity index 99% rename from doc/src/LectureNotes/_build/jupyter_execute/introduction.ipynb rename to doc/src/LectureNotes/_build/jupyter_execute/chapter1.ipynb index 9eb624962..7b8b8ccb1 100644 --- a/doc/src/LectureNotes/_build/jupyter_execute/introduction.ipynb +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter1.ipynb @@ -447,9 +447,10 @@ ":titlesonly:\n", "\n", "\n", - "gettingstarted.ipynb\n", - "regression.ipynb\n", - "logistic.ipynb\n", + "chapter2\n", + "chapter3\n", + "chapter4\n", + "chapter5\n", "```\n" ] } diff --git a/doc/src/LectureNotes/_build/jupyter_execute/introduction.txt b/doc/src/LectureNotes/_build/jupyter_execute/chapter1.txt similarity index 99% rename from doc/src/LectureNotes/_build/jupyter_execute/introduction.txt rename to doc/src/LectureNotes/_build/jupyter_execute/chapter1.txt index dd97f9c8c..9f0fc835a 100644 --- a/doc/src/LectureNotes/_build/jupyter_execute/introduction.txt +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter1.txt @@ -436,7 +436,8 @@ society. :titlesonly: -gettingstarted.ipynb -regression.ipynb -logistic.ipynb +chapter2 +chapter3 +chapter4 +chapter5 ``` diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/chapter2.ipynb similarity index 92% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted.ipynb rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2.ipynb index 705ebbb6f..d80d66bf9 100644 --- a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted.ipynb +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter2.ipynb @@ -449,9 +449,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[ 0.48917724 -0.43782011 1.48192392 2.25192475 -0.05455206 -0.68134058\n", - " -0.11602272 0.66295579 0.4799895 0.52405335]\n", - "-0.437820110993849\n" + "[ 0.66109153 0.97132954 -0.91470448 1.81588452 0.49665195 0.77698678\n", + " 1.04576423 1.65832096 -0.25613699 -0.7554783 ]\n", + "0.971329541323762\n" ] } ], @@ -806,26 +806,26 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[0.58695697 0.26052142 0.14110843 0.74356519 0.20479382 0.07526258\n", - " 0.86862247 0.86613041 0.08332556 0.96366793]\n", - " [0.94558515 0.79716346 0.68245511 0.34262527 0.82136273 0.7050853\n", - " 0.53146547 0.7064895 0.07048963 0.69034727]\n", - " [0.49126259 0.30355312 0.05233209 0.86899932 0.13256945 0.44525314\n", - " 0.58698083 0.10149771 0.89831811 0.14480922]\n", - " [0.15768243 0.65091856 0.80481376 0.68506764 0.07613184 0.56283625\n", - " 0.81314443 0.98202227 0.33982193 0.03551219]\n", - " [0.94931184 0.48115403 0.11278354 0.88971209 0.81385201 0.64257017\n", - " 0.90409915 0.33969279 0.09492318 0.88539763]\n", - " [0.18975396 0.16404114 0.59567791 0.99452361 0.92938817 0.9646773\n", - " 0.1462189 0.95940328 0.86272261 0.26091217]\n", - " [0.22807853 0.50767509 0.67349029 0.95174387 0.96480061 0.75037774\n", - " 0.10062502 0.27772682 0.88819491 0.71719298]\n", - " [0.22080447 0.19928524 0.19045971 0.74307106 0.10334088 0.40502753\n", - " 0.41770393 0.41946882 0.81065623 0.61972921]\n", - " [0.74794566 0.74360857 0.35361944 0.73495199 0.21735822 0.99355309\n", - " 0.98255376 0.48145693 0.35017533 0.41277362]\n", - " [0.23869782 0.73822476 0.09248847 0.61425715 0.11121775 0.26600432\n", - " 0.66754242 0.54265733 0.215911 0.7434023 ]]\n" + "[[0.88645063 0.21176899 0.23897722 0.06720011 0.38272048 0.88809424\n", + " 0.0878077 0.73425375 0.72093518 0.19764225]\n", + " [0.74839206 0.31545538 0.14076925 0.59046117 0.89437867 0.81232389\n", + " 0.20782531 0.52852411 0.10079113 0.07130568]\n", + " [0.64573187 0.71051155 0.65626927 0.92475512 0.58540859 0.52327428\n", + " 0.28610035 0.69580848 0.94590985 0.98668663]\n", + " [0.01101253 0.38937429 0.60430671 0.81789875 0.2280742 0.17786312\n", + " 0.34053316 0.19374203 0.01520576 0.2466458 ]\n", + " [0.60613717 0.19314313 0.959787 0.6376673 0.73798553 0.63486051\n", + " 0.15742577 0.39450088 0.07204545 0.46013967]\n", + " [0.23509059 0.79672774 0.81910307 0.53487394 0.50992632 0.112086\n", + " 0.55751711 0.10662789 0.70911163 0.59072491]\n", + " [0.0259775 0.26815865 0.5090044 0.41809535 0.32232515 0.72743704\n", + " 0.32110496 0.04202295 0.18265714 0.70084503]\n", + " [0.07736581 0.57300172 0.97099592 0.62357997 0.36579921 0.37062279\n", + " 0.74683978 0.59433006 0.35540585 0.97384662]\n", + " [0.25205634 0.7601454 0.40639052 0.24504215 0.21745329 0.95788719\n", + " 0.7490677 0.29789413 0.81839129 0.93822723]\n", + " [0.6302074 0.47072129 0.16215217 0.53540566 0.91760002 0.14146861\n", + " 0.37860338 0.8099108 0.07897476 0.69254202]]\n" ] } ], @@ -917,13 +917,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.10286439863835316\n", - "4.149835827233691\n", - "0.47221917888337617\n", - "[[0.74868647 2.17169586 1.71154957]\n", - " [2.17169586 7.49304629 5.02306261]\n", - " [1.71154957 5.02306261 6.91687749]]\n", - "[12.86269572 0.09473336 2.20118117]\n" + "-0.13489611340279922\n", + "3.7349937337703607\n", + "-0.6150223388222948\n", + "[[ 1.15822308 3.44928776 3.99889831]\n", + " [ 3.44928776 11.11151113 12.25819175]\n", + " [ 3.99889831 12.25819175 21.09855273]]\n", + "[30.28557034 0.07629455 3.00642205]\n" ] } ], @@ -973,7 +973,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_42_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_42_1.png" }, "needs_background": "light" }, @@ -1841,7 +1841,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_2.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_2.png" } }, "output_type": "display_data" @@ -1855,7 +1855,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_3.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_3.png" } }, "output_type": "display_data" @@ -2036,7 +2036,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_60_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_60_0.png" } }, "output_type": "display_data" @@ -2181,7 +2181,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_68_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_68_0.png" } }, "output_type": "display_data" @@ -2252,7 +2252,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_70_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_70_1.png" } }, "output_type": "display_data" @@ -2430,14 +2430,14 @@ "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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comPt3H77XdjNBrrfM2uXTuYNetpxo+/oNYNLPbt28O8eS/xyCNPaF5WIYQQwSPBXI8LLriICy64iF27drBu3RruuONuAD799H9BOd/TTz/B6NFjOPPMsQD4/X5uu+1GysvL6w3mHj16MXDg4Dqf69btBB5++PGglFUIIUTwREUwWx/+B+aPl/y+QaeQHGjduiieCyfhevixep+/4IKL6t0+Z85zfPPNl1x00SVs27aFtLQOVFRUAPD3vz/M0qUfsmDB6yxa9DEAH320iH379pKQkIDL5eK22+6qtpRpaWkJP/30Aw888FDVNr1ez1NPzcJqtbJkySLeems+ixZ9zKpVv/Cf//w/Zs9+qep+z5s3b6K4uIjs7K2MHj2G88+fyAcfvMt7771dVYbXX38Fr9eL0Whk587feOyx/7Sq/oQQQgSHjDG3wG233UVJSTGTJ0/hiSeeYdKkSzn//IlVz1988eSq/96zZzeLFr3LXXfN4Nprb6SkpJgfflhR7Xi5ubkkJyfXOo/NloBOp2PSpMuqtg0ffhodO3aqtl9SUhJXXXUNDz74GC++OJvS0hIuv/z3e0ZnZf3M1q2bufnm27juupvqXP5TCCFEZIiKFrPr4ceqtW7T0uIpCvNScklJyVX3me7duw/r1q2pc79du3aiKDreems+AAaDoermF8ekpaVRVFTU4rIcu5OVyWQiISGRvLxcEhISq57fufM3unTpWvV44sRJLT6XEEKI4JIWcwsd3xUN9d9tqmfPXpjNZqZNu5Zp065l0qTLat1kokOHdE49dRjff7+8apvHU86dd96C3W4HKu9Adczhw/nVXn/sTlYej4fi4mIyMrpUe/74O1lB5b2fvV5vc9+yEEKIENA//PDDD4e7EGVlFc3a32o1N/s1LeHxlPP22/PZtm0riYlJnHjiSQB8/PESfvxxJQaDgf79BwCVLehly74iN3c/DoedlStXkJ7ekSFDhqIoCl999Tlbtmxi8+aNjB17Tq0JXaNGnc7KlctZu3Y169ev5euvv+TKK68mMzMTALu9lO+//478/IPs3LkTp9NBSkoKS5d+iNfrZffunXz44ftMnjyFU04ZyIcffsDPP/9IenpHxow5i7y8XLKyfmbTpg3Vyh3qOm0vpD61J3WqLalP7TW3Tq1Wc53b5e5SApA61ZrUp/akTrUl9ak9ubuUEEII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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_84_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_84_0.png" } }, "output_type": "display_data" @@ -2446,7 +2446,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.005000000000000009\n" + "0.005000000000000007\n" ] } ], @@ -2920,7 +2920,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_114_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_114_1.png" } }, "output_type": "display_data" @@ -2972,7 +2972,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_116_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_116_0.png" } }, "output_type": "display_data" @@ -3217,7 +3217,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_118_16.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter2_118_16.png" } }, "output_type": "display_data" diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted.py b/doc/src/LectureNotes/_build/jupyter_execute/chapter2.py similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted.py rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2.py diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_114_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_114_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_114_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_114_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_116_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_116_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_116_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_116_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_118_16.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_118_16.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_118_16.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_118_16.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_42_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_42_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_42_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_42_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_2.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_2.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_2.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_2.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_3.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_3.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_54_3.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_54_3.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_60_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_60_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_60_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_60_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_68_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_68_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_68_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_68_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_70_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_70_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_70_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter2_70_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter2_84_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_84_0.png new file mode 100644 index 000000000..965a1bc22 Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter2_84_0.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter3.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/chapter3.ipynb new file mode 100644 index 000000000..135dbfb17 --- /dev/null +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter3.ipynb @@ -0,0 +1,2976 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Data Analysis and Machine Learning: Elements of Probability Theory and Statistical Data Analysis\n", + "\n", + " \n", + "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", + "\n", + "Date: **Sep 20, 2020**\n", + "\n", + "Copyright 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", + "\n", + "\n", + "\n", + "\n", + "## To do list\n", + "\n", + "* add math about MVN and define MLE and other quantities\n", + "\n", + "* rewrite about covariance matrix\n", + "\n", + "* add KL theorem\n", + "\n", + "## Domains and probabilities\n", + "Consider the following simple example, namely the tossing of two dice, resulting in the following possible values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\{2,3,4,5,6,7,8,9,10,11,12\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These values are called the *domain*. \n", + "To this domain we have the corresponding *probabilities*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\{1/36,2/36/,3/36,4/36,5/36,6/36,5/36,4/36,3/36,2/36,1/36\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tossing the dice\n", + "The numbers in the domain are the outcomes of the physical process of tossing say two dice.\n", + "We cannot tell beforehand whether the outcome is 3 or 5 or any other number in this domain.\n", + "This defines the randomness of the outcome, or unexpectedness or any other synonimous word which\n", + "encompasses the uncertitude of the final outcome. \n", + "\n", + "The only thing we can tell beforehand\n", + "is that say the outcome 2 has a certain probability. \n", + "If our favorite hobby is to spend an hour every evening throwing dice and \n", + "registering the sequence of outcomes, we will note that the numbers in the above domain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\{2,3,4,5,6,7,8,9,10,11,12\\},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "appear in a random order. After 11 throws the results may look like" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\{10,8,6,3,6,9,11,8,12,4,5\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stochastic variables\n", + "\n", + "**Random variables are characterized by a domain which contains all possible values that the random value may take. This domain has a corresponding probability distribution function(PDF)**.\n", + "\n", + "\n", + "\n", + "## Stochastic variables and the main concepts, the discrete case\n", + "There are two main concepts associated with a stochastic variable. The\n", + "*domain* is the set $\\mathbb D = \\{x\\}$ of all accessible values\n", + "the variable can assume, so that $X \\in \\mathbb D$. An example of a\n", + "discrete domain is the set of six different numbers that we may get by\n", + "throwing of a dice, $x\\in\\{1,\\,2,\\,3,\\,4,\\,5,\\,6\\}$.\n", + "\n", + "The *probability distribution function (PDF)* is a function\n", + "$p(x)$ on the domain which, in the discrete case, gives us the\n", + "probability or relative frequency with which these values of $X$\n", + "occur" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\mathrm{Prob}(X=x).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stochastic variables and the main concepts, the continuous case\n", + "In the continuous case, the PDF does not directly depict the\n", + "actual probability. Instead we define the probability for the\n", + "stochastic variable to assume any value on an infinitesimal interval\n", + "around $x$ to be $p(x)dx$. The continuous function $p(x)$ then gives us\n", + "the *density* of the probability rather than the probability\n", + "itself. The probability for a stochastic variable to assume any value\n", + "on a non-infinitesimal interval $[a,\\,b]$ is then just the integral" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mathrm{Prob}(a\\leq X\\leq b) = \\int_a^b p(x)dx.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Qualitatively speaking, a stochastic variable represents the values of\n", + "numbers chosen as if by chance from some specified PDF so that the\n", + "selection of a large set of these numbers reproduces this PDF.\n", + "\n", + "\n", + "\n", + "## The cumulative probability\n", + "Of interest to us is the *cumulative probability\n", + "distribution function* (**CDF**), $P(x)$, which is just the probability\n", + "for a stochastic variable $X$ to assume any value less than $x$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "P(x)=\\mathrm{Prob(}X\\leq x\\mathrm{)} =\n", + "\\int_{-\\infty}^x p(x^{\\prime})dx^{\\prime}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The relation between a CDF and its corresponding PDF is then" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\frac{d}{dx}P(x).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Properties of PDFs\n", + "\n", + "There are two properties that all PDFs must satisfy. The first one is\n", + "positivity (assuming that the PDF is normalized)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "0 \\leq p(x) \\leq 1.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Naturally, it would be nonsensical for any of the values of the domain\n", + "to occur with a probability greater than $1$ or less than $0$. Also,\n", + "the PDF must be normalized. That is, all the probabilities must add up\n", + "to unity. The probability of \"anything\" to happen is always unity. For\n", + "both discrete and continuous PDFs, this condition is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align*}\n", + "\\sum_{x_i\\in\\mathbb D} p(x_i) & = 1,\\\\\n", + "\\int_{x\\in\\mathbb D} p(x)\\,dx & = 1.\n", + "\\end{align*}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Important distributions, the uniform distribution\n", + "The first one\n", + "is the most basic PDF; namely the uniform distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "p(x) = \\frac{1}{b-a}\\theta(x-a)\\theta(b-x).\n", + "\\label{eq:unifromPDF} \\tag{1}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For $a=0$ and $b=1$ we have" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{array}{ll}\n", + "p(x)dx = dx & \\in [0,1].\n", + "\\end{array}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The latter distribution is used to generate random numbers. For other PDFs, one needs normally a mapping from this distribution to say for example the exponential distribution.\n", + "\n", + "\n", + "\n", + "## Gaussian distribution\n", + "The second one is the Gaussian Distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\frac{1}{\\sigma\\sqrt{2\\pi}} \\exp{(-\\frac{(x-\\mu)^2}{2\\sigma^2})},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with mean value $\\mu$ and standard deviation $\\sigma$. If $\\mu=0$ and $\\sigma=1$, it is normally called the **standard normal distribution**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\frac{1}{\\sqrt{2\\pi}} \\exp{(-\\frac{x^2}{2})},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following simple Python code plots the above distribution for different values of $\\mu$ and $\\sigma$." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYMAAAEhCAYAAACdsMz3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2de3xU1bn3vyvcwjWTAAYUDQ4oKgo6CWi9oNUJ1FovrQnReutFkrbn6Dntq0Rsz3n1nNOXJta2p+15NaH2om0VEsvbWiuQCYKKF5KMQhUFzWisKBESdhAxXJL1/rH3HiaTuWVmkpkkz5fPMNl7XfYze/as31rPuimtNYIgCMLwJiPVBgiCIAipR8RAEARBEDEQBEEQRAwEQRAERAwEQRAERAwGPUqpIqVUjVKqWSmlrfc6pdRyK9yplGpKtZ3xoJRyKKWarJcj1faEw7JTB7yKgsJS+hlC2aCUcgfZ7EwX24TUIGIwSLEK+WagBmgHCrXWSms9S2tdCBiWCDQBKfmhJwE34LJe7hTbEhattaG1VoAvRHDCn8ES/EQKyl42aK09ls39ThT7B8V3PBxQMs9g8KGUcmEW8gBlWuvqKPEMrXX2QNmXTJRSNQBa6+JU2xINpVQdZoFWrLWuDTif0GewRH2Z1tqbgG0hbVBK7QccwCytdSgxS5ho9g+m73goMzLVBghxUWO9e8MJAYDW2quUqgRKB8as5DMUCohEPoMl6K5U2pAIsdg/FL7joYC4iQYZlj/advusjCFJVT+aI/QjSik3UJ9qO+JlsNs/3JCWweCjMODvqM16rbVPKXVqqDClVBWmsPiAHOvvqsDWhtWx2ByQzO+WUkoF+hirtdZlAWkqAsJsf3Gd1royljiWj3l/QHiw6yUe2/OteCXW9QqAlbZNsWLZVmGlt78D247geCE/QwyffzlQFnC+XinVbn8OrbVhFbZ1AXlkA6usz9gO2DXusPcxAJdSyrbHX9kIsjfm5yBG+6N9x/Z9dgKGlZcBlNsurXi/41ie0WGH1lpeg+iF+ePX1suRQD6lVh51AeeWW+eqQsRvtsJKw9hTFXBuP+AOEa+iL3GCrlsUj+2YP/L9VlhFoP0BebuDP2+E++a08msOvP9AUcD3UhTDZ4j189t5usLY4wiIU2Ud299JqM8abJt9b+qCPo99P8N9H1Gfg1jsj3B/XMHfsXW+IkTcPn/Hsd7/4fQSN9Hwxa6lBXbq2bXqUH0MRph8erROLB+xg95+4nKgIdY4Ua4bs+1aayPARqfu2cdipw9sbUWjBtP2Citv+zq1hG+p9fgMffz8EbFssPNvto4rgFpgTTgbQhD8eSqtNMste6Plk0jnc6g87X6x8sCTWmv7uMYeodTX7ziZ938oIWIw+Aj80fUaMqqUWm7NNWhWSu0PeDUrpfwFpVV4ZQf8uAgsDOIdd67NESMGUGGNX2+y3A+Gdc2Y4kS5Rry2B//QbVGJadimVfjYBYgnljShSPTzR8Bj5e/RWhcH3pM4sZ+1AR3yaX1/TvDfq2Ai2RX1O+7H+z+oETEYfAT6iHsVelrrSm3ONZgFNGL9CKxzvUYeWWPAq6yJa8nqbM7neGHpwnQ5NAdOxooxTkTisD3RwjGZ8zUS/vwhSPTzBWMXpAuSnG80Yh09FcquWO9Bf9z/QY2IwSAjyB2xIt58rFbCfiuPKqsmWZYEEwHQWhdqc1JTPmB3yK3qa5xU2B6BpI7Dj+fzWzOHB6qmbneIJ811EqP90e6zbVdzxFhRiPf5G6qIGAxO7FEirkDXTwhyQp20fKZ2TfqKME3xWCkIyrvHCBettddy5/hHlsQSJxxJtr1PWG4X+3pxj/1P5PNb1x2oGeV9cYkVRI/izzOi/QFuHPv79mO56ux7FJerLsH7P2QRMRiEWD+WfMwalO0mCf7RlBL+wQ5sSvsFw0pj18qC09o/vFkB8d0B8QJ/4E5raGEgszA7NfsSJ1m2JxNbiAOHJdrXt+9BLIV1rJ/fvu92YVuI6f5LNj1aVgHDTMuDBLcvz0Fg/L7ab9/n4Jq6bVeZTmzGdLzP39Al1cOZ5JXYC3NIYw3Hh9Y1Yy5BUcHxERNNIdLZtaNm673GOlcUkFfwsL4qK36N9Srl+FA//xBCK7/lAfnW0XPoaSxxHBwfFqgtm5b3xXbMgik4jyorj6aAuPtD3aMI99xhXTPwXhQFXasu3GeI5fMHXavOttG+BwH3MTD/5hDfWdj7aIXvt+6dM+Cz1FmvkENuY3kOYrQ/mm22TU1WHk3WsSsoTp++477c/+H0krWJBEEQBHETCYIgCCIGgiAIAiIGgiAIAiIGgiAIAiIGgiAIAiIGgiAIAsNgP4MpU6bomTNnptoMQRCElNPU1LRPaz01VNiQF4OZM2fS2NgfEzYFQRAGF0qplnBh4iYSBEEQRAwEQRAEEQNBEAQBEQNBEAQBEQNBEAQBEQNBEASBYTC0VBBSwZEj8Mknvc8rBTkh958ThNQiLQNB6AfOPhumTOn9mjwZHnww1dYJQm+kZSAISebYMXj7bbjqKliypGfYv/87vPVWauwShEiIGAhCkjlwwHxfvBjuuKNn2MMPg2H0TiMIqUbcRIKQZOzC3uHoHeZwiBgI6YmIgSAkGREDYTAiYiAISUbEQBiMpFwMlFJFSim3Ump5mHC39aoIOFdhvZcOlJ2CECsiBsJgJKVioJRyAWitPYBhHweEu4FiK9wVEF6qlGoGfANqsCDEQCxioPXA2iQI0Uh1y6AEsOtJPsAdGKi19mity6xDp9baa/29TGs9yxIJQUgroonBsWNw6NDA2iQI0Ui1GDiA9oDjyaEiWS6ksoBTzkiuJUFIJYYBGRkwYULvMFsgxFUkpBupFoOY0FpXAmVKKYd9bLUKJluupB4opUqVUo1Kqca9e/cOtLnCMMcwICvLFIRgbDHYv39gbRKEaKRaDAzAXqnFAbQFBiqlAvsJfJh9BaVKqSLrXBvgDM5Ua12ttS7QWhdMnRpyu09B6DcMI7SLCKRlIKQvqRaD1RwvzJ2AB8BuAWD2IQSKhQ9otOMBs6xjQUgbRAyEwUhKxcDuELZcPUZAB3G99V6N2T9QasWvteIstVoHzQFpBCEtEDEQBiMpX5tIa10d4ly+9W5gCkLUNIKQLhgGzJ4dOkzEQEhXUu0mEoQhR6SWQVbW8TiCkE6IGAhCkokkBqNHw7hxIgZC+iFiIAhJ5Ngxc4ezcGIAsiSFkJ6IGAhCErH3MhAxEAYbIgaCkEQiLUVhI2IgpCMiBoKQREQMhMGKiIEgJBERA2GwImIgCElExEAYrIgYCEIS6YsYyJ4GQjohYiAISSRWMejqgk8/HRibBCEWRAwEIYlE2svARpakENKRlK9NNFgxfD62VVXRUFlJrsvFnJISAD5ra6PD5+P8FSvIdbmi5CKkM1srK8lyOulsN/dfml8afcvtSHsZ2ASKwYwZybA0NDtra9nT0MClFRXRIwvDHhGDOHE4nVxaUcGu2lrmlJSwcPnxTdcMn49fzZrFLU1Ng04QtlVXx1ToDXU2l5czbcEC5hQV+Y931tb6j8MRaSkKm/5uGbR4PLR6vbTU1ZHl7LXdhyCERNxE/YDD6STX5eKVlStTbUqfaW1qSrUJacH26uoeBf/MwkK2V1VFTZcOYpDndrNw+XJOGGQVESG1iBj0E52GQWZOTvSIaUKnYbChrMzvEhnOtHp7b5GRmZNDi8cTInZP0kEMBCEexE3UD9iFxiLLV9vq9WL4fGZYXR3zy8r87qMWj4fnysvJLSggr7CQnatXk1dYyPzS0pjSZTmdzC8r818H4PSiIlq9Xjrb22mpq+Oamhq/bZ2GwSsrVzJtwQL2NDQws7CQPLebFo+HzvZ2Wr1etlZWMsbh8LuLIqUJZ/tWqy+l0zDY09DAGSUl5LpcbKuuZldNDcV1dTHdS8Pno66srEf8x/LzKa6vJzNaqRsnne3tvYR8jHWtTsOIeN3gvQwMn4/nystp9Xrp8PkY43AwKiuH63FjGNFbGoIwUIgYJIE9DQ1sqzb32zlsGIxxOFjW3OwP37BsGQtXrGBOURG5LheP5edzh7Ujep7bzbyyMrZWVLCoogJHgI83WrqFK1b4BcHhdJJbUMAvs7PJcjr9Lo5dNTU9fN2P5edTXFeHw4qzyurbCHSJBPZ/REoTzvZt1dVkOZ3kud0APQrPPLe7Ty2mXbW1Pfzehs+H4fNFLJA3WOIYjUUVFSHz6TSMXi0k2+bO9vaoYuCv+ft8PFVczNU1NTicTrZVV9NSV8cX/lDDt8fAuWFaBonaLwjxkHIxsLavNACX1royRLjb+rNQa10eS5qBZtqCBRE7XQNrsXaBafh8/r8zc3JwOJ1kOhxkBvh5o6YLCrOPAzutA0fD7Kyt7RHfjtvi8YTtGI2WJpTtne3tfpdTntvtFwU7H0cfOjVb6uqYF1A4tng8PfILxeIYfPuRCCkQ1j2MJmSBYvBUcTGLV63yf948t5utFRVR9zRI1H5BiIeUioFSygWgtfYopZxKKVfgnsaWEBRrrcuUUuV2/Ehp0pFMh4MWj8es0YYpTMaEKIBiSReq4AoXt8OqUQf6vqctWBCxdhlLmmDb89xuFldVsa2qijrLtRWvW6fF4+HqADdXS10deYWFfc6nL2Tm5HA4qKS2jyN9hsC9DGz3XqAwd/h8/mNZkkJIN1LdMigBbGewD3AD/oJda+0B7FLIqbX2KqUqIqVJR2oKCzm9uNjfetiwbFm/pgtHVkAN1SZcLdvw+ThsGH1KY2PX3u14m8vL2V5d3cv9FI1Wr5csq9URmPeiiooeLaRgEnWz5LpcvQTObuVEInAvg1avl9yCgh7h26qq/PNRIomBuImEVJBqMXAAgc7ZyaEiKaWWA/YvJKY06UKr10uLx9OjA9SuZUYatx5vukjMKSpi68qVPQrSTsPw11gdTicdVo22w+cjz+0m1+WKmCac7XBcNM4oKfG3LAyfj1avNyb7WzyeXkJw2DBwOJ3srK0NKwbJcLPMKy3tcZ/fC3JXGT6f/x75zwUsRZHrcvUYimrfEzu/SGIgbiIhFaRaDGJCa12plKpRSjWm2hYbw+djV20tHdZMZOjd8QpmoTDPGl1j13ILq6rYWlHBnOJiWr1etldVsaexka2VlcwrLSXT4Ygp3daKCv/on3mlpf55Dc+Vl7OwvJwWj4eda9bQ2tiIw+rQLa6v948MsrELqFyXi9yCAv9oojwrPFyacLaPcTgwfD46rf6GDp/Pf29aPB521dTEJAY7V68mMyeHbdXVZr9ETo6/kO5Lv0M8XFpRwdbKSnZa37Fj1qweNu+qreWVlSv9HfrQUwwcTienFxezrbqazJwcOtvbe4zqcjigtbV/bLcrErtqa+lsb8cxa5Zf2AUhHEqncOlE2+Vj+f+LMF1BlQHhdp+C7R5qw2wJhE1jpSsFSgFOOeWU/JaWlgH6REIy+bFS3JXGS3sGd2Zv3AhXXAGbN8OiRZHT3nQTvPIKvPNOPxspCAEopZq01gWhwlI96Ww1YFfxnFj9A0op2zfgBuzeUAdmH0HINIForau11gVa64KpU6f2k+lCf9Li8aR9TbYzyM8Ty4qlNtKBLKQbKRUDexSQNWrICBgVVG+9VwNOq6aP1ro2QhphCGH4fD189OlGqA7seMQgjRs+wjAj5X0GWuvqEOfyrXcDUxCiphGGFum+WF6oPou+ioG9p0Gk5a4FYaBItZtIEIYMsexlYCPrEwnphoiBICSJWPYysBExENINEQNBSBKxrFhqI2IgpBsiBoKQJEQMhMGMiIEgJAkRA2EwI2IgCElCxEAYzIgYCEKS6IsYZGUdTyMI6YCIgSAkib6IQbQ9DQRhoBExEIQkYO9lYNf4Y0GWpBDSCREDQUgCgXsZxIqIgZBOiBgIQhLoy1IUNiIGQjohYiAISUDEQBjsiBgIQhIQMRAGOyIGgpAERAyEwY6IgSAkgUTEQPY0ENKBsPsZKKXWJ/E6CtivtS5JYp6CkDbEKwayp4GQLkTa3EZprRcn60JKqQ3JyksQ0g3DAKVg4sTY0wQuSSFiIKSaSG6iZG8nKdtTCkOWvuxlYCPrEwnpRNhHV2t9D4BS6vJkXMjOLxilVJFSyq2UWh4mvNR6VQScq7DDkmGbICRKX5aisBExENKJWOoxFdGjxIdSygWgtfYAhn0cEO4GPNaex07rGKBUKdUM+PrLNkHoCyIGwmAnFjHIV0o9pJS6XSk1KcnXLwHsn4IPcAeFOwPO+axjgGVa61mWiAhCyhExEAY7kTqQbcq01quUUllAifXu1VpvTML1HUB7wPHkwECrRWDjAlZbf9utBJfWujIJdghCQhgGzJrVtzQiBkI6EVUMtNarrPcOYBWAUupUpdTdgAZqtdbv9aeRlvvIq7X2WrZUWucLlVJuaSEIqSaeloHsaSCkE7G0DHqhtX4XeABAKXWFUqoY2A+s0Vof6ENWBpBj/e0A2sLEc2uty63rlQLtWutaK74zOLIVpxTglFNO6YM5ghAf8YiB7GkgpBMJz0DWWtdrrR8AajA7dlcrpc6NMflqjhfmTsADoJTy/6yUUqUBLQE30GjHA2ZZx8E2VWutC7TWBVOnTo3nYwlCzNh7GfRVDECWpBDSh6QsR2ENP60GKoFCencEh8R2+1iFvGEfA/UB5yuUUs1Kqf0BaZYqpYqA5oA0gpAS4tnLwEbEQEgX4nITASilZgJlmO4YB/AkUKi1ru9LPkGdxPa5fOvdA2THkkYQUkU8S1HYiBgI6UJUMVBKzbQ7iK2hpUsxRcAFvAv8CKi2OpgFYdiRqBi0tibXHkGIh5gmnSmlLldKrcbsJK4EmoACrfVsrfUDIgTCcEZaBsJQIBY3UTFQhOnHX6q1frJ/TRKEwYWIgTAUiEUMfEC+1P4FITTJEAOtzVVPBSFVxOQmEiEQhPAkKgb2ngaCkEqiioE9AzkYpdRMpdRKpdTtAeeu6If1iwQhrYlnLwMbWZJCSBfimmeglDoPc+KXwhxWCpgT0IAF1rBTQRgWxLOXgY2IgZAuxDvPYKnWejaAUur6wACtdb1S6ivAewnaJgiDgniWorARMRDShXhnIAcuARFqO++cEOcEYUgiYiAMBeIVg0ABCDUGYnac+QrCoEPEQBgKxCsGKqDjWAecPFcptR7YkLBlgjBIEDEQhgJxiYE18SxbKdUOrFJKva2UasOcmFaTpI1vBGFQkIgYyJ4GQroQ90J1WusHlFLVQAHm8tM+oFHmJAjDjUTEQPY0ENKFuMUA/Luf1VsvQRh2JLKXgY0sSSGkA1HdRIGTymIlnjSCMBhJZC8DGxEDIR2IpWVQppRqIPSoobBpgF/FZ5IgDB4SWYrCRsRASAdiEYN8wN5NLFZBCDX3QBCGHMkSA9nTQEg1sYhBIeaSE0asu5gppdYkZJUgDBKSJQY7dybHHkGIl6hiYAuAUirLWmYCwKe1fi1CsqpYDbD2MjYAl73xfVB4qfXnLK11eSxpBGGgEDeRMFSIeZ6B1rpDa/0nrfWfgA6l1PVKqa+EWpSuDy0IlxXfAxj2cUC4G/BYex47lVLuaGkEYSBJphhoca4KKSTeSWfvaq2ftIQh2xKGy+NYvroEs4YP5jwFd1C4M+CczzqOlkYQBoxkiYHsaSCkmoTmGQBorV8FXgWwWgolwGpLKKLhANoDjicH5V0dcOgCVmN2aIdNIwgDSSJ7GdgELkkxYUJy7BKEvhLv2kR+lFKTlFK3W8NPa4HsxM3qdQ0X4NVae6NGFoQBJJG9DGwcDhjPQYy2ruQZJgh9JO6WgdWZXIbppvEC1cCaPi5HYXB8uWsH0BYmntvuPI4ljdXpXApwyimn9MGc2DF8PrZVVdFQWUmuy8WckhIAPmtro8Pn4/wVK8h1SXfGYGdnbS17Ghq4tKIiZHgiS1EA0NXFvI2/oJXv0/Ef34Anf5FAZsfZWmmOq9jT0MC0BQtYuHx5UvIVhjBa65hfwOWYrpou4G3gR8CpfckjKD8XUGr9vRxzdBCAIyBOacDf7nBpwr3y8/N1f1LtdOpXKip6nNvf3KwfAL2nqalfr90fvFZVlWoT0oL36ur0KxUVeo3brdeXloaNd/XVWp97bpwX2bFD6899TmvQrUzVx0aO1vrDD+PM7DjB9j7qcvV6RoXhCeb6cSHLyliWozhXKfWQtUJpLbAfKNBan6a1vkdr/W6INF/plVFoIfJa8d2Y8xhsN1B9wPkKpVSzUmp/lDRpg8PpJNfl4pWVK1NtSp9pbWpKtQlpQZ7bzcLlyzkhSusurpbB0aPwf/4PnHsu7NzJnh//ngt5EdV1DP77v+M3Gug0DMYEGTSvrGxQPovCwBKLp9OL6ZYp1lrnaK2/pc1O45AopU4FVsRqgNa6WmttDx+1z+Vb7x6tdbbWepb17gmXJt3oNAwycwbPhm+dhsGGsjI629ujRxb89FkMXnsNFi6E738frr0WduxgxK030cxsms+9Hh56CDriX/i3s72dhspKDJ+vx/nDMpFBiEIsfQY+TNeQI6jGby9NETw6ehbmENBhS4vHA8Aiy8/c6vX6f5wtdXXMLyvz9ye0eDw8V15ObkEBeYWF7Fy9mrzCQuaXlsaULsvpZH5Zmf86AKcXFdHq9dLZ3k5LXR3X1NT4bes0DF5ZuZJpCxawp6GBmYWF5LndtHg8dLa30+r1srWykjEOB/NLS6OmCWf7VqsvpdMw2NPQwBklJeS6XGyrrmZXTQ3FdXUx3UvD56OurKxH/Mfy8ymuryczIWd9cogmBobPx3Pl5bR6vXT4fIxRisyMDPIKC1m8xpyon3XEjLv5/HJOe7UGqqogTh+/w+nklqYmHM7jP8GWujry3DICW4hMLGJQq2MbJupHKTWshnvuaWhgW7XZSDlsNdOXNTf7wzcsW8bCFSuYU1RErsvFY/n53LF/P2C6I+aVlbG1ooJFFRU9fsTR0i1cscIvCA6nk9yCAn6ZnU2W08mcoiIAdtXUsLO21n/8WH4+xXV1OKw4q2bN4pamJn840KuzMVyacLZvq64my+n0F0CBhXae292nFtOu2lqyAu6J4fNh+HwRhWCDJY7RWFRRkbCg2KOJQob5fDxVXMzVNTU4nE623XEHLb/8Jdc89RRceaU/nr2nwZvj8uGKK9hw//2waxeMGBGX/YEDFzoNgxaPh1vE/SdEIZblKO7pa6bxpBnMTFuwwF+LDkVgLdYuMA2fz/93Zk4ODqeTTIeDzIAfctR0QWH2cWBhkOV0+l0/O2tre8S347Z4PD3EIJBoaULZ3tne7nc55bndPWqlDku4YqWlro55AYV7i8cTtZa7uCrm1VAS4vBhcy+DKVNChz9VXMziVav8nzfv44/ZqhRcfnmvuJMnQ1sbUF7O4sWL4YIL4PbEV4J/qriYpfX1fbrnwvAkrBgope7SWv84WRdKdn6DiUyHgxaPx6zRhqkVB3f6xZouVM0wXNwOq0Ztu7HAFLJIteNY0gTbnud2s7iqim1VVdRZrq143TotHg9XB7i5WurqyCss7HM+/UGbNag5lBjY7j2/MHd10bF+PbkzZsCYMb3iT5kC+/YBbjecdx488AB8/etRWweR2FxezsLychniLMREpJZBIZDMwjvZ+Q0aagoLOb242N962LBsWb+mC4ftbgmsWYerZRs+H4cNo09pbOzaux1vc3k526ur+zzWvdXrJctqdQTmvaiiokcLKZiBchPt3Wu+T53aO6zV6yW3oOD4iRdfZFtHB3O+8Y2QeU2dauWnFBtycuDVV01X0qmnxmX/ztpaf9+O3x4RBSECkcRAKaXWJ+k6fdkYZ0jR6vXS4vH06AC1R3YE+vKTlS4Sc4qK2LpyZY+CtNMw6PD5yHW5cDiddFg12g6fjzy3m1yXK2KacLbDcdE4o6TE37IwfD5avd6Y7G/xeHoJwWHDwOF0srO2NqwYDISbyPD58K03l8YKJQa5LhfbA+xoffhhyMhgzv33h8xv6lR45x3z78Xr1sGcOeaooocfNte76AP2YIA8t5tOw6CzvZ23Vq8WMRAiElYMtNaLB9KQwYbh87GrtpYOayYy9O54BbNQmGeNrrFruYVVVWytqGBOcTGtXi/bq6rY09jI1spK5pWWkulwxJRua0WFf/TPvNJS/1jy5yz3QIvHw841a2htbMRhdegW19f7RwbZ2AVzrstFbkGBfzRRnhUeLk0428c4HBg+H51Wf0OHz+e/Ny0eD7tqamISg52rV5OZk8O26mqzXyInh3mlpRGFIFnYYryrtpbO9nYcs2b5xRHMjm3ff6wE9od0EzmcTk4vLmZbdTWZ2dl0rl/PNVdeGXYRoylTjrc0GDkS7roLvvMd2LwZLrssZrs7DYMay41WF9BCOj2OyoMwvFB6iK+bW1BQoBsbG1NthhAHP1aKu9L4+fzvf/bwr//j5uOPQ7uK/Lz6Krhc8KtfwTe/GTLKD38IP/gBdHZaXQqffQYzZ5rpnnmmP8wXhiFKqSatdUGosIQXqhOE/qDF40l7t8aBVgOlIOpI2bVrzZXsrrkmbBS7dbFvn3Vi7Fi4805Ytw62bUuKvYIQCREDIS0xfL4eQ0rTDcPnow0nOTkxDPhZuxYuuSRi88EO8ruKwHQTjR9v9hsIQj+T8H4GgtAfRJq3kQ44nE4+VFHcQ2D2Cr/+OvzsZxGj2fn4WwYA2dnw+c/Ds88mZKsgxIK0DAQhTvbuDT/hzM/ateb7dddFjGbn06NlAGbn8c6d8NFH8ZgoCDEjYiAIcbJ3bwwtg7VrzU7gvLyI0UK6ieD4SKLNm+MxURBiRsRAEOJk374oLYOPPoKXXoIvfzlqXtnZ5nSCHm4iMJe5njRJXEVCvyNiIAhx0N1tFtwRWwZ//rP5HoMYjBhhrk/Uq2UwYgQsWgSbNsVrqiDEREJiYO1/fK5SaqZSalKyjBKEdKejA7q6orQM1q6F006Ds86KKU//+kTBXHaZuYrphx/GY6ogxESfxEAptUwptUEp1a6UasPckawSc/9jr1KqTSnVoJS6Syk1M/nmCkJ6EGldIsBc23rjRrNVEONyEv71iYKRfgNhAIhl28tJSqkfWesUaY7veDZZa71Aa73Yes22z/P0XGkAACAASURBVAGvAvcopVYrpXqv19sz/yKllFspFXYVM6WUK+i4wnpP7/GHwpAlqhg8/TQcOxaTi8hm6tQwLQO730BcRUI/ElEMlFLnARVAldZ6idb6V1rrqHvyaa3rre0xS4BZSqm7wuTvsuJ7ACO40LfiuIGaoNOlSqlmzF3YBGHAsQvtsG6itWth+nRzi8sY6bE+USDSbyAMAGHFwNrL2Km1/naoTe9jRWu9ClgVtGWmTQlgb85qLgHZO72H3oX+MmtfZE9wfEEYCCK2DI4eNZeRuPZacxmKGJk61dwjobs7RKD0Gwj9TNgnVWv9rtb6yWRcRGvdEWbrTAcQuAN7rNtlOqO5lgShP4nYMti2DT791Jw93AemTDE7pUPuXS/9BkI/E/doolSOHtJaV1qtgsmWG0kQBpS9e819i8eNCxH4wgvm+0UX9SnPsBPPQPoNhH4nLjFQSq0B9gePGIrWWRwCA7DXfHQAbTFcu1QpZS/O3gbI5q7CgBNx9vGWLeby0yed1Kc8Q65PZCP9BkI/E2/LoA5YqrV+L+h8kzWsNNZWw2qOF+ZOwAOglIq0F2GjHQ+YZR33wBKMRqVU496Q1SxBSIyws4+1NsWgj60CiLA+kY30Gwj9SLxi4MAUhB5YfQM/BpbGkonW2gv+EUOGfYw5fwErrAgosFsDVpyl1nFzQJrAfKu11gVa64KpURePEYS+E7Zl8N575jIUcYhBRDcRHO+DkH4DoR+IawlrrfUDSqn1SikvsEFrHffCKVrr6hDn8gP+rgVqo6URhIFk3z4444wQAXH2F0CIDW6CmT8fsrJMV9GNN/Y5f0GIRFxioJR6GHOT+0KgXCmlAS+my8bAbDn8KllGCkK6EbZlsGWLWWDPndvnPMeONfeyCdsykH4DoR+J103UbM06LtBaZwBLMF07CzDnCpQny0BBSDc++8wcORpWDD73uRi2PwtN2FnINtJvIPQT8YpBj5HQWmuP1voea6PlUmLsMxCEwUjYOQb795u7msXhIrIJOwvZRuYbCP1EvGLgUUrdHiZsf7zGCMJgIOzs45deMt8TEIOoLQO730D2NxCSTFxiYC1PUaOUuj1wGKm1hIUPyA+bWBAGOWFbBlu2mO6hPqxHFEzUloH0Gwj9RNwzkK1hpL/SWh8IOPcuZqdyZTKME4R0JGzL4IUXzC0ux4+PO++wy1gHctll8PbbsHt33NcRhGCSvtOZtWJp3AvbCUK6E1IMjhyBrVsTchHZeR46ZL7CIv0GQj8QcdXSMCuN9hlrT4RwfQyCMKjYt8/01jgC58m/+ip0diYsBlHnGkDP+QaCkCQirloKvKuUeiiRXcuUUsuAFVprmXcgDAn27jX3K+6xOvWWLeZ7EloGEEUMRowwr2NfUxCSQEQ3kdb6VeAe4FvWjOPbY1l3yNoX+WFrd7RmrfWKJNkrCCkn5LpEL7wATqe5oU0CRF2fyOaii2DHDmhvjxJREGIj6gxka2ezewCUUtcDv7J2JNOY8w3sp3EWkI05mqgRc3e0V/vDaEFIJb1mH9uL0y1ZknDeUdcnsrn4YvP9xRfhS19K+LqC0KflKKzNbvwb3iilsjBXGzWA9li2xBSEwc7evUGrTTQ3w8cfJ+wighj7DAAWLIBRo8wWiYiBkATiWpvIxir8pfYvDCv27QtqGSSwOF0wDofZJRC1ZTB2LOTnS7+BkDQS2elsptWHcJdSqm/7+wnCIKWry9ynuIcYbNliluJnnZVw/hkZZusgassATPFpaIDDhxO+riDEu9PZ9ZirlN6DOcGsXinVppT6ZjKNE4R0Y/9+s4ugRwfyli1w4YVBw4viJ+osZJuLLzaFoKkpKdcVhjfxPr0FWuscrfVsa9XSWUAFsEIptTp55glCetFrwllbG7z5ZlJcRDZR1yeyufBC8912UwlCAsQrBr7AA631u9Ym9bOBRplgJgxVbDHwtwxefNF8T6IYxNwyOOEEOP106TcQkkK8YtAebiKa1vqBuK0RhDTHrrH7WwZbtpijehYsSNo1YlqfyMaefNbdnbTrC8OTeFctfRKoUkp9OcwktOxY81JKFSml3Eqp5RHiuPqaRhD6g15uoi1bzMXpxo1L2jWmTjXnknV1xRD54otNV9XOnUm7vjA8ibcDeQ0wGXgE2K+UettatuIrSqm7gKag+OeGyccF5uY4gBFc6Ftx3EBNX9IIQn/RY/nqzk5zNE8SXUR23lrHOLnYvra4ioQEiddNVGdteZkDnIY5omgy5r7HlZithoeUUt+03EnhlqMo4fiuaT7MLTN7YBX6vr6kEYT+Yu9emDgRxowBXnnFHM1jryKaJGJan8jm9NNN9ZBOZCFB4u5AtuYXnKu19mmtV2mtl1riMIvj4rACs8AuCpOPg+PLWWCliUY8aQQhKezdG9B5vGkTKAWXXJLUa8S8PhGY15dF64QkEG+fQb3W+sdAr+UnrJFFtjjMBmYjs5SFIUKP2cebNsF55wWtZZ04gesTGZ0GR7qORE5w8cXwzjvQ2ppUO4ThRaLLUUTdxEZr7VNKrQwTbAA51t8OoC2Gy0ZNo5QqBUoBTjnllBiyFITY2LsXTjwRs7/gpZfgn/4pKfkeOHyAbXu28cbeN2h4bwfc+gbf2PEGB15vZfSI0czPnU/BiQUUnFhA/vR8zpp6FqNGjDITB/YbfCUpW5AIw5CExCBWrNFHoVgNFFh/OwEPgFLKobU2+pIm6HrVQDVAQUGBjtPsiBg+H9uqqmiorCTX5WJOSQkAn7W10eHzcf6KFeS6pG97MLO10ty9dU9DA9MWLGDh8uXs2wfz5pG0/oK2Q2088OID/GLrLzh01NzebMLoCTD6LGbpK7nBfSb7Du2j8cNG/vD3P/BQ40MAZI7MpOisIv7r8/9FnssFmZlmv0EIMdhQVsbiqqqE7BSGPgMiBuHQWnuVUgXWiCFDa+21guqBfDCHkQIFSqkirXVthDQDisPp5NKKCnbV1jKnpISFy4+PcjV8Pn41axa3NDUNOkHYVl3N/NLSVJuRcoIL0Mfy89Ea9u5dbrpxEuwvMDoNfvrST/npyz/l4JGD3HjOjdx8zs3MPWEuJ086GYdDsejrsDxgoFK37uad9ndo+rCJ599/nt+89hvWvLGGOxbewb2fO5ecEP0Gm8vLaW1sjMtGYXiRUjEAfy0++Fx+wN+1QG20NOmEw+kk1+XilZUruaamJnqCNKJV1rmh0zAYE9QPMK+sjM3l5XR2Ljc7eNdtiqu/4OCRg/z8lZ/zwIsPYHQaXH/m9dx/2f3MPWFuj3ihZiFnqAxOn3w6p08+nRvPuZF7L7mXf3/23/nJSz/hkUVj+H79Ef65o43MLHNMheHzIQixkpyVtYRedBoGmTk50SOmCZ2GwYayMjpl5yw629tpqKzsVZgeMUzP5TSH1V/QRxfRyx+8zJxfzuH7G7/PxadcjLfUS+3S2l5CALGtTzRj0gx+fe2v2fatbVzoOJu73d3Meegs/rrrrwC0eDzMLCzsk43C8CXlLYOhSIvH7MZYVFEBQKvX6y9YWurqmF9W5ncftXg8PFdeTm5BAXmFhexcvZq8wkLml5bGlC7L6WR+WZn/OgCnFxXR6vXS2d5OS11dj9ZJp2HwysqVTFuwgD0NDcwsLCTP7abF46GzvZ1Wr5etlZWMcTj87qJIacLZvtXqS+k0DPY0NHBGSQm5LhfbqqvZVVNDcV1dTPfS8PmoKyvrEf+x/HyK6+vJTPIoHhuH08ktTU04nE7/uZa6OhwL3bAVZrfF3l9g+Hw8V17OOy9tpnv3Xr49NoOsqScy5wsnct6N54VNN2UKfPhhbPaek3sOT9+2gY35OXz3NsU1j1/DDyd9jX/92oN8LC09IUZEDJLAnoYGtlWbnqvDlothWXOzP3zDsmUsXLGCOUVF5LpcPJafzx379wOQ53Yzr6yMrRUVLKqo6FEARUu3cMUKvyA4nE5yCwr4ZXY2WU4nc4rMqR27amrYWVvrP34sP5/iujocVpxVVt+GHQ706P+IlCac7duqq8lyOslzm/MBAwvtPLe7Ty2mXbW1ZAXcE8Pnw/D5IgrBBksco7GooiJsPoF9PZ2GQYvHwykPNsFWOMW3Kab+AsPn48/FRTR++0x+efZevt5yFl80ZlP0pz9HTLehrIx5b8Pk3bAhwkfpYX92NpePP5uXX5nG7befwONP/Ia/n9LJfeNvingtQbARMUgC0xYsiNjpGliLtQtMw+fz/52Zk4PD6STT4SAzoBCKmi4ozD4OLMiynE6/62dnbW2P+HbcFo+nhxgEEi1NKNs729v9Lqc8t9svCnY+gXlFo6WujnkBhXuLx9Mjv1Ake+TMU8XFLK2vZ/3rpt2TX98UU3/Bn66/jtprFM/s/iPLL1zO8ptu509LvhD1eourqvAshzW/gN8+bOpOTFx0EWMff5x/v62atXeew73193LAaOLLXWNizEAYzogYDACZDgctHo9Zow1TKw7usIw1Xaiabbi4HVaN2nZjgSlkkWrZsaQJtj3P7WZxVRXbqqqos1xb8bp1Wjwerg5wc7XU1ZE3gH7wzeXlLCwvJ9flYu+zMIZOxr4WfX7Bpi1P8ua+t9g8ZhRPXPMEJWeX0OLxxDy6bMoUcyrDp5/ChAkxGnvxxRhVVWQaBveU3MNZU8/iB5UlvLXvGFt3b2XhSQtjzEgYjogYDAA1hYWcXlzsbz1sWLasX9OFw3a3BNasw9WyDZ+Pw4bRpzQ2du3djre5vJzt1dW93E/RaPV6ybJaHYF5L6qo6NFCCiYZbiIwW0V2/wjA/te9XDjiE1SU/oK65jpW/PJGzjk5kxe/8Tzzp80HYFtVlX8+SiQ2lJUxdidcD6wvNddCisn+iy6iFehYt47Wjg6mAXd/fAm7Op/l3m9cyDe++zO++oV/jnp9YXgiYtDPtHq9tHg8PTpAD1ujUgJ9+clKF4k5RUVsXbmyR0HaaRh0+Hzkulw4nE46rA7rDp+PPLebXJcrYppwtsNx0TijpMTfsjB8Plq93pjsb/F4egnBYcPA4XSys7Y2rBgkw01kd6jnud10Ggad7e10Na3myrHj4FOFcfLJdIRwWdU113HNE9dw3llO3K25fiGw70ksn3txVRWHn4I7N0P5d/uwVcLMmcw56SQYORIs4R3jcHD0g1aeLZnIrVv/lVEn51I8tzj2GyEMG0bcd999qbahX6murr6vtB8mURk+H9tXrWJXTQ2Gz0fX4cOcFGIp4wnTp3Pwo49oe/NNDn70EZ9++CEnXXwxu2pqmJafz2HDYOuPfsTuF15AZWQwee5cRmZmxpTuxfvuY/eWLYwcN47Jc+ey5X//bz7csoXO/fuZPHcuO2tq8P73f9Ph8+GYNcvsAC4poelnP+NwRwdtO3aYhf4VV/htbfV6aXvzTY599hnT8s3pHuHStHq9IW3f98YbdO7fT8e779K2YwetTU3+VsHOmhp2PPooc2+9Neo93njnnWTm5HCss5PD+/f73V/HDh/G4XQyYfr0ZH2dPeg0DH47dy6+v/6VrRUVbK2owPvzn3No5HSu7NzBSWfnsH3sWDbeeSfn33OPP92G5g1c+8S1nD75dNZ9ezNju0fR2tREx7vvYjQ3c6k1uiwW9u+HRx6B666D006LMZFSsGMHPPUU3HUX2x55hF01Nezf8SY3z78FX/YhftL0c+ZOnctZU8/q410RhgL333//R/fdd1/oeVpa6yH9ys/P18Lg5AFItQk9uOyCz/ThjDFaf+97Wmut36ur84etf2e9zvyvTD3voXl676d7E77WO+9oDVr/7nd9TPinP5kJN27sFXSg84C+8JEL9cj/GKn/tONPCdsoDD6ARh2mrJRJZ0Ja0pfO1oHipA9eYXT38f6CTsttt6F5A9c8fg1zJs+h/tZ6poybEiGX2OjTMtaBuN3mNpxPP90raOKYiTxz0zMUnFjA0tql/GXnXxK2Uxg6iBgIaYnh8/UYUpoOnL1vE92Y8wvsPhRbCM6YckbShABg0iSzTI9pg5tAJk6ESy8NKQYAk8ZMYt1N63BNd1G0psg/W1kQRAyEtGR+aWlaLZh39Cgs7NzMnunm/AKH08muyZ9y7RPX+oVg8rjk7bOkVOj1iWLiqqvgrbcgzNpEWZlZrL95PfOnzef6NdfzzNvPJGasMCQQMRCEGGj/sJPP8RIfn3kZANtbt3P141eTl5WH51ZPUoXAJpb1iUJy1VXme5jWAYAj08GGmzcwd+pcrl9zPS/+48X4jBSGDCIGghADnz67lbF08knBZfj2+1jy+yVMGD2BDbdsSJprKJipU+NsGZx2mvmKIAYA2WOzWXfzOmZMmsGX/vgl3vj4jfgMFYYEIgaCEANqs9lf0LZwDosfW8yRriNsuGUDp2T13056cbuJwGwdbNpkTmGOwAnjT2D9zevJHJnJkt8v4f2O9+O8oDDYETEQhBgY37CJ58fMY8U/Svjo4Ec8/dWn+32sftxuIjDF4PBhqK+PGvXU7FNZd/M6Dh45yOLHFrPvULwXFQYzIgaCEI1PPmHcO1v45g1tvHPgdZ5c+iQXzLig3y87ZYo5+ezo0TgSL1pkLmr0t7/FFH1e7jyeuvEpWjpa+OIfvsjBIwfjuKgwmBExEIQoHFv7JLded4TmUz/gkWt+xxdmR195NBlMnWq+x7Xf0OjRUFho9hvo2LYBvyTvElYXrcb7kZfr11zPka4jcVxYGKyIGAhCBLTWfOuVf2PtmTD22Z9x67lfHbBr22KQUL/BBx/A3/8ec5Jr5lzDqqtXsaF5A7f9v9vo1t1xXlwYbKRcDJRSRUopt1Iq5JKWocKVUhXWe/oMRBeGJPc+9S88csIHFL9xISft/pcBvXbcs5BtvvhF8z3KqKJgvn7e16lwV/DE609w5zN3omNsWQiDm5SKgVLKBaC19gCGfRxDeKlSqhmQHb+FfuPBFx/kR6/+gm81wMT3H/bX1AcK+3pxdyJPnw4uV5/FAGD5Rcu5+8K7+Z+G/+H+zffHaYAwmEh1y6AEMKy/fUDwQvnhwpdprWdZIiEISed3r/2Ou+ruYumeyfzy/bNp/Owcf019oEi4ZQCmq+ill6Ctrc9JK9wVfOPcb3D/5vv5xSu/SMAIYTCQajFwAIHdY8HTOMOFOyO5lgQhEZ7a+RTf/Ms3cU+/iEdXtTHiqzexbx8D3jKYbD3tcbcMwBSD7m5Yv77PSZVSVF1dxXVnXMed6+7kD9v/kIAhQrqTajGIC611pdUqmKyU6rXtllKqVCnVqJRq3JtQtUoYbjzX8hxLa5fimu5i7d4rGNMFh79yI3v3wgknDKwto0aZgvDBBwlksmCBqWJxuIoARmaM5PHrH+eymZfxtT9/jad3xZePkP6kWgwMwN6w1wEEt2V7hVsFvb1dVBvQa7srrXW11rpAa10wdaCrc8KgZevurVz9+NXMdMzkb199mgl/rIWLL+blj/I4ehQu6P+pBb04/3x47rkEMsjIgCuvhHXroKsrriwyR2by5xv+zPzc+RTVFPHC+y8kYJCQrqRaDFZzvDB3Ah4ApZQjQnijHQ+YZR0LQkI07G5g8WOLmTJuChtu3sCU5o/MXcO++lU2bjTL1EsvHXi7rrgCdu6E3bsTyOSqq8zJCi+/HHcWk8ZM4pmbniEvK48r/3AlW97fkoBBQjqSUjHQWnsBLFePYR8D9eHCrXNLrdZBc0AaQYiLxg8bKXyskJyxOTx727OcnHUy/PGP5l7CxcXU10N+PgTuPT9QXH65+b5xYwKZLF4MI0bAXxLbzGbq+KlsvG0jJ048kS/84QvSQhhiqKE+hrigoEA3NkrjQQiN9yMvVzx6BY5MB5tu20SeI8/scD31VDj7bA6ufprsbLjrLli5cuDt6+42+yquvhp+85sEMrruOnj+eXj/fRg/PiGbPvzkQz7/u8+z+8Bu1t28jotPuTih/ISBQynVpLUuCBWWajeRIKQM70de3I+6yRqTxbO3PWsKAcCLL5qF5le/yvPPw7Fjx2voA01GBnz+8+Z6cwnV28rLTVfRr36VsE0nTjyRTbdtYsakGXzh91/g+ZbnE85TSD0iBsKw5NWPXsX9qJuJYyby7G3PMtMx83jgH/8IY8fCtdeycaO5zM9FF6XMVK64Av7xD2huTiCTz30OLrkEHnwwzpXvejJ94nS/S+3KP1zJcy2J9HIL6YCIgTDseOH9F7ji0SuYMHoCz972LKdmn3o88OhRWLMGrr0WJkxg40azHB03LnX22q2SGFajjsw995iq8vjjCdsEvQXh2XefTUq+QmoQMRCGFatfX437UTdTx09l09c24cwOGplcV2fO1v3qV2lvh1dfNWvmqeS00+CkkxLsRAZziOk550BFhdkZkQSmTZjGpts2MdMxkyW/X8Lvt/8+KfkKA4+IgTAs0FpTuaWSG568gQUnLeDFb7zYWwjAdBFlZ8OSJWzaZPrpU9VfYKOUKUgbNyZYhitl9h3s2BH3JLRQ5E7I5YWvv8BFp1zELWtv4b5N98nidoMQEQNhyHOs+xjfefo7lHvKWTp3KXW31IXewH73bli7FoqLYfRo6uvNgTcLFw68zcFcfrm5LMXrryeYUUkJzJxpDo1KYoGdPTab9Tev52vnfo37N9/Prf/vVg4fO5y0/IX+R8RAGNIcPHKQ6564joebHmb5hct5/PrHyRyZGTryv/6rOUv37rsBsya+aJG5LESqSVq/wciR5jjZl16CF5I7T2D0iNH8+ppf88PLf8jvt/+ewscKaTvU9wXyhNQgYiAMWd5ue5tFv1nEM+88w0NXPURFYQUZKswj/7e/QW0t/OAHMHs2u3fDW2+lvr/A5uSTzb6DhPsNAL7+dXNJ1IqKJGTWE6UU915yL49f/zhbd2/lgkcuYOe+nUm/jpB8RAyEIYfWmke8j3Be1Xm8Z7zHX274C98q+Fb4BIcOwT//M5xxhr9V8Kw1MCbV/QWBXHEFbN5szntIiHHj4F/+xew32L49KbYFc8PZN7Dxto0YnQb51flUN1VLP0KaI2IgDCnaDrVRVFPE7U/dzvkzzmf7t7dz1elXRU70wx/Cu+/CQw/BmDGA6Y7JyYH58wfA6Bi5/HL45BNIyoT6f/onmDABKiuTkFloLjz5Ql4te5ULT76Qsr+WcfXjV7Pn4J5+u56QGCIGwpCh3lfPvIfn8dTOp3ig8AHqbqljxqQZkRPt2AEPPAC33gqXXQaY/aobN5ozfzPS6Bfy+c+b7wn3G4A5YqqsDJ54At57LwkZhmbGpBmsu3kdP//Cz6l/t56z/+/ZrH1zbb9dT4ifNHrUBSE+Dhw+wP9a/78ofKyQSWMm8crtr3DXhXeF7x+w0Rq+9S2zhvzAA/7Tzc3mahTp0l9gM2WK2VJJihgAfPe7ptrdfXfS5h2EIkNlcMf5d+At9TLTMZOvrPkKX//z1zlw+EC/XVPoOyIGwqDlaNdR/mfr/zD757P5ycs/oSy/jKbSJs6bfl5sGfzud+bibZWVPXausTtp06m/wObyy82lkz77LAmZnXQS/Od/mh3n3/1uUoeahuLMqWfy0jdf4t8W/RuPbnuU035xGr945Rcc6TrSr9cVYkRrPaRf+fn5WhhadHd36yd3PKlP+/lpmvvQl/32Mt2wu6Fvmezbp/XkyVpfeKHWXV09gpYu1fqkk7Tu7k6i0Unir3/VGrT2eJKUYXe31t/9rpnpf/5nkjKNTsPuBn3Zby/T3Iee+bOZ+rFtj+mu7q7oCYWEABp1mLJSWgbCoEFrzQvvv8DFv7mY69dcz6gRo/jrjX9l460bKTgx5Kq84TIyx9p3dMDDD/foGOjuNkcSXX65OWE33bjkEnNrgqQMMQXzQ/74x3DLLfBv/2bejwGg4MQCNt66kXU3rSM7M5tb1t7CeVXn8fSup2XUUYoQMRDSngOHD/Bw48O4ql1c8ptLeHf/u6y6ehXbvrWNq06/CtWXUvvAAbjxRvjtb01BOOecHsGvvw5796Zff4HNpEnmjOik9RuAKYaPPAJf+hJ85zvmQn0DgFKKJbOX0FjayBPXP8Gho4f40uNfomBVAQ81PITRaQyIHYKJiIGQtjR+2MiyvyzjxAdP5NtPfxutNf/3i/+Xt+94m9tdtzMyY2TfMnztNXPLstpaczmGH/6wV5R07i+wufxyaGgwGzZJY9QoUwQuughuvtlcsG+AyFAZlJxdwo7v7KDqS1Xm8iF/+w7TH5zOLWtvYfN7m6W1MADITmdC2nC06ygvffAS699Zz1/f/ivbW7czbtQ4bph7A2UFZSw4cUHfWgE2WkN1tTnRavJkczjlJZeEjHr11eaew7t2Jfhh+hHbjfWXv5j2JhXDMDd7bm6GJ580t8wcYH+Z1pqmj5p4xPsIf3z9jxw4fIDZObO5Ye4NFM4q5IIZFzB6xOgBtWmoEGmns5SLgbWXsQG4tNa9ZsCECo+WJhARg/RFa41vvw+Pz8O65nXU++r55MgnjFAj+NzJn+PGs2/kpnNuIiszK/6LfPKJOZ7+8cdhyRJ47DGYOrVXtCNHzDln99wDt902YK7zuOjsNKcJnHGGaef55yf5Ah99ZC7K9M47pk/q7rvhy182OysGmENHD1G7o5Zfv/prnn//ebp1N+NHjeeymZdR6CzE7XRz1tSz4qskDEPSVgyUUi7AqbWuVUqVYvZ0eyOFW0Fh0wQjYpAefHb0M97Y+wbb9mxjW+s2XtvzGttbt9Nx2PR15GXlsWTWEpbMXsIVp16RmAAcPgzPPWeuN/Tkk+ZqpP/xH7BiRa9ZZFqbNey774a33wa329xreEaUuWqppqYG7rgDWlvNLpCVKyEvL4kXOHTIHHr7k5+YouB0wve+B1/7WsJ7KMeL0Wnw7LvP4vF5qPPV8Xb72wA4Mh3My53HOSecwzknnMO83HmcfcLZTBwzMSV2pjPpLAYVQJ3W2qOUchNU0w8VDkyOlCYYEYP+0yXmvAAACOhJREFUQ2vNp0c/pf2zdv+r7VAbuz/Zzfsd7/d4tX7a6k83ftR45k+bz/xc83XpzEuZM3lO/LW7Q4fggw9M/8nf/mb2rn76qbm0xGWXwb33mjXdILxes3zbvBnOPNMcVHPllek5iigUn3xiTpH48Y9NUfve98yWzaRJSbxIVxf8+c/mpLyXXzbX6PjSl8wbduaZZvPE6UzJ0q4tRgsen4eGDxv4+8d/5++tf+eTI5/4w6dPmM6MSTM4OetkZkyc4f87d3wu2WOzyc7MJntsNhNHTxw2LYt0FoMqoEpr7bUK9kKtdXmkcMARKU0w8YjBG42v85tfr4znI8VMX++6Dkihg1Jrpf156qD/tdJoNN1Wmm403aqbbrrpst67laabbo6pLo6pLo6qYxyjyzo+RmfGEQ6rI3RmHKEz4P3giEMcU10h7c3sHs0JR3PIPZbDCceyOeFoNqcemc6swzM46chkMuyxC1qj0Oa77g447iaj6ygjjh0ho+sII44eZkTXETKOHSbz4D7GHdjDuI49jP2kldGdxwuAT3LyaDn7KlrmfpEP53yeo6PG0dlp6sWhQ6ZGHDoEe/aY67RNnmw2GpYtM1d3Hoz84x/w/e+bHrATTjC9YePHm+vR2e/jxvUsrwPLvljLwdzmFzmn/qdMa36R8R0f+s93jRjFgamzOZQ1naNjJpivzAkcGz2eo2Mm0DVyDDpjBFplmO8ZI+jOGAHWDHGN6mGIDmtQZEM1mj0j2/CN+RDfmN18OGove0cafDyynY9H7eezjND7K4zQGUzoHsu4rrFk6tGM0aPI7B7NaD3aeh/JSD2CEYxglPW3eZxBhs4gw3ofgSJDZ6D8/0DpDPPdOu75Fyjd+zOpgM+pQnzm7Ikn8IOKn0a8F+GIJAaD9PGPjOU+KgU45ZRT+pz+ta0v82DuH5NtVloyott6aRjVBaO7YFS3+T76mHlu3FGYdBSmHYXxR83jcUch+zPICfE66RPI/uwIij1A4guTdZHBYcZwhNEcZgxtTOZ9ctlDAa3ksodptJLLy1zAW+1nwHMKQuzPPmrU8QJy/HjTNXTvvZCVgEcqHTj5ZHj0UbjzTnMF7uef7yl8yavvXWi9YCIHOIO3OIO3OLPrTc7Y8xZT9+xlAm1M4CDZfMoEDjKRg8m6eMIcGAP/mAQfj4f9Y2F/pv3ezf6xn/LJ6E85NAo+GwWHrNe+UXB4JBzNgKMj4MiI438fy4AuBd0DPCbz9I/H8APiE4NIpFoMDCDH+tsBBO+EES48Uhq01tVANZgtg74ade1NN7DtzT5MYoqTUKofc3zVs/ag/KeP10syVIb/HRQZVtgINYIRakT0tXvi5CjwccgPEKY6qhRaZZjnlDL9+kqhR44yXT1BHZfZ1uuMGLPPzOxdMx6KFBTAunU9z2ltdjh/+qnp8bHPBYbHxyRgofUKzUHgYHe3ueZ2dzequ8s0wnrZLcIehoQzKEmKNsV6JROtzZZ1l+6iW3fTpbsBa2YvZpj9t92qN4+t9IT+QoI9ADajxvTPSKpUi8FqwC51nYAHQCnl0Fob4cLDnEsaE7ImMO+Cc5OdrSAMOErB2LHmKzVkADIMdDCQ0kln9iggy/dvBIwKqg8XHiGNIAiCECepbhnYLp3gc/lRwnudEwRBEOJHlqMQBEEQRAwEQRAEEQNBEAQBEQNBEAQBEQNBEASBNFi1tL9RSu0FWuJMPgXYl0RzEiXd7AGxKVbEpuikmz0w9GzK01r3XraXYSAGiaCUagy3jkcqSDd7QGyKFbEpOulmDwwvm8RNJAiCIIgYCIIgCCIG0Ui3mc7pZg+ITbEiNkUn3eyBYWST9BkIgpAylFKuoN0NY97SdgBtqtBalyulSofyUjjSMhhkWFuBBh5XWO+lqbEopE1FSim3Ump5qmxKF9LxXqTDM2Nd3w3UBBy7ALTWHsAIfq5SYZNFqVKqGfANtD1gfk/WqyLgXNKfKxGDCAzUl9AHe9LxQU27H3QgqSz40u1eBJDSZ8bGui+BNpRgtgqwzrvTwCaAZVrrWVbYgGL9vjxWi8RplT398lyJGIRhIL+EWEm3BzWMTSn/QQeRyoIv3e6FTUqfmQg4gPaA48mpMiQIZ6oqgJh7ttjPjc867pfnSsQgPAP2JSRIKh/UUKTbDzqVBV+63QubdHtm0hqtdaX1/Ey2KokDee3qgH4KF9BIPz1XIgZhGMgvIRFS+aAOEqTgCyKNn5lo2+AOOJabuMg6bMOsFKbCDhfg1f24mVfKN7dJdwK/BKX6tmdxHNcK5df2havVWvHbtda19NOD2lebSLMftD0iRSlVqJRyD3ALIa3uBQzMM5MA4ba5TSWNHHcxzgKqUmSHW2tdbv3dL8/VsBaDGAu6fv8SbOIYttbvD2ocNg3oDzrSd5gGBZ8UbhGwatwFSqkirXWtVeEqSOWWtmFsKlVKtQPNKbKpNKBS46afniuZZxCBwHHF1pfQDhRorastt4NnIB8O60FdhekHr7VttOxypmJcdgSbfJZNKRuXbbXqfFprQylVBVQN9I85Xe5FIKl+ZoTYCRit145ZES0OqOgk9bkSMQjDQH4JQv8hBZ8gxIaIgSAIgiCjiQRBEAQRA0EQBAERA0EQBAERA0EQBAERA0EQBAERA0EQBAERA0EQBAERA0EQBAERA0EQBIFhvlCdIPQXSil7PwwHMEtrXWatZ2UAhVrr4pQaKAhByHIUgpBklFIOYGnAIod1VlAxpkDUANlaayNMFoIw4IibSBCSz9KgRQxzMPfEMKyVXWeJEAjphrQMBCHJKKUcgYW9UkpjuobSYT8DQQiJiIEg9CPWUuh1Wuv+3SZPEBJE3ESC0L8UAgO+O5Yg9BURA0FIMtZIIhs35laTdpgjzTahFwRAxEAQkopV0DcrpZzWtptgDie1KZW+AyEdkT4DQUgiVqugHGiyTq0BKgKPZSSRkI6IGAiCIAjiJhIEQRBEDARBEAREDARBEAREDARBEAREDARBEAREDARBEAREDARBEAREDARBEAREDARBEAREDARBEATg/wOGu+miYrUshQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter3_29_0.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "from math import acos, exp, sqrt\n", + "from matplotlib import pyplot as plt\n", + "from matplotlib import rc, rcParams\n", + "import matplotlib.units as units\n", + "import matplotlib.ticker as ticker\n", + "rc('text',usetex=True)\n", + "rc('font',**{'family':'serif','serif':['Gaussian distribution']})\n", + "font = {'family' : 'serif',\n", + " 'color' : 'darkred',\n", + " 'weight' : 'normal',\n", + " 'size' : 16,\n", + " }\n", + "pi = acos(-1.0)\n", + "mu0 = 0.0\n", + "sigma0 = 1.0\n", + "mu1= 1.0\n", + "sigma1 = 2.0\n", + "mu2 = 2.0\n", + "sigma2 = 4.0\n", + "\n", + "x = np.linspace(-20.0, 20.0)\n", + "v0 = np.exp(-(x*x-2*x*mu0+mu0*mu0)/(2*sigma0*sigma0))/sqrt(2*pi*sigma0*sigma0)\n", + "v1 = np.exp(-(x*x-2*x*mu1+mu1*mu1)/(2*sigma1*sigma1))/sqrt(2*pi*sigma1*sigma1)\n", + "v2 = np.exp(-(x*x-2*x*mu2+mu2*mu2)/(2*sigma2*sigma2))/sqrt(2*pi*sigma2*sigma2)\n", + "plt.plot(x, v0, 'b-', x, v1, 'r-', x, v2, 'g-')\n", + "plt.title(r'{\\bf Gaussian distributions}', fontsize=20)\n", + "plt.text(-19, 0.3, r'Parameters: $\\mu = 0$, $\\sigma = 1$', fontdict=font)\n", + "plt.text(-19, 0.18, r'Parameters: $\\mu = 1$, $\\sigma = 2$', fontdict=font)\n", + "plt.text(-19, 0.08, r'Parameters: $\\mu = 2$, $\\sigma = 4$', fontdict=font)\n", + "plt.xlabel(r'$x$',fontsize=20)\n", + "plt.ylabel(r'$p(x)$ [MeV]',fontsize=20)\n", + "\n", + "# Tweak spacing to prevent clipping of ylabel \n", + "plt.subplots_adjust(left=0.15)\n", + "plt.savefig('gaussian.pdf', format='pdf')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Exponential distribution\n", + "Another important distribution in science is the exponential distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\alpha\\exp{-(\\alpha x)}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Expectation values\n", + "Let $h(x)$ be an arbitrary continuous function on the domain of the stochastic\n", + "variable $X$ whose PDF is $p(x)$. We define the *expectation value*\n", + "of $h$ with respect to $p$ as follows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\langle h \\rangle_X \\equiv \\int\\! h(x)p(x)\\,dx\n", + "\\label{eq:expectation_value_of_h_wrt_p} \\tag{2}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Whenever the PDF is known implicitly, like in this case, we will drop\n", + "the index $X$ for clarity. \n", + "A particularly useful class of special expectation values are the\n", + "*moments*. The $n$-th moment of the PDF $p$ is defined as\n", + "follows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x^n \\rangle \\equiv \\int\\! x^n p(x)\\,dx\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Stochastic variables and the main concepts, mean values\n", + "The zero-th moment $\\langle 1\\rangle$ is just the normalization condition of\n", + "$p$. The first moment, $\\langle x\\rangle$, is called the *mean* of $p$\n", + "and often denoted by the letter $\\mu$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x\\rangle = \\mu \\equiv \\int x p(x)dx,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "for a continuous distribution and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x\\rangle = \\mu \\equiv \\sum_{i=1}^N x_i p(x_i),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "for a discrete distribution. \n", + "Qualitatively it represents the centroid or the average value of the\n", + "PDF and is therefore simply called the expectation value of $p(x)$.\n", + "\n", + "\n", + "\n", + "## Stochastic variables and the main concepts, central moments, the variance\n", + "\n", + "A special version of the moments is the set of *central moments*, the n-th central moment defined as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle (x-\\langle x\\rangle )^n\\rangle \\equiv \\int\\! (x-\\langle x\\rangle)^n p(x)\\,dx\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The zero-th and first central moments are both trivial, equal $1$ and\n", + "$0$, respectively. But the second central moment, known as the\n", + "*variance* of $p$, is of particular interest. For the stochastic\n", + "variable $X$, the variance is denoted as $\\sigma^2_X$ or $\\mathrm{Var}(X)$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align*}\n", + "\\sigma^2_X &=\\mathrm{Var}(X) = \\langle (x-\\langle x\\rangle)^2\\rangle =\n", + "\\int (x-\\langle x\\rangle)^2 p(x)dx\\\\\n", + "& = \\int\\left(x^2 - 2 x \\langle x\\rangle^{2} +\\langle x\\rangle^2\\right)p(x)dx\\\\\n", + "& = \\langle x^2\\rangle - 2 \\langle x\\rangle\\langle x\\rangle + \\langle x\\rangle^2\\\\\n", + "& = \\langle x^2 \\rangle - \\langle x\\rangle^2\n", + "\\end{align*}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The square root of the variance, $\\sigma =\\sqrt{\\langle (x-\\langle x\\rangle)^2\\rangle}$ is called the \n", + "**standard deviation** of $p$. It is the RMS (root-mean-square)\n", + "value of the deviation of the PDF from its mean value, interpreted\n", + "qualitatively as the \"spread\" of $p$ around its mean.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Probability Distribution Functions\n", + "\n", + "The following table collects properties of probability distribution functions.\n", + "In our notation we reserve the label $p(x)$ for the probability of a certain event,\n", + "while $P(x)$ is the cumulative probability. \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
Discrete PDF Continuous PDF
Domain $\\left\\{x_1, x_2, x_3, \\dots, x_N\\right\\}$ $[a,b]$
Probability $p(x_i)$ $p(x)dx$
Cumulative $P_i=\\sum_{l=1}^ip(x_l)$ $P(x)=\\int_a^xp(t)dt$
Positivity $0 \\le p(x_i) \\le 1$ $p(x) \\ge 0$
Positivity $0 \\le P_i \\le 1$ $0 \\le P(x) \\le 1$
Monotonic $P_i \\ge P_j$ if $x_i \\ge x_j$ $P(x_i) \\ge P(x_j)$ if $x_i \\ge x_j$
Normalization $P_N=1$ $P(b)=1$
\n", + "\n", + "\n", + "\n", + "\n", + "## Probability Distribution Functions\n", + "With a PDF we can compute expectation values of selected quantities such as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x^k\\rangle=\\sum_{i=1}^{N}x_i^kp(x_i),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "if we have a discrete PDF or" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x^k\\rangle=\\int_a^b x^kp(x)dx,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "in the case of a continuous PDF. We have already defined the mean value $\\mu$\n", + "and the variance $\\sigma^2$.\n", + "\n", + "\n", + "\n", + "## The three famous Probability Distribution Functions\n", + "\n", + "There are at least three PDFs which one may encounter. These are the\n", + "\n", + "**Uniform distribution**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x)=\\frac{1}{b-a}\\Theta(x-a)\\Theta(b-x),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "yielding probabilities different from zero in the interval $[a,b]$.\n", + "\n", + "**The exponential distribution**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x)=\\alpha \\exp{(-\\alpha x)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "yielding probabilities different from zero in the interval $[0,\\infty)$ and with mean value" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu = \\int_0^{\\infty}xp(x)dx=\\int_0^{\\infty}x\\alpha \\exp{(-\\alpha x)}dx=\\frac{1}{\\alpha},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with variance" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2=\\int_0^{\\infty}x^2p(x)dx-\\mu^2 = \\frac{1}{\\alpha^2}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Probability Distribution Functions, the normal distribution\n", + "Finally, we have the so-called univariate normal distribution, or just the **normal distribution**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x)=\\frac{1}{b\\sqrt{2\\pi}}\\exp{\\left(-\\frac{(x-a)^2}{2b^2}\\right)}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with probabilities different from zero in the interval $(-\\infty,\\infty)$.\n", + "The integral $\\int_{-\\infty}^{\\infty}\\exp{\\left(-(x^2\\right)}dx$ appears in many calculations, its value\n", + "is $\\sqrt{\\pi}$, a result we will need when we compute the mean value and the variance.\n", + "The mean value is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu = \\int_0^{\\infty}xp(x)dx=\\frac{1}{b\\sqrt{2\\pi}}\\int_{-\\infty}^{\\infty}x \\exp{\\left(-\\frac{(x-a)^2}{2b^2}\\right)}dx,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which becomes with a suitable change of variables" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu =\\frac{1}{b\\sqrt{2\\pi}}\\int_{-\\infty}^{\\infty}b\\sqrt{2}(a+b\\sqrt{2}y)\\exp{-y^2}dy=a.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Probability Distribution Functions, the normal distribution\n", + "Similarly, the variance becomes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2 = \\frac{1}{b\\sqrt{2\\pi}}\\int_{-\\infty}^{\\infty}(x-\\mu)^2 \\exp{\\left(-\\frac{(x-a)^2}{2b^2}\\right)}dx,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and inserting the mean value and performing a variable change we obtain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2 = \\frac{1}{b\\sqrt{2\\pi}}\\int_{-\\infty}^{\\infty}b\\sqrt{2}(b\\sqrt{2}y)^2\\exp{\\left(-y^2\\right)}dy=\n", + "\\frac{2b^2}{\\sqrt{\\pi}}\\int_{-\\infty}^{\\infty}y^2\\exp{\\left(-y^2\\right)}dy,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and performing a final integration by parts we obtain the well-known result $\\sigma^2=b^2$.\n", + "It is useful to introduce the standard normal distribution as well, defined by $\\mu=a=0$, viz. a distribution\n", + "centered around zero and with a variance $\\sigma^2=1$, leading to" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + " p(x)=\\frac{1}{\\sqrt{2\\pi}}\\exp{\\left(-\\frac{x^2}{2}\\right)}.\n", + "\\label{_auto1} \\tag{3}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Probability Distribution Functions, the cumulative distribution\n", + "\n", + "The exponential and uniform distributions have simple cumulative functions,\n", + "whereas the normal distribution does not, being proportional to the so-called\n", + "error function $erf(x)$, given by" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "P(x) = \\frac{1}{\\sqrt{2\\pi}}\\int_{-\\infty}^x\\exp{\\left(-\\frac{t^2}{2}\\right)}dt,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which is difficult to evaluate in a quick way.\n", + "\n", + "\n", + "\n", + "\n", + "## Probability Distribution Functions, other important distribution\n", + "\n", + "Some other PDFs which one encounters often in the natural sciences are the binomial distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\left(\\begin{array}{c} n \\\\ x\\end{array}\\right)y^x(1-y)^{n-x} \\hspace{0.5cm}x=0,1,\\dots,n,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $y$ is the probability for a specific event, such as the tossing of a coin or moving left or right\n", + "in case of a random walker. Note that $x$ is a discrete stochastic variable. \n", + "\n", + "The sequence of binomial trials is characterized by the following definitions\n", + "\n", + " * Every experiment is thought to consist of $N$ independent trials.\n", + "\n", + " * In every independent trial one registers if a specific situation happens or not, such as the jump to the left or right of a random walker.\n", + "\n", + " * The probability for every outcome in a single trial has the same value, for example the outcome of tossing (either heads or tails) a coin is always $1/2$.\n", + "\n", + "\n", + "\n", + "## Probability Distribution Functions, the binomial distribution\n", + "\n", + "In order to compute the mean and variance we need to recall Newton's binomial\n", + "formula" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "(a+b)^m=\\sum_{n=0}^m \\left(\\begin{array}{c} m \\\\ n\\end{array}\\right)a^nb^{m-n},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which can be used to show that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sum_{x=0}^n\\left(\\begin{array}{c} n \\\\ x\\end{array}\\right)y^x(1-y)^{n-x} = (y+1-y)^n = 1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "the PDF is normalized to one. \n", + "The mean value is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu = \\sum_{x=0}^n x\\left(\\begin{array}{c} n \\\\ x\\end{array}\\right)y^x(1-y)^{n-x} =\n", + "\\sum_{x=0}^n x\\frac{n!}{x!(n-x)!}y^x(1-y)^{n-x},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "resulting in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu = \n", + "\\sum_{x=0}^n x\\frac{(n-1)!}{(x-1)!(n-1-(x-1))!}y^{x-1}(1-y)^{n-1-(x-1)},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which we rewrite as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu=ny\\sum_{\\nu=0}^n\\left(\\begin{array}{c} n-1 \\\\ \\nu\\end{array}\\right)y^{\\nu}(1-y)^{n-1-\\nu} =ny(y+1-y)^{n-1}=ny.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The variance is slightly trickier to get. It reads $\\sigma^2=ny(1-y)$. \n", + "\n", + "## Probability Distribution Functions, Poisson's distribution\n", + "\n", + "Another important distribution with discrete stochastic variables $x$ is \n", + "the Poisson model, which resembles the exponential distribution and reads" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(x) = \\frac{\\lambda^x}{x!} e^{-\\lambda} \\hspace{0.5cm}x=0,1,\\dots,;\\lambda > 0.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case both the mean value and the variance are easier to calculate," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu = \\sum_{x=0}^{\\infty} x \\frac{\\lambda^x}{x!} e^{-\\lambda} = \\lambda e^{-\\lambda}\\sum_{x=1}^{\\infty}\n", + "\\frac{\\lambda^{x-1}}{(x-1)!}=\\lambda,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and the variance is $\\sigma^2=\\lambda$.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Probability Distribution Functions, Poisson's distribution\n", + "An example of applications of the Poisson distribution could be the counting\n", + "of the number of $\\alpha$-particles emitted from a radioactive source in a given time interval.\n", + "In the limit of $n\\rightarrow \\infty$ and for small probabilities $y$, the binomial distribution\n", + "approaches the Poisson distribution. Setting $\\lambda = ny$, with $y$ the probability for an event in\n", + "the binomial distribution we can show that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\lim_{n\\rightarrow \\infty}\\left(\\begin{array}{c} n \\\\ x\\end{array}\\right)y^x(1-y)^{n-x} e^{-\\lambda}=\\sum_{x=1}^{\\infty}\\frac{\\lambda^x}{x!} e^{-\\lambda}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Meet the covariance!\n", + "An important quantity in a statistical analysis is the so-called covariance. \n", + "\n", + "Consider the set $\\{X_i\\}$ of $n$\n", + "stochastic variables (not necessarily uncorrelated) with the\n", + "multivariate PDF $P(x_1,\\dots,x_n)$. The *covariance* of two\n", + "of the stochastic variables, $X_i$ and $X_j$, is defined as follows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\mathrm{Cov}(X_i,\\,X_j) = \\langle (x_i-\\langle x_i\\rangle)(x_j-\\langle x_j\\rangle)\\rangle \n", + "\\label{_auto2} \\tag{4}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation} \n", + "=\\int\\cdots\\int (x_i-\\langle x_i\\rangle)(x_j-\\langle x_j\\rangle)P(x_1,\\dots,x_n)\\,dx_1\\dots dx_n,\n", + "\\label{eq:def_covariance} \\tag{5}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x_i\\rangle =\n", + "\\int\\cdots\\int x_i P(x_1,\\dots,x_n)\\,dx_1\\dots dx_n.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Meet the covariance in matrix disguise\n", + "If we consider the above covariance as a matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "C_{ij} =\\mathrm{Cov}(X_i,\\,X_j),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "then the diagonal elements are just the familiar\n", + "variances, $C_{ii} = \\mathrm{Cov}(X_i,\\,X_i) = \\mathrm{Var}(X_i)$. It turns out that\n", + "all the off-diagonal elements are zero if the stochastic variables are\n", + "uncorrelated.\n", + "\n", + "\n", + "\n", + "## Covariance" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.3311287509199639\n", + "[[14.31659816 13.99268172 19.21873233 14.42933266 18.41189432 16.6094975\n", + " 11.00141571 4.4034975 14.34205163 7.63509233]\n", + " [13.99268172 13.67609397 18.78390394 14.10286557 17.99532083 16.23370367\n", + " 10.75250606 4.30386732 14.0175593 7.46234655]\n", + " [19.21873233 18.78390394 25.79940208 19.37006815 24.71629535 22.29674138\n", + " 14.76840108 5.91129532 19.2529013 10.24941779]\n", + " [14.42933266 14.10286557 19.37006815 14.54295487 18.55687678 16.74028719\n", + " 11.08804516 4.43817236 14.45498656 7.69521404]\n", + " [18.41189432 17.99532083 24.71629535 18.55687678 23.67865945 21.36068284\n", + " 14.14839622 5.66312819 18.44462881 9.81912823]\n", + " [16.6094975 16.23370367 22.29674138 16.74028719 21.36068284 19.26962007\n", + " 12.76336631 5.1087472 16.63902752 8.85790364]\n", + " [11.00141571 10.75250606 14.76840108 11.08804516 14.14839622 12.76336631\n", + " 8.45390408 3.38381409 11.02097512 5.86709383]\n", + " [ 4.4034975 4.30386732 5.91129532 4.43817236 5.66312819 5.1087472\n", + " 3.38381409 1.35442722 4.41132648 2.34840076]\n", + " [14.34205163 14.0175593 19.2529013 14.45498656 18.44462881 16.63902752\n", + " 11.02097512 4.41132648 14.36755036 7.64866676]\n", + " [ 7.63509233 7.46234655 10.24941779 7.69521404 9.81912823 8.85790364\n", + " 5.86709383 2.34840076 7.64866676 4.07182169]]\n" + ] + } + ], + "source": [ + "# Importing various packages\n", + "from math import exp, sqrt\n", + "from random import random, seed\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def covariance(x, y, n):\n", + " sum = 0.0\n", + " mean_x = np.mean(x)\n", + " mean_y = np.mean(y)\n", + " for i in range(0, n):\n", + " sum += (x[(i)]-mean_x)*(y[i]-mean_y)\n", + " return sum/n\n", + "\n", + "n = 10\n", + "\n", + "x=np.random.normal(size=n)\n", + "y = 4+3*x+np.random.normal(size=n)\n", + "covxy = covariance(x,y,n)\n", + "print(covxy)\n", + "z = np.vstack((x, y))\n", + "c = np.cov(z.T)\n", + "\n", + "print(c)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Meet the covariance, uncorrelated events\n", + "\n", + "Consider the stochastic variables $X_i$ and $X_j$, ($i\\neq j$). We have" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align*}\n", + "Cov(X_i,\\,X_j) &= \\langle (x_i-\\langle x_i\\rangle)(x_j-\\langle x_j\\rangle)\\rangle\\\\\n", + "&=\\langle x_i x_j - x_i\\langle x_j\\rangle - \\langle x_i\\rangle x_j + \\langle x_i\\rangle\\langle x_j\\rangle\\rangle\\\\\n", + "&=\\langle x_i x_j\\rangle - \\langle x_i\\langle x_j\\rangle\\rangle - \\langle \\langle x_i\\rangle x_j \\rangle +\n", + "\\langle \\langle x_i\\rangle\\langle x_j\\rangle\\rangle \\\\\n", + "&=\\langle x_i x_j\\rangle - \\langle x_i\\rangle\\langle x_j\\rangle - \\langle x_i\\rangle\\langle x_j\\rangle +\n", + "\\langle x_i\\rangle\\langle x_j\\rangle \\\\\n", + "&=\\langle x_i x_j\\rangle - \\langle x_i\\rangle\\langle x_j\\rangle\n", + "\\end{align*}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If $X_i$ and $X_j$ are independent (assuming $i \\neq j$), we have that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x_i x_j\\rangle = \\langle x_i\\rangle\\langle x_j\\rangle,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "leading to" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "Cov(X_i, X_j) = 0 \\hspace{0.1cm} (i\\neq j).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Numerical experiments and the covariance\n", + "\n", + "Now that we have constructed an idealized mathematical framework, let\n", + "us try to apply it to empirical observations. Examples of relevant\n", + "physical phenomena may be spontaneous decays of nuclei, or a purely\n", + "mathematical set of numbers produced by some deterministic\n", + "mechanism. It is the latter we will deal with, using so-called pseudo-random\n", + "number generators. In general our observations will contain only a limited set of\n", + "observables. We remind the reader that\n", + "a *stochastic process* is a process that produces sequentially a\n", + "chain of values" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\{x_1, x_2,\\dots\\,x_k,\\dots\\}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Numerical experiments and the covariance\n", + "We will call these\n", + "values our *measurements* and the entire set as our measured\n", + "*sample*. The action of measuring all the elements of a sample\n", + "we will call a stochastic *experiment* (since, operationally,\n", + "they are often associated with results of empirical observation of\n", + "some physical or mathematical phenomena; precisely an experiment). We\n", + "assume that these values are distributed according to some \n", + "PDF $p_X^{\\phantom X}(x)$, where $X$ is just the formal symbol for the\n", + "stochastic variable whose PDF is $p_X^{\\phantom X}(x)$. Instead of\n", + "trying to determine the full distribution $p$ we are often only\n", + "interested in finding the few lowest moments, like the mean\n", + "$\\mu_X^{\\phantom X}$ and the variance $\\sigma_X^{\\phantom X}$.\n", + "\n", + "\n", + "\n", + "\n", + "## Numerical experiments and the covariance, actual situations\n", + "In practical situations however, a sample is always of finite size. Let that\n", + "size be $n$. The expectation value of a sample $\\alpha$, the **sample mean**, is then defined as follows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\langle x_{\\alpha} \\rangle \\equiv \\frac{1}{n}\\sum_{k=1}^n x_{\\alpha,k}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The *sample variance* is:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mathrm{Var}(x) \\equiv \\frac{1}{n}\\sum_{k=1}^n (x_{\\alpha,k} - \\langle x_{\\alpha} \\rangle)^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with its square root being the *standard deviation of the sample*.\n", + "\n", + "\n", + "\n", + "\n", + "## Numerical experiments and the covariance, our observables\n", + "You can think of the above observables as a set of quantities which define\n", + "a given experiment. This experiment is then repeated several times, say $m$ times.\n", + "The total average is then" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\langle X_m \\rangle= \\frac{1}{m}\\sum_{\\alpha=1}^mx_{\\alpha}=\\frac{1}{mn}\\sum_{\\alpha, k} x_{\\alpha,k},\n", + "\\label{eq:exptmean} \\tag{6}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where the last sums end at $m$ and $n$.\n", + "The total variance is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2_m= \\frac{1}{mn^2}\\sum_{\\alpha=1}^m(\\langle x_{\\alpha} \\rangle-\\langle X_m \\rangle)^2,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which we rewrite as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\sigma^2_m=\\frac{1}{m}\\sum_{\\alpha=1}^m\\sum_{kl=1}^n (x_{\\alpha,k}-\\langle X_m \\rangle)(x_{\\alpha,l}-\\langle X_m \\rangle).\n", + "\\label{eq:exptvariance} \\tag{7}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Numerical experiments and the covariance, the sample variance\n", + "\n", + "We define also the sample variance $\\sigma^2$ of all $mn$ individual experiments as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\sigma^2=\\frac{1}{mn}\\sum_{\\alpha=1}^m\\sum_{k=1}^n (x_{\\alpha,k}-\\langle X_m \\rangle)^2.\n", + "\\label{eq:sampleexptvariance} \\tag{8}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These quantities, being known experimental values or the results from our calculations, \n", + "may differ, in some cases\n", + "significantly, from the similarly named\n", + "exact values for the mean value $\\mu_X$, the variance $\\mathrm{Var}(X)$\n", + "and the covariance $\\mathrm{Cov}(X,Y)$.\n", + "\n", + "\n", + "\n", + "## Numerical experiments and the covariance, central limit theorem\n", + "\n", + "The central limit theorem states that the PDF $\\tilde{p}(z)$ of\n", + "the average of $m$ random values corresponding to a PDF $p(x)$ \n", + "is a normal distribution whose mean is the \n", + "mean value of the PDF $p(x)$ and whose variance is the variance\n", + "of the PDF $p(x)$ divided by $m$, the number of values used to compute $z$.\n", + "\n", + "The central limit theorem leads then to the well-known expression for the\n", + "standard deviation, given by" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma_m=\n", + "\\frac{\\sigma}{\\sqrt{m}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In many cases the above estimate for the standard deviation, in particular if correlations are strong, may be too simplistic. We need therefore a more precise defintion of the error and the variance in our results.\n", + "\n", + "\n", + "\n", + "## Definition of Correlation Functions and Standard Deviation\n", + "Our estimate of the true average $\\mu_{X}$ is the sample mean $\\langle X_m \\rangle$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu_{X}^{\\phantom X} \\approx X_m=\\frac{1}{mn}\\sum_{\\alpha=1}^m\\sum_{k=1}^n x_{\\alpha,k}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can then use Eq. ([7](#eq:exptvariance))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2_m=\\frac{1}{mn^2}\\sum_{\\alpha=1}^m\\sum_{kl=1}^n (x_{\\alpha,k}-\\langle X_m \\rangle)(x_{\\alpha,l}-\\langle X_m \\rangle),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and rewrite it as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma^2_m=\\frac{\\sigma^2}{n}+\\frac{2}{mn^2}\\sum_{\\alpha=1}^m\\sum_{k\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\kappa_d = \\frac{f_d}{\\sigma^2}\n", + "\\label{eq:autocorrelformal} \\tag{9}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which gives us a useful measure of the correlation pair correlation\n", + "starting always at $1$ for $d=0$.\n", + "\n", + "\n", + "\n", + "## Definition of Correlation Functions and Standard Deviation, sample variance\n", + "\n", + "The sample variance of the $mn$ experiments can now be\n", + "written in terms of the autocorrelation function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\sigma_m^2=\\frac{\\sigma^2}{n}+\\frac{2}{n}\\cdot\\sigma^2\\sum_{d=1}^{n-1}\n", + "\\frac{f_d}{\\sigma^2}=\\left(1+2\\sum_{d=1}^{n-1}\\kappa_d\\right)\\frac{1}{n}\\sigma^2=\\frac{\\tau}{n}\\cdot\\sigma^2\n", + "\\label{eq:error_estimate_corr_time} \\tag{10}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and we see that $\\sigma_m$ can be expressed in terms of the\n", + "uncorrelated sample variance times a correction factor $\\tau$ which\n", + "accounts for the correlation between measurements. We call this\n", + "correction factor the *autocorrelation time*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\tau = 1+2\\sum_{d=1}^{n-1}\\kappa_d\n", + "\\label{eq:autocorrelation_time} \\tag{11}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "For a correlation free experiment, $\\tau$\n", + "equals 1.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Definition of Correlation Functions and Standard Deviation\n", + "From the point of view of\n", + "Eq. ([10](#eq:error_estimate_corr_time)) we can interpret a sequential\n", + "correlation as an effective reduction of the number of measurements by\n", + "a factor $\\tau$. The effective number of measurements becomes" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "n_\\mathrm{eff} = \\frac{n}{\\tau}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To neglect the autocorrelation time $\\tau$ will always cause our\n", + "simple uncorrelated estimate of $\\sigma_m^2\\approx \\sigma^2/n$ to\n", + "be less than the true sample error. The estimate of the error will be\n", + "too \"good\". On the other hand, the calculation of the full\n", + "autocorrelation time poses an efficiency problem if the set of\n", + "measurements is very large. The solution to this problem is given by \n", + "more practically oriented methods like the blocking technique.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Code to compute the Covariance matrix and the Covariance" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.2642716177294466\n", + "4.940580327634602\n", + "1.1829871582902483\n", + "1.015877605436128 9.696167748586095 17.72713727297909\n", + "2.9616975181296192 3.4095763130714993 9.375087003275128\n", + "[[ 1.01587761 2.96169752 3.40957631]\n", + " [ 2.96169752 9.69616775 9.375087 ]\n", + " [ 3.40957631 9.375087 17.72713727]]\n", + "[24.75536438 0.07216528 3.61165297]\n" + ] + } + ], + "source": [ + "# Importing various packages\n", + "from math import exp, sqrt\n", + "from random import random, seed\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Sample covariance, note the factor 1/(n-1)\n", + "def covariance(x, y, n):\n", + " sum = 0.0\n", + " mean_x = np.mean(x)\n", + " mean_y = np.mean(y)\n", + " for i in range(0, n):\n", + " sum += (x[(i)]-mean_x)*(y[i]-mean_y)\n", + " return sum/(n-1.)\n", + "\n", + "n = 100\n", + "x = np.random.normal(size=n)\n", + "print(np.mean(x))\n", + "y = 4+3*x+np.random.normal(size=n)\n", + "print(np.mean(y))\n", + "z = x**3+np.random.normal(size=n)\n", + "print(np.mean(z))\n", + "covxx = covariance(x,x,n)\n", + "covyy = covariance(y,y,n)\n", + "covzz = covariance(z,z,n)\n", + "covxy = covariance(x,y,n)\n", + "covxz = covariance(x,z,n)\n", + "covyz = covariance(y,z,n)\n", + "print(covxx,covyy, covzz)\n", + "print(covxy,covxz, covyz)\n", + "w = np.vstack((x, y, z))\n", + "#print(w)\n", + "c = np.cov(w)\n", + "print(c)\n", + "#eigen = np.zeros(n)\n", + "Eigvals, Eigvecs = np.linalg.eig(c)\n", + "print(Eigvals)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random Numbers\n", + "\n", + "Uniform deviates are just random numbers that lie within a specified range\n", + "(typically 0 to 1), with any one number in the range just as likely as any other. They\n", + "are, in other words, what you probably think random numbers are. However,\n", + "we want to distinguish uniform deviates from other sorts of random numbers, for\n", + "example numbers drawn from a normal (Gaussian) distribution of specified mean\n", + "and standard deviation. These other sorts of deviates are almost always generated by\n", + "performing appropriate operations on one or more uniform deviates, as we will see\n", + "in subsequent sections. So, a reliable source of random uniform deviates, the subject\n", + "of this section, is an essential building block for any sort of stochastic modeling\n", + "or Monte Carlo computer work.\n", + "\n", + "\n", + "\n", + "\n", + "# Random Numbers, better name: pseudo random numbers\n", + "\n", + "A disclaimer is however appropriate. It should be fairly obvious that \n", + "something as deterministic as a computer cannot generate purely random numbers.\n", + "\n", + "Numbers generated by any of the standard algorithms are in reality pseudo random\n", + "numbers, hopefully abiding to the following criteria:\n", + "\n", + " * they produce a uniform distribution in the interval [0,1].\n", + "\n", + " * correlations between random numbers are negligible\n", + "\n", + " * the period before the same sequence of random numbers is repeated is as large as possible and finally\n", + "\n", + " * the algorithm should be fast.\n", + "\n", + "\n", + "\n", + "\n", + "# Random number generator RNG\n", + " The most common random number generators are based on so-called\n", + "Linear congruential relations of the type" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_i=(aN_{i-1}+c) \\mathrm{MOD} (M),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which yield a number in the interval [0,1] through" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "x_i=N_i/M\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The number \n", + "$M$ is called the period and it should be as large as possible \n", + " and \n", + "$N_0$ is the starting value, or seed. The function $\\mathrm{MOD}$ means the remainder,\n", + "that is if we were to evaluate $(13)\\mathrm{MOD}(9)$, the outcome is the remainder\n", + "of the division $13/9$, namely $4$.\n", + "\n", + "\n", + "\n", + "# Random number generator RNG and periodic outputs\n", + "\n", + "The problem with such generators is that their outputs are periodic;\n", + "they \n", + "will start to repeat themselves with a period that is at most $M$. If however\n", + "the parameters $a$ and $c$ are badly chosen, the period may be even shorter.\n", + "\n", + "Consider the following example" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_i=(6N_{i-1}+7) \\mathrm{MOD} (5),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with a seed $N_0=2$. This generator produces the sequence\n", + "$4,1,3,0,2,4,1,3,0,2,...\\dots$, i.e., a sequence with period $5$.\n", + "However, increasing $M$ may not guarantee a larger period as the following\n", + "example shows" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_i=(27N_{i-1}+11) \\mathrm{MOD} (54),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which still, with $N_0=2$, results in $11,38,11,38,11,38,\\dots$, a period of\n", + "just $2$.\n", + "\n", + "\n", + "\n", + "# Random number generator RNG and its period\n", + "Typical periods for the random generators provided in the program library \n", + "are of the order of $\\sim 10^9$ or larger. Other random number generators which have\n", + "become increasingly popular are so-called shift-register generators.\n", + "In these generators each successive number depends on many preceding\n", + "values (rather than the last values as in the linear congruential\n", + "generator).\n", + "For example, you could make a shift register generator whose $l$th \n", + "number is the sum of the $l-i$th and $l-j$th values with modulo $M$," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_l=(aN_{l-i}+cN_{l-j})\\mathrm{MOD}(M).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random number generator RNG, other examples\n", + "Such a generator again produces a sequence of pseudorandom numbers\n", + "but this time with a period much larger than $M$.\n", + "It is also possible to construct more elaborate algorithms by including\n", + "more than two past terms in the sum of each iteration.\n", + "One example is the generator of [Marsaglia and Zaman](http://dl.acm.org/citation.cfm?id=187154)\n", + "which consists of two congruential relations" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + " N_l=(N_{l-3}-N_{l-1})\\mathrm{MOD}(2^{31}-69),\n", + "\\label{eq:mz1} \\tag{12}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "followed by" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + " N_l=(69069N_{l-1}+1013904243)\\mathrm{MOD}(2^{32}),\n", + "\\label{eq:mz2} \\tag{13}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which according to the authors has a period larger than $2^{94}$.\n", + "\n", + "\n", + "\n", + "# Random number generator RNG, other examples\n", + "Instead of using modular addition, we could use the bitwise\n", + "exclusive-OR ($\\oplus$) operation so that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_l=(N_{l-i})\\oplus (N_{l-j})\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where the bitwise action of $\\oplus$ means that if $N_{l-i}=N_{l-j}$ the result is\n", + "$0$ whereas if $N_{l-i}\\ne N_{l-j}$ the result is\n", + "$1$. As an example, consider the case where $N_{l-i}=6$ and $N_{l-j}=11$. The first\n", + "one has a bit representation (using 4 bits only) which reads $0110$ whereas the \n", + "second number is $1011$. Employing the $\\oplus$ operator yields \n", + "$1101$, or $2^3+2^2+2^0=13$.\n", + "\n", + "In Fortran90, the bitwise $\\oplus$ operation is coded through the intrinsic\n", + "function $\\mathrm{IEOR}(m,n)$ where $m$ and $n$ are the input numbers, while in $C$\n", + "it is given by $m\\wedge n$.\n", + "\n", + "\n", + "\n", + "\n", + "# Random number generator RNG, RAN0\n", + "\n", + "We show here how the linear congruential algorithm can be implemented, namely" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "N_i=(aN_{i-1}) \\mathrm{MOD} (M).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "However, since $a$ and $N_{i-1}$ are integers and their multiplication \n", + "could become greater than the standard 32 bit integer, there is a trick via \n", + "Schrage's algorithm which approximates the multiplication\n", + "of large integers through the factorization" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "M=aq+r,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where we have defined" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "q=[M/a],\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "r = M\\hspace{0.1cm}\\mathrm{MOD} \\hspace{0.1cm}a.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where the brackets denote integer division. In the code below the numbers \n", + "$q$ and $r$ are chosen so that $r < q$.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "# Random number generator RNG, RAN0\n", + "\n", + "To see how this works we note first that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "(aN_{i-1}) \\mathrm{MOD} (M)= (aN_{i-1}-[N_{i-1}/q]M)\\mathrm{MOD} (M),\n", + "\\label{eq:rntrick1} \\tag{14}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "since we can add or subtract any integer multiple of $M$ from $aN_{i-1}$.\n", + "The last term $[N_{i-1}/q]M\\mathrm{MOD}(M)$ is zero since the integer division \n", + "$[N_{i-1}/q]$ just yields a constant which is multiplied with $M$.\n", + "\n", + "\n", + "\n", + "\n", + "# Random number generator RNG, RAN0\n", + "We can now rewrite Eq. ([14](#eq:rntrick1)) as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "(aN_{i-1}) \\mathrm{MOD} (M)= (aN_{i-1}-[N_{i-1}/q](aq+r))\\mathrm{MOD} (M),\n", + "\\label{eq:rntrick2} \\tag{15}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "which results\n", + "in" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "(aN_{i-1}) \\mathrm{MOD} (M)= \\left(a(N_{i-1}-[N_{i-1}/q]q)-[N_{i-1}/q]r)\\right)\\mathrm{MOD} (M),\n", + "\\label{eq:rntrick3} \\tag{16}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "yielding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "(aN_{i-1}) \\mathrm{MOD} (M)= \\left(a(N_{i-1}\\mathrm{MOD} (q)) -[N_{i-1}/q]r)\\right)\\mathrm{MOD} (M).\n", + "\\label{eq:rntrick4} \\tag{17}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Random number generator RNG, RAN0\n", + "The term $[N_{i-1}/q]r$ is always smaller or equal $N_{i-1}(r/q)$ and with $r < q$ we obtain always a \n", + "number smaller than $N_{i-1}$, which is smaller than $M$. \n", + "And since the number $N_{i-1}\\mathrm{MOD} (q)$ is between zero and $q-1$ then\n", + "$a(N_{i-1}\\mathrm{MOD} (q))< aq$. Combined with our definition of $q=[M/a]$ ensures that \n", + "this term is also smaller than $M$ meaning that both terms fit into a\n", + "32-bit signed integer. None of these two terms can be negative, but their difference could.\n", + "The algorithm below adds $M$ if their difference is negative.\n", + "Note that the program uses the bitwise $\\oplus$ operator to generate\n", + "the starting point for each generation of a random number. The period\n", + "of $ran0$ is $\\sim 2.1\\times 10^{9}$. A special feature of this\n", + "algorithm is that is should never be called with the initial seed \n", + "set to $0$.\n", + "\n", + "\n", + "\n", + "\n", + "# Random number generator RNG, RAN0 code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " /*\n", + " ** The function\n", + " ** ran0()\n", + " ** is an \"Minimal\" random number generator of Park and Miller\n", + " ** Set or reset the input value\n", + " ** idum to any integer value (except the unlikely value MASK)\n", + " ** to initialize the sequence; idum must not be altered between\n", + " ** calls for sucessive deviates in a sequence.\n", + " ** The function returns a uniform deviate between 0.0 and 1.0.\n", + " */\n", + " double ran0(long &idum)\n", + " {\n", + " const int a = 16807, m = 2147483647, q = 127773;\n", + " const int r = 2836, MASK = 123459876;\n", + " const double am = 1./m;\n", + " long k;\n", + " double ans;\n", + " idum ^= MASK;\n", + " k = (*idum)/q;\n", + " idum = a*(idum - k*q) - r*k;\n", + " // add m if negative difference\n", + " if(idum < 0) idum += m;\n", + " ans=am*(idum);\n", + " idum ^= MASK;\n", + " return ans;\n", + " } // End: function ran0() \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Properties of Selected Random Number Generators\n", + "\n", + "As mentioned previously, the underlying PDF for the generation of\n", + "random numbers is the uniform distribution, meaning that the \n", + "probability for finding a number $x$ in the interval [0,1] is $p(x)=1$.\n", + "\n", + "A random number generator should produce numbers which are uniformly distributed\n", + "in this interval. The table shows the distribution of $N=10000$ random\n", + "numbers generated by the functions in the program library.\n", + "We note in this table that the number of points in the various\n", + "intervals $0.0-0.1$, $0.1-0.2$ etc are fairly close to $1000$, with some minor\n", + "deviations. \n", + "\n", + "Two additional measures are the standard deviation $\\sigma$ and the mean\n", + "$\\mu=\\langle x\\rangle$.\n", + "\n", + "\n", + "\n", + "## Properties of Selected Random Number Generators\n", + "For the uniform distribution, the mean value $\\mu$ is then" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mu=\\langle x\\rangle=\\frac{1}{2}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "while the standard deviation is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma=\\sqrt{\\langle x^2\\rangle-\\mu^2}=\\frac{1}{\\sqrt{12}}=0.2886.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Properties of Selected Random Number Generators\n", + "The various random number generators produce results which agree rather well with\n", + "these limiting values. \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
$x$-bin ran0 ran1 ran2 ran3
0.0-0.1 1013 991 938 1047
0.1-0.2 1002 1009 1040 1030
0.2-0.3 989 999 1030 993
0.3-0.4 939 960 1023 937
0.4-0.5 1038 1001 1002 992
0.5-0.6 1037 1047 1009 1009
0.6-0.7 1005 989 1003 989
0.7-0.8 986 962 985 954
0.8-0.9 1000 1027 1009 1023
0.9-1.0 991 1015 961 1026
$\\mu$ 0.4997 0.5018 0.4992 0.4990
$\\sigma$ 0.2882 0.2892 0.2861 0.2915
\n", + "\n", + "\n", + "\n", + "## Simple demonstration of RNGs using python\n", + "The following simple Python code plots the distribution of the produced random numbers using the linear congruential RNG employed by Python. The trend displayed in the previous table is seen rather clearly." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter3_178_0.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#!/usr/bin/env python\n", + "import numpy as np\n", + "import matplotlib.mlab as mlab\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "\n", + "# initialize the rng with a seed\n", + "random.seed() \n", + "counts = 10000\n", + "values = np.zeros(counts) \n", + "for i in range (1, counts, 1):\n", + " values[i] = random.random()\n", + "\n", + "# the histogram of the data\n", + "n, bins, patches = plt.hist(values, 10, facecolor='green')\n", + "\n", + "plt.xlabel('$x$')\n", + "plt.ylabel('Number of counts')\n", + "plt.title(r'Test of uniform distribution')\n", + "plt.axis([0, 1, 0, 1100])\n", + "plt.grid(True)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Properties of Selected Random Number Generators\n", + "Since our random numbers, which are typically generated via a linear congruential algorithm,\n", + "are never fully independent, we can then define \n", + "an important test which measures the degree of correlation, namely the so-called \n", + "auto-correlation function defined previously, see again Eq. ([9](#eq:autocorrelformal)).\n", + "We rewrite it here as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "C_k=\\frac{f_d}\n", + " {\\sigma^2},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "with $C_0=1$. Recall that \n", + "$\\sigma^2=\\langle x_i^2\\rangle-\\langle x_i\\rangle^2$ and that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "f_d = \\frac{1}{nm}\\sum_{\\alpha=1}^m\\sum_{k=1}^{n-d}(x_{\\alpha,k}-\\langle X_m \\rangle)(x_{\\alpha,k+d}-\\langle X_m \\rangle),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The non-vanishing of $C_k$ for $k\\ne 0$ means that the random\n", + "numbers are not independent. The independence of the random numbers is crucial \n", + "in the evaluation of other expectation values. If they are not independent, our\n", + "assumption for approximating $\\sigma_N$ is no longer valid.\n", + "\n", + "\n", + "\n", + "\n", + "## Autocorrelation function\n", + "This program computes the autocorrelation function as discussed in the equation on the previous slide for random numbers generated with the normal distribution $N(0,1)$." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.04229032140441689 0.9337417995235178\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYcAAAESCAYAAAAWtRmOAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZgdVZkG8PdAFsgEaDoEIpvQCESQrdMBcVgUm10GRhoCiDoO0EHBAVQSg6IoWxZFFiWQyCADCJ0EGCGAkIT1YU13EhAkONAgawik00kg6XSH/uaPrw51qk7VXbrv1t3v73nqubf2c+veqq/OUucaEQEREZFro3IngIiIKg+DAxEReRgciIjIw+BAREQeBgciIvIwOBARkYfBgQrKGDO73GnoDWNMrTHm9R6u26P1UtLQWKpjWah0U//C4EAFY4xpANBgjKnKc73GIiUpbyKyCEBrts+QlGYR2aVAyZgEYBaAswq0vc8UOd3UjzA4UCFVA5gDIOeLfXARHl+0FBVBUpqNMTVBcCyEKhFpF5H2Am0PQEnSTf0IgwMVRHDhaQNwI/wLUL0x5nVjTFVwMZpnjKkPZtcAqDLGNBhjap11GoP16u3Fy5lWa5dNWc7ur94YMzvYrzctWHZCMK3RGFOT8Lns/qY485PS3AZgirPdbOmqN8bcGM+hBNurDrZdk+nYZdtewvEqWrqp/xlU7gRQv3GyiMwAAGNMtTGmNiiigYjMN8a0Bu9bjTHzAFQF44uMMe0iMsduyF6URGR+MG4vzCNEZEbwfmKwnfhyrc7+2kTkpGCz3jRbxOKsPxuAXd4aLyInGWMAYGIw7qVZRNrtZ0xJv5uu1uA41AKoAzDf2c4iY0wbgPlBzqE1w7FL3V6Qhl3c4yUi44uVbup/mHOgQtkluCNtgF40elNUdDiAVmd8BYCvA1gI6EVSRManLFcXvK+2wckRnzYGQLtzZ70wIS0Tg89UlzAvn/S767c57wtxB560vbHwj1c2pU43VTAGB+q14MLaJCJzgrvSswCcnGGVeAVoW7AdW9TUAi0CcZdfAL3g2X1WpSzXnEfSbc5jURA0Zrgzg/RMDD6TvZu2+4un2dXbdGWSa+XxQvjHCyhfuqmPYXCgXgkCw0xELyo1wbwbnYvpjQAanbLu8c4Fa7ZxWtEExVO2nqABQIuITAWwIsid1AOoSVlukS1fd7eZNM0Wr7jbdMrmT0Z4Ia2F3ilXO59zdtL2ERavpaYLwMnBZz8cwOGxegK7jFupn3jsMm0v+GyR41XMdFP/Y9hlNxERxRUt5+Dc5STNawjuTiYUa/9ERNRzRQkOQTY28elOGzSCFhHtmYIIERGVR1GCQ3Dhb02ZPQ6AfbinFUBSxRgREZVROSqk7cNS1ogypIGIiDJgayUiIvKU4wnpdmiTQEBzESviCwRN7RoBoGrw4DG77L136VJHRNQPtLS0fCQiI3u6fsmCQ9D2uh1AE8KnLmuQ8Ah+0N56BgDUjRolzc18DoeIKB/GmH/2Zv1itVZqAFBnor09LgA+6xLZtmhqT+jigIiIyqziH4KrGzVKmpctK3cyiIj6FGNMi4jk0ydYBCukiYjIw+BAREQeBgciIvIwOBARkYfBgYiIPAwORETkYXAgIiJP5QeHCn8Og4ioP6r84EBERCXH4EBERB4GByIi8jA4EBGRh8GBiIg8DA5ERORhcCAiIg+DAxEReRgciIjIw+BARESeyg8O7D6DiKjkKj84EBFRyTE4EBGRh8GBiIg8DA5ERORhcCAiIg+DAxEReRgciIjIw+BAREQeBgciIvIwOBARkYfBgYiIPJUfHNi3EhFRyQ0qxkaNMQ0A2gHUisjUDPNrRGRGMdJAREQ9V/CcgzGmFgBEZD6Adjsem98azG+NzyciovIrRrHSOGiuAABaAdQnLDMleK0RkUVFSAMREfVCMYJDFYA2Z3yEOzMIBq3GmJWx5YiIqEKUvELaGFMFzVlcCWCmMaYmYZlGY0yzMaa5o6Oj1EkkIhrwihEc2gFUB++rAKyIzW8EcGVQUX0WgIb4BkRkhojUiUjdJptsUoQkEhFRJsUIDk0AbG6gBsB84LMcQ4SIzEFYP0FERBWi4E1ZRWSRMabOGFMPoN2pcF4AYIyITDXGTDDGtAKoZlNWIqLKU5TnHJIu+CIyxnnvPftARESVo/KfkCYiopKr/ODA7jOIiEqu8oMDERGVHIMDERF5GByIiMjD4EBERB4GByIi8jA4EBGRh8GBiIg8DA5ERORhcCAiIg+DAxEReRgciIjIU/nBgX0rERGVXOUHByIiKjkGByIi8jA4EBGRh8GBiIg8DA5ERORhcCAiIg+DAxEReRgciIjIw+BAREQeBgciIvJUfnBg9xlERCVX+cGBiIhKjsGBiIg8DA5ERORhcCAiIg+DAxEReRgciIjIM6gYGzXGNABoB1ArIlMT5tcCqAEAEZlTjDQQEVHPFTznEFz4ISLzAbTb8ZhJQVCoSZlPRERlVIxipXHQXAMAtAKod2cGuYqFACAiU0VkURHSQEREvVCM4FAFoM0ZHxGbPxbACGNMrTFmQhH2T0REvVSuCukVNscQ5CQijDGNxphmY0zz+vXrS586IqIBrhjBoR1AdfC+CsCK2PwV0OImu+zY+AZEZIaI1IlI3dAhQ4qQRCIiyqQYwaEJQUuk4HU+ABhjqoJpc5z5VQjqH4iIqHIUPDg4xUX1ANqdCucFwfxWaCumBgAj2JSViKjyGKnwLrHrttxSmleuLHcyiIj6FGNMi4jU9XR9PiFNREQeBgciIvIwOBARkYfBgYiIPAwORETkqfzgUOGtqYiI+qPKDw5ERFRyDA5ERORhcCAiIg+DAxEReRgciIjIw+BAREQeBgciIvIwOBARkYfBgYiIPAwORETkYXAgIiJP5QcH9q1ERFRylR8ciIio5BgciIjIw+BARESenIODMWbz2PhOhU4MERFVhkF5LFsNYLUxZjIAAbACwG+KkioiIiqrnIKDMWZnEXkjGG0SkcXGmJ2LmC4iIiqjnIKDiLxhjNkXmntottOKmTAiIiqfXHMOmwPYBUA7gHHGmNcBbAlgpYg8UsT0ERFRGeRa57BARMba98VKDBERVYZcWyutLGoqiIioouQaHE4yxnyzqClJw+4ziIhKLtcK6VUA7i5yWoiIqEIU5QlpY0yDMabeGDMhy3IZ5xMRUXkUPDgYY2oBQETmA2i34wnL1QM4vND7JyKi3itGzmEctMkrALQCqC/CPoiIqIiKERyqALQ54yPiCxhjaoOcBRERVaBy9cpanWmmMabRGNNsjGnu7OoqVZqIiChQjODQjvDiXwXtoO8zueQaRGSGiNSJSN2QwYOLkEQiIsokn15Zc9UEoC54XwNgPgAYY6pEpB1AjTGmBhpAqoNgsagI6SAioh4qeM7BXuiD1kjtzoV/QTB/jojMCaZVFXr/RETUe0Yq/Ankus03l+bVq8udDCKiPsUY0yIiddmXTFb5fxNa4cGLiKg/qvzgQEREJcfgQEREHgYHIiLyMDgQEZGHwYGIiDwMDkRE5GFwICIiD4MDERF5GByIiMjD4EBERB4GByIi8lR+cGDfSkREJVf5wYGIiEqOwYGIiDwMDkRE5GFwICIiD4MDERF5GByIiMjD4EBERB4GByIi8jA4EBGRh8GBiIg8lR8c2H0GEVHJVX5wICKikmNwICIiD4MDERF5GByIiMjD4EBERB4GByIi8jA4EBGRZ1AxNmqMaQDQDqBWRKYmzG8M3u4iIhOLkQYiIuq5guccjDG1ACAi8wG023Fnfj2A+SIyA0BNME5ERBWkGMVK46C5BgBoBRC/+Nc401qDcSIiqiDFKFaqAtDmjI9wZwY5BqsWQFMR0kBERL1QtgrpoLhpkYgsSpjXaIxpNsY0b+jqKkPqiIgGtmIEh3YA1cH7KgArUparT6uMFpEZIlInInWDBhWlzpyIiDIoRnBoQliPUANgPgAYY6rsAsaYRtuKiRXSRESVp+DBwRYTBRf9dqfYaIEzfYox5nVjzMpC75+IiHqvKGU2sUpnO21M8DofwJbF2C8RERUGn5AmIiIPgwMREXkYHIiIyMPgQEREHgYHIiLyMDgQEZGn8oODSLlTQEQ04FR+cCAiopJjcCAiIg+DAxEReRgciIjIw+BAREQeBgciIvIwOBARkYfBgYiIPAwORETkqfzg0NEB/Pzn5U4FEdGAYqTCu6eoM0aaAXajQUSUB2NMi4jU9XT9ys85EBFRyTE4xF12GWBMuVNBRFRWDA6nnQZMmxaOX3yxvn76aXnSQ7lbuhRYt67cqSDql1jnYHMJdvt2fN06YJNNerbNlSv1dcste5c2SvfJJ8Dw4UBDAzB7drlTQ1RxWOdQLJ2dPV+3ulqHUps5E/jBD4CXXgIefDD78suXA4cdBixbBtx7L/Dyyz3ftwjw5z/3/E7+/vuBbbbJfX273COP9Gx/hXLddcBee5U3DURFMHCDw6efRi9Ezz8PdHeHOYeuLuD664FBg3R6T334oV60c7V+PfCXvwBr1uS/r8ZGYPp0vVgdc0z25W+4AXj0UeAPfwCOPx740pfy36f16KPAt74F/PSnyfOnTNFj29GRPP8nP9Fg9cYbue2vUnK8//VfGoyLmZ5Vq4AFC4q3faIE/SM4rF2rrxMmAA88kNs6Z54JDBsWjh9wAHDVVeF4Vxdw3nkaRHqTizjlFL1ov/aajs+dC9xzT3SZtjbg2mv1AnPXXcAJJwCbbw788pc93y+gRS+Z2AvaihXR6UuWAO++m7zO//4vsHChP729XV/ffjt5vd/9Tl8/+khfjzkGOOeccP7GG+trUl3P4sUavF0bNuhrIRoPjBql33/8eKcdgySHHZbbcosXA5demvt2AeDgg4H6+vDY5erVV/X315vfLw1cIlLRwxi9hEkqO//66/V1xIj0ZZPWc4fTTxfZaCN9/9ZbIhtvrO9Xrxa5+GJ939mZ+7ZFRGpq9P0rr/jzrG9+U6c984zIH/4QLrPZZuEyXV35f6aXXxbp7k5f/pe/1OWOPlpfN9kk3M7gwdk/m+uuu8J5LS0i770X3ff22+u8F18U2bDB387ee+v44sW57fOf/9RpW20Vnd7ZKdLRoe8nTRI5/vj0zx/fvruPe+7R8Ycfzn/dTIYMCX9fuXj99XD7ua4jIrJkiX6HgMgjj2T+HSR54QWRkSNFLrxQvy/qcwA0Sy+uvX0r57Bypd6F2ztie7cKADfeqK8rVgCvv555O088kTzdmPBO1L3b6uwEpk7V98uX6+u99wJjxwKrV2du2dTVpa82d5Pkww/1dfXq6HLGaNHXzjsDgweHuY9339WWOmm22EJf580DNtoIeOaZ6Pzly4EXXwzHbf3E8OF+unuirg7YdlstlrMGDdLXpUuTcxeZcg5JktI3eTIwZIg2JDAGuPJKLaLLJK046Nln9bW5OXl+R4fmLPNlf1c77pjb8vY7B7TIMVf77hseo8MOA37xi9zXBYBf/1p/l9Om+Tnddeui31NzM3D77Zm3d8cd2njAEtGiyN4U2aZZsgT4+98Lv90Bpm8Fh0su0fL7P/1Jx195JZy3bFn4PtsP9dBD0+e5dQ5WZ2f4I95+e3393vf0pNhiC+CQQ9K3Z7fz8cfJ8zs6gCef1PdHHhm96BujFbVvvqnjixeHafjiF8PlVq4EJk4Mx20rK3vRv+KK6D733hvYZx//wmgv4En+5V+iJ/dTT2mxheVuy75/4gm9iPzgB+FnOPnkMBi6Ngp+iu5F54UXgGOPTU6PPa4ffRSmY9Kk5GVzCd7W4sV63O1FeckSYNascH5HhxY/HXKIFgUm7UcEeOih5P26xWAffKDj8+enp8+tF8t0g2H94x/A3/7mT4+nNRu3SNIW4VnDhgH/8R/h+NixwOmnZ07faadpkak9j+bN06D1m9/kl65c7LcfsOeehd/uANO3goP9wQ4erK/u3cEHH4TvN920Z61v3JxDPDjEL6RbbRW+f/rp9G3aO8W0Cua2tuj4kiXh+402ip5w99wTvRu3zj8/zNkA4fH55z/1de5c4Lnnwvn2WCUFh7Q76bVr9eS2DjoIGD1aT/Zrr00uDx8+XFsTTZ8enb7//v6yNufg5th++MNoHZJNm0j0+xk9OjnN1vjxmptMqiuJ343bG4v77tPXWbOAcePC+ddco3fVSduyaf/rX4GjjgLOPjt68Y//jlpa9NV9zgbQwH/kkfp+1apwetrFt6sr3Pfuu2vwj0trCJDk/vv1M1hDhoTv7Q3CbbcBd98d7ffs8MOzb9vWb9nc42OPhfM6O/1AVEgdHZnrX5YtAy6/XL8jWw/Y3h79bb/wArDHHtFSi/6qN2VSpRg+q3NYulTkG9/Q9//zP1qo9uMfJ9cdxMuB339f5NFHRX71K5FVq7KvA4jccUdY/5C0zS9+Mb282Z222Wb6/s47/Xkffijy1FPR7ey2W/h+xAiRm27K/NlERMaOjU7feefMy9vxiy6Kzt9pJ5H16/3lu7vT0/DAA+nzzjtP5C9/SZ8/ZEi4jy9/WafNnx9OO+mk6PIrV4r87W/6eW1djpvWXL7XuDvvjM6/4IIwbe50W2Z//vnp2165Upe5+ebk/TY0RKc9+KC+jh6t86+/XmT27Og606ZF19lxR5GPP9bf/rRpIu3t+r2NHJn9GEydqr85a+1a/fxPPCHS1qbbOvhgf7377vN/O5mOb0eHbu+MM3Sb7npjx+r+7PiXvhTd9pe/rO8//VTkqqtE1qzRNOdaZ+L+Vl0bNogMHarXkDRHHKHrtbSInHZa8u/m+ON1/K67cktPGaGXdQ4ZyhEqjHt3uOmm+ppUPJGkthZ4/319n2sLoFNPzTzfvQP5whf0taEhepcFZC5WGjnSn+Yu19kJNDWlp6G7W3MX8eOQqWz6//4vfB+/Ex00KPkOM1NxQaa6j+HD/Tt8d/nOTq2bePPNMOewfr3meG66See5rrjCv8vurVNOiY6nNaVdt06LU1avTt9WZ6fWe7zwgj9vxAg/l3jZZfq6dGlY/BbfZzw9b70F3Hwz8Nvf6viiRWGRXTYTJuh3ac+BiRP1OY1sbI4919ZS7sOju+4aLfJcuDCa03ZzRkBY1/PQQ8CPfqS//+eeA269VYuusol/Pw88oOveeaeOz52rOeATT4wut3gx8PDD+r6jw2/BJwKce25YB+XmcD7+GLjlFj0X339fc1PudUAkLJFYvlzPwf33D3P4lao3kSVtANAAoB7AhJ7Md4cxSXcnu+2mofHEE3O7k8nljjKf4ec/19Y33/ueyLe/rXduSfu55JLwDnTatOhdzfPPJ297881zT8eaNbrfUaOi0zfbTGT48OzH4qyzouOjR4t88EE4PmuWrvPOOz07TpdfrjkwO37lldnXuftukbq65GNhW3X15nvu7BT55BP39ip5iOcc3n9fl4/f/RdqSMrRNjaKHHWUP33cuPD9178evn/77ez7ueQS/R1+9JHIv/977ulzczSZhq6u6PiUKSK//32Y095zT83B2/nV1Xpc//zncFp3t8iPfhTdzhlnhN/Z/feLfOUrmgvYZ5+wJWB3t8ixx4bruLng+DBmjMjChSI33KC5VXfevfeKHHdcdNonn0THb71Vz5Uf/zi6T0Bkyy21tZiItpjbfHPNCYmEx/ySS0TWrROZPFnTmWT6dP183d26TC4tFh3oZc6hxyumbhCoBdAQvG8EUJvP/PiQGBwAkZdeSj5x4sOZZ+Z+AuQ7nH22yPjxIltvbb8Nf7BFUwccEDbXzDQYk/v+7QVryy39efvt50+LpzHpQjdpkr/OSy/17PhceqnIjBnh+MyZ2de54w6RL3wheZ7N9icNacc/bXjwQb/Ixh2GDo2Ov/qq7iMeiIs5jBmjxS6ZlnGL3q67LrftXnNN/mk5/PDclnv33ej4Pvv4y9iiOzvcfXd0fN06f52vflXkpz/VC2U8cO+wg8hf/6oX3EIc96220mPvTmtry3877vne3Czy0EPR+TvtpK8bb6zXiWOPFZkwQeTznxcZNixc7tZbw/ff/rbI8uXRYrYNG7SY69e/Dos2KzQ4TAFQH7z3cgfZ5uccHB59VOSggwrzY+jpcN55+kMfPjz/i1MhhunTdb/uD8kORx7pT8tUd5A2bNgg8pOfJM9L2oc7XHyxyG9+E47bZwd6OsTredzhtdeKe6wvvFBk3rzSf8eA/s7TcpTuHa59FqcYw157ZZ5vbzTidWjbbecvu+uumbf13nvp80aPLs930JOA6g5JN2u9GQ48UEsw4kFs1Ci9Jk2bJr0NDsVorVQFwC1cHZHnfBhjGo0xzcaYlEbm0Hb68SeAR42KjrtPQBfDkCHaxPOTT/SrKbXvf1/LSZPqBDbbzJ+2UQ++7jVrkpsbnnOO7j+Trq5ombJbx3LmmfmnJe3payCs9ymWadP8cuhSOeQQYM6c5HluHU6+T17n4733Ms8/+GB9/dd/jU53nzK//HJ9zdZFSqbnlDLVcRVTT55pcdlm6IXyzDNaZ2VbvFnLlmlvBBde2OtdVGRTVhGZISJ1kqlHwfPO8w+429nd/vvn1i68N4YO1QAkkrmpoK1sLQbb5NGy3VSsXauVZLvv3rvtp/Use9ZZfjv++AV6/froie42/+1Jj7Vpz4qUSrzyulRGjky/0XEbGMQNHZrffjJV9ruB0Va2vvVWOK2qKvv2v/Mdfc3WXNUGGtebb2oT0t5wf3+FMmRI9CY1Ke2ur3xFn8vJ9L0lsec1EK3IdnsknjJFuwB68sn8u1pJUIzg0A7AXqWrAMRvt7LN77mamvB9MZ68jBs6NLxDdx+Uivvc5wqzv2xPLY8bFwbINWv0ZNx338zrnHtudHzWrNwugsOGAUcfHZ1m2/dbv/ud9tRquU9g59r7ak9yO5mcf35yK7F8uH1CZWOf3M+H+7AhoOm1LfTy8eyzegHP9JAmoM+9TJzo7zfN9Ol6QbQPhALR7zbNNtvktv0kn/+8lhbYVkc9YZ9dyWTrrYFf/SrzMnZ+U5PeAA0bBvz+99oa7Ikn9LmWujq/JAPQ82233fRGqqlJn2n55jejyzQ1RW/qDjhAf7fnn6/j69droGxo0GHNGr05nTABuOACfQZphFcgk78i1DnUAmgM3k9AUOEMoCrT/LzrHOLDt74lsmxZ8coc993XnzZlSrSyKG1Iq2DNdxCJ9r3kDs3N2pph7lwd32svXf700zNv020VMmiQlvcmtU76xS+i4++8o9tftCictnKlVqgl7ef667W9uh1PqgzfbTe/MjJeiZfPkFTefeml2odUfHpdXbTPp0yD204/2xCvbM1lmDw57NcL0MrWV15JXz6pZRogsmKFfkeHHpq+7vjx8plcK11vvTVc57bbtMFCS4u/3He/6/9+e/I97rdfuD93P5kq63feWZ/rsH2unXhi2B+XHeLjgJ4v9vvdc099TuPaa6Pfp0i0xVsml1wicvXV2njk9tvDVktx226rLZ/scyiffirS1KSVz2vXhsvZiuju7vRtiT3UFVYhrWlCI7SyudGZ1pJpftqQc3CwB60nP75chj339KddfbU2e8u27tlnFyYNItpELmmevVjb+dtso+P/+Z+Ztzlxoj60tGFD9Me2xx7R5Zqbo+Ntbe6vUIeODq0kS0v76tXheG2tv4x9kMu2wNl++/Qmv2nDuefqifj66yInn+zPtxeL+HD//bn/fkSyV07feadWDGYKbnvsIfLYY/70a66JtrxpaUm+kG27rb4OHqwPbZ1wglbMn3NOtLO8OXMyfxbLDcyZKmDtQ6hxr74aLvPww3phc49HvudnV5fecLgX4u5ubSAxaFB0f3awD53a80FE920fxnv4Yf98OvBAvelauFCPQUeHtrJ66KFwn/bB0nnzkj97BarI4FDIIRIcFi7M/iNPmnfDDenruU0WjzhC72jjT+YCyXcp06eLPP54+ra32krk6aeT21vvvnv6etXV/rRVq/TzpbXksE3YVqyIHpOkwOQ+35D2pGf8mMWbs9qeT0W0uernPqcn0Zo1yU0qRaLH4bnntKVNPJciok9BA/o08AsvJH9etxdYO1x3XTRdp56afBzdZwMAkVNOyfz7cYdzzw2Xtem023CX+/hjXca9GMWH447Ti/hll0Wnz5ypx9Je6N56SwM3IHLMMeFy//iHvh58cPJ3GJfpvBEJW7NNmuS366+qCt//6U/Z9+FuL9v5eeihYTD6t3/T16uuyu0z3XefLj9smKb5a1/T8Y8+Sl/nscd0yId9cjzf9cqo/weHrbfW5nFNTZmbYlo33qhdX7vzbr89fT33oS8r6YQeP17kiiui0266SS/+ads+6CD3m4oOacHhqKNEnnwy/fPFHzKyg32Qxh6jU0/V8R/+0F/WTXOa+B17vKlotu4M7HLbbKMXMTdt8f3GP6e96O20k8jf/67vd91VL1q2G+qFC/1mjXPnRre7bJnI97+vd9RAePe6dm00yNomwW5a3nwz8+9MJPrgWne3PjQYPz5uEIt3vXHCCeG23ObINp1XX63j69bp+Lp1+hDfDTeI/PGPOm3pUs1V5MJu/7//W4NMpi4gOjujaXVvjm6+OX29OXP0zt4aPz6a09hmG/ksAG26qQbR9es14ADaPDwfq1bpXX5Li463tWmXLoVmg84jjxR+20XS/4PDmDHxT5z9pI0vl61/orPO0hPRcrP69iJ+5pk6z33gbN48vauLb9OeSLfdlp5u9+51yhR9avSCC9KXdy1Zog/KpM1vbw//dyKpLNi9W8/Evfi9844GlTPOEFmwIPN6bvqPOCJ5etK0eHCoqQmDku1/yLYXb272c3O2jD3O3tXffnvyft3gYB9adOdv2KAXMfvQoeVeQK1Zs/Tu17JB9vrrw76UbL9QTU3hcu73lMvx7YlcvnMrfiPm5pBvuqnnaXjnneS7785OfU7D5pArjX0IMNv/e1QQBodcgsP99+vr3nvrnfRzz2U+UeyDPFtsEQaW735X57nZa5t1jRcpJGXz331XK7Zsltx24AUknyz2Djktnd3deteYywlvK6ntkNS5XppsF940t9yi6/3sZ8nbS5pmp7/xRngcu7u1XmTpUnHKYJcAAAaDSURBVJ23//4675lnwm42AP1jozTvvKPfUbwS8YwzdN0bbginvf225krS0hqXyzKvvaafw3ZCeOyxyX+gYztdfPHFzNvrqXyCg4h2f2JvkETC4zVzZnHSV8lsDvzZZ8udkpz1Njj0nY730nzta/qnIZkcfbR2DXzIIdH+9NOae9lnFvbdN2zTbZuRnnmmPhT28svh+jvsoK9VVdqVb1Iz2m231S6oLbcpZ9JfXb7/ftgxXRJjcn+G4dhjtatv27HbkCHAdtuF7c5z4XamlovvfEeb6e23X/ZlN944+szETjtpx3vf+IZ+zsmTw3nbbaevgwaFafrjHzO3gd9uO/2zmbhTTtH9HHRQOG377cMmmosWFeahq1120Vf7GxoyJPnZF9tpnPu8TiEtWZLfsz8XXaT/fWJ/Z/Z3Wopm4pVm2jTtkvyAA8qdktLpTWQpxeDlHDQkhkNnZ1j5l7ZMktbW9Eorm/0fNy7s0rmhQed9+ql/B2qbedrWIwcemLxdl9v1x+OPpy+X7W7PllVn092tnZvZ8uxcuUUrhZD0eWwF+XXXZV+/rU2LaLq7tQuVLbaItpwqtXzuxh95RJedNCl5vu1qJK0jtnKzdWG2DokqGgZcsZJI9gu/u8zTT+dwGGM2bNDyzxUrwnbqmf6LePJkXcb+T7Ltkz4Tt936E09k/xxpli/XZpvFkm9RRE+219XVdy8499yTXzHQ3Lm5/Q85US/1Njj0zWKluXO1yCEXBx6Y//Y33lj/7ctdP97Xvss+HSqir7lku0eP1n5onnoq//S5Ro7s/RO/mTz9dNjPfbEMGqT9/vdFJ5yQ3/Jpf3tKVGH6ZnDI5QR79FHg8cd7v69Ro8KLfpotttBX2+fJ1lvntm1bn5Gpi4ilS9P/YrQUDjywZwGWiPq0vhkcrEx9tXz1qzqUgg0Ou+8O/Oxnfl8paW65Rf+TONPFt7cd51Waiy7KrZM2Iiqrvhscnn8e2HHHcqdC2VYzXV35dUW9ww7J3WH3Z7bbZiKqaH03OIwdW+4UhGxxUrZeU4mI+oiK/D+HPsc+7+B2GU5E1If13ZxDJdlrL+Dee4HDDit3SoiICoLBoVCOO67cKSAiKhgj2ZpplpkxZg2AV8udjgqxFYDe//9f/8BjEeKxCPFYhHYXkYQ/k89NX8g5vCqZ/kt6ADHGNPNYKB6LEI9FiMciZIxp7s36rJAmIiIPgwMREXn6QnCYUe4EVBAeixCPRYjHIsRjEerVsaj4CmkiIiq9vpBzoAHOGDPBed9gjKnPNo2ovzPG1MbGczo3cj1fKjY4DNQT3hjTGAxTnGkD9oJojKkHcHjwvhYARGQ+gHZjTG3StLIltoiCz9pgjGlwpg3I34XzGRsTpg2IYxGcF7Od8ZzOjXzOl4oMDgPlhI8LvvD5IjIDQE3wwx6wF8QE4wC0B+9bAdSnTOuPJonIHOjvotcnfl8VfKbW4DO2DtRjYT+/MynXcyPn86UigwMGzgkfV4Pws7YG4wP2gmiMqQ1OAqsKQJszPiJlWr8S5BYWAoCITBWRRRjAvwsANlddw2PxmVzPjZzPl0oNDv3+hE8iIjOCXAMA1AJoxgC9IAaqy52ACjEWwIjgjtgWkQzI30UQDFqNMSsRftYBeSyKrVKDw4AWZIEXBSfCgJSQawD0TtAGjCoAK1Km9Ucr7O/BrXcYaIwxVdDv/EoAM40x7ApZ5Xpu5Hy+VGr3GQPlhE9TLyITg/dpx6K/H5+a4MSvBlAdBMwmALZrhBoANngkTetPViAsX26H5iQG6u+iEcCVItJujGkF0ICBeyxc+ZwbOZ0vlZpzaIImHOi/J3wiY0yjiEwN3tcj+Vj0++MjInOCClhAT244d871ANpFZFHStLIkuLjmIPy+q6D1DwPyd+EKfh/tGIDHIsg91tlcZK7nRj7nS8U+BBc0U2uFVjoNiKceneZpbdC7npNEZH7SsRiIx2cgC77vNgBjba5yoP4ugnqXVgDVmT73QDgWxVSxwYGIiMqnUouViIiojBgciIjIw+BAREQeBgciIvIwOBD1kDHmxnKngahY2FqJiIg8zDkQEZGHwYEoT8aYmuA/N/pVN9BELgYHovxVBa/sNZb6LdY5EPWAMWa2iJxU7nQQFQtzDkR5CrqNbmOxEvVnDA5EPdOefRGivovFSkRE5GHOgYiIPAwORETkYXAgIiIPgwMREXkYHIiIyMPgQEREHgYHIiLy/D8IzMPluWOWOQAAAABJRU5ErkJggg==\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter3_184_1.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "# Importing various packages\n", + "from math import exp, sqrt\n", + "from random import random, seed\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "def autocovariance(x, n, k, mean_x):\n", + " sum = 0.0\n", + " for i in range(0, n-k):\n", + " sum += (x[(i+k)]-mean_x)*(x[i]-mean_x)\n", + " return sum/n\n", + "\n", + "n = 1000\n", + "x=np.random.normal(size=n)\n", + "autocor = np.zeros(n)\n", + "figaxis = np.zeros(n)\n", + "mean_x=np.mean(x)\n", + "var_x = np.var(x)\n", + "print(mean_x, var_x)\n", + "for i in range (0, n):\n", + " figaxis[i] = i\n", + " autocor[i]=(autocovariance(x, n, i, mean_x))/var_x \n", + "\n", + "plt.plot(figaxis, autocor, \"r-\")\n", + "plt.axis([0,n,-0.1, 1.0])\n", + "plt.xlabel(r'$i$')\n", + "plt.ylabel(r'$\\gamma_i$')\n", + "plt.title(r'Autocorrelation function')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As can be seen from the plot, the first point gives back the variance and a value of one. \n", + "For the remaining values we notice that there are still non-zero values for the auto-correlation function.\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Correlation function and which random number generators should I use\n", + "The program here computes the correlation function for one of the standard functions included with the c++ compiler." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " // This function computes the autocorrelation function for \n", + " // the standard c++ random number generator\n", + " \n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " using namespace std;\n", + " // output file as global variable\n", + " ofstream ofile; \n", + " \n", + " // Main function begins here \n", + " int main(int argc, char* argv[])\n", + " {\n", + " int n;\n", + " char *outfilename;\n", + " \n", + " cin >> n;\n", + " double MCint = 0.; double MCintsqr2=0.;\n", + " double invers_period = 1./RAND_MAX; // initialise the random number generator\n", + " srand(time(NULL)); // This produces the so-called seed in MC jargon\n", + " // Compute the variance and the mean value of the uniform distribution\n", + " // Compute also the specific values x for each cycle in order to be able to\n", + " // the covariance and the correlation function \n", + " // Read in output file, abort if there are too few command-line arguments\n", + " if( argc <= 2 ){\n", + " cout << \"Bad Usage: \" << argv[0] << \n", + " \t \" read also output file and number of cycles on same line\" << endl;\n", + " exit(1);\n", + " }\n", + " else{\n", + " outfilename=argv[1];\n", + " }\n", + " ofile.open(outfilename); \n", + " // Get the number of Monte-Carlo samples\n", + " n = atoi(argv[2]);\n", + " double *X; \n", + " X = new double[n];\n", + " for (int i = 0; i < n; i++){\n", + " double x = double(rand())*invers_period; \n", + " X[i] = x;\n", + " MCint += x;\n", + " MCintsqr2 += x*x;\n", + " }\n", + " double Mean = MCint/((double) n );\n", + " MCintsqr2 = MCintsqr2/((double) n );\n", + " double STDev = sqrt(MCintsqr2-Mean*Mean);\n", + " double Variance = MCintsqr2-Mean*Mean;\n", + " // Write mean value and standard deviation \n", + " cout << \" Standard deviation= \" << STDev << \" Integral = \" << Mean << endl;\n", + " \n", + " // Now we compute the autocorrelation function\n", + " double *autocor; autocor = new double[n];\n", + " for (int j = 0; j < n; j++){\n", + " double sum = 0.0;\n", + " for (int k = 0; k < (n-j); k++){\n", + " \t sum += (X[k]-Mean)*(X[k+j]-Mean); \n", + " }\n", + " autocor[j] = sum/Variance/((double) n );\n", + " ofile << setiosflags(ios::showpoint | ios::uppercase);\n", + " ofile << setw(15) << setprecision(8) << j;\n", + " ofile << setw(15) << setprecision(8) << autocor[j] << endl;\n", + " }\n", + " ofile.close(); // close output file\n", + " return 0;\n", + " } // end of main program \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Which RNG should I use?\n", + "* C++ has a class called **random**. The [random class](http://www.cplusplus.com/reference/random/) contains a large selection of RNGs and is highly recommended. Some of these RNGs have very large periods making it thereby very safe to use these RNGs in case one is performing large calculations. In particular, the [Mersenne twister random number engine](http://www.cplusplus.com/reference/random/mersenne_twister_engine/) has a period of $2^{19937}$. \n", + "\n", + "* Add RNGs in Python\n", + "\n", + "\n", + "\n", + "\n", + "## How to use the Mersenne generator\n", + "The following part of a c++ code (from project 4) sets up the uniform distribution for $x\\in [0,1]$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " /*\n", + " \n", + " // You need this \n", + " #include \n", + " \n", + " // Initialize the seed and call the Mersienne algo\n", + " std::random_device rd;\n", + " std::mt19937_64 gen(rd());\n", + " // Set up the uniform distribution for x \\in [[0, 1]\n", + " std::uniform_real_distribution RandomNumberGenerator(0.0,1.0);\n", + " \n", + " // Now use the RNG\n", + " int ix = (int) (RandomNumberGenerator(gen)*NSpins);\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Why blocking?\n", + "**Statistical analysis.**\n", + "\n", + " * Monte Carlo simulations can be treated as *computer experiments*\n", + "\n", + " * The results can be analysed with the same statistical tools as we would use analysing experimental data.\n", + "\n", + " * As in all experiments, we are looking for expectation values and an estimate of how accurate they are, i.e., possible sources for errors.\n", + "\n", + "A very good article which explains blocking is H. Flyvbjerg and H. G. Petersen, *Error estimates on averages of correlated data*, [Journal of Chemical Physics 91, 461-466 (1989)](http://scitation.aip.org/content/aip/journal/jcp/91/1/10.1063/1.457480).\n", + "\n", + " \n", + "\n", + "\n", + "\n", + "## Why blocking?\n", + "**Statistical analysis.**\n", + "\n", + " * As in other experiments, Monte Carlo experiments have two classes of errors:\n", + "\n", + " * Statistical errors\n", + "\n", + " * Systematical errors\n", + "\n", + "\n", + " * Statistical errors can be estimated using standard tools from statistics\n", + "\n", + " * Systematical errors are method specific and must be treated differently from case to case. (In VMC a common source is the step length or time step in importance sampling)\n", + "\n", + " \n", + "\n", + "\n", + "## Code to demonstrate the calculation of the autocorrelation function\n", + "The following code computes the autocorrelation function, the covariance and the standard deviation\n", + "for standard RNG. \n", + "The [following file](https://github.com/CompPhysics/ComputationalPhysics2/tree/gh-pages/doc/Programs/LecturePrograms/programs/Blocking/autocorrelation.cpp) gives the code." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " // This function computes the autocorrelation function for \n", + " // the Mersenne random number generator with a uniform distribution\n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " #include \n", + " using namespace std;\n", + " using namespace arma;\n", + " // output file\n", + " ofstream ofile;\n", + " \n", + " // Main function begins here \n", + " int main(int argc, char* argv[])\n", + " {\n", + " int MonteCarloCycles;\n", + " string filename;\n", + " if (argc > 1) {\n", + " filename=argv[1];\n", + " MonteCarloCycles = atoi(argv[2]);\n", + " string fileout = filename;\n", + " string argument = to_string(MonteCarloCycles);\n", + " fileout.append(argument);\n", + " ofile.open(fileout);\n", + " }\n", + " \n", + " // Compute the variance and the mean value of the uniform distribution\n", + " // Compute also the specific values x for each cycle in order to be able to\n", + " // compute the covariance and the correlation function \n", + " \n", + " vec X = zeros(MonteCarloCycles);\n", + " double MCint = 0.; double MCintsqr2=0.;\n", + " std::random_device rd;\n", + " std::mt19937_64 gen(rd());\n", + " // Set up the uniform distribution for x \\in [[0, 1]\n", + " std::uniform_real_distribution RandomNumberGenerator(0.0,1.0);\n", + " for (int i = 0; i < MonteCarloCycles; i++){\n", + " double x = RandomNumberGenerator(gen); \n", + " X(i) = x;\n", + " MCint += x;\n", + " MCintsqr2 += x*x;\n", + " }\n", + " double Mean = MCint/((double) MonteCarloCycles );\n", + " MCintsqr2 = MCintsqr2/((double) MonteCarloCycles );\n", + " double STDev = sqrt(MCintsqr2-Mean*Mean);\n", + " double Variance = MCintsqr2-Mean*Mean;\n", + " // Write mean value and variance\n", + " cout << \" Sample variance= \" << Variance << \" Mean value = \" << Mean << endl;\n", + " // Now we compute the autocorrelation function\n", + " vec autocorrelation = zeros(MonteCarloCycles);\n", + " for (int j = 0; j < MonteCarloCycles; j++){\n", + " double sum = 0.0;\n", + " for (int k = 0; k < (MonteCarloCycles-j); k++){\n", + " sum += (X(k)-Mean)*(X(k+j)-Mean); \n", + " }\n", + " autocorrelation(j) = sum/Variance/((double) MonteCarloCycles );\n", + " ofile << setiosflags(ios::showpoint | ios::uppercase);\n", + " ofile << setw(15) << setprecision(8) << j;\n", + " ofile << setw(15) << setprecision(8) << autocorrelation(j) << endl;\n", + " }\n", + " // Now compute the exact covariance using the autocorrelation function\n", + " double Covariance = 0.0;\n", + " for (int j = 0; j < MonteCarloCycles; j++){\n", + " Covariance += autocorrelation(j);\n", + " }\n", + " Covariance *= 2.0/((double) MonteCarloCycles);\n", + " // Compute now the total variance, including the covariance, and obtain the standard deviation\n", + " double TotalVariance = (Variance/((double) MonteCarloCycles ))+Covariance;\n", + " cout << \"Covariance =\" << Covariance << \"Totalvariance= \" << TotalVariance << \"Sample Variance/n= \" << (Variance/((double) MonteCarloCycles )) << endl;\n", + " cout << \" STD from sample variance= \" << sqrt(Variance/((double) MonteCarloCycles )) << \" STD with covariance = \" << sqrt(TotalVariance) << endl;\n", + " \n", + " ofile.close(); // close output file\n", + " return 0;\n", + " } // end of main program \n", + " \n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## What is blocking?\n", + "**Blocking.**\n", + "\n", + " * Say that we have a set of samples from a Monte Carlo experiment\n", + "\n", + " * Assuming (wrongly) that our samples are uncorrelated our best estimate of the standard deviation of the mean $\\langle \\mathbf{M}\\rangle$ is given by" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma=\\sqrt{\\frac{1}{n}\\left(\\langle \\mathbf{M}^2\\rangle-\\langle \\mathbf{M}\\rangle^2\\right)}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* If the samples are correlated we can rewrite our results to show that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\sigma=\\sqrt{\\frac{1+2\\tau/\\Delta t}{n}\\left(\\langle \\mathbf{M}^2\\rangle-\\langle \\mathbf{M}\\rangle^2\\right)}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\tau$ is the correlation time (the time between a sample and the next uncorrelated sample) and $\\Delta t$ is time between each sample\n", + "\n", + " \n", + "\n", + "## What is blocking?\n", + "**Blocking.**\n", + "\n", + " * If $\\Delta t\\gg\\tau$ our first estimate of $\\sigma$ still holds\n", + "\n", + " * Much more common that $\\Delta t<\\tau$\n", + "\n", + " * In the method of data blocking we divide the sequence of samples into blocks\n", + "\n", + " * We then take the mean $\\langle \\mathbf{M}_i\\rangle$ of block $i=1\\ldots n_{blocks}$ to calculate the total mean and variance\n", + "\n", + " * The size of each block must be so large that sample $j$ of block $i$ is not correlated with sample $j$ of block $i+1$\n", + "\n", + " * The correlation time $\\tau$ would be a good choice\n", + "\n", + "\n", + "\n", + "## What is blocking?\n", + "**Blocking.**\n", + "\n", + " * Problem: We don't know $\\tau$ or it is too expensive to compute\n", + "\n", + " * Solution: Make a plot of std. dev. as a function of blocksize\n", + "\n", + " * The estimate of std. dev. of correlated data is too low $\\to$ the error will increase with increasing block size until the blocks are uncorrelated, where we reach a plateau\n", + "\n", + " * When the std. dev. stops increasing the blocks are uncorrelated\n", + "\n", + "\n", + "\n", + "## Implementation\n", + " * Do a Monte Carlo simulation, storing all samples to file\n", + "\n", + " * Do the statistical analysis on this file, independently of your Monte Carlo program\n", + "\n", + " * Read the file into an array\n", + "\n", + " * Loop over various block sizes\n", + "\n", + " * For each block size $n_b$, loop over the array in steps of $n_b$ taking the mean of elements $i n_b,\\ldots,(i+1) n_b$\n", + "\n", + " * Take the mean and variance of the resulting array\n", + "\n", + " * Write the results for each block size to file for later\n", + " analysis\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Actual implementation with code, main function\n", + "When the file gets large, it can be useful to write your data in binary mode instead of ascii characters.\n", + "The [following python file](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py) reads data from file with the output from every Monte Carlo cycle." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "IndentationError", + "evalue": "unexpected indent (, line 2)", + "output_type": "error", + "traceback": [ + "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m2\u001b[0m\n\u001b[0;31m @timeFunction\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mIndentationError\u001b[0m\u001b[0;31m:\u001b[0m unexpected indent\n" + ] + } + ], + "source": [ + "# Blocking\n", + " @timeFunction\n", + " def blocking(self, blockSizeMax = 500):\n", + " blockSizeMin = 1\n", + "\n", + " self.blockSizes = []\n", + " self.meanVec = []\n", + " self.varVec = []\n", + "\n", + " for i in range(blockSizeMin, blockSizeMax):\n", + " if(len(self.data) % i != 0):\n", + " pass#continue\n", + " blockSize = i\n", + " meanTempVec = []\n", + " varTempVec = []\n", + " startPoint = 0\n", + " endPoint = blockSize\n", + "\n", + " while endPoint <= len(self.data):\n", + " meanTempVec.append(np.average(self.data[startPoint:endPoint]))\n", + " startPoint = endPoint\n", + " endPoint += blockSize\n", + " mean, var = np.average(meanTempVec), np.var(meanTempVec)/len(meanTempVec)\n", + " self.meanVec.append(mean)\n", + " self.varVec.append(var)\n", + " self.blockSizes.append(blockSize)\n", + "\n", + " self.blockingAvg = np.average(self.meanVec[-200:])\n", + " self.blockingVar = (np.average(self.varVec[-200:]))\n", + " self.blockingStd = np.sqrt(self.blockingVar)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Bootstrap method\n", + "\n", + "The Bootstrap resampling method is also very popular. It is very simple:\n", + "\n", + "1. Start with your sample of measurements and compute the sample variance and the mean values\n", + "\n", + "2. Then start again but pick in a random way the numbers in the sample and recalculate the mean and the sample variance.\n", + "\n", + "3. Repeat this $K$ times.\n", + "\n", + "It can be shown, see the article by [Efron](https://projecteuclid.org/download/pdf_1/euclid.aos/1176344552)\n", + "that it produces the correct standard deviation.\n", + "\n", + "This method is very useful for small ensembles of data points. \n", + "\n", + "\n", + "## Bootstrapping\n", + "Given a set of $N$ data, assume that we are interested in some \n", + "observable $\\theta$ which may be estimated from that set. This observable can also be for example the result of a fit based on all $N$ raw data. \n", + "Let us call the value of the observable obtained from the original \n", + "data set $\\hat{\\theta}$. One recreates from the sample repeatedly \n", + "other samples by choosing randomly $N$ data out of the original set. \n", + "This costs essentially nothing, since we just recycle the original data set for the building of new sets. \n", + "\n", + "\n", + "## Bootstrapping, recipe\n", + "Let us assume we have done this $K$ times and thus have $K$ sets of $N$ \n", + "data values each. \n", + "Of course some values will enter more than once in the new sets. For each of these sets one computes the observable $\\theta$ resulting in values $\\theta_k$ with $k = 1,...,K$. Then one determines" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\tilde{\\theta} = \\frac{1}{K} \\sum_{k=1}^K \\theta_k,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "sigma^2_{\\tilde{\\theta}} = \\frac{1}{K} \\sum_{k=1}^K \\left(\\theta_k-\\tilde{\\theta}\\right)^2.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These are estimators for $\\angle\\theta\\rangle$ and its variance. They are not unbiased and therefore \n", + "$\\tilde{\\theta}\\neq\\hat{\\theta}$ for finite K. \n", + "\n", + "The difference is called bias and gives an idea on how far away the result may be from \n", + "the true $\\angle\\theta\\rangle$. As final result for the observable one quotes $\\angle\\theta\\rangle = \\tilde{\\theta} \\pm \\sigma_{\\tilde{\\theta}}$ .\n", + "\n", + "\n", + "\n", + "## Bootstrapping, [code](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Bootstrap\n", + " @timeFunction\n", + " def bootstrap(self, nBoots = 1000):\n", + " bootVec = np.zeros(nBoots)\n", + " for k in range(0,nBoots):\n", + " bootVec[k] = np.average(np.random.choice(self.data, len(self.data)))\n", + " self.bootAvg = np.average(bootVec)\n", + " self.bootVar = np.var(bootVec)\n", + " self.bootStd = np.std(bootVec)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Jackknife, [code](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " # Jackknife\n", + " @timeFunction\n", + " def jackknife(self):\n", + " jackknVec = np.zeros(len(self.data))\n", + " for k in range(0,len(self.data)):\n", + " jackknVec[k] = np.average(np.delete(self.data, k))\n", + " self.jackknAvg = self.avg - (len(self.data) - 1) * (np.average(jackknVec) - self.avg)\n", + " self.jackknVar = float(len(self.data) - 1) * np.var(jackknVec)\n", + " self.jackknStd = np.sqrt(self.jackknVar)\n" + ] + } + ], + "metadata": { + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter3.py b/doc/src/LectureNotes/_build/jupyter_execute/chapter3.py new file mode 100644 index 000000000..acbf9b5ee --- /dev/null +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter3.py @@ -0,0 +1,1803 @@ + +# Data Analysis and Machine Learning: Elements of Probability Theory and Statistical Data Analysis + + +**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University + +Date: **Sep 20, 2020** + +Copyright 1999-2020, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + + + + +## To do list + +* add math about MVN and define MLE and other quantities + +* rewrite about covariance matrix + +* add KL theorem + +## Domains and probabilities +Consider the following simple example, namely the tossing of two dice, resulting in the following possible values + +$$ +\{2,3,4,5,6,7,8,9,10,11,12\}. +$$ + +These values are called the *domain*. +To this domain we have the corresponding *probabilities* + +$$ +\{1/36,2/36/,3/36,4/36,5/36,6/36,5/36,4/36,3/36,2/36,1/36\}. +$$ + +## Tossing the dice +The numbers in the domain are the outcomes of the physical process of tossing say two dice. +We cannot tell beforehand whether the outcome is 3 or 5 or any other number in this domain. +This defines the randomness of the outcome, or unexpectedness or any other synonimous word which +encompasses the uncertitude of the final outcome. + +The only thing we can tell beforehand +is that say the outcome 2 has a certain probability. +If our favorite hobby is to spend an hour every evening throwing dice and +registering the sequence of outcomes, we will note that the numbers in the above domain + +$$ +\{2,3,4,5,6,7,8,9,10,11,12\}, +$$ + +appear in a random order. After 11 throws the results may look like + +$$ +\{10,8,6,3,6,9,11,8,12,4,5\}. +$$ + +## Stochastic variables + +**Random variables are characterized by a domain which contains all possible values that the random value may take. This domain has a corresponding probability distribution function(PDF)**. + + + +## Stochastic variables and the main concepts, the discrete case +There are two main concepts associated with a stochastic variable. The +*domain* is the set $\mathbb D = \{x\}$ of all accessible values +the variable can assume, so that $X \in \mathbb D$. An example of a +discrete domain is the set of six different numbers that we may get by +throwing of a dice, $x\in\{1,\,2,\,3,\,4,\,5,\,6\}$. + +The *probability distribution function (PDF)* is a function +$p(x)$ on the domain which, in the discrete case, gives us the +probability or relative frequency with which these values of $X$ +occur + +$$ +p(x) = \mathrm{Prob}(X=x). +$$ + +## Stochastic variables and the main concepts, the continuous case +In the continuous case, the PDF does not directly depict the +actual probability. Instead we define the probability for the +stochastic variable to assume any value on an infinitesimal interval +around $x$ to be $p(x)dx$. The continuous function $p(x)$ then gives us +the *density* of the probability rather than the probability +itself. The probability for a stochastic variable to assume any value +on a non-infinitesimal interval $[a,\,b]$ is then just the integral + +$$ +\mathrm{Prob}(a\leq X\leq b) = \int_a^b p(x)dx. +$$ + +Qualitatively speaking, a stochastic variable represents the values of +numbers chosen as if by chance from some specified PDF so that the +selection of a large set of these numbers reproduces this PDF. + + + +## The cumulative probability +Of interest to us is the *cumulative probability +distribution function* (**CDF**), $P(x)$, which is just the probability +for a stochastic variable $X$ to assume any value less than $x$ + +$$ +P(x)=\mathrm{Prob(}X\leq x\mathrm{)} = +\int_{-\infty}^x p(x^{\prime})dx^{\prime}. +$$ + +The relation between a CDF and its corresponding PDF is then + +$$ +p(x) = \frac{d}{dx}P(x). +$$ + +## Properties of PDFs + +There are two properties that all PDFs must satisfy. The first one is +positivity (assuming that the PDF is normalized) + +$$ +0 \leq p(x) \leq 1. +$$ + +Naturally, it would be nonsensical for any of the values of the domain +to occur with a probability greater than $1$ or less than $0$. Also, +the PDF must be normalized. That is, all the probabilities must add up +to unity. The probability of "anything" to happen is always unity. For +both discrete and continuous PDFs, this condition is + +$$ +\begin{align*} +\sum_{x_i\in\mathbb D} p(x_i) & = 1,\\ +\int_{x\in\mathbb D} p(x)\,dx & = 1. +\end{align*} +$$ + +## Important distributions, the uniform distribution +The first one +is the most basic PDF; namely the uniform distribution + + +
+ +$$ +\begin{equation} +p(x) = \frac{1}{b-a}\theta(x-a)\theta(b-x). +\label{eq:unifromPDF} \tag{1} +\end{equation} +$$ + +For $a=0$ and $b=1$ we have + +$$ +\begin{array}{ll} +p(x)dx = dx & \in [0,1]. +\end{array} +$$ + +The latter distribution is used to generate random numbers. For other PDFs, one needs normally a mapping from this distribution to say for example the exponential distribution. + + + +## Gaussian distribution +The second one is the Gaussian Distribution + +$$ +p(x) = \frac{1}{\sigma\sqrt{2\pi}} \exp{(-\frac{(x-\mu)^2}{2\sigma^2})}, +$$ + +with mean value $\mu$ and standard deviation $\sigma$. If $\mu=0$ and $\sigma=1$, it is normally called the **standard normal distribution** + +$$ +p(x) = \frac{1}{\sqrt{2\pi}} \exp{(-\frac{x^2}{2})}, +$$ + +The following simple Python code plots the above distribution for different values of $\mu$ and $\sigma$. + +%matplotlib inline + +import numpy as np +from math import acos, exp, sqrt +from matplotlib import pyplot as plt +from matplotlib import rc, rcParams +import matplotlib.units as units +import matplotlib.ticker as ticker +rc('text',usetex=True) +rc('font',**{'family':'serif','serif':['Gaussian distribution']}) +font = {'family' : 'serif', + 'color' : 'darkred', + 'weight' : 'normal', + 'size' : 16, + } +pi = acos(-1.0) +mu0 = 0.0 +sigma0 = 1.0 +mu1= 1.0 +sigma1 = 2.0 +mu2 = 2.0 +sigma2 = 4.0 + +x = np.linspace(-20.0, 20.0) +v0 = np.exp(-(x*x-2*x*mu0+mu0*mu0)/(2*sigma0*sigma0))/sqrt(2*pi*sigma0*sigma0) +v1 = np.exp(-(x*x-2*x*mu1+mu1*mu1)/(2*sigma1*sigma1))/sqrt(2*pi*sigma1*sigma1) +v2 = np.exp(-(x*x-2*x*mu2+mu2*mu2)/(2*sigma2*sigma2))/sqrt(2*pi*sigma2*sigma2) +plt.plot(x, v0, 'b-', x, v1, 'r-', x, v2, 'g-') +plt.title(r'{\bf Gaussian distributions}', fontsize=20) +plt.text(-19, 0.3, r'Parameters: $\mu = 0$, $\sigma = 1$', fontdict=font) +plt.text(-19, 0.18, r'Parameters: $\mu = 1$, $\sigma = 2$', fontdict=font) +plt.text(-19, 0.08, r'Parameters: $\mu = 2$, $\sigma = 4$', fontdict=font) +plt.xlabel(r'$x$',fontsize=20) +plt.ylabel(r'$p(x)$ [MeV]',fontsize=20) + +# Tweak spacing to prevent clipping of ylabel +plt.subplots_adjust(left=0.15) +plt.savefig('gaussian.pdf', format='pdf') +plt.show() + +## Exponential distribution +Another important distribution in science is the exponential distribution + +$$ +p(x) = \alpha\exp{-(\alpha x)}. +$$ + +## Expectation values +Let $h(x)$ be an arbitrary continuous function on the domain of the stochastic +variable $X$ whose PDF is $p(x)$. We define the *expectation value* +of $h$ with respect to $p$ as follows + + +
+ +$$ +\begin{equation} +\langle h \rangle_X \equiv \int\! h(x)p(x)\,dx +\label{eq:expectation_value_of_h_wrt_p} \tag{2} +\end{equation} +$$ + +Whenever the PDF is known implicitly, like in this case, we will drop +the index $X$ for clarity. +A particularly useful class of special expectation values are the +*moments*. The $n$-th moment of the PDF $p$ is defined as +follows + +$$ +\langle x^n \rangle \equiv \int\! x^n p(x)\,dx +$$ + +## Stochastic variables and the main concepts, mean values +The zero-th moment $\langle 1\rangle$ is just the normalization condition of +$p$. The first moment, $\langle x\rangle$, is called the *mean* of $p$ +and often denoted by the letter $\mu$ + +$$ +\langle x\rangle = \mu \equiv \int x p(x)dx, +$$ + +for a continuous distribution and + +$$ +\langle x\rangle = \mu \equiv \sum_{i=1}^N x_i p(x_i), +$$ + +for a discrete distribution. +Qualitatively it represents the centroid or the average value of the +PDF and is therefore simply called the expectation value of $p(x)$. + + + +## Stochastic variables and the main concepts, central moments, the variance + +A special version of the moments is the set of *central moments*, the n-th central moment defined as + +$$ +\langle (x-\langle x\rangle )^n\rangle \equiv \int\! (x-\langle x\rangle)^n p(x)\,dx +$$ + +The zero-th and first central moments are both trivial, equal $1$ and +$0$, respectively. But the second central moment, known as the +*variance* of $p$, is of particular interest. For the stochastic +variable $X$, the variance is denoted as $\sigma^2_X$ or $\mathrm{Var}(X)$ + +$$ +\begin{align*} +\sigma^2_X &=\mathrm{Var}(X) = \langle (x-\langle x\rangle)^2\rangle = +\int (x-\langle x\rangle)^2 p(x)dx\\ +& = \int\left(x^2 - 2 x \langle x\rangle^{2} +\langle x\rangle^2\right)p(x)dx\\ +& = \langle x^2\rangle - 2 \langle x\rangle\langle x\rangle + \langle x\rangle^2\\ +& = \langle x^2 \rangle - \langle x\rangle^2 +\end{align*} +$$ + +The square root of the variance, $\sigma =\sqrt{\langle (x-\langle x\rangle)^2\rangle}$ is called the +**standard deviation** of $p$. It is the RMS (root-mean-square) +value of the deviation of the PDF from its mean value, interpreted +qualitatively as the "spread" of $p$ around its mean. + + + + + +## Probability Distribution Functions + +The following table collects properties of probability distribution functions. +In our notation we reserve the label $p(x)$ for the probability of a certain event, +while $P(x)$ is the cumulative probability. + + + + + + + + + + + + + + + +
Discrete PDF Continuous PDF
Domain $\left\{x_1, x_2, x_3, \dots, x_N\right\}$ $[a,b]$
Probability $p(x_i)$ $p(x)dx$
Cumulative $P_i=\sum_{l=1}^ip(x_l)$ $P(x)=\int_a^xp(t)dt$
Positivity $0 \le p(x_i) \le 1$ $p(x) \ge 0$
Positivity $0 \le P_i \le 1$ $0 \le P(x) \le 1$
Monotonic $P_i \ge P_j$ if $x_i \ge x_j$ $P(x_i) \ge P(x_j)$ if $x_i \ge x_j$
Normalization $P_N=1$ $P(b)=1$
+ + + + +## Probability Distribution Functions +With a PDF we can compute expectation values of selected quantities such as + +$$ +\langle x^k\rangle=\sum_{i=1}^{N}x_i^kp(x_i), +$$ + +if we have a discrete PDF or + +$$ +\langle x^k\rangle=\int_a^b x^kp(x)dx, +$$ + +in the case of a continuous PDF. We have already defined the mean value $\mu$ +and the variance $\sigma^2$. + + + +## The three famous Probability Distribution Functions + +There are at least three PDFs which one may encounter. These are the + +**Uniform distribution** + +$$ +p(x)=\frac{1}{b-a}\Theta(x-a)\Theta(b-x), +$$ + +yielding probabilities different from zero in the interval $[a,b]$. + +**The exponential distribution** + +$$ +p(x)=\alpha \exp{(-\alpha x)}, +$$ + +yielding probabilities different from zero in the interval $[0,\infty)$ and with mean value + +$$ +\mu = \int_0^{\infty}xp(x)dx=\int_0^{\infty}x\alpha \exp{(-\alpha x)}dx=\frac{1}{\alpha}, +$$ + +with variance + +$$ +\sigma^2=\int_0^{\infty}x^2p(x)dx-\mu^2 = \frac{1}{\alpha^2}. +$$ + +## Probability Distribution Functions, the normal distribution +Finally, we have the so-called univariate normal distribution, or just the **normal distribution** + +$$ +p(x)=\frac{1}{b\sqrt{2\pi}}\exp{\left(-\frac{(x-a)^2}{2b^2}\right)} +$$ + +with probabilities different from zero in the interval $(-\infty,\infty)$. +The integral $\int_{-\infty}^{\infty}\exp{\left(-(x^2\right)}dx$ appears in many calculations, its value +is $\sqrt{\pi}$, a result we will need when we compute the mean value and the variance. +The mean value is + +$$ +\mu = \int_0^{\infty}xp(x)dx=\frac{1}{b\sqrt{2\pi}}\int_{-\infty}^{\infty}x \exp{\left(-\frac{(x-a)^2}{2b^2}\right)}dx, +$$ + +which becomes with a suitable change of variables + +$$ +\mu =\frac{1}{b\sqrt{2\pi}}\int_{-\infty}^{\infty}b\sqrt{2}(a+b\sqrt{2}y)\exp{-y^2}dy=a. +$$ + +## Probability Distribution Functions, the normal distribution +Similarly, the variance becomes + +$$ +\sigma^2 = \frac{1}{b\sqrt{2\pi}}\int_{-\infty}^{\infty}(x-\mu)^2 \exp{\left(-\frac{(x-a)^2}{2b^2}\right)}dx, +$$ + +and inserting the mean value and performing a variable change we obtain + +$$ +\sigma^2 = \frac{1}{b\sqrt{2\pi}}\int_{-\infty}^{\infty}b\sqrt{2}(b\sqrt{2}y)^2\exp{\left(-y^2\right)}dy= +\frac{2b^2}{\sqrt{\pi}}\int_{-\infty}^{\infty}y^2\exp{\left(-y^2\right)}dy, +$$ + +and performing a final integration by parts we obtain the well-known result $\sigma^2=b^2$. +It is useful to introduce the standard normal distribution as well, defined by $\mu=a=0$, viz. a distribution +centered around zero and with a variance $\sigma^2=1$, leading to + + +
+ +$$ +\begin{equation} + p(x)=\frac{1}{\sqrt{2\pi}}\exp{\left(-\frac{x^2}{2}\right)}. +\label{_auto1} \tag{3} +\end{equation} +$$ + +## Probability Distribution Functions, the cumulative distribution + +The exponential and uniform distributions have simple cumulative functions, +whereas the normal distribution does not, being proportional to the so-called +error function $erf(x)$, given by + +$$ +P(x) = \frac{1}{\sqrt{2\pi}}\int_{-\infty}^x\exp{\left(-\frac{t^2}{2}\right)}dt, +$$ + +which is difficult to evaluate in a quick way. + + + + +## Probability Distribution Functions, other important distribution + +Some other PDFs which one encounters often in the natural sciences are the binomial distribution + +$$ +p(x) = \left(\begin{array}{c} n \\ x\end{array}\right)y^x(1-y)^{n-x} \hspace{0.5cm}x=0,1,\dots,n, +$$ + +where $y$ is the probability for a specific event, such as the tossing of a coin or moving left or right +in case of a random walker. Note that $x$ is a discrete stochastic variable. + +The sequence of binomial trials is characterized by the following definitions + + * Every experiment is thought to consist of $N$ independent trials. + + * In every independent trial one registers if a specific situation happens or not, such as the jump to the left or right of a random walker. + + * The probability for every outcome in a single trial has the same value, for example the outcome of tossing (either heads or tails) a coin is always $1/2$. + + + +## Probability Distribution Functions, the binomial distribution + +In order to compute the mean and variance we need to recall Newton's binomial +formula + +$$ +(a+b)^m=\sum_{n=0}^m \left(\begin{array}{c} m \\ n\end{array}\right)a^nb^{m-n}, +$$ + +which can be used to show that + +$$ +\sum_{x=0}^n\left(\begin{array}{c} n \\ x\end{array}\right)y^x(1-y)^{n-x} = (y+1-y)^n = 1, +$$ + +the PDF is normalized to one. +The mean value is + +$$ +\mu = \sum_{x=0}^n x\left(\begin{array}{c} n \\ x\end{array}\right)y^x(1-y)^{n-x} = +\sum_{x=0}^n x\frac{n!}{x!(n-x)!}y^x(1-y)^{n-x}, +$$ + +resulting in + +$$ +\mu = +\sum_{x=0}^n x\frac{(n-1)!}{(x-1)!(n-1-(x-1))!}y^{x-1}(1-y)^{n-1-(x-1)}, +$$ + +which we rewrite as + +$$ +\mu=ny\sum_{\nu=0}^n\left(\begin{array}{c} n-1 \\ \nu\end{array}\right)y^{\nu}(1-y)^{n-1-\nu} =ny(y+1-y)^{n-1}=ny. +$$ + +The variance is slightly trickier to get. It reads $\sigma^2=ny(1-y)$. + +## Probability Distribution Functions, Poisson's distribution + +Another important distribution with discrete stochastic variables $x$ is +the Poisson model, which resembles the exponential distribution and reads + +$$ +p(x) = \frac{\lambda^x}{x!} e^{-\lambda} \hspace{0.5cm}x=0,1,\dots,;\lambda > 0. +$$ + +In this case both the mean value and the variance are easier to calculate, + +$$ +\mu = \sum_{x=0}^{\infty} x \frac{\lambda^x}{x!} e^{-\lambda} = \lambda e^{-\lambda}\sum_{x=1}^{\infty} +\frac{\lambda^{x-1}}{(x-1)!}=\lambda, +$$ + +and the variance is $\sigma^2=\lambda$. + + + + + +## Probability Distribution Functions, Poisson's distribution +An example of applications of the Poisson distribution could be the counting +of the number of $\alpha$-particles emitted from a radioactive source in a given time interval. +In the limit of $n\rightarrow \infty$ and for small probabilities $y$, the binomial distribution +approaches the Poisson distribution. Setting $\lambda = ny$, with $y$ the probability for an event in +the binomial distribution we can show that + +$$ +\lim_{n\rightarrow \infty}\left(\begin{array}{c} n \\ x\end{array}\right)y^x(1-y)^{n-x} e^{-\lambda}=\sum_{x=1}^{\infty}\frac{\lambda^x}{x!} e^{-\lambda}. +$$ + +## Meet the covariance! +An important quantity in a statistical analysis is the so-called covariance. + +Consider the set $\{X_i\}$ of $n$ +stochastic variables (not necessarily uncorrelated) with the +multivariate PDF $P(x_1,\dots,x_n)$. The *covariance* of two +of the stochastic variables, $X_i$ and $X_j$, is defined as follows + + +
+ +$$ +\begin{equation} +\mathrm{Cov}(X_i,\,X_j) = \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle +\label{_auto2} \tag{4} +\end{equation} +$$ + + +
+ +$$ +\begin{equation} +=\int\cdots\int (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)P(x_1,\dots,x_n)\,dx_1\dots dx_n, +\label{eq:def_covariance} \tag{5} +\end{equation} +$$ + +with + +$$ +\langle x_i\rangle = +\int\cdots\int x_i P(x_1,\dots,x_n)\,dx_1\dots dx_n. +$$ + +## Meet the covariance in matrix disguise +If we consider the above covariance as a matrix + +$$ +C_{ij} =\mathrm{Cov}(X_i,\,X_j), +$$ + +then the diagonal elements are just the familiar +variances, $C_{ii} = \mathrm{Cov}(X_i,\,X_i) = \mathrm{Var}(X_i)$. It turns out that +all the off-diagonal elements are zero if the stochastic variables are +uncorrelated. + + + +## Covariance + +# Importing various packages +from math import exp, sqrt +from random import random, seed +import numpy as np +import matplotlib.pyplot as plt + +def covariance(x, y, n): + sum = 0.0 + mean_x = np.mean(x) + mean_y = np.mean(y) + for i in range(0, n): + sum += (x[(i)]-mean_x)*(y[i]-mean_y) + return sum/n + +n = 10 + +x=np.random.normal(size=n) +y = 4+3*x+np.random.normal(size=n) +covxy = covariance(x,y,n) +print(covxy) +z = np.vstack((x, y)) +c = np.cov(z.T) + +print(c) + +## Meet the covariance, uncorrelated events + +Consider the stochastic variables $X_i$ and $X_j$, ($i\neq j$). We have + +$$ +\begin{align*} +Cov(X_i,\,X_j) &= \langle (x_i-\langle x_i\rangle)(x_j-\langle x_j\rangle)\rangle\\ +&=\langle x_i x_j - x_i\langle x_j\rangle - \langle x_i\rangle x_j + \langle x_i\rangle\langle x_j\rangle\rangle\\ +&=\langle x_i x_j\rangle - \langle x_i\langle x_j\rangle\rangle - \langle \langle x_i\rangle x_j \rangle + +\langle \langle x_i\rangle\langle x_j\rangle\rangle \\ +&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle - \langle x_i\rangle\langle x_j\rangle + +\langle x_i\rangle\langle x_j\rangle \\ +&=\langle x_i x_j\rangle - \langle x_i\rangle\langle x_j\rangle +\end{align*} +$$ + +If $X_i$ and $X_j$ are independent (assuming $i \neq j$), we have that + +$$ +\langle x_i x_j\rangle = \langle x_i\rangle\langle x_j\rangle, +$$ + +leading to + +$$ +Cov(X_i, X_j) = 0 \hspace{0.1cm} (i\neq j). +$$ + +## Numerical experiments and the covariance + +Now that we have constructed an idealized mathematical framework, let +us try to apply it to empirical observations. Examples of relevant +physical phenomena may be spontaneous decays of nuclei, or a purely +mathematical set of numbers produced by some deterministic +mechanism. It is the latter we will deal with, using so-called pseudo-random +number generators. In general our observations will contain only a limited set of +observables. We remind the reader that +a *stochastic process* is a process that produces sequentially a +chain of values + +$$ +\{x_1, x_2,\dots\,x_k,\dots\}. +$$ + +## Numerical experiments and the covariance +We will call these +values our *measurements* and the entire set as our measured +*sample*. The action of measuring all the elements of a sample +we will call a stochastic *experiment* (since, operationally, +they are often associated with results of empirical observation of +some physical or mathematical phenomena; precisely an experiment). We +assume that these values are distributed according to some +PDF $p_X^{\phantom X}(x)$, where $X$ is just the formal symbol for the +stochastic variable whose PDF is $p_X^{\phantom X}(x)$. Instead of +trying to determine the full distribution $p$ we are often only +interested in finding the few lowest moments, like the mean +$\mu_X^{\phantom X}$ and the variance $\sigma_X^{\phantom X}$. + + + + +## Numerical experiments and the covariance, actual situations +In practical situations however, a sample is always of finite size. Let that +size be $n$. The expectation value of a sample $\alpha$, the **sample mean**, is then defined as follows + +$$ +\langle x_{\alpha} \rangle \equiv \frac{1}{n}\sum_{k=1}^n x_{\alpha,k}. +$$ + +The *sample variance* is: + +$$ +\mathrm{Var}(x) \equiv \frac{1}{n}\sum_{k=1}^n (x_{\alpha,k} - \langle x_{\alpha} \rangle)^2, +$$ + +with its square root being the *standard deviation of the sample*. + + + + +## Numerical experiments and the covariance, our observables +You can think of the above observables as a set of quantities which define +a given experiment. This experiment is then repeated several times, say $m$ times. +The total average is then + + +
+ +$$ +\begin{equation} +\langle X_m \rangle= \frac{1}{m}\sum_{\alpha=1}^mx_{\alpha}=\frac{1}{mn}\sum_{\alpha, k} x_{\alpha,k}, +\label{eq:exptmean} \tag{6} +\end{equation} +$$ + +where the last sums end at $m$ and $n$. +The total variance is + +$$ +\sigma^2_m= \frac{1}{mn^2}\sum_{\alpha=1}^m(\langle x_{\alpha} \rangle-\langle X_m \rangle)^2, +$$ + +which we rewrite as + + +
+ +$$ +\begin{equation} +\sigma^2_m=\frac{1}{m}\sum_{\alpha=1}^m\sum_{kl=1}^n (x_{\alpha,k}-\langle X_m \rangle)(x_{\alpha,l}-\langle X_m \rangle). +\label{eq:exptvariance} \tag{7} +\end{equation} +$$ + +## Numerical experiments and the covariance, the sample variance + +We define also the sample variance $\sigma^2$ of all $mn$ individual experiments as + + +
+ +$$ +\begin{equation} +\sigma^2=\frac{1}{mn}\sum_{\alpha=1}^m\sum_{k=1}^n (x_{\alpha,k}-\langle X_m \rangle)^2. +\label{eq:sampleexptvariance} \tag{8} +\end{equation} +$$ + +These quantities, being known experimental values or the results from our calculations, +may differ, in some cases +significantly, from the similarly named +exact values for the mean value $\mu_X$, the variance $\mathrm{Var}(X)$ +and the covariance $\mathrm{Cov}(X,Y)$. + + + +## Numerical experiments and the covariance, central limit theorem + +The central limit theorem states that the PDF $\tilde{p}(z)$ of +the average of $m$ random values corresponding to a PDF $p(x)$ +is a normal distribution whose mean is the +mean value of the PDF $p(x)$ and whose variance is the variance +of the PDF $p(x)$ divided by $m$, the number of values used to compute $z$. + +The central limit theorem leads then to the well-known expression for the +standard deviation, given by + +$$ +\sigma_m= +\frac{\sigma}{\sqrt{m}}. +$$ + +In many cases the above estimate for the standard deviation, in particular if correlations are strong, may be too simplistic. We need therefore a more precise defintion of the error and the variance in our results. + + + +## Definition of Correlation Functions and Standard Deviation +Our estimate of the true average $\mu_{X}$ is the sample mean $\langle X_m \rangle$ + +$$ +\mu_{X}^{\phantom X} \approx X_m=\frac{1}{mn}\sum_{\alpha=1}^m\sum_{k=1}^n x_{\alpha,k}. +$$ + +We can then use Eq. ([7](#eq:exptvariance)) + +$$ +\sigma^2_m=\frac{1}{mn^2}\sum_{\alpha=1}^m\sum_{kl=1}^n (x_{\alpha,k}-\langle X_m \rangle)(x_{\alpha,l}-\langle X_m \rangle), +$$ + +and rewrite it as + +$$ +\sigma^2_m=\frac{\sigma^2}{n}+\frac{2}{mn^2}\sum_{\alpha=1}^m\sum_{k +
+ +$$ +\begin{equation} +\kappa_d = \frac{f_d}{\sigma^2} +\label{eq:autocorrelformal} \tag{9} +\end{equation} +$$ + +which gives us a useful measure of the correlation pair correlation +starting always at $1$ for $d=0$. + + + +## Definition of Correlation Functions and Standard Deviation, sample variance + +The sample variance of the $mn$ experiments can now be +written in terms of the autocorrelation function + + +
+ +$$ +\begin{equation} +\sigma_m^2=\frac{\sigma^2}{n}+\frac{2}{n}\cdot\sigma^2\sum_{d=1}^{n-1} +\frac{f_d}{\sigma^2}=\left(1+2\sum_{d=1}^{n-1}\kappa_d\right)\frac{1}{n}\sigma^2=\frac{\tau}{n}\cdot\sigma^2 +\label{eq:error_estimate_corr_time} \tag{10} +\end{equation} +$$ + +and we see that $\sigma_m$ can be expressed in terms of the +uncorrelated sample variance times a correction factor $\tau$ which +accounts for the correlation between measurements. We call this +correction factor the *autocorrelation time* + + +
+ +$$ +\begin{equation} +\tau = 1+2\sum_{d=1}^{n-1}\kappa_d +\label{eq:autocorrelation_time} \tag{11} +\end{equation} +$$ + + + +For a correlation free experiment, $\tau$ +equals 1. + + + + + +## Definition of Correlation Functions and Standard Deviation +From the point of view of +Eq. ([10](#eq:error_estimate_corr_time)) we can interpret a sequential +correlation as an effective reduction of the number of measurements by +a factor $\tau$. The effective number of measurements becomes + +$$ +n_\mathrm{eff} = \frac{n}{\tau} +$$ + +To neglect the autocorrelation time $\tau$ will always cause our +simple uncorrelated estimate of $\sigma_m^2\approx \sigma^2/n$ to +be less than the true sample error. The estimate of the error will be +too "good". On the other hand, the calculation of the full +autocorrelation time poses an efficiency problem if the set of +measurements is very large. The solution to this problem is given by +more practically oriented methods like the blocking technique. + + + + + + +## Code to compute the Covariance matrix and the Covariance + +# Importing various packages +from math import exp, sqrt +from random import random, seed +import numpy as np +import matplotlib.pyplot as plt + +# Sample covariance, note the factor 1/(n-1) +def covariance(x, y, n): + sum = 0.0 + mean_x = np.mean(x) + mean_y = np.mean(y) + for i in range(0, n): + sum += (x[(i)]-mean_x)*(y[i]-mean_y) + return sum/(n-1.) + +n = 100 +x = np.random.normal(size=n) +print(np.mean(x)) +y = 4+3*x+np.random.normal(size=n) +print(np.mean(y)) +z = x**3+np.random.normal(size=n) +print(np.mean(z)) +covxx = covariance(x,x,n) +covyy = covariance(y,y,n) +covzz = covariance(z,z,n) +covxy = covariance(x,y,n) +covxz = covariance(x,z,n) +covyz = covariance(y,z,n) +print(covxx,covyy, covzz) +print(covxy,covxz, covyz) +w = np.vstack((x, y, z)) +#print(w) +c = np.cov(w) +print(c) +#eigen = np.zeros(n) +Eigvals, Eigvecs = np.linalg.eig(c) +print(Eigvals) + +# Random Numbers + +Uniform deviates are just random numbers that lie within a specified range +(typically 0 to 1), with any one number in the range just as likely as any other. They +are, in other words, what you probably think random numbers are. However, +we want to distinguish uniform deviates from other sorts of random numbers, for +example numbers drawn from a normal (Gaussian) distribution of specified mean +and standard deviation. These other sorts of deviates are almost always generated by +performing appropriate operations on one or more uniform deviates, as we will see +in subsequent sections. So, a reliable source of random uniform deviates, the subject +of this section, is an essential building block for any sort of stochastic modeling +or Monte Carlo computer work. + + + + +# Random Numbers, better name: pseudo random numbers + +A disclaimer is however appropriate. It should be fairly obvious that +something as deterministic as a computer cannot generate purely random numbers. + +Numbers generated by any of the standard algorithms are in reality pseudo random +numbers, hopefully abiding to the following criteria: + + * they produce a uniform distribution in the interval [0,1]. + + * correlations between random numbers are negligible + + * the period before the same sequence of random numbers is repeated is as large as possible and finally + + * the algorithm should be fast. + + + + +# Random number generator RNG + The most common random number generators are based on so-called +Linear congruential relations of the type + +$$ +N_i=(aN_{i-1}+c) \mathrm{MOD} (M), +$$ + +which yield a number in the interval [0,1] through + +$$ +x_i=N_i/M +$$ + +The number +$M$ is called the period and it should be as large as possible + and +$N_0$ is the starting value, or seed. The function $\mathrm{MOD}$ means the remainder, +that is if we were to evaluate $(13)\mathrm{MOD}(9)$, the outcome is the remainder +of the division $13/9$, namely $4$. + + + +# Random number generator RNG and periodic outputs + +The problem with such generators is that their outputs are periodic; +they +will start to repeat themselves with a period that is at most $M$. If however +the parameters $a$ and $c$ are badly chosen, the period may be even shorter. + +Consider the following example + +$$ +N_i=(6N_{i-1}+7) \mathrm{MOD} (5), +$$ + +with a seed $N_0=2$. This generator produces the sequence +$4,1,3,0,2,4,1,3,0,2,...\dots$, i.e., a sequence with period $5$. +However, increasing $M$ may not guarantee a larger period as the following +example shows + +$$ +N_i=(27N_{i-1}+11) \mathrm{MOD} (54), +$$ + +which still, with $N_0=2$, results in $11,38,11,38,11,38,\dots$, a period of +just $2$. + + + +# Random number generator RNG and its period +Typical periods for the random generators provided in the program library +are of the order of $\sim 10^9$ or larger. Other random number generators which have +become increasingly popular are so-called shift-register generators. +In these generators each successive number depends on many preceding +values (rather than the last values as in the linear congruential +generator). +For example, you could make a shift register generator whose $l$th +number is the sum of the $l-i$th and $l-j$th values with modulo $M$, + +$$ +N_l=(aN_{l-i}+cN_{l-j})\mathrm{MOD}(M). +$$ + +# Random number generator RNG, other examples +Such a generator again produces a sequence of pseudorandom numbers +but this time with a period much larger than $M$. +It is also possible to construct more elaborate algorithms by including +more than two past terms in the sum of each iteration. +One example is the generator of [Marsaglia and Zaman](http://dl.acm.org/citation.cfm?id=187154) +which consists of two congruential relations + + +
+ +$$ +\begin{equation} + N_l=(N_{l-3}-N_{l-1})\mathrm{MOD}(2^{31}-69), +\label{eq:mz1} \tag{12} +\end{equation} +$$ + +followed by + + +
+ +$$ +\begin{equation} + N_l=(69069N_{l-1}+1013904243)\mathrm{MOD}(2^{32}), +\label{eq:mz2} \tag{13} +\end{equation} +$$ + +which according to the authors has a period larger than $2^{94}$. + + + +# Random number generator RNG, other examples +Instead of using modular addition, we could use the bitwise +exclusive-OR ($\oplus$) operation so that + +$$ +N_l=(N_{l-i})\oplus (N_{l-j}) +$$ + +where the bitwise action of $\oplus$ means that if $N_{l-i}=N_{l-j}$ the result is +$0$ whereas if $N_{l-i}\ne N_{l-j}$ the result is +$1$. As an example, consider the case where $N_{l-i}=6$ and $N_{l-j}=11$. The first +one has a bit representation (using 4 bits only) which reads $0110$ whereas the +second number is $1011$. Employing the $\oplus$ operator yields +$1101$, or $2^3+2^2+2^0=13$. + +In Fortran90, the bitwise $\oplus$ operation is coded through the intrinsic +function $\mathrm{IEOR}(m,n)$ where $m$ and $n$ are the input numbers, while in $C$ +it is given by $m\wedge n$. + + + + +# Random number generator RNG, RAN0 + +We show here how the linear congruential algorithm can be implemented, namely + +$$ +N_i=(aN_{i-1}) \mathrm{MOD} (M). +$$ + +However, since $a$ and $N_{i-1}$ are integers and their multiplication +could become greater than the standard 32 bit integer, there is a trick via +Schrage's algorithm which approximates the multiplication +of large integers through the factorization + +$$ +M=aq+r, +$$ + +where we have defined + +$$ +q=[M/a], +$$ + +and + +$$ +r = M\hspace{0.1cm}\mathrm{MOD} \hspace{0.1cm}a. +$$ + +where the brackets denote integer division. In the code below the numbers +$q$ and $r$ are chosen so that $r < q$. + + + + + +# Random number generator RNG, RAN0 + +To see how this works we note first that + + +
+ +$$ +\begin{equation} +(aN_{i-1}) \mathrm{MOD} (M)= (aN_{i-1}-[N_{i-1}/q]M)\mathrm{MOD} (M), +\label{eq:rntrick1} \tag{14} +\end{equation} +$$ + +since we can add or subtract any integer multiple of $M$ from $aN_{i-1}$. +The last term $[N_{i-1}/q]M\mathrm{MOD}(M)$ is zero since the integer division +$[N_{i-1}/q]$ just yields a constant which is multiplied with $M$. + + + + +# Random number generator RNG, RAN0 +We can now rewrite Eq. ([14](#eq:rntrick1)) as + + +
+ +$$ +\begin{equation} +(aN_{i-1}) \mathrm{MOD} (M)= (aN_{i-1}-[N_{i-1}/q](aq+r))\mathrm{MOD} (M), +\label{eq:rntrick2} \tag{15} +\end{equation} +$$ + +which results +in + + +
+ +$$ +\begin{equation} +(aN_{i-1}) \mathrm{MOD} (M)= \left(a(N_{i-1}-[N_{i-1}/q]q)-[N_{i-1}/q]r)\right)\mathrm{MOD} (M), +\label{eq:rntrick3} \tag{16} +\end{equation} +$$ + +yielding + + +
+ +$$ +\begin{equation} +(aN_{i-1}) \mathrm{MOD} (M)= \left(a(N_{i-1}\mathrm{MOD} (q)) -[N_{i-1}/q]r)\right)\mathrm{MOD} (M). +\label{eq:rntrick4} \tag{17} +\end{equation} +$$ + +# Random number generator RNG, RAN0 +The term $[N_{i-1}/q]r$ is always smaller or equal $N_{i-1}(r/q)$ and with $r < q$ we obtain always a +number smaller than $N_{i-1}$, which is smaller than $M$. +And since the number $N_{i-1}\mathrm{MOD} (q)$ is between zero and $q-1$ then +$a(N_{i-1}\mathrm{MOD} (q))< aq$. Combined with our definition of $q=[M/a]$ ensures that +this term is also smaller than $M$ meaning that both terms fit into a +32-bit signed integer. None of these two terms can be negative, but their difference could. +The algorithm below adds $M$ if their difference is negative. +Note that the program uses the bitwise $\oplus$ operator to generate +the starting point for each generation of a random number. The period +of $ran0$ is $\sim 2.1\times 10^{9}$. A special feature of this +algorithm is that is should never be called with the initial seed +set to $0$. + + + + +# Random number generator RNG, RAN0 code + + /* + ** The function + ** ran0() + ** is an "Minimal" random number generator of Park and Miller + ** Set or reset the input value + ** idum to any integer value (except the unlikely value MASK) + ** to initialize the sequence; idum must not be altered between + ** calls for sucessive deviates in a sequence. + ** The function returns a uniform deviate between 0.0 and 1.0. + */ + double ran0(long &idum) + { + const int a = 16807, m = 2147483647, q = 127773; + const int r = 2836, MASK = 123459876; + const double am = 1./m; + long k; + double ans; + idum ^= MASK; + k = (*idum)/q; + idum = a*(idum - k*q) - r*k; + // add m if negative difference + if(idum < 0) idum += m; + ans=am*(idum); + idum ^= MASK; + return ans; + } // End: function ran0() + + +## Properties of Selected Random Number Generators + +As mentioned previously, the underlying PDF for the generation of +random numbers is the uniform distribution, meaning that the +probability for finding a number $x$ in the interval [0,1] is $p(x)=1$. + +A random number generator should produce numbers which are uniformly distributed +in this interval. The table shows the distribution of $N=10000$ random +numbers generated by the functions in the program library. +We note in this table that the number of points in the various +intervals $0.0-0.1$, $0.1-0.2$ etc are fairly close to $1000$, with some minor +deviations. + +Two additional measures are the standard deviation $\sigma$ and the mean +$\mu=\langle x\rangle$. + + + +## Properties of Selected Random Number Generators +For the uniform distribution, the mean value $\mu$ is then + +$$ +\mu=\langle x\rangle=\frac{1}{2} +$$ + +while the standard deviation is + +$$ +\sigma=\sqrt{\langle x^2\rangle-\mu^2}=\frac{1}{\sqrt{12}}=0.2886. +$$ + +## Properties of Selected Random Number Generators +The various random number generators produce results which agree rather well with +these limiting values. + + + + + + + + + + + + + + + + + + + +
$x$-bin ran0 ran1 ran2 ran3
0.0-0.1 1013 991 938 1047
0.1-0.2 1002 1009 1040 1030
0.2-0.3 989 999 1030 993
0.3-0.4 939 960 1023 937
0.4-0.5 1038 1001 1002 992
0.5-0.6 1037 1047 1009 1009
0.6-0.7 1005 989 1003 989
0.7-0.8 986 962 985 954
0.8-0.9 1000 1027 1009 1023
0.9-1.0 991 1015 961 1026
$\mu$ 0.4997 0.5018 0.4992 0.4990
$\sigma$ 0.2882 0.2892 0.2861 0.2915
+ + + +## Simple demonstration of RNGs using python +The following simple Python code plots the distribution of the produced random numbers using the linear congruential RNG employed by Python. The trend displayed in the previous table is seen rather clearly. + +#!/usr/bin/env python +import numpy as np +import matplotlib.mlab as mlab +import matplotlib.pyplot as plt +import random + +# initialize the rng with a seed +random.seed() +counts = 10000 +values = np.zeros(counts) +for i in range (1, counts, 1): + values[i] = random.random() + +# the histogram of the data +n, bins, patches = plt.hist(values, 10, facecolor='green') + +plt.xlabel('$x$') +plt.ylabel('Number of counts') +plt.title(r'Test of uniform distribution') +plt.axis([0, 1, 0, 1100]) +plt.grid(True) +plt.show() + +## Properties of Selected Random Number Generators +Since our random numbers, which are typically generated via a linear congruential algorithm, +are never fully independent, we can then define +an important test which measures the degree of correlation, namely the so-called +auto-correlation function defined previously, see again Eq. ([9](#eq:autocorrelformal)). +We rewrite it here as + +$$ +C_k=\frac{f_d} + {\sigma^2}, +$$ + +with $C_0=1$. Recall that +$\sigma^2=\langle x_i^2\rangle-\langle x_i\rangle^2$ and that + +$$ +f_d = \frac{1}{nm}\sum_{\alpha=1}^m\sum_{k=1}^{n-d}(x_{\alpha,k}-\langle X_m \rangle)(x_{\alpha,k+d}-\langle X_m \rangle), +$$ + +The non-vanishing of $C_k$ for $k\ne 0$ means that the random +numbers are not independent. The independence of the random numbers is crucial +in the evaluation of other expectation values. If they are not independent, our +assumption for approximating $\sigma_N$ is no longer valid. + + + + +## Autocorrelation function +This program computes the autocorrelation function as discussed in the equation on the previous slide for random numbers generated with the normal distribution $N(0,1)$. + +# Importing various packages +from math import exp, sqrt +from random import random, seed +import numpy as np +import matplotlib.pyplot as plt + +def autocovariance(x, n, k, mean_x): + sum = 0.0 + for i in range(0, n-k): + sum += (x[(i+k)]-mean_x)*(x[i]-mean_x) + return sum/n + +n = 1000 +x=np.random.normal(size=n) +autocor = np.zeros(n) +figaxis = np.zeros(n) +mean_x=np.mean(x) +var_x = np.var(x) +print(mean_x, var_x) +for i in range (0, n): + figaxis[i] = i + autocor[i]=(autocovariance(x, n, i, mean_x))/var_x + +plt.plot(figaxis, autocor, "r-") +plt.axis([0,n,-0.1, 1.0]) +plt.xlabel(r'$i$') +plt.ylabel(r'$\gamma_i$') +plt.title(r'Autocorrelation function') +plt.show() + +As can be seen from the plot, the first point gives back the variance and a value of one. +For the remaining values we notice that there are still non-zero values for the auto-correlation function. + + + + + + + + + + + + + + + + +## Correlation function and which random number generators should I use +The program here computes the correlation function for one of the standard functions included with the c++ compiler. + + // This function computes the autocorrelation function for + // the standard c++ random number generator + + #include + #include + #include + #include + using namespace std; + // output file as global variable + ofstream ofile; + + // Main function begins here + int main(int argc, char* argv[]) + { + int n; + char *outfilename; + + cin >> n; + double MCint = 0.; double MCintsqr2=0.; + double invers_period = 1./RAND_MAX; // initialise the random number generator + srand(time(NULL)); // This produces the so-called seed in MC jargon + // Compute the variance and the mean value of the uniform distribution + // Compute also the specific values x for each cycle in order to be able to + // the covariance and the correlation function + // Read in output file, abort if there are too few command-line arguments + if( argc <= 2 ){ + cout << "Bad Usage: " << argv[0] << + " read also output file and number of cycles on same line" << endl; + exit(1); + } + else{ + outfilename=argv[1]; + } + ofile.open(outfilename); + // Get the number of Monte-Carlo samples + n = atoi(argv[2]); + double *X; + X = new double[n]; + for (int i = 0; i < n; i++){ + double x = double(rand())*invers_period; + X[i] = x; + MCint += x; + MCintsqr2 += x*x; + } + double Mean = MCint/((double) n ); + MCintsqr2 = MCintsqr2/((double) n ); + double STDev = sqrt(MCintsqr2-Mean*Mean); + double Variance = MCintsqr2-Mean*Mean; + // Write mean value and standard deviation + cout << " Standard deviation= " << STDev << " Integral = " << Mean << endl; + + // Now we compute the autocorrelation function + double *autocor; autocor = new double[n]; + for (int j = 0; j < n; j++){ + double sum = 0.0; + for (int k = 0; k < (n-j); k++){ + sum += (X[k]-Mean)*(X[k+j]-Mean); + } + autocor[j] = sum/Variance/((double) n ); + ofile << setiosflags(ios::showpoint | ios::uppercase); + ofile << setw(15) << setprecision(8) << j; + ofile << setw(15) << setprecision(8) << autocor[j] << endl; + } + ofile.close(); // close output file + return 0; + } // end of main program + + +# Which RNG should I use? +* C++ has a class called **random**. The [random class](http://www.cplusplus.com/reference/random/) contains a large selection of RNGs and is highly recommended. Some of these RNGs have very large periods making it thereby very safe to use these RNGs in case one is performing large calculations. In particular, the [Mersenne twister random number engine](http://www.cplusplus.com/reference/random/mersenne_twister_engine/) has a period of $2^{19937}$. + +* Add RNGs in Python + + + + +## How to use the Mersenne generator +The following part of a c++ code (from project 4) sets up the uniform distribution for $x\in [0,1]$. + + /* + + // You need this + #include + + // Initialize the seed and call the Mersienne algo + std::random_device rd; + std::mt19937_64 gen(rd()); + // Set up the uniform distribution for x \in [[0, 1] + std::uniform_real_distribution RandomNumberGenerator(0.0,1.0); + + // Now use the RNG + int ix = (int) (RandomNumberGenerator(gen)*NSpins); + + +## Why blocking? +**Statistical analysis.** + + * Monte Carlo simulations can be treated as *computer experiments* + + * The results can be analysed with the same statistical tools as we would use analysing experimental data. + + * As in all experiments, we are looking for expectation values and an estimate of how accurate they are, i.e., possible sources for errors. + +A very good article which explains blocking is H. Flyvbjerg and H. G. Petersen, *Error estimates on averages of correlated data*, [Journal of Chemical Physics 91, 461-466 (1989)](http://scitation.aip.org/content/aip/journal/jcp/91/1/10.1063/1.457480). + + + + + +## Why blocking? +**Statistical analysis.** + + * As in other experiments, Monte Carlo experiments have two classes of errors: + + * Statistical errors + + * Systematical errors + + + * Statistical errors can be estimated using standard tools from statistics + + * Systematical errors are method specific and must be treated differently from case to case. (In VMC a common source is the step length or time step in importance sampling) + + + + +## Code to demonstrate the calculation of the autocorrelation function +The following code computes the autocorrelation function, the covariance and the standard deviation +for standard RNG. +The [following file](https://github.com/CompPhysics/ComputationalPhysics2/tree/gh-pages/doc/Programs/LecturePrograms/programs/Blocking/autocorrelation.cpp) gives the code. + + // This function computes the autocorrelation function for + // the Mersenne random number generator with a uniform distribution + #include + #include + #include + #include + #include + #include + #include + #include + using namespace std; + using namespace arma; + // output file + ofstream ofile; + + // Main function begins here + int main(int argc, char* argv[]) + { + int MonteCarloCycles; + string filename; + if (argc > 1) { + filename=argv[1]; + MonteCarloCycles = atoi(argv[2]); + string fileout = filename; + string argument = to_string(MonteCarloCycles); + fileout.append(argument); + ofile.open(fileout); + } + + // Compute the variance and the mean value of the uniform distribution + // Compute also the specific values x for each cycle in order to be able to + // compute the covariance and the correlation function + + vec X = zeros(MonteCarloCycles); + double MCint = 0.; double MCintsqr2=0.; + std::random_device rd; + std::mt19937_64 gen(rd()); + // Set up the uniform distribution for x \in [[0, 1] + std::uniform_real_distribution RandomNumberGenerator(0.0,1.0); + for (int i = 0; i < MonteCarloCycles; i++){ + double x = RandomNumberGenerator(gen); + X(i) = x; + MCint += x; + MCintsqr2 += x*x; + } + double Mean = MCint/((double) MonteCarloCycles ); + MCintsqr2 = MCintsqr2/((double) MonteCarloCycles ); + double STDev = sqrt(MCintsqr2-Mean*Mean); + double Variance = MCintsqr2-Mean*Mean; + // Write mean value and variance + cout << " Sample variance= " << Variance << " Mean value = " << Mean << endl; + // Now we compute the autocorrelation function + vec autocorrelation = zeros(MonteCarloCycles); + for (int j = 0; j < MonteCarloCycles; j++){ + double sum = 0.0; + for (int k = 0; k < (MonteCarloCycles-j); k++){ + sum += (X(k)-Mean)*(X(k+j)-Mean); + } + autocorrelation(j) = sum/Variance/((double) MonteCarloCycles ); + ofile << setiosflags(ios::showpoint | ios::uppercase); + ofile << setw(15) << setprecision(8) << j; + ofile << setw(15) << setprecision(8) << autocorrelation(j) << endl; + } + // Now compute the exact covariance using the autocorrelation function + double Covariance = 0.0; + for (int j = 0; j < MonteCarloCycles; j++){ + Covariance += autocorrelation(j); + } + Covariance *= 2.0/((double) MonteCarloCycles); + // Compute now the total variance, including the covariance, and obtain the standard deviation + double TotalVariance = (Variance/((double) MonteCarloCycles ))+Covariance; + cout << "Covariance =" << Covariance << "Totalvariance= " << TotalVariance << "Sample Variance/n= " << (Variance/((double) MonteCarloCycles )) << endl; + cout << " STD from sample variance= " << sqrt(Variance/((double) MonteCarloCycles )) << " STD with covariance = " << sqrt(TotalVariance) << endl; + + ofile.close(); // close output file + return 0; + } // end of main program + + + + +## What is blocking? +**Blocking.** + + * Say that we have a set of samples from a Monte Carlo experiment + + * Assuming (wrongly) that our samples are uncorrelated our best estimate of the standard deviation of the mean $\langle \mathbf{M}\rangle$ is given by + +$$ +\sigma=\sqrt{\frac{1}{n}\left(\langle \mathbf{M}^2\rangle-\langle \mathbf{M}\rangle^2\right)} +$$ + +* If the samples are correlated we can rewrite our results to show that + +$$ +\sigma=\sqrt{\frac{1+2\tau/\Delta t}{n}\left(\langle \mathbf{M}^2\rangle-\langle \mathbf{M}\rangle^2\right)} +$$ + +where $\tau$ is the correlation time (the time between a sample and the next uncorrelated sample) and $\Delta t$ is time between each sample + + + +## What is blocking? +**Blocking.** + + * If $\Delta t\gg\tau$ our first estimate of $\sigma$ still holds + + * Much more common that $\Delta t<\tau$ + + * In the method of data blocking we divide the sequence of samples into blocks + + * We then take the mean $\langle \mathbf{M}_i\rangle$ of block $i=1\ldots n_{blocks}$ to calculate the total mean and variance + + * The size of each block must be so large that sample $j$ of block $i$ is not correlated with sample $j$ of block $i+1$ + + * The correlation time $\tau$ would be a good choice + + + +## What is blocking? +**Blocking.** + + * Problem: We don't know $\tau$ or it is too expensive to compute + + * Solution: Make a plot of std. dev. as a function of blocksize + + * The estimate of std. dev. of correlated data is too low $\to$ the error will increase with increasing block size until the blocks are uncorrelated, where we reach a plateau + + * When the std. dev. stops increasing the blocks are uncorrelated + + + +## Implementation + * Do a Monte Carlo simulation, storing all samples to file + + * Do the statistical analysis on this file, independently of your Monte Carlo program + + * Read the file into an array + + * Loop over various block sizes + + * For each block size $n_b$, loop over the array in steps of $n_b$ taking the mean of elements $i n_b,\ldots,(i+1) n_b$ + + * Take the mean and variance of the resulting array + + * Write the results for each block size to file for later + analysis + + + + + + + +## Actual implementation with code, main function +When the file gets large, it can be useful to write your data in binary mode instead of ascii characters. +The [following python file](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py) reads data from file with the output from every Monte Carlo cycle. + +# Blocking + @timeFunction + def blocking(self, blockSizeMax = 500): + blockSizeMin = 1 + + self.blockSizes = [] + self.meanVec = [] + self.varVec = [] + + for i in range(blockSizeMin, blockSizeMax): + if(len(self.data) % i != 0): + pass#continue + blockSize = i + meanTempVec = [] + varTempVec = [] + startPoint = 0 + endPoint = blockSize + + while endPoint <= len(self.data): + meanTempVec.append(np.average(self.data[startPoint:endPoint])) + startPoint = endPoint + endPoint += blockSize + mean, var = np.average(meanTempVec), np.var(meanTempVec)/len(meanTempVec) + self.meanVec.append(mean) + self.varVec.append(var) + self.blockSizes.append(blockSize) + + self.blockingAvg = np.average(self.meanVec[-200:]) + self.blockingVar = (np.average(self.varVec[-200:])) + self.blockingStd = np.sqrt(self.blockingVar) + +## The Bootstrap method + +The Bootstrap resampling method is also very popular. It is very simple: + +1. Start with your sample of measurements and compute the sample variance and the mean values + +2. Then start again but pick in a random way the numbers in the sample and recalculate the mean and the sample variance. + +3. Repeat this $K$ times. + +It can be shown, see the article by [Efron](https://projecteuclid.org/download/pdf_1/euclid.aos/1176344552) +that it produces the correct standard deviation. + +This method is very useful for small ensembles of data points. + + +## Bootstrapping +Given a set of $N$ data, assume that we are interested in some +observable $\theta$ which may be estimated from that set. This observable can also be for example the result of a fit based on all $N$ raw data. +Let us call the value of the observable obtained from the original +data set $\hat{\theta}$. One recreates from the sample repeatedly +other samples by choosing randomly $N$ data out of the original set. +This costs essentially nothing, since we just recycle the original data set for the building of new sets. + + +## Bootstrapping, recipe +Let us assume we have done this $K$ times and thus have $K$ sets of $N$ +data values each. +Of course some values will enter more than once in the new sets. For each of these sets one computes the observable $\theta$ resulting in values $\theta_k$ with $k = 1,...,K$. Then one determines + +$$ +\tilde{\theta} = \frac{1}{K} \sum_{k=1}^K \theta_k, +$$ + +and + +$$ +sigma^2_{\tilde{\theta}} = \frac{1}{K} \sum_{k=1}^K \left(\theta_k-\tilde{\theta}\right)^2. +$$ + +These are estimators for $\angle\theta\rangle$ and its variance. They are not unbiased and therefore +$\tilde{\theta}\neq\hat{\theta}$ for finite K. + +The difference is called bias and gives an idea on how far away the result may be from +the true $\angle\theta\rangle$. As final result for the observable one quotes $\angle\theta\rangle = \tilde{\theta} \pm \sigma_{\tilde{\theta}}$ . + + + +## Bootstrapping, [code](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py) + + # Bootstrap + @timeFunction + def bootstrap(self, nBoots = 1000): + bootVec = np.zeros(nBoots) + for k in range(0,nBoots): + bootVec[k] = np.average(np.random.choice(self.data, len(self.data))) + self.bootAvg = np.average(bootVec) + self.bootVar = np.var(bootVec) + self.bootStd = np.std(bootVec) + + + +## Jackknife, [code](https://github.com/CompPhysics/MachineLearning/blob/master/doc/Programs/Sampling/analysis.py) + + # Jackknife + @timeFunction + def jackknife(self): + jackknVec = np.zeros(len(self.data)) + for k in range(0,len(self.data)): + jackknVec[k] = np.average(np.delete(self.data, k)) + self.jackknAvg = self.avg - (len(self.data) - 1) * (np.average(jackknVec) - self.avg) + self.jackknVar = float(len(self.data) - 1) * np.var(jackknVec) + self.jackknStd = np.sqrt(self.jackknVar) diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter3_178_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_178_0.png new file mode 100644 index 000000000..e0dacc37f Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_178_0.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter3_184_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_184_1.png new file mode 100644 index 000000000..06bf49bb5 Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_184_1.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter3_29_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_29_0.png new file mode 100644 index 000000000..aa693ddeb Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter3_29_0.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/chapter4.ipynb similarity index 96% rename from doc/src/LectureNotes/_build/jupyter_execute/regression.ipynb rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4.ipynb index a45d89f07..88dd21f52 100644 --- a/doc/src/LectureNotes/_build/jupyter_execute/regression.ipynb +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter4.ipynb @@ -1085,7 +1085,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_70_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_70_0.png" }, "needs_background": "light" }, @@ -1611,7 +1611,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_117_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_117_1.png" }, "needs_background": "light" }, @@ -1742,13 +1742,13 @@ "output_type": "stream", "text": [ "Training R2\n", - "0.9999909942655069\n", + "0.9999941778221182\n", "Training MSE\n", - "4.080219047317478\n", + "2.1663059697316176\n", "Test R2\n", - "0.9999405860292051\n", + "0.9999188193958993\n", "Test MSE\n", - "23.995899617131318\n" + "57.32209754560856\n" ] } ], @@ -1991,7 +1991,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_129_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_129_0.png" } }, "output_type": "display_data" @@ -2021,7 +2021,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 16, @@ -2037,7 +2037,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_131_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_131_1.png" } }, "output_type": "display_data" @@ -2072,7 +2072,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_133_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_133_0.png" } }, "output_type": "display_data" @@ -2223,7 +2223,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_140_0.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_140_0.png" } }, "output_type": "display_data" @@ -2321,27 +2321,27 @@ "MSE before scaling: 0.00\n", "R2 score before scaling 0.99\n", "Feature min values before scaling:\n", - " [1.00000000e+00 2.70650053e-04 1.70425352e-03 7.32514510e-08\n", - " 4.61256305e-07 2.90448006e-06 1.98255091e-11 1.24839043e-10\n", - " 7.86097682e-10 4.94997037e-09 5.36577508e-15 3.37876937e-14\n", - " 2.12757379e-13 1.33970974e-12 8.43600443e-12 1.45224731e-18\n", - " 9.14464107e-18 5.75827959e-17 3.62592512e-16 2.28320505e-15\n", - " 1.43770903e-14]\n", + " [1.00000000e+00 3.31070195e-03 4.26950921e-04 1.09607474e-05\n", + " 1.41350724e-06 1.82287089e-07 3.62877676e-08 4.67970118e-09\n", + " 6.03498219e-10 7.78276403e-11 1.20137983e-10 1.54930958e-11\n", + " 1.99800273e-12 2.57664120e-13 3.32285826e-14 3.97741054e-13\n", + " 5.12930224e-14 6.61479151e-15 8.53049103e-16 1.10009933e-16\n", + " 1.41869739e-17]\n", "Feature max values before scaling:\n", - " [1. 0.99958956 0.99908436 0.99917929 0.9986743 0.99816955\n", - " 0.99876919 0.9982644 0.99775987 0.99725559 0.99835926 0.99785468\n", - " 0.99735035 0.99684628 0.99634246 0.9979495 0.99744512 0.996941\n", - " 0.99643713 0.99593352 0.99543016]\n", + " [1. 0.99858638 0.99964819 0.99717477 0.99823507 0.99929651\n", + " 0.99576514 0.99682395 0.99788388 0.99894494 0.99435752 0.99541483\n", + " 0.99647326 0.99753282 0.99859351 0.99295188 0.99400769 0.99506463\n", + " 0.99612269 0.99718188 0.99824219]\n", "Feature min values after scaling:\n", - " [ 0. -1.76022296 -1.83404211 -1.14581009 -1.16015297 -1.17531975\n", - " -0.90221667 -0.9105284 -0.91876649 -0.92694434 -0.76295619 -0.76977308\n", - " -0.77649633 -0.78311771 -0.78962976 -0.66997319 -0.67600919 -0.68199208\n", - " -0.68791314 -0.69376357 -0.69953457]\n", + " [ 0. -1.7247216 -1.76366767 -1.11821924 -1.1207329 -1.12330932\n", + " -0.88380004 -0.88090074 -0.87801917 -0.87516765 -0.75358163 -0.74975133\n", + " -0.74594528 -0.74216924 -0.73842878 -0.66775774 -0.66415352 -0.66058072\n", + " -0.65704182 -0.65353917 -0.65007499]\n", "Feature max values after scaling:\n", - " [0. 1.73102381 1.68493089 2.26096593 2.20791419 2.15452546\n", - " 2.69341363 2.64475059 2.59522254 2.54488068 3.06558633 3.02242943\n", - " 2.97825315 2.93307898 2.88693235 3.394687 3.35696162 3.31817404\n", - " 3.27832771 3.23742905 3.19548764]\n", + " [0. 1.71439421 1.7725581 2.19850437 2.24574687 2.29247479\n", + " 2.59145801 2.63154972 2.67112014 2.71016871 2.93008405 2.96590898\n", + " 3.00128975 3.03623229 3.07074298 3.23004415 3.26340549 3.29641768\n", + " 3.32908665 3.36141837 3.39341886]\n", "MSE after scaling: 0.00\n", "R2 score for scaled data: 0.99\n" ] @@ -3578,10 +3578,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "-0.03657945968920499\n", - "4.0843822059793204\n", - "[[ 1.07379261 3.24702637]\n", - " [ 3.24702637 10.84879359]]\n" + "0.04144248019085487\n", + "4.194659964041423\n", + "[[ 1.10772753 3.41408669]\n", + " [ 3.41408669 11.38266616]]\n" ] } ], @@ -3620,10 +3620,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "0.08730525680217946\n", - "1.6300895034092742\n", - "[[1. 0.67148001]\n", - " [0.67148001 1. ]]\n" + "0.09052813127366242\n", + "1.5055457430392476\n", + "[[1. 0.56806976]\n", + " [0.56806976 1. ]]\n" ] } ], @@ -3675,30 +3675,30 @@ "name": "stdout", "output_type": "stream", "text": [ - "[[-1.48148987 -4.42262915]\n", - " [ 1.83374146 3.45946449]\n", - " [-0.23090678 -0.72931901]\n", - " [-1.13123132 -3.0478547 ]\n", - " [-0.21545509 -0.5847631 ]\n", - " [ 2.42510042 7.54666425]\n", - " [-0.3841726 -0.06507766]\n", - " [-0.47611774 -0.92923474]\n", - " [ 1.09099713 3.18436382]\n", - " [-1.43046561 -4.4116142 ]]\n", + "[[ 0.19619662 -0.78402323]\n", + " [ 0.31757369 1.22304781]\n", + " [-0.69338544 -1.67201132]\n", + " [-0.83049344 -3.62540546]\n", + " [ 1.07466493 3.158262 ]\n", + " [-0.63779754 -0.28923407]\n", + " [-0.50263516 -2.66065903]\n", + " [ 0.59499124 1.87464536]\n", + " [-0.05490614 0.80385431]\n", + " [ 0.53579124 1.97152362]]\n", " 0 1\n", - "0 -1.481490 -4.422629\n", - "1 1.833741 3.459464\n", - "2 -0.230907 -0.729319\n", - "3 -1.131231 -3.047855\n", - "4 -0.215455 -0.584763\n", - "5 2.425100 7.546664\n", - "6 -0.384173 -0.065078\n", - "7 -0.476118 -0.929235\n", - "8 1.090997 3.184364\n", - "9 -1.430466 -4.411614\n", + "0 0.196197 -0.784023\n", + "1 0.317574 1.223048\n", + "2 -0.693385 -1.672011\n", + "3 -0.830493 -3.625405\n", + "4 1.074665 3.158262\n", + "5 -0.637798 -0.289234\n", + "6 -0.502635 -2.660659\n", + "7 0.594991 1.874645\n", + "8 -0.054906 0.803854\n", + "9 0.535791 1.971524\n", " 0 1\n", - "0 1.000000 0.981231\n", - "1 0.981231 1.000000\n" + "0 1.000000 0.896919\n", + "1 0.896919 1.000000\n" ] } ], @@ -3738,37 +3738,37 @@ "text": [ " 0 1 2 3 4 5 6 7 \\\n", "0 0.0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "1 0.0 0.087277 0.086036 0.090334 0.089428 0.088628 0.082923 0.082097 \n", - "2 0.0 0.086036 0.085851 0.090718 0.090454 0.090258 0.084323 0.083962 \n", - "3 0.0 0.090334 0.090718 0.098733 0.098573 0.098477 0.093678 0.093287 \n", - "4 0.0 0.089428 0.090454 0.098573 0.098881 0.099227 0.094140 0.094116 \n", - "5 0.0 0.088628 0.090258 0.098477 0.099227 0.099993 0.094625 0.094948 \n", - "6 0.0 0.082923 0.084323 0.093678 0.094140 0.094625 0.090901 0.090954 \n", - "7 0.0 0.082097 0.083962 0.093287 0.094116 0.094948 0.090954 0.091305 \n", - "8 0.0 0.081413 0.083717 0.093019 0.094195 0.095358 0.091098 0.091731 \n", - "9 0.0 0.080864 0.083585 0.092870 0.094377 0.095856 0.091331 0.092235 \n", - "10 0.0 0.074520 0.076481 0.086093 0.086978 0.087856 0.084942 0.085332 \n", - "11 0.0 0.073878 0.076197 0.085738 0.086916 0.088073 0.084912 0.085545 \n", - "12 0.0 0.073365 0.076024 0.085504 0.086962 0.088386 0.084981 0.085846 \n", - "13 0.0 0.072973 0.075959 0.085386 0.087113 0.088793 0.085145 0.086233 \n", - "14 0.0 0.072698 0.075997 0.085382 0.087366 0.089294 0.085403 0.086704 \n", + "1 0.0 0.089183 0.084797 0.089147 0.085535 0.082266 0.080527 0.077480 \n", + "2 0.0 0.084797 0.082978 0.087978 0.085822 0.083785 0.081609 0.079503 \n", + "3 0.0 0.089147 0.087978 0.094876 0.092810 0.090814 0.088924 0.086714 \n", + "4 0.0 0.085535 0.085822 0.092810 0.091736 0.090594 0.088276 0.086777 \n", + "5 0.0 0.082266 0.083785 0.090814 0.090594 0.090194 0.087493 0.086618 \n", + "6 0.0 0.080527 0.081609 0.088924 0.088276 0.087493 0.085397 0.084155 \n", + "7 0.0 0.077480 0.079503 0.086714 0.086777 0.086618 0.084155 0.083459 \n", + "8 0.0 0.074802 0.077623 0.084723 0.085401 0.085786 0.082993 0.082776 \n", + "9 0.0 0.072449 0.075952 0.082939 0.084154 0.085015 0.081923 0.082128 \n", + "10 0.0 0.071557 0.073969 0.080992 0.081340 0.081431 0.079151 0.078671 \n", + "11 0.0 0.069117 0.072168 0.079031 0.079900 0.080455 0.077870 0.077808 \n", + "12 0.0 0.066984 0.070584 0.077297 0.078621 0.079584 0.076722 0.077031 \n", + "13 0.0 0.065125 0.069200 0.075772 0.077496 0.078821 0.075706 0.076344 \n", + "14 0.0 0.063508 0.067997 0.074439 0.076518 0.078164 0.074816 0.075749 \n", "\n", " 8 9 10 11 12 13 14 \n", "0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n", - "1 0.081413 0.080864 0.074520 0.073878 0.073365 0.072973 0.072698 \n", - "2 0.083717 0.083585 0.076481 0.076197 0.076024 0.075959 0.075997 \n", - "3 0.093019 0.092870 0.086093 0.085738 0.085504 0.085386 0.085382 \n", - "4 0.094195 0.094377 0.086978 0.086916 0.086962 0.087113 0.087366 \n", - "5 0.095358 0.095856 0.087856 0.088073 0.088386 0.088793 0.089294 \n", - "6 0.091098 0.091331 0.084942 0.084912 0.084981 0.085145 0.085403 \n", - "7 0.091731 0.092235 0.085332 0.085545 0.085846 0.086233 0.086704 \n", - "8 0.092427 0.093188 0.085784 0.086229 0.086751 0.087351 0.088028 \n", - "9 0.093188 0.094197 0.086299 0.086966 0.087701 0.088506 0.089381 \n", - "10 0.085784 0.086299 0.080425 0.080656 0.080963 0.081344 0.081799 \n", - "11 0.086229 0.086966 0.080656 0.081089 0.081588 0.082154 0.082787 \n", - "12 0.086751 0.087701 0.080963 0.081588 0.082272 0.083016 0.083820 \n", - "13 0.087351 0.088506 0.081344 0.082154 0.083016 0.083931 0.084901 \n", - "14 0.088028 0.089381 0.081799 0.082787 0.083820 0.084901 0.086033 \n" + "1 0.074802 0.072449 0.071557 0.069117 0.066984 0.065125 0.063508 \n", + "2 0.077623 0.075952 0.073969 0.072168 0.070584 0.069200 0.067997 \n", + "3 0.084723 0.082939 0.080992 0.079031 0.077297 0.075772 0.074439 \n", + "4 0.085401 0.084154 0.081340 0.079900 0.078621 0.077496 0.076518 \n", + "5 0.085786 0.085015 0.081431 0.080455 0.079584 0.078821 0.078164 \n", + "6 0.082993 0.081923 0.079151 0.077870 0.076722 0.075706 0.074816 \n", + "7 0.082776 0.082128 0.078671 0.077808 0.077031 0.076344 0.075749 \n", + "8 0.082517 0.082246 0.078172 0.077682 0.077236 0.076846 0.076519 \n", + "9 0.082246 0.082311 0.077682 0.077525 0.077378 0.077256 0.077172 \n", + "10 0.078172 0.077682 0.074339 0.073633 0.072989 0.072416 0.071916 \n", + "11 0.077682 0.077525 0.073633 0.073260 0.072914 0.072607 0.072349 \n", + "12 0.077236 0.077378 0.072989 0.072914 0.072835 0.072771 0.072733 \n", + "13 0.076846 0.077256 0.072416 0.072607 0.072771 0.072926 0.073089 \n", + "14 0.076519 0.077172 0.071916 0.072349 0.072733 0.073089 0.073437 \n" ] } ], @@ -4352,10 +4352,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Runtime: 0.430137 sec\n", + "Runtime: 0.389789 sec\n", "Jackknife Statistics :\n", "original bias std. error\n", - " 100.065 100.055 0.149964\n" + " 100.259 100.249 0.149656\n" ] } ], @@ -4504,10 +4504,10 @@ "name": "stdout", "output_type": "stream", "text": [ - "Runtime: 2.02866 sec\n", + "Runtime: 2.00056 sec\n", "Bootstrap Statistics :\n", "original bias std. error\n", - " 100.052 15.0878 100.051 0.150313\n" + " 99.9087 15.0416 99.9098 0.150465\n" ] }, { @@ -4529,14 +4529,14 @@ }, { "data": { - "image/png": "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51GqkVyfWq2Wb33rW/nQhz6UJGlpaclf/uVfju4JvYi4nUTmz5+f733ve/nlL3+Z3t7ePPbYY1mwYEGeeOKJPPfcc+nv709HR0f2799/zO2eeeaZ/NZv/VbWr1+fyy67LDfccEOmTZs2RmdRrle7Pkly44035stf/nIuuuii3HffffngBz84BmdQnk984hM5//zzB7/et29fKpXK4NfVajWdnZ3HHa9UKuns7Dzu+714XGNjY04//fQ8//zzdTyDso30+rS1tWXq1KlJkrvvvjvveMc76jj78o30+jz55JP5wQ9+kD/+4z+u78QniWS1w7EAAAQSSURBVJFcnwMHDmT69Ol58MEH8573vCcrV65Mf39//U/iFYjbSWThwoVpa2vL1VdfnQ984AM577zzMnPmzKxevTrXX399rrrqqrzpTW86Llz7+vryk5/8JG9729vyjW98I29/+9tz6623jtFZlOvVrk+S/Pmf/3k+9rGP5bvf/W7uuOOOfOQjH0nN57OMuIGBgTQ0NAx+XavV0tDQ8IrHT6ZWq2XKFA/DI2Uk1qdWq+VTn/pUnnjiiaxZs6buc55MTmV9Dh8+nDvuuCN33nmn+0ydnMr69Pf3Z//+/Wlubs7f/u3f5tprr82HP/zhUZv7S/kTMol0d3dn8eLF2bp1ax544IFMnz49r33ta/PmN7853/zmN/O1r30tr33tazNnzpxjblepVHLaaafl4osvTvLrf07dtWvXWJxC0V7t+jz//PP5+c9/Pvgq05IlS9LV1ZVf/OIXY3EaRZs1a9YxF4F1dXWlWq0ed3z//v2D/9T3YtVqdfCV976+vrzwwgt5zWteU/+JTxKnuj59fX356Ec/mn/7t3/L/fffn+bm5lGZ92RxKuvz+OOP58CBA7n++uuzYsWKwYucf/7zn4/a/Et3Kutz5plnprGxMcuXL0+SXHjhhfnVr36VAwcOjM7kX0LcTiLPPvts/uRP/iR9fX05dOhQNm/enBUrVuR973tfuru7c+TIkXzlK1/JJZdccsztfvu3fzuzZs3K9u3bkyTf/va3M3/+/LE4haK92vU588wz09TUlMcffzxJsnPnzpx22mk566yzxuI0inbuuefmqaeeyp49e9Lf359t27alpaUls2fPTlNTU3bu3JkkaW9vT0tLy3G3X7RoUb75zW8mSR555JGcf/75tviMoFNdn0996lPp7u7OfffdJ2zr4FTW56KLLspjjz2W9vb2tLe3p1qt5otf/GJe//rXj8WpFOlU1mf69Om54IIL8nd/93dJkh/96EeZOXPmmO2NbhyTn8qYmDdvXhYvXpx3vetd6e/vz/ve976cd955+fCHP5z3vOc96evry/LlywcveFm7dm3+8A//MG9/+9vzuc99Lrfffns+85nP5PTTT8/69evH+GzKcyrrc8899+TjH/94enp6ctppp+Vzn/vcGJ9NmZqamrJ+/fqsWrUqvb29WbRoUZYuXZok2bBhQ9atW5fu7u7Mnz8/K1euTJJ89rOfTbVazXvf+97ceOONufXWW7Ns2bI0Nzdnw4YNY3k6xTmV9VmyZEm++tWv5nWve13e/e53D37P9vb2MTmXEp3q/Yf6OtX1+cQnPpHbbrstDz74YBobG7Nx48Yx20LSULMxDwCAQtiWAABAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUIz/Dzv4ya0HUvR8AAAAAElFTkSuQmCC\n", + "image/png": "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3JFly5bl0KFDqVQqI9+vVqvp7u4+6XilUkl3d/eoJnT++XNGNZ6xV6k0T/QUeBLrAeUq6f5d0rmc66b6WtQVt0nywQ9+MO9+97vz3ve+Nw8//HAaGhpGvler1dLQ0JDh4eGnPT4aR470ZXi4NqrbMHYqleb09PRO9DT4lamyHs3nzc6sprofjqAYpdy/p8pj1blgKqzFtGkNz/pi6CmfTX7605/m+PHj+YM/+IPMnj07S5YsSVdXV6ZPnz4ypqenJ9VqNXPnzk1PT8/I8cOHD6darZ7hKQClm9XUmPa1nXWP33HLynGcDQDnslPuuX300UezYcOGHD9+PMePH8+3v/3trFq1Kg899FAOHDiQoaGh7Ny5M62trZk3b16ampqyd+/eJElnZ2daW1vH/SQAACCp45Xbtra27Nu3L29605syffr0LFmyJMuXL88LXvCCrFmzJgMDA2lra8uyZcuSJJs3b86GDRvS19eXRYsWZfXq1eN+EgAAkNS553bNmjVZs2bNU44tXrw427dvP2nswoULs23btrGZHQAAjIIrlAEAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFaJzoCQDlaT5vdmY1eXgB4Ozz7AOMuVlNjWlf21n3+B23rBzH2QAwldiWAABAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABSjcaInAABT0fETQ6lUmuseP3B8KE0zp9c9vn9gML1Hj53O1OCcJm4BYALMnDE97Ws76x6/45aVox7fezoTg3OcbQkAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMcQtAADFELcAABRD3AIAUAxxCwBAMRonegLAuaH5vNmZ1eQhA4DJzTMVUJdZTY1pX9tZ19gdt6wc59kAwNOra1vCZz/72SxfvjzLly/PX//1XydJ9uzZk/b29ixZsiRbtmwZGbt///50dHRk6dKlWb9+fQYHB8dn5gAA8BtOGbd79uzJ97///dx999355je/mf/8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vva1r+WFL3xh5s+f/5Tbffe7383Pf/7zkTcDJMnKlStH/imW03O661GpVPLc5z43l1xySZJf/nPrvn37JuIUinG6a/H444/nZz/72cirUEuXLk1PT0/+93//dyJOozhz5859ypvAenp6Uq1WTzp++PDhkX+ufbJqtTryavvg4GCeeOKJPO95zxv/iRfoTNdicHAwH/7wh/Mf//Ef+dKXvpTm5uazMu9Sncl63HfffTly5Eje9773ZeXKlSNvUP7Zz3521uZ/NojbKeLRRx/Nn//5n2dwcDC9vb3Ztm1bVq5cmbe//e3p6+vL8ePH8+UvfzmXXXbZU2735je/Od/61rfS2dmZzs7OJElnZ2fmzJkzEadRjNNdj9/5nd/J3Llzs3v37iTJd77znSxatGgiTqEYp7sWz3/+89PU1JT77rsvSbJ3794897nPzQte8IKJOI3iXHDBBXnooYdy4MCBDA0NZefOnWltbc28efPS1NSUvXv3Jvnl41Fra+tJt29ra8s3v/nNJMmuXbty0UUX2cJzms50LT71qU+lr68vd9xxh7AdA2eyHhdffHHuvffekef0arWaz3/+83nJS14yEacybhonegKcHQsXLsySJUvyxje+MUNDQ3n729+eCy+8MO9///vzlre8JYODg1mxYsXIGzDWr1+f173udXn9618/wTMv05msx2c+85ncdNNN+Zu/+ZvMmTMnmzZtmuCzObedyVp89rOfzcc//vH09/fnuc99bj7zmc9M8NmUo6mpKZs2bcqaNWsyMDCQtra2kX3/mzdvzoYNG9LX15dFixZl9erVSZJPf/rTqVarufLKK/OhD30oN9xwQ5YvX57m5uZs3rx5Ik/nnHYma7F06dJ85StfyYtf/OK8+c1vHvk9f/1iCaN3pveNqaChZoMYAACFsC0BAIBiiFsAAIohbgEAKIa4BQCgGOIWAIBiiFsAAIohbgEAKMb/B8XEPABGFeeNAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_278_2.png" } }, "output_type": "display_data" @@ -5151,7 +5151,7 @@ }, "metadata": { "filenames": { - "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/regression_300_1.png" + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter4_300_1.png" } }, "output_type": "display_data" diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression.py b/doc/src/LectureNotes/_build/jupyter_execute/chapter4.py similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression.py rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4.py diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_117_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_117_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_117_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_117_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_129_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_129_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_129_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_129_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_131_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_131_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_131_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_131_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_133_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_133_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_133_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_133_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_140_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_140_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_140_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_140_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter4_278_2.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_278_2.png new file mode 100644 index 000000000..75ce0a5ee Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_278_2.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_300_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_300_1.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_300_1.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_300_1.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_70_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter4_70_0.png similarity index 100% rename from doc/src/LectureNotes/_build/jupyter_execute/regression_70_0.png rename to doc/src/LectureNotes/_build/jupyter_execute/chapter4_70_0.png diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/chapter5.ipynb new file mode 100644 index 000000000..7e94d90d3 --- /dev/null +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter5.ipynb @@ -0,0 +1,893 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "# Data Analysis and Machine Learning: Logistic Regression\n", + "\n", + " \n", + "**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University\n", + "\n", + "Date: **Oct 17, 2019**\n", + "\n", + "Copyright 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "## Logistic Regression\n", + "\n", + "In linear regression our main interest was centered on learning the\n", + "coefficients of a functional fit (say a polynomial) in order to be\n", + "able to predict the response of a continuous variable on some unseen\n", + "data. The fit to the continuous variable $y_i$ is based on some\n", + "independent variables $\\hat{x}_i$. Linear regression resulted in\n", + "analytical expressions for standard ordinary Least Squares or Ridge\n", + "regression (in terms of matrices to invert) for several quantities,\n", + "ranging from the variance and thereby the confidence intervals of the\n", + "parameters $\\hat{\\beta}$ to the mean squared error. If we can invert\n", + "the product of the design matrices, linear regression gives then a\n", + "simple recipe for fitting our data.\n", + "\n", + "\n", + "Classification problems, however, are concerned with outcomes taking\n", + "the form of discrete variables (i.e. categories). We may for example,\n", + "on the basis of DNA sequencing for a number of patients, like to find\n", + "out which mutations are important for a certain disease; or based on\n", + "scans of various patients' brains, figure out if there is a tumor or\n", + "not; or given a specific physical system, we'd like to identify its\n", + "state, say whether it is an ordered or disordered system (typical\n", + "situation in solid state physics); or classify the status of a\n", + "patient, whether she/he has a stroke or not and many other similar\n", + "situations.\n", + "\n", + "The most common situation we encounter when we apply logistic\n", + "regression is that of two possible outcomes, normally denoted as a\n", + "binary outcome, true or false, positive or negative, success or\n", + "failure etc.\n", + "\n", + "## Optimization and Deep learning\n", + "\n", + "Logistic regression will also serve as our stepping stone towards\n", + "neural network algorithms and supervised deep learning. For logistic\n", + "learning, the minimization of the cost function leads to a non-linear\n", + "equation in the parameters $\\hat{\\beta}$. The optimization of the\n", + "problem calls therefore for minimization algorithms. This forms the\n", + "bottle neck of all machine learning algorithms, namely how to find\n", + "reliable minima of a multi-variable function. This leads us to the\n", + "family of gradient descent methods. The latter are the working horses\n", + "of basically all modern machine learning algorithms.\n", + "\n", + "We note also that many of the topics discussed here on logistic \n", + "regression are also commonly used in modern supervised Deep Learning\n", + "models, as we will see later.\n", + "\n", + "\n", + "\n", + "## Basics\n", + "\n", + "We consider the case where the dependent variables, also called the\n", + "responses or the outcomes, $y_i$ are discrete and only take values\n", + "from $k=0,\\dots,K-1$ (i.e. $K$ classes).\n", + "\n", + "The goal is to predict the\n", + "output classes from the design matrix $\\hat{X}\\in\\mathbb{R}^{n\\times p}$\n", + "made of $n$ samples, each of which carries $p$ features or predictors. The\n", + "primary goal is to identify the classes to which new unseen samples\n", + "belong.\n", + "\n", + "Let us specialize to the case of two classes only, with outputs\n", + "$y_i=0$ and $y_i=1$. Our outcomes could represent the status of a\n", + "credit card user that could default or not on her/his credit card\n", + "debt. That is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "y_i = \\begin{bmatrix} 0 & \\mathrm{no}\\\\ 1 & \\mathrm{yes} \\end{bmatrix}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linear classifier\n", + "\n", + "Before moving to the logistic model, let us try to use our linear\n", + "regression model to classify these two outcomes. We could for example\n", + "fit a linear model to the default case if $y_i > 0.5$ and the no\n", + "default case $y_i \\leq 0.5$.\n", + "\n", + "We would then have our \n", + "weighted linear combination, namely" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "
\n", + "\n", + "$$\n", + "\\begin{equation}\n", + "\\hat{y} = \\hat{X}^T\\hat{\\beta} + \\hat{\\epsilon},\n", + "\\label{_auto1} \\tag{1}\n", + "\\end{equation}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\hat{y}$ is a vector representing the possible outcomes, $\\hat{X}$ is our\n", + "$n\\times p$ design matrix and $\\hat{\\beta}$ represents our estimators/predictors.\n", + "\n", + "## Some selected properties\n", + "\n", + "The main problem with our function is that it takes values on the\n", + "entire real axis. In the case of logistic regression, however, the\n", + "labels $y_i$ are discrete variables. A typical example is the credit\n", + "card data discussed below here, where we can set the state of\n", + "defaulting the debt to $y_i=1$ and not to $y_i=0$ for one the persons\n", + "in the data set (see the full example below).\n", + "\n", + "One simple way to get a discrete output is to have sign\n", + "functions that map the output of a linear regressor to values $\\{0,1\\}$,\n", + "$f(s_i)=sign(s_i)=1$ if $s_i\\ge 0$ and 0 if otherwise. \n", + "We will encounter this model in our first demonstration of neural networks. Historically it is called the \"perceptron\" model in the machine learning\n", + "literature. This model is extremely simple. However, in many cases it is more\n", + "favorable to use a ``soft\" classifier that outputs\n", + "the probability of a given category. This leads us to the logistic function.\n", + "\n", + "\n", + "## The logistic function\n", + "\n", + "The perceptron is an example of a ``hard classification\" model. We\n", + "will encounter this model when we discuss neural networks as\n", + "well. Each datapoint is deterministically assigned to a category (i.e\n", + "$y_i=0$ or $y_i=1$). In many cases, it is favorable to have a \"soft\"\n", + "classifier that outputs the probability of a given category rather\n", + "than a single value. For example, given $x_i$, the classifier\n", + "outputs the probability of being in a category $k$. Logistic regression\n", + "is the most common example of a so-called soft classifier. In logistic\n", + "regression, the probability that a data point $x_i$\n", + "belongs to a category $y_i=\\{0,1\\}$ is given by the so-called logit function (or Sigmoid) which is meant to represent the likelihood for a given event," + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(t) = \\frac{1}{1+\\mathrm \\exp{-t}}=\\frac{\\exp{t}}{1+\\mathrm \\exp{t}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that $1-p(t)= p(-t)$.\n", + "\n", + "## Examples of likelihood functions used in logistic regression and nueral networks\n", + "\n", + "\n", + "The following code plots the logistic function, the step function and other functions we will encounter from here and on." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_0.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_1.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_2.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "%matplotlib inline\n", + "\n", + "\"\"\"The sigmoid function (or the logistic curve) is a\n", + "function that takes any real number, z, and outputs a number (0,1).\n", + "It is useful in neural networks for assigning weights on a relative scale.\n", + "The value z is the weighted sum of parameters involved in the learning algorithm.\"\"\"\n", + "\n", + "import numpy\n", + "import matplotlib.pyplot as plt\n", + "import math as mt\n", + "\n", + "z = numpy.arange(-5, 5, .1)\n", + "sigma_fn = numpy.vectorize(lambda z: 1/(1+numpy.exp(-z)))\n", + "sigma = sigma_fn(z)\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(z, sigma)\n", + "ax.set_ylim([-0.1, 1.1])\n", + "ax.set_xlim([-5,5])\n", + "ax.grid(True)\n", + "ax.set_xlabel('z')\n", + "ax.set_title('sigmoid function')\n", + "\n", + "plt.show()\n", + "\n", + "\"\"\"Step Function\"\"\"\n", + "z = numpy.arange(-5, 5, .02)\n", + "step_fn = numpy.vectorize(lambda z: 1.0 if z >= 0.0 else 0.0)\n", + "step = step_fn(z)\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(z, step)\n", + "ax.set_ylim([-0.5, 1.5])\n", + "ax.set_xlim([-5,5])\n", + "ax.grid(True)\n", + "ax.set_xlabel('z')\n", + "ax.set_title('step function')\n", + "\n", + "plt.show()\n", + "\n", + "\"\"\"tanh Function\"\"\"\n", + "z = numpy.arange(-2*mt.pi, 2*mt.pi, 0.1)\n", + "t = numpy.tanh(z)\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(z, t)\n", + "ax.set_ylim([-1.0, 1.0])\n", + "ax.set_xlim([-2*mt.pi,2*mt.pi])\n", + "ax.grid(True)\n", + "ax.set_xlabel('z')\n", + "ax.set_title('tanh function')\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Two parameters\n", + "\n", + "We assume now that we have two classes with $y_i$ either $0$ or $1$. Furthermore we assume also that we have only two parameters $\\beta$ in our fitting of the Sigmoid function, that is we define probabilities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align*}\n", + "p(y_i=1|x_i,\\hat{\\beta}) &= \\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}},\\nonumber\\\\\n", + "p(y_i=0|x_i,\\hat{\\beta}) &= 1 - p(y_i=1|x_i,\\hat{\\beta}),\n", + "\\end{align*}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "where $\\hat{\\beta}$ are the weights we wish to extract from data, in our case $\\beta_0$ and $\\beta_1$. \n", + "\n", + "Note that we used" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(y_i=0\\vert x_i, \\hat{\\beta}) = 1-p(y_i=1\\vert x_i, \\hat{\\beta}).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## Maximum likelihood\n", + "\n", + "In order to define the total likelihood for all possible outcomes from a \n", + "dataset $\\mathcal{D}=\\{(y_i,x_i)\\}$, with the binary labels\n", + "$y_i\\in\\{0,1\\}$ and where the data points are drawn independently, we use the so-called [Maximum Likelihood Estimation](https://en.wikipedia.org/wiki/Maximum_likelihood_estimation) (MLE) principle. \n", + "We aim thus at maximizing \n", + "the probability of seeing the observed data. We can then approximate the \n", + "likelihood in terms of the product of the individual probabilities of a specific outcome $y_i$, that is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\begin{align*}\n", + "P(\\mathcal{D}|\\hat{\\beta})& = \\prod_{i=1}^n \\left[p(y_i=1|x_i,\\hat{\\beta})\\right]^{y_i}\\left[1-p(y_i=1|x_i,\\hat{\\beta}))\\right]^{1-y_i}\\nonumber \\\\\n", + "\\end{align*}\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "from which we obtain the log-likelihood and our **cost/loss** function" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mathcal{C}(\\hat{\\beta}) = \\sum_{i=1}^n \\left( y_i\\log{p(y_i=1|x_i,\\hat{\\beta})} + (1-y_i)\\log\\left[1-p(y_i=1|x_i,\\hat{\\beta}))\\right]\\right).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The cost function rewritten\n", + "\n", + "Reordering the logarithms, we can rewrite the **cost/loss** function as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mathcal{C}(\\hat{\\beta}) = \\sum_{i=1}^n \\left(y_i(\\beta_0+\\beta_1x_i) -\\log{(1+\\exp{(\\beta_0+\\beta_1x_i)})}\\right).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The maximum likelihood estimator is defined as the set of parameters that maximize the log-likelihood where we maximize with respect to $\\beta$.\n", + "Since the cost (error) function is just the negative log-likelihood, for logistic regression we have that" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\mathcal{C}(\\hat{\\beta})=-\\sum_{i=1}^n \\left(y_i(\\beta_0+\\beta_1x_i) -\\log{(1+\\exp{(\\beta_0+\\beta_1x_i)})}\\right).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This equation is known in statistics as the **cross entropy**. Finally, we note that just as in linear regression, \n", + "in practice we often supplement the cross-entropy with additional regularization terms, usually $L_1$ and $L_2$ regularization as we did for Ridge and Lasso regression.\n", + "\n", + "## Minimizing the cross entropy\n", + "\n", + "The cross entropy is a convex function of the weights $\\hat{\\beta}$ and,\n", + "therefore, any local minimizer is a global minimizer. \n", + "\n", + "\n", + "Minimizing this\n", + "cost function with respect to the two parameters $\\beta_0$ and $\\beta_1$ we obtain" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial \\mathcal{C}(\\hat{\\beta})}{\\partial \\beta_0} = -\\sum_{i=1}^n \\left(y_i -\\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}}\\right),\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial \\mathcal{C}(\\hat{\\beta})}{\\partial \\beta_1} = -\\sum_{i=1}^n \\left(y_ix_i -x_i\\frac{\\exp{(\\beta_0+\\beta_1x_i)}}{1+\\exp{(\\beta_0+\\beta_1x_i)}}\\right).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A more compact expression\n", + "\n", + "Let us now define a vector $\\hat{y}$ with $n$ elements $y_i$, an\n", + "$n\\times p$ matrix $\\hat{X}$ which contains the $x_i$ values and a\n", + "vector $\\hat{p}$ of fitted probabilities $p(y_i\\vert x_i,\\hat{\\beta})$. We can rewrite in a more compact form the first\n", + "derivative of cost function as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial \\mathcal{C}(\\hat{\\beta})}{\\partial \\hat{\\beta}} = -\\hat{X}^T\\left(\\hat{y}-\\hat{p}\\right).\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we in addition define a diagonal matrix $\\hat{W}$ with elements \n", + "$p(y_i\\vert x_i,\\hat{\\beta})(1-p(y_i\\vert x_i,\\hat{\\beta})$, we can obtain a compact expression of the second derivative as" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\frac{\\partial^2 \\mathcal{C}(\\hat{\\beta})}{\\partial \\hat{\\beta}\\partial \\hat{\\beta}^T} = \\hat{X}^T\\hat{W}\\hat{X}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Extending to more predictors\n", + "\n", + "Within a binary classification problem, we can easily expand our model to include multiple predictors. Our ratio between likelihoods is then with $p$ predictors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\log{ \\frac{p(\\hat{\\beta}\\hat{x})}{1-p(\\hat{\\beta}\\hat{x})}} = \\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we defined $\\hat{x}=[1,x_1,x_2,\\dots,x_p]$ and $\\hat{\\beta}=[\\beta_0, \\beta_1, \\dots, \\beta_p]$ leading to" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(\\hat{\\beta}\\hat{x})=\\frac{ \\exp{(\\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p)}}{1+\\exp{(\\beta_0+\\beta_1x_1+\\beta_2x_2+\\dots+\\beta_px_p)}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Including more classes\n", + "\n", + "Till now we have mainly focused on two classes, the so-called binary\n", + "system. Suppose we wish to extend to $K$ classes. Let us for the sake\n", + "of simplicity assume we have only two predictors. We have then\n", + "following model" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "1\n", + "5\n", + " \n", + "<\n", + "<\n", + "<\n", + "!\n", + "!\n", + "M\n", + "A\n", + "T\n", + "H\n", + "_\n", + "B\n", + "L\n", + "O\n", + "C\n", + "K" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\log{\\frac{p(C=2\\vert x)}{p(K\\vert x)}} = \\beta_{20}+\\beta_{21}x_1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and so on till the class $C=K-1$ class" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "\\log{\\frac{p(C=K-1\\vert x)}{p(K\\vert x)}} = \\beta_{(K-1)0}+\\beta_{(K-1)1}x_1,\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and the model is specified in term of $K-1$ so-called log-odds or\n", + "**logit** transformations.\n", + "\n", + "\n", + "## More classes\n", + "\n", + "In our discussion of neural networks we will encounter the above again\n", + "in terms of a slightly modified function, the so-called **Softmax** function.\n", + "\n", + "The softmax function is used in various multiclass classification\n", + "methods, such as multinomial logistic regression (also known as\n", + "softmax regression), multiclass linear discriminant analysis, naive\n", + "Bayes classifiers, and artificial neural networks. Specifically, in\n", + "multinomial logistic regression and linear discriminant analysis, the\n", + "input to the function is the result of $K$ distinct linear functions,\n", + "and the predicted probability for the $k$-th class given a sample\n", + "vector $\\hat{x}$ and a weighting vector $\\hat{\\beta}$ is (with two\n", + "predictors):" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(C=k\\vert \\mathbf {x} )=\\frac{\\exp{(\\beta_{k0}+\\beta_{k1}x_1)}}{1+\\sum_{l=1}^{K-1}\\exp{(\\beta_{l0}+\\beta_{l1}x_1)}}.\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It is easy to extend to more predictors. The final class is" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "$$\n", + "p(C=K\\vert \\mathbf {x} )=\\frac{1}{1+\\sum_{l=1}^{K-1}\\exp{(\\beta_{l0}+\\beta_{l1}x_1)}},\n", + "$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and they sum to one. Our earlier discussions were all specialized to\n", + "the case with two classes only. It is easy to see from the above that\n", + "what we derived earlier is compatible with these equations.\n", + "\n", + "To find the optimal parameters we would typically use a gradient\n", + "descent method. Newton's method and gradient descent methods are\n", + "discussed in the material on [optimization\n", + "methods](https://compphysics.github.io/MachineLearning/doc/pub/Splines/html/Splines-bs.html).\n", + "\n", + "\n", + "\n", + "\n", + "## A simple classification problem" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "filenames": { + "image/png": "/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/jupyter_execute/chapter5_42_0.png" + }, + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "from sklearn import datasets, linear_model\n", + "import matplotlib.pyplot as plt\n", + "\n", + "\n", + "def generate_data():\n", + " np.random.seed(0)\n", + " X, y = datasets.make_moons(200, noise=0.20)\n", + " return X, y\n", + "\n", + "\n", + "def visualize(X, y, clf):\n", + " plot_decision_boundary(lambda x: clf.predict(x), X, y)\n", + "\n", + "def plot_decision_boundary(pred_func, X, y):\n", + " # Set min and max values and give it some padding\n", + " x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n", + " y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n", + " h = 0.01\n", + " # Generate a grid of points with distance h between them\n", + " xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))\n", + " # Predict the function value for the whole gid\n", + " Z = pred_func(np.c_[xx.ravel(), yy.ravel()])\n", + " Z = Z.reshape(xx.shape)\n", + " # Plot the contour and training examples\n", + " plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)\n", + " plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Spectral)\n", + " plt.show()\n", + "\n", + "\n", + "def classify(X, y):\n", + " clf = linear_model.LogisticRegressionCV()\n", + " clf.fit(X, y)\n", + " return clf\n", + "\n", + "\n", + "def main():\n", + " X, y = generate_data()\n", + " # visualize(X, y)\n", + " clf = classify(X, y)\n", + " visualize(X, y, clf)\n", + "\n", + "if __name__ == \"__main__\":\n", + " main()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The Credit Card example\n", + "Here we use the the [credit card data](https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients). \n", + "The data are from an extensive database from Taiwan and include more than ten predictors.\n", + "\n", + "For categorical data -Scikit-Learn- provides a so-called **one-hot encoder**.\n", + "This is called one-hot\n", + "encoding, because only one attribute will be equal to 1 (hot), while the others will be 0 (cold).\n", + "**Scikit-Learn** provides a OneHotEncoder encoder to convert integer categorical values into one-hot" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "encoder = OneHotEncoder()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## How to read the Credit Card data" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "FileNotFoundError", + "evalue": "[Errno 2] No such file or directory: '/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/default of credit card clients.xls'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0mfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcwd\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m'/default of credit card clients.xls'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mnanDict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0mdf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_excel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mheader\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskiprows\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mindex_col\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mna_values\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnanDict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrename\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindex\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolumns\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m{\u001b[0m\u001b[0;34m\"default payment next month\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;34m\"defaultPaymentNextMonth\"\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minplace\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/excel/_base.py\u001b[0m in \u001b[0;36mread_excel\u001b[0;34m(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols, **kwds)\u001b[0m\n\u001b[1;32m 302\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 304\u001b[0;31m \u001b[0mio\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mExcelFile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mengine\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 305\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;32mand\u001b[0m \u001b[0mengine\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0mio\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 306\u001b[0m raise ValueError(\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/excel/_base.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, io, engine)\u001b[0m\n\u001b[1;32m 822\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_io\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstringify_path\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mio\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 823\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 824\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_reader\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engines\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mengine\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_io\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 825\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 826\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__fspath__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/excel/_xlrd.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0merr_msg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Install xlrd >= 1.0.0 for Excel support\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 20\u001b[0m \u001b[0mimport_optional_dependency\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"xlrd\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextra\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0merr_msg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 21\u001b[0;31m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/excel/_base.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[1;32m 351\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 352\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 353\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 354\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbytes\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 355\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbook\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mload_workbook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mBytesIO\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/pandas/io/excel/_xlrd.py\u001b[0m in \u001b[0;36mload_workbook\u001b[0;34m(self, filepath_or_buffer)\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mopen_workbook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfile_contents\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mopen_workbook\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilepath_or_buffer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m \u001b[0;34m@\u001b[0m\u001b[0mproperty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/opt/anaconda3/lib/python3.8/site-packages/xlrd/__init__.py\u001b[0m in \u001b[0;36mopen_workbook\u001b[0;34m(filename, logfile, verbosity, use_mmap, file_contents, encoding_override, formatting_info, on_demand, ragged_rows)\u001b[0m\n\u001b[1;32m 109\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 110\u001b[0m \u001b[0mfilename\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpanduser\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 111\u001b[0;31m \u001b[0;32mwith\u001b[0m \u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfilename\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rb\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 112\u001b[0m \u001b[0mpeek\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpeeksz\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 113\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mpeek\u001b[0m \u001b[0;34m==\u001b[0m \u001b[0;34mb\"PK\\x03\\x04\"\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# a ZIP file\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: '/Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/default of credit card clients.xls'" + ] + } + ], + "source": [ + "import pandas as pd\n", + "import os\n", + "import numpy as np\n", + "\n", + "\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import OneHotEncoder\n", + "from sklearn.compose import ColumnTransformer\n", + "from sklearn.preprocessing import StandardScaler, OneHotEncoder\n", + "from sklearn.metrics import confusion_matrix, accuracy_score, roc_auc_score\n", + "\n", + "# Trying to set the seed\n", + "np.random.seed(0)\n", + "import random\n", + "random.seed(0)\n", + "\n", + "# Reading file into data frame\n", + "cwd = os.getcwd()\n", + "filename = cwd + '/default of credit card clients.xls'\n", + "nanDict = {}\n", + "df = pd.read_excel(filename, header=1, skiprows=0, index_col=0, na_values=nanDict)\n", + "\n", + "df.rename(index=str, columns={\"default payment next month\": \"defaultPaymentNextMonth\"}, inplace=True)\n", + "\n", + "# Features and targets \n", + "X = df.loc[:, df.columns != 'defaultPaymentNextMonth'].values\n", + "y = df.loc[:, df.columns == 'defaultPaymentNextMonth'].values\n", + "\n", + "# Categorical variables to one-hot's\n", + "onehotencoder = OneHotEncoder(categories=\"auto\")\n", + "\n", + "X = ColumnTransformer(\n", + " [(\"\", onehotencoder, [3]),],\n", + " remainder=\"passthrough\"\n", + ").fit_transform(X)\n", + "\n", + "y.shape\n", + "\n", + "# Train-test split\n", + "trainingShare = 0.5 \n", + "seed = 1\n", + "XTrain, XTest, yTrain, yTest=train_test_split(X, y, train_size=trainingShare, \\\n", + " test_size = 1-trainingShare,\n", + " random_state=seed)\n", + "\n", + "# Input Scaling\n", + "sc = StandardScaler()\n", + "XTrain = sc.fit_transform(XTrain)\n", + "XTest = sc.transform(XTest)\n", + "\n", + "# One-hot's of the target vector\n", + "Y_train_onehot, Y_test_onehot = onehotencoder.fit_transform(yTrain), onehotencoder.fit_transform(yTest)\n", + "\n", + "# Remove instances with zeros only for past bill statements or paid amounts\n", + "'''\n", + "df = df.drop(df[(df.BILL_AMT1 == 0) &\n", + " (df.BILL_AMT2 == 0) &\n", + " (df.BILL_AMT3 == 0) &\n", + " (df.BILL_AMT4 == 0) &\n", + " (df.BILL_AMT5 == 0) &\n", + " (df.BILL_AMT6 == 0) &\n", + " (df.PAY_AMT1 == 0) &\n", + " (df.PAY_AMT2 == 0) &\n", + " (df.PAY_AMT3 == 0) &\n", + " (df.PAY_AMT4 == 0) &\n", + " (df.PAY_AMT5 == 0) &\n", + " (df.PAY_AMT6 == 0)].index)\n", + "'''\n", + "df = df.drop(df[(df.BILL_AMT1 == 0) &\n", + " (df.BILL_AMT2 == 0) &\n", + " (df.BILL_AMT3 == 0) &\n", + " (df.BILL_AMT4 == 0) &\n", + " (df.BILL_AMT5 == 0) &\n", + " (df.BILL_AMT6 == 0)].index)\n", + "\n", + "df = df.drop(df[(df.PAY_AMT1 == 0) &\n", + " (df.PAY_AMT2 == 0) &\n", + " (df.PAY_AMT3 == 0) &\n", + " (df.PAY_AMT4 == 0) &\n", + " (df.PAY_AMT5 == 0) &\n", + " (df.PAY_AMT6 == 0)].index)\n", + "\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "lambdas=np.logspace(-5,7,13)\n", + "parameters = [{'C': 1./lambdas, \"solver\":[\"lbfgs\"]}]#*len(parameters)}]\n", + "scoring = ['accuracy', 'roc_auc']\n", + "logReg = LogisticRegression()\n", + "gridSearch = GridSearchCV(logReg, parameters, cv=5, scoring=scoring, refit='roc_auc')" + ] + } + ], + "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.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5.py b/doc/src/LectureNotes/_build/jupyter_execute/chapter5.py new file mode 100644 index 000000000..39168e60a --- /dev/null +++ b/doc/src/LectureNotes/_build/jupyter_execute/chapter5.py @@ -0,0 +1,544 @@ + +# Data Analysis and Machine Learning: Logistic Regression + + +**Morten Hjorth-Jensen**, Department of Physics, University of Oslo and Department of Physics and Astronomy and National Superconducting Cyclotron Laboratory, Michigan State University + +Date: **Oct 17, 2019** + +Copyright 1999-2019, Morten Hjorth-Jensen. Released under CC Attribution-NonCommercial 4.0 license + + + + + +## Logistic Regression + +In linear regression our main interest was centered on learning the +coefficients of a functional fit (say a polynomial) in order to be +able to predict the response of a continuous variable on some unseen +data. The fit to the continuous variable $y_i$ is based on some +independent variables $\hat{x}_i$. Linear regression resulted in +analytical expressions for standard ordinary Least Squares or Ridge +regression (in terms of matrices to invert) for several quantities, +ranging from the variance and thereby the confidence intervals of the +parameters $\hat{\beta}$ to the mean squared error. If we can invert +the product of the design matrices, linear regression gives then a +simple recipe for fitting our data. + + +Classification problems, however, are concerned with outcomes taking +the form of discrete variables (i.e. categories). We may for example, +on the basis of DNA sequencing for a number of patients, like to find +out which mutations are important for a certain disease; or based on +scans of various patients' brains, figure out if there is a tumor or +not; or given a specific physical system, we'd like to identify its +state, say whether it is an ordered or disordered system (typical +situation in solid state physics); or classify the status of a +patient, whether she/he has a stroke or not and many other similar +situations. + +The most common situation we encounter when we apply logistic +regression is that of two possible outcomes, normally denoted as a +binary outcome, true or false, positive or negative, success or +failure etc. + +## Optimization and Deep learning + +Logistic regression will also serve as our stepping stone towards +neural network algorithms and supervised deep learning. For logistic +learning, the minimization of the cost function leads to a non-linear +equation in the parameters $\hat{\beta}$. The optimization of the +problem calls therefore for minimization algorithms. This forms the +bottle neck of all machine learning algorithms, namely how to find +reliable minima of a multi-variable function. This leads us to the +family of gradient descent methods. The latter are the working horses +of basically all modern machine learning algorithms. + +We note also that many of the topics discussed here on logistic +regression are also commonly used in modern supervised Deep Learning +models, as we will see later. + + + +## Basics + +We consider the case where the dependent variables, also called the +responses or the outcomes, $y_i$ are discrete and only take values +from $k=0,\dots,K-1$ (i.e. $K$ classes). + +The goal is to predict the +output classes from the design matrix $\hat{X}\in\mathbb{R}^{n\times p}$ +made of $n$ samples, each of which carries $p$ features or predictors. The +primary goal is to identify the classes to which new unseen samples +belong. + +Let us specialize to the case of two classes only, with outputs +$y_i=0$ and $y_i=1$. Our outcomes could represent the status of a +credit card user that could default or not on her/his credit card +debt. That is + +$$ +y_i = \begin{bmatrix} 0 & \mathrm{no}\\ 1 & \mathrm{yes} \end{bmatrix}. +$$ + +## Linear classifier + +Before moving to the logistic model, let us try to use our linear +regression model to classify these two outcomes. We could for example +fit a linear model to the default case if $y_i > 0.5$ and the no +default case $y_i \leq 0.5$. + +We would then have our +weighted linear combination, namely + + +
+ +$$ +\begin{equation} +\hat{y} = \hat{X}^T\hat{\beta} + \hat{\epsilon}, +\label{_auto1} \tag{1} +\end{equation} +$$ + +where $\hat{y}$ is a vector representing the possible outcomes, $\hat{X}$ is our +$n\times p$ design matrix and $\hat{\beta}$ represents our estimators/predictors. + +## Some selected properties + +The main problem with our function is that it takes values on the +entire real axis. In the case of logistic regression, however, the +labels $y_i$ are discrete variables. A typical example is the credit +card data discussed below here, where we can set the state of +defaulting the debt to $y_i=1$ and not to $y_i=0$ for one the persons +in the data set (see the full example below). + +One simple way to get a discrete output is to have sign +functions that map the output of a linear regressor to values $\{0,1\}$, +$f(s_i)=sign(s_i)=1$ if $s_i\ge 0$ and 0 if otherwise. +We will encounter this model in our first demonstration of neural networks. Historically it is called the "perceptron" model in the machine learning +literature. This model is extremely simple. However, in many cases it is more +favorable to use a ``soft" classifier that outputs +the probability of a given category. This leads us to the logistic function. + + +## The logistic function + +The perceptron is an example of a ``hard classification" model. We +will encounter this model when we discuss neural networks as +well. Each datapoint is deterministically assigned to a category (i.e +$y_i=0$ or $y_i=1$). In many cases, it is favorable to have a "soft" +classifier that outputs the probability of a given category rather +than a single value. For example, given $x_i$, the classifier +outputs the probability of being in a category $k$. Logistic regression +is the most common example of a so-called soft classifier. In logistic +regression, the probability that a data point $x_i$ +belongs to a category $y_i=\{0,1\}$ is given by the so-called logit function (or Sigmoid) which is meant to represent the likelihood for a given event, + +$$ +p(t) = \frac{1}{1+\mathrm \exp{-t}}=\frac{\exp{t}}{1+\mathrm \exp{t}}. +$$ + +Note that $1-p(t)= p(-t)$. + +## Examples of likelihood functions used in logistic regression and nueral networks + + +The following code plots the logistic function, the step function and other functions we will encounter from here and on. + +%matplotlib inline + +"""The sigmoid function (or the logistic curve) is a +function that takes any real number, z, and outputs a number (0,1). +It is useful in neural networks for assigning weights on a relative scale. +The value z is the weighted sum of parameters involved in the learning algorithm.""" + +import numpy +import matplotlib.pyplot as plt +import math as mt + +z = numpy.arange(-5, 5, .1) +sigma_fn = numpy.vectorize(lambda z: 1/(1+numpy.exp(-z))) +sigma = sigma_fn(z) + +fig = plt.figure() +ax = fig.add_subplot(111) +ax.plot(z, sigma) +ax.set_ylim([-0.1, 1.1]) +ax.set_xlim([-5,5]) +ax.grid(True) +ax.set_xlabel('z') +ax.set_title('sigmoid function') + +plt.show() + +"""Step Function""" +z = numpy.arange(-5, 5, .02) +step_fn = numpy.vectorize(lambda z: 1.0 if z >= 0.0 else 0.0) +step = step_fn(z) + +fig = plt.figure() +ax = fig.add_subplot(111) +ax.plot(z, step) +ax.set_ylim([-0.5, 1.5]) +ax.set_xlim([-5,5]) +ax.grid(True) +ax.set_xlabel('z') +ax.set_title('step function') + +plt.show() + +"""tanh Function""" +z = numpy.arange(-2*mt.pi, 2*mt.pi, 0.1) +t = numpy.tanh(z) + +fig = plt.figure() +ax = fig.add_subplot(111) +ax.plot(z, t) +ax.set_ylim([-1.0, 1.0]) +ax.set_xlim([-2*mt.pi,2*mt.pi]) +ax.grid(True) +ax.set_xlabel('z') +ax.set_title('tanh function') + +plt.show() + +## Two parameters + +We assume now that we have two classes with $y_i$ either $0$ or $1$. Furthermore we assume also that we have only two parameters $\beta$ in our fitting of the Sigmoid function, that is we define probabilities + +$$ +\begin{align*} +p(y_i=1|x_i,\hat{\beta}) &= \frac{\exp{(\beta_0+\beta_1x_i)}}{1+\exp{(\beta_0+\beta_1x_i)}},\nonumber\\ +p(y_i=0|x_i,\hat{\beta}) &= 1 - p(y_i=1|x_i,\hat{\beta}), +\end{align*} +$$ + +where $\hat{\beta}$ are the weights we wish to extract from data, in our case $\beta_0$ and $\beta_1$. + +Note that we used + +$$ +p(y_i=0\vert x_i, \hat{\beta}) = 1-p(y_i=1\vert x_i, \hat{\beta}). +$$ + + +## Maximum likelihood + +In order to define the total likelihood for all possible outcomes from a +dataset $\mathcal{D}=\{(y_i,x_i)\}$, with the binary labels +$y_i\in\{0,1\}$ and where the data points are drawn independently, we use the so-called [Maximum Likelihood Estimation](https://en.wikipedia.org/wiki/Maximum_likelihood_estimation) (MLE) principle. +We aim thus at maximizing +the probability of seeing the observed data. We can then approximate the +likelihood in terms of the product of the individual probabilities of a specific outcome $y_i$, that is + +$$ +\begin{align*} +P(\mathcal{D}|\hat{\beta})& = \prod_{i=1}^n \left[p(y_i=1|x_i,\hat{\beta})\right]^{y_i}\left[1-p(y_i=1|x_i,\hat{\beta}))\right]^{1-y_i}\nonumber \\ +\end{align*} +$$ + +from which we obtain the log-likelihood and our **cost/loss** function + +$$ +\mathcal{C}(\hat{\beta}) = \sum_{i=1}^n \left( y_i\log{p(y_i=1|x_i,\hat{\beta})} + (1-y_i)\log\left[1-p(y_i=1|x_i,\hat{\beta}))\right]\right). +$$ + +## The cost function rewritten + +Reordering the logarithms, we can rewrite the **cost/loss** function as + +$$ +\mathcal{C}(\hat{\beta}) = \sum_{i=1}^n \left(y_i(\beta_0+\beta_1x_i) -\log{(1+\exp{(\beta_0+\beta_1x_i)})}\right). +$$ + +The maximum likelihood estimator is defined as the set of parameters that maximize the log-likelihood where we maximize with respect to $\beta$. +Since the cost (error) function is just the negative log-likelihood, for logistic regression we have that + +$$ +\mathcal{C}(\hat{\beta})=-\sum_{i=1}^n \left(y_i(\beta_0+\beta_1x_i) -\log{(1+\exp{(\beta_0+\beta_1x_i)})}\right). +$$ + +This equation is known in statistics as the **cross entropy**. Finally, we note that just as in linear regression, +in practice we often supplement the cross-entropy with additional regularization terms, usually $L_1$ and $L_2$ regularization as we did for Ridge and Lasso regression. + +## Minimizing the cross entropy + +The cross entropy is a convex function of the weights $\hat{\beta}$ and, +therefore, any local minimizer is a global minimizer. + + +Minimizing this +cost function with respect to the two parameters $\beta_0$ and $\beta_1$ we obtain + +$$ +\frac{\partial \mathcal{C}(\hat{\beta})}{\partial \beta_0} = -\sum_{i=1}^n \left(y_i -\frac{\exp{(\beta_0+\beta_1x_i)}}{1+\exp{(\beta_0+\beta_1x_i)}}\right), +$$ + +and + +$$ +\frac{\partial \mathcal{C}(\hat{\beta})}{\partial \beta_1} = -\sum_{i=1}^n \left(y_ix_i -x_i\frac{\exp{(\beta_0+\beta_1x_i)}}{1+\exp{(\beta_0+\beta_1x_i)}}\right). +$$ + +## A more compact expression + +Let us now define a vector $\hat{y}$ with $n$ elements $y_i$, an +$n\times p$ matrix $\hat{X}$ which contains the $x_i$ values and a +vector $\hat{p}$ of fitted probabilities $p(y_i\vert x_i,\hat{\beta})$. We can rewrite in a more compact form the first +derivative of cost function as + +$$ +\frac{\partial \mathcal{C}(\hat{\beta})}{\partial \hat{\beta}} = -\hat{X}^T\left(\hat{y}-\hat{p}\right). +$$ + +If we in addition define a diagonal matrix $\hat{W}$ with elements +$p(y_i\vert x_i,\hat{\beta})(1-p(y_i\vert x_i,\hat{\beta})$, we can obtain a compact expression of the second derivative as + +$$ +\frac{\partial^2 \mathcal{C}(\hat{\beta})}{\partial \hat{\beta}\partial \hat{\beta}^T} = \hat{X}^T\hat{W}\hat{X}. +$$ + +## Extending to more predictors + +Within a binary classification problem, we can easily expand our model to include multiple predictors. Our ratio between likelihoods is then with $p$ predictors + +$$ +\log{ \frac{p(\hat{\beta}\hat{x})}{1-p(\hat{\beta}\hat{x})}} = \beta_0+\beta_1x_1+\beta_2x_2+\dots+\beta_px_p. +$$ + +Here we defined $\hat{x}=[1,x_1,x_2,\dots,x_p]$ and $\hat{\beta}=[\beta_0, \beta_1, \dots, \beta_p]$ leading to + +$$ +p(\hat{\beta}\hat{x})=\frac{ \exp{(\beta_0+\beta_1x_1+\beta_2x_2+\dots+\beta_px_p)}}{1+\exp{(\beta_0+\beta_1x_1+\beta_2x_2+\dots+\beta_px_p)}}. +$$ + +## Including more classes + +Till now we have mainly focused on two classes, the so-called binary +system. Suppose we wish to extend to $K$ classes. Let us for the sake +of simplicity assume we have only two predictors. We have then +following model + +1 +5 + +< +< +< +! +! +M +A +T +H +_ +B +L +O +C +K + +$$ +\log{\frac{p(C=2\vert x)}{p(K\vert x)}} = \beta_{20}+\beta_{21}x_1, +$$ + +and so on till the class $C=K-1$ class + +$$ +\log{\frac{p(C=K-1\vert x)}{p(K\vert x)}} = \beta_{(K-1)0}+\beta_{(K-1)1}x_1, +$$ + +and the model is specified in term of $K-1$ so-called log-odds or +**logit** transformations. + + +## More classes + +In our discussion of neural networks we will encounter the above again +in terms of a slightly modified function, the so-called **Softmax** function. + +The softmax function is used in various multiclass classification +methods, such as multinomial logistic regression (also known as +softmax regression), multiclass linear discriminant analysis, naive +Bayes classifiers, and artificial neural networks. Specifically, in +multinomial logistic regression and linear discriminant analysis, the +input to the function is the result of $K$ distinct linear functions, +and the predicted probability for the $k$-th class given a sample +vector $\hat{x}$ and a weighting vector $\hat{\beta}$ is (with two +predictors): + +$$ +p(C=k\vert \mathbf {x} )=\frac{\exp{(\beta_{k0}+\beta_{k1}x_1)}}{1+\sum_{l=1}^{K-1}\exp{(\beta_{l0}+\beta_{l1}x_1)}}. +$$ + +It is easy to extend to more predictors. The final class is + +$$ +p(C=K\vert \mathbf {x} )=\frac{1}{1+\sum_{l=1}^{K-1}\exp{(\beta_{l0}+\beta_{l1}x_1)}}, +$$ + +and they sum to one. Our earlier discussions were all specialized to +the case with two classes only. It is easy to see from the above that +what we derived earlier is compatible with these equations. + +To find the optimal parameters we would typically use a gradient +descent method. Newton's method and gradient descent methods are +discussed in the material on [optimization +methods](https://compphysics.github.io/MachineLearning/doc/pub/Splines/html/Splines-bs.html). + + + + +## A simple classification problem + +import numpy as np +from sklearn import datasets, linear_model +import matplotlib.pyplot as plt + + +def generate_data(): + np.random.seed(0) + X, y = datasets.make_moons(200, noise=0.20) + return X, y + + +def visualize(X, y, clf): + plot_decision_boundary(lambda x: clf.predict(x), X, y) + +def plot_decision_boundary(pred_func, X, y): + # Set min and max values and give it some padding + x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 + y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 + h = 0.01 + # Generate a grid of points with distance h between them + xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h)) + # Predict the function value for the whole gid + Z = pred_func(np.c_[xx.ravel(), yy.ravel()]) + Z = Z.reshape(xx.shape) + # Plot the contour and training examples + plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral) + plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Spectral) + plt.show() + + +def classify(X, y): + clf = linear_model.LogisticRegressionCV() + clf.fit(X, y) + return clf + + +def main(): + X, y = generate_data() + # visualize(X, y) + clf = classify(X, y) + visualize(X, y, clf) + +if __name__ == "__main__": + main() + +## The Credit Card example +Here we use the the [credit card data](https://archive.ics.uci.edu/ml/datasets/default+of+credit+card+clients). +The data are from an extensive database from Taiwan and include more than ten predictors. + +For categorical data -Scikit-Learn- provides a so-called **one-hot encoder**. +This is called one-hot +encoding, because only one attribute will be equal to 1 (hot), while the others will be 0 (cold). +**Scikit-Learn** provides a OneHotEncoder encoder to convert integer categorical values into one-hot + +from sklearn.preprocessing import OneHotEncoder +encoder = OneHotEncoder() + +## How to read the Credit Card data + +import pandas as pd +import os +import numpy as np + + +from sklearn.model_selection import train_test_split +from sklearn.preprocessing import OneHotEncoder +from sklearn.compose import ColumnTransformer +from sklearn.preprocessing import StandardScaler, OneHotEncoder +from sklearn.metrics import confusion_matrix, accuracy_score, roc_auc_score + +# Trying to set the seed +np.random.seed(0) +import random +random.seed(0) + +# Reading file into data frame +cwd = os.getcwd() +filename = cwd + '/default of credit card clients.xls' +nanDict = {} +df = pd.read_excel(filename, header=1, skiprows=0, index_col=0, na_values=nanDict) + +df.rename(index=str, columns={"default payment next month": "defaultPaymentNextMonth"}, inplace=True) + +# Features and targets +X = df.loc[:, df.columns != 'defaultPaymentNextMonth'].values +y = df.loc[:, df.columns == 'defaultPaymentNextMonth'].values + +# Categorical variables to one-hot's +onehotencoder = OneHotEncoder(categories="auto") + +X = ColumnTransformer( + [("", onehotencoder, [3]),], + remainder="passthrough" +).fit_transform(X) + +y.shape + +# Train-test split +trainingShare = 0.5 +seed = 1 +XTrain, XTest, yTrain, yTest=train_test_split(X, y, train_size=trainingShare, \ + test_size = 1-trainingShare, + random_state=seed) + +# Input Scaling +sc = StandardScaler() +XTrain = sc.fit_transform(XTrain) +XTest = sc.transform(XTest) + +# One-hot's of the target vector +Y_train_onehot, Y_test_onehot = onehotencoder.fit_transform(yTrain), onehotencoder.fit_transform(yTest) + +# Remove instances with zeros only for past bill statements or paid amounts +''' +df = df.drop(df[(df.BILL_AMT1 == 0) & + (df.BILL_AMT2 == 0) & + (df.BILL_AMT3 == 0) & + (df.BILL_AMT4 == 0) & + (df.BILL_AMT5 == 0) & + (df.BILL_AMT6 == 0) & + (df.PAY_AMT1 == 0) & + (df.PAY_AMT2 == 0) & + (df.PAY_AMT3 == 0) & + (df.PAY_AMT4 == 0) & + (df.PAY_AMT5 == 0) & + (df.PAY_AMT6 == 0)].index) +''' +df = df.drop(df[(df.BILL_AMT1 == 0) & + (df.BILL_AMT2 == 0) & + (df.BILL_AMT3 == 0) & + (df.BILL_AMT4 == 0) & + (df.BILL_AMT5 == 0) & + (df.BILL_AMT6 == 0)].index) + +df = df.drop(df[(df.PAY_AMT1 == 0) & + (df.PAY_AMT2 == 0) & + (df.PAY_AMT3 == 0) & + (df.PAY_AMT4 == 0) & + (df.PAY_AMT5 == 0) & + (df.PAY_AMT6 == 0)].index) + +from sklearn.linear_model import LogisticRegression +from sklearn.model_selection import GridSearchCV + +lambdas=np.logspace(-5,7,13) +parameters = [{'C': 1./lambdas, "solver":["lbfgs"]}]#*len(parameters)}] +scoring = ['accuracy', 'roc_auc'] +logReg = LogisticRegression() +gridSearch = GridSearchCV(logReg, parameters, cv=5, scoring=scoring, refit='roc_auc') \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5_42_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_42_0.png new file mode 100644 index 000000000..d4c378f37 Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_42_0.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_0.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_0.png new file mode 100644 index 000000000..c60e649ee Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_0.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_1.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_1.png new file mode 100644 index 000000000..51bf89ea3 Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_1.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_2.png b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_2.png new file mode 100644 index 000000000..6515604ad Binary files /dev/null and b/doc/src/LectureNotes/_build/jupyter_execute/chapter5_7_2.png differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_84_0.png b/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_84_0.png deleted file mode 100644 index 66f970446..000000000 Binary files a/doc/src/LectureNotes/_build/jupyter_execute/gettingstarted_84_0.png and /dev/null differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/notebooks.ipynb b/doc/src/LectureNotes/_build/jupyter_execute/notebooks.ipynb deleted file mode 100644 index 3e29ef73f..000000000 --- a/doc/src/LectureNotes/_build/jupyter_execute/notebooks.ipynb +++ /dev/null @@ -1,138 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Content with notebooks\n", - "\n", - "You can also create content with Jupyter Notebooks. This means that you can include\n", - "code blocks and their outputs in your book.\n", - "\n", - "## Markdown + notebooks\n", - "\n", - "As it is markdown, you can embed images, HTML, etc into your posts!\n", - "\n", - "![](https://myst-parser.readthedocs.io/en/latest/_static/logo.png)\n", - "\n", - "You an also $add_{math}$ and\n", - "\n", - "$$\n", - "math^{blocks}\n", - "$$\n", - "\n", - "or\n", - "\n", - "$$\n", - "\\begin{aligned}\n", - "\\mbox{mean} la_{tex} \\\\ \\\\\n", - "math blocks\n", - "\\end{aligned}\n", - "$$\n", - "\n", - "But make sure you \\$Escape \\$your \\$dollar signs \\$you want to keep!\n", - "\n", - "## MyST markdown\n", - "\n", - "MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check\n", - "out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html),\n", - "or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/).\n", - "\n", - "## Code blocks and outputs\n", - "\n", - "Jupyter Book will also embed your code blocks and output in your book.\n", - "For example, here's some sample Matplotlib code:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from matplotlib import rcParams, cycler\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "plt.ion()" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "filenames": { - "image/png": "/Users/MortenImac/Teaching/MachineLearning/doc/src/LectureNotes/_build/jupyter_execute/notebooks_2_0.png" - }, - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# Fixing random state for reproducibility\n", - "np.random.seed(19680801)\n", - "\n", - "N = 10\n", - "data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)]\n", - "data = np.array(data).T\n", - "cmap = plt.cm.coolwarm\n", - "rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N)))\n", - "\n", - "\n", - "from matplotlib.lines import Line2D\n", - "custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4),\n", - " Line2D([0], [0], color=cmap(.5), lw=4),\n", - " Line2D([0], [0], color=cmap(1.), lw=4)]\n", - "\n", - "fig, ax = plt.subplots(figsize=(10, 5))\n", - "lines = ax.plot(data)\n", - "ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']);" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "There is a lot more that you can do with outputs (such as including interactive outputs)\n", - "with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.6.8" - }, - "widgets": { - "application/vnd.jupyter.widget-state+json": { - "state": {}, - "version_major": 2, - "version_minor": 0 - } - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/jupyter_execute/notebooks.py b/doc/src/LectureNotes/_build/jupyter_execute/notebooks.py deleted file mode 100644 index 945002c60..000000000 --- a/doc/src/LectureNotes/_build/jupyter_execute/notebooks.py +++ /dev/null @@ -1,65 +0,0 @@ -# Content with notebooks - -You can also create content with Jupyter Notebooks. This means that you can include -code blocks and their outputs in your book. - -## Markdown + notebooks - -As it is markdown, you can embed images, HTML, etc into your posts! - -![](https://myst-parser.readthedocs.io/en/latest/_static/logo.png) - -You an also $add_{math}$ and - -$$ -math^{blocks} -$$ - -or - -$$ -\begin{aligned} -\mbox{mean} la_{tex} \\ \\ -math blocks -\end{aligned} -$$ - -But make sure you \$Escape \$your \$dollar signs \$you want to keep! - -## MyST markdown - -MyST markdown works in Jupyter Notebooks as well. For more information about MyST markdown, check -out [the MyST guide in Jupyter Book](https://jupyterbook.org/content/myst.html), -or see [the MyST markdown documentation](https://myst-parser.readthedocs.io/en/latest/). - -## Code blocks and outputs - -Jupyter Book will also embed your code blocks and output in your book. -For example, here's some sample Matplotlib code: - -from matplotlib import rcParams, cycler -import matplotlib.pyplot as plt -import numpy as np -plt.ion() - -# Fixing random state for reproducibility -np.random.seed(19680801) - -N = 10 -data = [np.logspace(0, 1, 100) + np.random.randn(100) + ii for ii in range(N)] -data = np.array(data).T -cmap = plt.cm.coolwarm -rcParams['axes.prop_cycle'] = cycler(color=cmap(np.linspace(0, 1, N))) - - -from matplotlib.lines import Line2D -custom_lines = [Line2D([0], [0], color=cmap(0.), lw=4), - Line2D([0], [0], color=cmap(.5), lw=4), - Line2D([0], [0], color=cmap(1.), lw=4)] - -fig, ax = plt.subplots(figsize=(10, 5)) -lines = ax.plot(data) -ax.legend(custom_lines, ['Cold', 'Medium', 'Hot']); - -There is a lot more that you can do with outputs (such as including interactive outputs) -with your book. For more information about this, see [the Jupyter Book documentation](https://jupyterbook.org) \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/jupyter_execute/notebooks_2_0.png b/doc/src/LectureNotes/_build/jupyter_execute/notebooks_2_0.png deleted file mode 100644 index fbee95cfe..000000000 Binary files a/doc/src/LectureNotes/_build/jupyter_execute/notebooks_2_0.png and /dev/null differ diff --git a/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png b/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png deleted file mode 100644 index 602fb57d5..000000000 Binary files a/doc/src/LectureNotes/_build/jupyter_execute/regression_278_2.png and /dev/null differ diff --git a/doc/src/LectureNotes/_build/latex/LICRcyr2utf8.xdy b/doc/src/LectureNotes/_build/latex/LICRcyr2utf8.xdy new file mode 100644 index 000000000..a9ca1c82c --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/LICRcyr2utf8.xdy @@ -0,0 +1,101 @@ +;; -*- coding: utf-8; mode: Lisp; -*- +;; style file for xindy +;; filename: LICRcyr2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of Cyrillic to utf-8 +;; usage: for use with pdflatex produced .idx files. +;; Contributed by the Sphinx team, July 2018. +(merge-rule "\IeC {\'\CYRG }" "Ѓ" :string) +(merge-rule "\IeC {\'\CYRK }" "ÐŒ" :string) +(merge-rule "\IeC {\'\cyrg }" "Ñ“" :string) +(merge-rule "\IeC {\'\cyrk }" "Ñœ" :string) +(merge-rule "\IeC {\CYRA }" "Ð" :string) +(merge-rule "\IeC {\CYRB }" "Б" :string) +(merge-rule "\IeC {\CYRC }" "Ц" :string) +(merge-rule "\IeC {\CYRCH }" "Ч" :string) +(merge-rule "\IeC {\CYRD }" "Д" :string) +(merge-rule "\IeC {\CYRDJE }" "Ђ" :string) +(merge-rule "\IeC {\CYRDZE }" "Ð…" :string) +(merge-rule "\IeC {\CYRDZHE }" "Ð" :string) +(merge-rule "\IeC {\CYRE }" "Е" :string) +(merge-rule "\IeC {\CYREREV }" "Э" :string) +(merge-rule "\IeC {\CYRERY }" "Ы" :string) +(merge-rule "\IeC {\CYRF }" "Ф" :string) +(merge-rule "\IeC {\CYRG }" "Г" :string) +(merge-rule "\IeC {\CYRGUP }" "Ò" :string) +(merge-rule "\IeC {\CYRH }" "Ð¥" :string) +(merge-rule "\IeC {\CYRHRDSN }" "Ъ" :string) +(merge-rule "\IeC {\CYRI }" "И" :string) +(merge-rule "\IeC {\CYRIE }" "Є" :string) +(merge-rule "\IeC {\CYRII }" "І" :string) +(merge-rule "\IeC {\CYRISHRT }" "Й" :string) +(merge-rule "\IeC {\CYRJE }" "Ј" :string) +(merge-rule "\IeC {\CYRK }" "К" :string) +(merge-rule "\IeC {\CYRL }" "Л" :string) +(merge-rule "\IeC {\CYRLJE }" "Љ" :string) +(merge-rule "\IeC {\CYRM }" "М" :string) +(merge-rule "\IeC {\CYRN }" "Ð" :string) +(merge-rule "\IeC {\CYRNJE }" "Њ" :string) +(merge-rule "\IeC {\CYRO }" "О" :string) +(merge-rule "\IeC {\CYRP }" "П" :string) +(merge-rule "\IeC {\CYRR }" "Р" :string) +(merge-rule "\IeC {\CYRS }" "С" :string) +(merge-rule "\IeC {\CYRSFTSN }" "Ь" :string) +(merge-rule "\IeC {\CYRSH }" "Ш" :string) +(merge-rule "\IeC {\CYRSHCH }" "Щ" :string) +(merge-rule "\IeC {\CYRT }" "Т" :string) +(merge-rule "\IeC {\CYRTSHE }" "Ћ" :string) +(merge-rule "\IeC {\CYRU }" "У" :string) +(merge-rule "\IeC {\CYRUSHRT }" "ÐŽ" :string) +(merge-rule "\IeC {\CYRV }" "Ð’" :string) +(merge-rule "\IeC {\CYRYA }" "Я" :string) +(merge-rule "\IeC {\CYRYI }" "Ї" :string) +(merge-rule "\IeC {\CYRYO }" "Ð" :string) +(merge-rule "\IeC {\CYRYU }" "Ю" :string) +(merge-rule "\IeC {\CYRZ }" "З" :string) +(merge-rule "\IeC {\CYRZH }" "Ж" :string) +(merge-rule "\IeC {\cyra }" "а" :string) +(merge-rule "\IeC {\cyrb }" "б" :string) +(merge-rule "\IeC {\cyrc }" "ц" :string) +(merge-rule "\IeC {\cyrch }" "ч" :string) +(merge-rule "\IeC {\cyrd }" "д" :string) +(merge-rule "\IeC {\cyrdje }" "Ñ’" :string) +(merge-rule "\IeC {\cyrdze }" "Ñ•" :string) +(merge-rule "\IeC {\cyrdzhe }" "ÑŸ" :string) +(merge-rule "\IeC {\cyre }" "е" :string) +(merge-rule "\IeC {\cyrerev }" "Ñ" :string) +(merge-rule "\IeC {\cyrery }" "Ñ‹" :string) +(merge-rule "\IeC {\cyrf }" "Ñ„" :string) +(merge-rule "\IeC {\cyrg }" "г" :string) +(merge-rule "\IeC {\cyrgup }" "Ò‘" :string) +(merge-rule "\IeC {\cyrh }" "Ñ…" :string) +(merge-rule "\IeC {\cyrhrdsn }" "ÑŠ" :string) +(merge-rule "\IeC {\cyri }" "и" :string) +(merge-rule "\IeC {\cyrie }" "Ñ”" :string) +(merge-rule "\IeC {\cyrii }" "Ñ–" :string) +(merge-rule "\IeC {\cyrishrt }" "й" :string) +(merge-rule "\IeC {\cyrje }" "ј" :string) +(merge-rule "\IeC {\cyrk }" "к" :string) +(merge-rule "\IeC {\cyrl }" "л" :string) +(merge-rule "\IeC {\cyrlje }" "Ñ™" :string) +(merge-rule "\IeC {\cyrm }" "м" :string) +(merge-rule "\IeC {\cyrn }" "н" :string) +(merge-rule "\IeC {\cyrnje }" "Ñš" :string) +(merge-rule "\IeC {\cyro }" "о" :string) +(merge-rule "\IeC {\cyrp }" "п" :string) +(merge-rule "\IeC {\cyrr }" "Ñ€" :string) +(merge-rule "\IeC {\cyrs }" "Ñ" :string) +(merge-rule "\IeC {\cyrsftsn }" "ÑŒ" :string) +(merge-rule "\IeC {\cyrsh }" "ш" :string) +(merge-rule "\IeC {\cyrshch }" "щ" :string) +(merge-rule "\IeC {\cyrt }" "Ñ‚" :string) +(merge-rule "\IeC {\cyrtshe }" "Ñ›" :string) +(merge-rule "\IeC {\cyru }" "у" :string) +(merge-rule "\IeC {\cyrushrt }" "Ñž" :string) +(merge-rule "\IeC {\cyrv }" "в" :string) +(merge-rule "\IeC {\cyrya }" "Ñ" :string) +(merge-rule "\IeC {\cyryi }" "Ñ—" :string) +(merge-rule "\IeC {\cyryo }" "Ñ‘" :string) +(merge-rule "\IeC {\cyryu }" "ÑŽ" :string) +(merge-rule "\IeC {\cyrz }" "з" :string) +(merge-rule "\IeC {\cyrzh }" "ж" :string) diff --git a/doc/src/LectureNotes/_build/latex/LICRlatin2utf8.xdy b/doc/src/LectureNotes/_build/latex/LICRlatin2utf8.xdy new file mode 100644 index 000000000..31c80f97c --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/LICRlatin2utf8.xdy @@ -0,0 +1,239 @@ +;; style file for xindy +;; filename: LICRlatin2utf8.xdy +;; description: style file for xindy which maps back LaTeX Internal +;; Character Representation of letters (as arising in .idx index +;; file) to UTF-8 encoding for correct sorting by xindy. +;; usage: for use with the pdflatex engine, +;; *not* for use with xelatex or lualatex. +;; +;; This is based upon xindy's distributed file tex/inputenc/utf8.xdy. +;; The modifications include: +;; +;; - Updates for compatibility with current LaTeX macro encoding. +;; +;; - Systematic usage of the \IeC {...} mark-up, because mark-up in +;; tex/inputenc/utf8.xdy was using it on seemingly random basis, and +;; Sphinx coercing of xindy usability for both Latin and Cyrillic scripts +;; with pdflatex requires its systematic presence here. +;; +;; - Support for some extra letters: Ÿ, ÅŠ, Å‹, Å’, Å“, IJ, ij, È· and ẞ. +;; +;; Indeed Sphinx needs to support for pdflatex engine all Unicode letters +;; available in TeX T1 font encoding. The above letters are found in +;; that encoding but not in the Latin1, 2, 3 charsets which are those +;; covered by original tex/inputenc/utf8.xdy. +;; +;; - There is a problem that È· is not supported out-of-the box by LaTeX +;; with inputenc, one must add explicitely +;; \DeclareUnicodeCharacter{0237}{\j} +;; to preamble of LaTeX document. However this character is not supported +;; by the TeX "times" font used by default by Sphinx for pdflatex engine. +;; +;; **Update**: since LaTeX 2018/12/01, the \j as well as \SS, \k{} and +;; \.{} need no extra user declaration anymore. +;; +;; - ẞ needs \DeclareUnicodeCharacter{1E9E}{\SS} (but ß needs no extra set-up). +;; +;; - U+02DB (Ë›) and U+02D9 (Ë™) are also not supported by inputenc +;; out of the box and require +;; \DeclareUnicodeCharacter{02DB}{\k{}} +;; \DeclareUnicodeCharacter{02D9}{\.{}} +;; to be added to preamble. +;; +;; - U+0127 ħ and U+0126 Ħ are absent from TeX T1+TS1 font encodings. +;; +;; - Characters ÅŠ and Å‹ are not supported by TeX font "times" used by +;; default by Sphinx for pdflatex engine but they are supported by +;; some TeX fonts, in particular by the default LaTeX font for T1 +;; encoding. +;; +;; - " and ~ must be escaped as ~" and resp. ~~ in xindy merge rules. +;; +;; Contributed by the Sphinx team, July 2018. +;; +;; See sphinx.xdy for superior figures, as they are escaped by LaTeX writer. +(merge-rule "\IeC {\textonesuperior }" "¹" :string) +(merge-rule "\IeC {\texttwosuperior }" "²" :string) +(merge-rule "\IeC {\textthreesuperior }" "³" :string) +(merge-rule "\IeC {\'a}" "á" :string) +(merge-rule "\IeC {\'A}" "Ã" :string) +(merge-rule "\IeC {\`a}" "à" :string) +(merge-rule "\IeC {\`A}" "À" :string) +(merge-rule "\IeC {\^a}" "â" :string) +(merge-rule "\IeC {\^A}" "Â" :string) +(merge-rule "\IeC {\~"a}" "ä" :string) +(merge-rule "\IeC {\~"A}" "Ä" :string) +(merge-rule "\IeC {\~~a}" "ã" :string) +(merge-rule "\IeC {\~~A}" "Ã" :string) +(merge-rule "\IeC {\c c}" "ç" :string) +(merge-rule "\IeC {\c C}" "Ç" :string) +(merge-rule "\IeC {\'c}" "ć" :string) +(merge-rule "\IeC {\'C}" "Ć" :string) +(merge-rule "\IeC {\^c}" "ĉ" :string) +(merge-rule "\IeC {\^C}" "Ĉ" :string) +(merge-rule "\IeC {\.c}" "Ä‹" :string) +(merge-rule "\IeC {\.C}" "ÄŠ" :string) +(merge-rule "\IeC {\c s}" "ÅŸ" :string) +(merge-rule "\IeC {\c S}" "Åž" :string) +(merge-rule "\IeC {\c t}" "Å£" :string) +(merge-rule "\IeC {\c T}" "Å¢" :string) +(merge-rule "\IeC {\-}" "­" :string); soft hyphen +(merge-rule "\IeC {\textdiv }" "÷" :string) +(merge-rule "\IeC {\'e}" "é" :string) +(merge-rule "\IeC {\'E}" "É" :string) +(merge-rule "\IeC {\`e}" "è" :string) +(merge-rule "\IeC {\`E}" "È" :string) +(merge-rule "\IeC {\^e}" "ê" :string) +(merge-rule "\IeC {\^E}" "Ê" :string) +(merge-rule "\IeC {\~"e}" "ë" :string) +(merge-rule "\IeC {\~"E}" "Ë" :string) +(merge-rule "\IeC {\^g}" "Ä" :string) +(merge-rule "\IeC {\^G}" "Äœ" :string) +(merge-rule "\IeC {\.g}" "Ä¡" :string) +(merge-rule "\IeC {\.G}" "Ä " :string) +(merge-rule "\IeC {\^h}" "Ä¥" :string) +(merge-rule "\IeC {\^H}" "Ĥ" :string) +(merge-rule "\IeC {\H o}" "Å‘" :string) +(merge-rule "\IeC {\H O}" "Å" :string) +(merge-rule "\IeC {\textacutedbl }" "Ë" :string) +(merge-rule "\IeC {\H u}" "ű" :string) +(merge-rule "\IeC {\H U}" "Ű" :string) +(merge-rule "\IeC {\ae }" "æ" :string) +(merge-rule "\IeC {\AE }" "Æ" :string) +(merge-rule "\IeC {\textcopyright }" "©" :string) +(merge-rule "\IeC {\c \ }" "¸" :string) +(merge-rule "\IeC {\dh }" "ð" :string) +(merge-rule "\IeC {\DH }" "Ã" :string) +(merge-rule "\IeC {\dj }" "Ä‘" :string) +(merge-rule "\IeC {\DJ }" "Ä" :string) +(merge-rule "\IeC {\guillemotleft }" "«" :string) +(merge-rule "\IeC {\guillemotright }" "»" :string) +(merge-rule "\IeC {\'\i }" "í" :string) +(merge-rule "\IeC {\`\i }" "ì" :string) +(merge-rule "\IeC {\^\i }" "î" :string) +(merge-rule "\IeC {\~"\i }" "ï" :string) +(merge-rule "\IeC {\i }" "ı" :string) +(merge-rule "\IeC {\^\j }" "ĵ" :string) +(merge-rule "\IeC {\k {}}" "Ë›" :string) +(merge-rule "\IeC {\l }" "Å‚" :string) +(merge-rule "\IeC {\L }" "Å" :string) +(merge-rule "\IeC {\nobreakspace }" " " :string) +(merge-rule "\IeC {\o }" "ø" :string) +(merge-rule "\IeC {\O }" "Ø" :string) +(merge-rule "\IeC {\textsterling }" "£" :string) +(merge-rule "\IeC {\textparagraph }" "¶" :string) +(merge-rule "\IeC {\ss }" "ß" :string) +(merge-rule "\IeC {\textsection }" "§" :string) +(merge-rule "\IeC {\textbrokenbar }" "¦" :string) +(merge-rule "\IeC {\textcent }" "¢" :string) +(merge-rule "\IeC {\textcurrency }" "¤" :string) +(merge-rule "\IeC {\textdegree }" "°" :string) +(merge-rule "\IeC {\textexclamdown }" "¡" :string) +(merge-rule "\IeC {\texthbar }" "ħ" :string) +(merge-rule "\IeC {\textHbar }" "Ħ" :string) +(merge-rule "\IeC {\textonehalf }" "½" :string) +(merge-rule "\IeC {\textonequarter }" "¼" :string) +(merge-rule "\IeC {\textordfeminine }" "ª" :string) +(merge-rule "\IeC {\textordmasculine }" "º" :string) +(merge-rule "\IeC {\textperiodcentered }" "·" :string) +(merge-rule "\IeC {\textquestiondown }" "¿" :string) +(merge-rule "\IeC {\textregistered }" "®" :string) +(merge-rule "\IeC {\textthreequarters }" "¾" :string) +(merge-rule "\IeC {\textyen }" "Â¥" :string) +(merge-rule "\IeC {\th }" "þ" :string) +(merge-rule "\IeC {\TH }" "Þ" :string) +(merge-rule "\IeC {\'I}" "Ã" :string) +(merge-rule "\IeC {\`I}" "ÃŒ" :string) +(merge-rule "\IeC {\^I}" "ÃŽ" :string) +(merge-rule "\IeC {\~"I}" "Ã" :string) +(merge-rule "\IeC {\.I}" "İ" :string) +(merge-rule "\IeC {\^J}" "Ä´" :string) +(merge-rule "\IeC {\k a}" "Ä…" :string) +(merge-rule "\IeC {\k A}" "Ä„" :string) +(merge-rule "\IeC {\k e}" "Ä™" :string) +(merge-rule "\IeC {\k E}" "Ę" :string) +(merge-rule "\IeC {\'l}" "ĺ" :string) +(merge-rule "\IeC {\'L}" "Ĺ" :string) +(merge-rule "\IeC {\textlnot }" "¬" :string) +(merge-rule "\IeC {\textmu }" "µ" :string) +(merge-rule "\IeC {\'n}" "Å„" :string) +(merge-rule "\IeC {\'N}" "Ń" :string) +(merge-rule "\IeC {\~~n}" "ñ" :string) +(merge-rule "\IeC {\~~N}" "Ñ" :string) +(merge-rule "\IeC {\'o}" "ó" :string) +(merge-rule "\IeC {\'O}" "Ó" :string) +(merge-rule "\IeC {\`o}" "ò" :string) +(merge-rule "\IeC {\`O}" "Ã’" :string) +(merge-rule "\IeC {\^o}" "ô" :string) +(merge-rule "\IeC {\^O}" "Ô" :string) +(merge-rule "\IeC {\~"o}" "ö" :string) +(merge-rule "\IeC {\~"O}" "Ö" :string) +(merge-rule "\IeC {\~~o}" "õ" :string) +(merge-rule "\IeC {\~~O}" "Õ" :string) +(merge-rule "\IeC {\textpm }" "±" :string) +(merge-rule "\IeC {\r a}" "Ã¥" :string) +(merge-rule "\IeC {\r A}" "Ã…" :string) +(merge-rule "\IeC {\'r}" "Å•" :string) +(merge-rule "\IeC {\'R}" "Å”" :string) +(merge-rule "\IeC {\r u}" "ů" :string) +(merge-rule "\IeC {\r U}" "Å®" :string) +(merge-rule "\IeC {\'s}" "Å›" :string) +(merge-rule "\IeC {\'S}" "Åš" :string) +(merge-rule "\IeC {\^s}" "Å" :string) +(merge-rule "\IeC {\^S}" "Åœ" :string) +(merge-rule "\IeC {\textasciidieresis }" "¨" :string) +(merge-rule "\IeC {\textasciimacron }" "¯" :string) +(merge-rule "\IeC {\.{}}" "Ë™" :string) +(merge-rule "\IeC {\textasciiacute }" "´" :string) +(merge-rule "\IeC {\texttimes }" "×" :string) +(merge-rule "\IeC {\u a}" "ă" :string) +(merge-rule "\IeC {\u A}" "Ä‚" :string) +(merge-rule "\IeC {\u g}" "ÄŸ" :string) +(merge-rule "\IeC {\u G}" "Äž" :string) +(merge-rule "\IeC {\textasciibreve }" "˘" :string) +(merge-rule "\IeC {\'u}" "ú" :string) +(merge-rule "\IeC {\'U}" "Ú" :string) +(merge-rule "\IeC {\`u}" "ù" :string) +(merge-rule "\IeC {\`U}" "Ù" :string) +(merge-rule "\IeC {\^u}" "û" :string) +(merge-rule "\IeC {\^U}" "Û" :string) +(merge-rule "\IeC {\~"u}" "ü" :string) +(merge-rule "\IeC {\~"U}" "Ü" :string) +(merge-rule "\IeC {\u u}" "Å­" :string) +(merge-rule "\IeC {\u U}" "Ŭ" :string) +(merge-rule "\IeC {\v c}" "Ä" :string) +(merge-rule "\IeC {\v C}" "ÄŒ" :string) +(merge-rule "\IeC {\v d}" "Ä" :string) +(merge-rule "\IeC {\v D}" "ÄŽ" :string) +(merge-rule "\IeC {\v e}" "Ä›" :string) +(merge-rule "\IeC {\v E}" "Äš" :string) +(merge-rule "\IeC {\v l}" "ľ" :string) +(merge-rule "\IeC {\v L}" "Ľ" :string) +(merge-rule "\IeC {\v n}" "ň" :string) +(merge-rule "\IeC {\v N}" "Ň" :string) +(merge-rule "\IeC {\v r}" "Å™" :string) +(merge-rule "\IeC {\v R}" "Ř" :string) +(merge-rule "\IeC {\v s}" "Å¡" :string) +(merge-rule "\IeC {\v S}" "Å " :string) +(merge-rule "\IeC {\textasciicaron }" "ˇ" :string) +(merge-rule "\IeC {\v t}" "Å¥" :string) +(merge-rule "\IeC {\v T}" "Ť" :string) +(merge-rule "\IeC {\v z}" "ž" :string) +(merge-rule "\IeC {\v Z}" "Ž" :string) +(merge-rule "\IeC {\'y}" "ý" :string) +(merge-rule "\IeC {\'Y}" "Ã" :string) +(merge-rule "\IeC {\~"y}" "ÿ" :string) +(merge-rule "\IeC {\'z}" "ź" :string) +(merge-rule "\IeC {\'Z}" "Ź" :string) +(merge-rule "\IeC {\.z}" "ż" :string) +(merge-rule "\IeC {\.Z}" "Å»" :string) +;; letters not in Latin1, 2, 3 but available in TeX T1 font encoding +(merge-rule "\IeC {\~"Y}" "Ÿ" :string) +(merge-rule "\IeC {\NG }" "ÅŠ" :string) +(merge-rule "\IeC {\ng }" "Å‹" :string) +(merge-rule "\IeC {\OE }" "Å’" :string) +(merge-rule "\IeC {\oe }" "Å“" :string) +(merge-rule "\IeC {\IJ }" "IJ" :string) +(merge-rule "\IeC {\ij }" "ij" :string) +(merge-rule "\IeC {\j }" "È·" :string) +(merge-rule "\IeC {\SS }" "ẞ" :string) diff --git a/doc/src/LectureNotes/_build/latex/LatinRules.xdy b/doc/src/LectureNotes/_build/latex/LatinRules.xdy new file mode 100644 index 000000000..99f14a2ee --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/LatinRules.xdy @@ -0,0 +1,607 @@ +;; style file for xindy +;; filename: LatinRules.xdy +;; +;; It is based upon xindy's files lang/general/utf8.xdy and +;; lang/general/utf8-lang.xdy which implement +;; "a general sorting order for Western European languages" +;; +;; The aim for Sphinx is to be able to index in a Cyrillic document +;; also terms using the Latin alphabets, inclusive of letters +;; with diacritics. To this effect the xindy rules from lang/general +;; got manually re-coded to avoid collisions with the encoding +;; done by xindy for sorting words in Cyrillic languages, which was +;; observed not to use bytes with octal encoding 0o266 or higher. +;; +;; So here we use only 0o266 or higher bytes. +;; (ÅŠ, Å‹, IJ, and ij are absent from +;; lang/general/utf8.xdy and not included here) +;; Contributed by the Sphinx team, 2018. + +(define-letter-group "A" :prefixes ("¶")) +(define-letter-group "B" :after "A" :prefixes ("·")) +(define-letter-group "C" :after "B" :prefixes ("¸")) +(define-letter-group "D" :after "C" :prefixes ("¹")) +(define-letter-group "E" :after "D" :prefixes ("º")) +(define-letter-group "F" :after "E" :prefixes ("»")) +(define-letter-group "G" :after "F" :prefixes ("¼")) +(define-letter-group "H" :after "G" :prefixes ("½")) +(define-letter-group "I" :after "H" :prefixes ("¾")) +(define-letter-group "J" :after "I" :prefixes ("¿")) +(define-letter-group "K" :after "J" :prefixes ("À")) +(define-letter-group "L" :after "K" :prefixes ("Á")) +(define-letter-group "M" :after "L" :prefixes ("Â")) +(define-letter-group "N" :after "M" :prefixes ("Ã")) +(define-letter-group "O" :after "N" :prefixes ("Ä")) +(define-letter-group "P" :after "O" :prefixes ("È")) +(define-letter-group "Q" :after "P" :prefixes ("Ê")) +(define-letter-group "R" :after "Q" :prefixes ("Ë")) +(define-letter-group "S" :after "R" :prefixes ("Ð")) +(define-letter-group "T" :after "S" :prefixes ("Ú")) +(define-letter-group "U" :after "T" :prefixes ("à")) +(define-letter-group "V" :after "U" :prefixes ("å")) +(define-letter-group "W" :after "V" :prefixes ("æ")) +(define-letter-group "X" :after "W" :prefixes ("ë")) +(define-letter-group "Y" :after "X" :prefixes ("í")) +(define-letter-group "Z" :after "Y" :prefixes ("ð")) + +(define-rule-set "sphinx-xy-alphabetize" + + :rules (("À" "¶" :string) + ("Ä‚" "¶" :string) + ("â" "¶" :string) + ("Ä" "¶" :string) + ("à" "¶" :string) + ("Ã…" "¶" :string) + ("Ã" "¶" :string) + ("Ã" "¶" :string) + ("á" "¶" :string) + ("ã" "¶" :string) + ("Â" "¶" :string) + ("ă" "¶" :string) + ("Ã¥" "¶" :string) + ("Ä…" "¶" :string) + ("ä" "¶" :string) + ("Ä„" "¶" :string) + ("æ" "¶º" :string) + ("Æ" "¶º" :string) + ("ć" "¸" :string) + ("ĉ" "¸" :string) + ("ç" "¸" :string) + ("ÄŒ" "¸" :string) + ("Ä" "¸" :string) + ("Ĉ" "¸" :string) + ("Ç" "¸" :string) + ("Ć" "¸" :string) + ("Ä" "¹" :string) + ("Ä" "¹" :string) + ("ÄŽ" "¹" :string) + ("Ä‘" "¹" :string) + ("ê" "º" :string) + ("Ę" "º" :string) + ("Äš" "º" :string) + ("ë" "º" :string) + ("Ä›" "º" :string) + ("é" "º" :string) + ("È" "º" :string) + ("Ë" "º" :string) + ("É" "º" :string) + ("è" "º" :string) + ("Ê" "º" :string) + ("Ä™" "º" :string) + ("Ä" "¼" :string) + ("ÄŸ" "¼" :string) + ("Äž" "¼" :string) + ("Äœ" "¼" :string) + ("Ä¥" "½" :string) + ("Ĥ" "½" :string) + ("Ã" "¾" :string) + ("Ã" "¾" :string) + ("ï" "¾" :string) + ("ÃŽ" "¾" :string) + ("î" "¾" :string) + ("ı" "¾" :string) + ("İ" "¾" :string) + ("í" "¾" :string) + ("ÃŒ" "¾" :string) + ("ì" "¾" :string) + ("Ä´" "¿" :string) + ("ĵ" "¿" :string) + ("Å‚" "Á" :string) + ("Å" "Á" :string) + ("ľ" "Á" :string) + ("Ľ" "Á" :string) + ("Å„" "Ã" :string) + ("Ń" "Ã" :string) + ("ñ" "Ã" :string) + ("ň" "Ã" :string) + ("Ñ" "Ã" :string) + ("Ň" "Ã" :string) + ("Õ" "Ä" :string) + ("Å" "Ä" :string) + ("ó" "Ä" :string) + ("ö" "Ä" :string) + ("ô" "Ä" :string) + ("Å‘" "Ä" :string) + ("Ø" "Ä" :string) + ("Ö" "Ä" :string) + ("õ" "Ä" :string) + ("Ô" "Ä" :string) + ("ø" "Ä" :string) + ("Ó" "Ä" :string) + ("Ã’" "Ä" :string) + ("ò" "Ä" :string) + ("Å“" "ĺ" :string) + ("Å’" "ĺ" :string) + ("Ř" "Ë" :string) + ("Å™" "Ë" :string) + ("Å”" "Ë" :string) + ("Å•" "Ë" :string) + ("Å" "Ð" :string) + ("Åš" "Ð" :string) + ("È™" "Ð" :string) + ("ÅŸ" "Ð" :string) + ("Åœ" "Ð" :string) + ("Å›" "Ð" :string) + ("Ș" "Ð" :string) + ("Å¡" "Ð" :string) + ("Åž" "Ð" :string) + ("Å " "Ð" :string) + ("ß" "ÐÐ" :string) + ("Èš" "Ú" :string) + ("Ť" "Ú" :string) + ("È›" "Ú" :string) + ("Å¥" "Ú" :string) + ("û" "à" :string) + ("Å­" "à" :string) + ("ů" "à" :string) + ("ű" "à" :string) + ("ù" "à" :string) + ("Ŭ" "à" :string) + ("Ù" "à" :string) + ("Ű" "à" :string) + ("Ü" "à" :string) + ("Å®" "à" :string) + ("ú" "à" :string) + ("Ú" "à" :string) + ("Û" "à" :string) + ("ü" "à" :string) + ("ÿ" "í" :string) + ("Ã" "í" :string) + ("Ÿ" "í" :string) + ("ý" "í" :string) + ("Å»" "ð" :string) + ("Ž" "ð" :string) + ("Ź" "ð" :string) + ("ž" "ð" :string) + ("ż" "ð" :string) + ("ź" "ð" :string) + ("a" "¶" :string) + ("A" "¶" :string) + ("b" "·" :string) + ("B" "·" :string) + ("c" "¸" :string) + ("C" "¸" :string) + ("d" "¹" :string) + ("D" "¹" :string) + ("e" "º" :string) + ("E" "º" :string) + ("F" "»" :string) + ("f" "»" :string) + ("G" "¼" :string) + ("g" "¼" :string) + ("H" "½" :string) + ("h" "½" :string) + ("i" "¾" :string) + ("I" "¾" :string) + ("J" "¿" :string) + ("j" "¿" :string) + ("K" "À" :string) + ("k" "À" :string) + ("L" "Á" :string) + ("l" "Á" :string) + ("M" "Â" :string) + ("m" "Â" :string) + ("n" "Ã" :string) + ("N" "Ã" :string) + ("O" "Ä" :string) + ("o" "Ä" :string) + ("p" "È" :string) + ("P" "È" :string) + ("Q" "Ê" :string) + ("q" "Ê" :string) + ("r" "Ë" :string) + ("R" "Ë" :string) + ("S" "Ð" :string) + ("s" "Ð" :string) + ("t" "Ú" :string) + ("T" "Ú" :string) + ("u" "à" :string) + ("U" "à" :string) + ("v" "å" :string) + ("V" "å" :string) + ("W" "æ" :string) + ("w" "æ" :string) + ("x" "ë" :string) + ("X" "ë" :string) + ("Y" "í" :string) + ("y" "í" :string) + ("z" "ð" :string) + ("Z" "ð" :string) + )) + +(define-rule-set "sphinx-xy-resolve-diacritics" + + :rules (("Ĥ" "£" :string) + ("ó" "£" :string) + ("ľ" "£" :string) + ("Ř" "£" :string) + ("Ä" "£" :string) + ("Ä" "£" :string) + ("Äš" "£" :string) + ("Ä¥" "£" :string) + ("ÄŒ" "£" :string) + ("Ä´" "£" :string) + ("Ä›" "£" :string) + ("ž" "£" :string) + ("ÄŽ" "£" :string) + ("Å™" "£" :string) + ("Ž" "£" :string) + ("ı" "£" :string) + ("Ť" "£" :string) + ("á" "£" :string) + ("Ä" "£" :string) + ("Ã" "£" :string) + ("ň" "£" :string) + ("Å " "£" :string) + ("Ň" "£" :string) + ("ĵ" "£" :string) + ("Å¥" "£" :string) + ("Ó" "£" :string) + ("ý" "£" :string) + ("Äœ" "£" :string) + ("Ú" "£" :string) + ("Ľ" "£" :string) + ("Å¡" "£" :string) + ("Ã" "£" :string) + ("ú" "£" :string) + ("Åš" "¤" :string) + ("ć" "¤" :string) + ("Å" "¤" :string) + ("Å‚" "¤" :string) + ("Å„" "¤" :string) + ("À" "¤" :string) + ("Ź" "¤" :string) + ("à" "¤" :string) + ("Ń" "¤" :string) + ("Ä" "¤" :string) + ("ÿ" "¤" :string) + ("Å›" "¤" :string) + ("Äž" "¤" :string) + ("ÄŸ" "¤" :string) + ("Ù" "¤" :string) + ("İ" "¤" :string) + ("Ä‘" "¤" :string) + ("ù" "¤" :string) + ("Èš" "¤" :string) + ("é" "¤" :string) + ("Å•" "¤" :string) + ("Ć" "¤" :string) + ("È›" "¤" :string) + ("ò" "¤" :string) + ("ź" "¤" :string) + ("Ã’" "¤" :string) + ("Ÿ" "¤" :string) + ("Å”" "¤" :string) + ("É" "¤" :string) + ("ĉ" "¥" :string) + ("ô" "¥" :string) + ("Ã" "¥" :string) + ("Å" "¥" :string) + ("Å»" "¥" :string) + ("Ä‚" "¥" :string) + ("Åœ" "¥" :string) + ("ñ" "¥" :string) + ("Å­" "¥" :string) + ("í" "¥" :string) + ("È" "¥" :string) + ("Ô" "¥" :string) + ("Ŭ" "¥" :string) + ("ż" "¥" :string) + ("Ñ" "¥" :string) + ("è" "¥" :string) + ("Ĉ" "¥" :string) + ("ă" "¥" :string) + ("â" "¦" :string) + ("û" "¦" :string) + ("ê" "¦" :string) + ("Õ" "¦" :string) + ("õ" "¦" :string) + ("È™" "¦" :string) + ("ç" "¦" :string) + ("Â" "¦" :string) + ("Ê" "¦" :string) + ("Û" "¦" :string) + ("Ç" "¦" :string) + ("ì" "¦" :string) + ("ÃŒ" "¦" :string) + ("Ș" "¦" :string) + ("ö" "§" :string) + ("Ö" "§" :string) + ("ÅŸ" "§" :string) + ("ů" "§" :string) + ("ë" "§" :string) + ("ã" "§" :string) + ("î" "§" :string) + ("ÃŽ" "§" :string) + ("Ã" "§" :string) + ("Åž" "§" :string) + ("Å®" "§" :string) + ("Ë" "§" :string) + ("ï" "¨" :string) + ("Å" "¨" :string) + ("Ã" "¨" :string) + ("Ę" "¨" :string) + ("Å‘" "¨" :string) + ("Ü" "¨" :string) + ("Ã…" "¨" :string) + ("ü" "¨" :string) + ("Ä™" "¨" :string) + ("Ã¥" "¨" :string) + ("Ä" "©" :string) + ("ű" "©" :string) + ("Ø" "©" :string) + ("ø" "©" :string) + ("Ű" "©" :string) + ("ä" "©" :string) + ("Ä„" "ª" :string) + ("Ä…" "ª" :string) + ("Å“" "ÿ" :string) + ("ß" "ÿ" :string) + ("Æ" "ÿ" :string) + ("Å’" "ÿ" :string) + ("æ" "ÿ" :string) + ("e" "¢" :string) + ("t" "¢" :string) + ("L" "¢" :string) + ("Y" "¢" :string) + ("J" "¢" :string) + ("a" "¢" :string) + ("p" "¢" :string) + ("u" "¢" :string) + ("j" "¢" :string) + ("b" "¢" :string) + ("G" "¢" :string) + ("U" "¢" :string) + ("F" "¢" :string) + ("H" "¢" :string) + ("i" "¢" :string) + ("z" "¢" :string) + ("c" "¢" :string) + ("l" "¢" :string) + ("A" "¢" :string) + ("Q" "¢" :string) + ("w" "¢" :string) + ("D" "¢" :string) + ("R" "¢" :string) + ("d" "¢" :string) + ("s" "¢" :string) + ("r" "¢" :string) + ("k" "¢" :string) + ("v" "¢" :string) + ("m" "¢" :string) + ("P" "¢" :string) + ("y" "¢" :string) + ("K" "¢" :string) + ("q" "¢" :string) + ("S" "¢" :string) + ("I" "¢" :string) + ("C" "¢" :string) + ("M" "¢" :string) + ("Z" "¢" :string) + ("T" "¢" :string) + ("W" "¢" :string) + ("B" "¢" :string) + ("h" "¢" :string) + ("x" "¢" :string) + ("X" "¢" :string) + ("f" "¢" :string) + ("E" "¢" :string) + ("V" "¢" :string) + ("N" "¢" :string) + ("O" "¢" :string) + ("o" "¢" :string) + ("g" "¢" :string) + ("n" "¢" :string) + )) + +(define-rule-set "sphinx-xy-resolve-case" + + :rules (("Ú" "8" :string) + ("Ÿ" "8" :string) + ("Ç" "8" :string) + ("Ĉ" "8" :string) + ("Å”" "8" :string) + ("Ľ" "8" :string) + ("Å®" "8" :string) + ("Ã" "8" :string) + ("É" "8" :string) + ("Ë" "8" :string) + ("Ș" "8" :string) + ("ÃŒ" "8" :string) + ("Ê" "8" :string) + ("Ň" "8" :string) + ("Ä„" "8" :string) + ("Å " "8" :string) + ("Û" "8" :string) + ("Åž" "8" :string) + ("Ć" "8" :string) + ("Ã’" "8" :string) + ("Äœ" "8" :string) + ("Ñ" "8" :string) + ("Ó" "8" :string) + ("ÃŽ" "8" :string) + ("Ã" "8" :string) + ("Ã" "8" :string) + ("Èš" "8" :string) + ("Ã…" "8" :string) + ("Äž" "8" :string) + ("Ü" "8" :string) + ("È" "8" :string) + ("Ô" "8" :string) + ("İ" "8" :string) + ("Ű" "8" :string) + ("Ù" "8" :string) + ("Ŭ" "8" :string) + ("Â" "8" :string) + ("Ť" "8" :string) + ("Ń" "8" :string) + ("ÄŽ" "8" :string) + ("Ź" "8" :string) + ("Ž" "8" :string) + ("Ä" "8" :string) + ("Åœ" "8" :string) + ("ÄŒ" "8" :string) + ("Ä´" "8" :string) + ("Ö" "8" :string) + ("Ø" "8" :string) + ("Å»" "8" :string) + ("Å" "8" :string) + ("Ä‚" "8" :string) + ("Äš" "8" :string) + ("Å" "8" :string) + ("Õ" "8" :string) + ("Ę" "8" :string) + ("Ã" "8" :string) + ("À" "8" :string) + ("Ĥ" "8" :string) + ("Ä" "8" :string) + ("Åš" "8" :string) + ("Ř" "8" :string) + ("Ã" "8" :string) + ("Å’" "89" :string) + ("Æ" "89" :string) + ("ì" "9" :string) + ("è" "9" :string) + ("Ä…" "9" :string) + ("Å¡" "9" :string) + ("ú" "9" :string) + ("Ã¥" "9" :string) + ("ă" "9" :string) + ("Ä™" "9" :string) + ("ü" "9" :string) + ("ź" "9" :string) + ("ò" "9" :string) + ("Å¥" "9" :string) + ("È›" "9" :string) + ("ĵ" "9" :string) + ("Å•" "9" :string) + ("ż" "9" :string) + ("ä" "9" :string) + ("ý" "9" :string) + ("ù" "9" :string) + ("á" "9" :string) + ("é" "9" :string) + ("Ä" "9" :string) + ("ň" "9" :string) + ("Å›" "9" :string) + ("ø" "9" :string) + ("í" "9" :string) + ("Ä‘" "9" :string) + ("ı" "9" :string) + ("ÄŸ" "9" :string) + ("î" "9" :string) + ("ã" "9" :string) + ("à" "9" :string) + ("Å™" "9" :string) + ("Å‘" "9" :string) + ("ů" "9" :string) + ("È™" "9" :string) + ("ÿ" "9" :string) + ("ë" "9" :string) + ("Å­" "9" :string) + ("ç" "9" :string) + ("ű" "9" :string) + ("ñ" "9" :string) + ("õ" "9" :string) + ("Ä›" "9" :string) + ("ÅŸ" "9" :string) + ("ž" "9" :string) + ("Ä" "9" :string) + ("Å" "9" :string) + ("Å„" "9" :string) + ("û" "9" :string) + ("Å‚" "9" :string) + ("Ä" "9" :string) + ("Ä¥" "9" :string) + ("ê" "9" :string) + ("ô" "9" :string) + ("ĉ" "9" :string) + ("â" "9" :string) + ("ć" "9" :string) + ("ï" "9" :string) + ("ö" "9" :string) + ("ľ" "9" :string) + ("ó" "9" :string) + ("æ" "99" :string) + ("ß" "99" :string) + ("Å“" "99" :string) + ("N" "8" :string) + ("V" "8" :string) + ("O" "8" :string) + ("X" "8" :string) + ("E" "8" :string) + ("P" "8" :string) + ("K" "8" :string) + ("T" "8" :string) + ("Z" "8" :string) + ("M" "8" :string) + ("C" "8" :string) + ("I" "8" :string) + ("S" "8" :string) + ("B" "8" :string) + ("W" "8" :string) + ("D" "8" :string) + ("R" "8" :string) + ("H" "8" :string) + ("F" "8" :string) + ("Q" "8" :string) + ("A" "8" :string) + ("G" "8" :string) + ("U" "8" :string) + ("J" "8" :string) + ("Y" "8" :string) + ("L" "8" :string) + ("o" "9" :string) + ("n" "9" :string) + ("g" "9" :string) + ("x" "9" :string) + ("f" "9" :string) + ("y" "9" :string) + ("q" "9" :string) + ("h" "9" :string) + ("w" "9" :string) + ("s" "9" :string) + ("d" "9" :string) + ("v" "9" :string) + ("k" "9" :string) + ("r" "9" :string) + ("m" "9" :string) + ("z" "9" :string) + ("c" "9" :string) + ("i" "9" :string) + ("l" "9" :string) + ("b" "9" :string) + ("j" "9" :string) + ("a" "9" :string) + ("p" "9" :string) + ("u" "9" :string) + ("t" "9" :string) + ("e" "9" :string) + )) + +(use-rule-set :run 0 + :rule-set ("sphinx-xy-alphabetize")) +(use-rule-set :run 1 + :rule-set ("sphinx-xy-resolve-diacritics")) +(use-rule-set :run 2 + :rule-set ("sphinx-xy-resolve-case")) diff --git a/doc/src/LectureNotes/_build/latex/Makefile b/doc/src/LectureNotes/_build/latex/Makefile new file mode 100644 index 000000000..e4653f236 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/Makefile @@ -0,0 +1,64 @@ +# Makefile for Sphinx LaTeX output + +ALLDOCS = $(basename $(wildcard *.tex)) +ALLPDF = $(addsuffix .pdf,$(ALLDOCS)) +ALLDVI = $(addsuffix .dvi,$(ALLDOCS)) +ALLXDV = +ALLPS = $(addsuffix .ps,$(ALLDOCS)) + +# Prefix for archive names +ARCHIVEPREFIX = +# Additional LaTeX options (passed via variables in latexmkrc/latexmkjarc file) +export LATEXOPTS ?= +# Additional latexmk options +LATEXMKOPTS ?= +# format: pdf or dvi (used only by archive targets) +FMT = pdf + +LATEX = latexmk -dvi +PDFLATEX = latexmk -pdf -dvi- -ps- + + +%.dvi: %.tex FORCE_MAKE + $(LATEX) $(LATEXMKOPTS) '$<' + +%.ps: %.dvi + dvips '$<' + +%.pdf: %.tex FORCE_MAKE + $(PDFLATEX) $(LATEXMKOPTS) '$<' + +all: $(ALLPDF) + +all-dvi: $(ALLDVI) + +all-ps: $(ALLPS) + +all-pdf: $(ALLPDF) + +zip: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + zip -q -r -9 $(ARCHIVEPREFIX)docs-$(FMT).zip $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +tar: all-$(FMT) + mkdir $(ARCHIVEPREFIX)docs-$(FMT) + cp $(ALLPDF) $(ARCHIVEPREFIX)docs-$(FMT) + tar cf $(ARCHIVEPREFIX)docs-$(FMT).tar $(ARCHIVEPREFIX)docs-$(FMT) + rm -r $(ARCHIVEPREFIX)docs-$(FMT) + +gz: tar + gzip -9 < $(ARCHIVEPREFIX)docs-$(FMT).tar > $(ARCHIVEPREFIX)docs-$(FMT).tar.gz + +bz2: tar + bzip2 -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +xz: tar + xz -9 -k $(ARCHIVEPREFIX)docs-$(FMT).tar + +clean: + rm -f *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz $(ALLPDF) $(ALLDVI) $(ALLXDV) *.fls *.fdb_latexmk + +.PHONY: all all-pdf all-dvi all-ps clean zip tar gz bz2 xz +.PHONY: FORCE_MAKE \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/latex/chapter2_114_1.png b/doc/src/LectureNotes/_build/latex/chapter2_114_1.png new file mode 100644 index 000000000..c4b695c48 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_114_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_116_0.png b/doc/src/LectureNotes/_build/latex/chapter2_116_0.png new file mode 100644 index 000000000..edfffab82 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_116_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_118_16.png b/doc/src/LectureNotes/_build/latex/chapter2_118_16.png new file mode 100644 index 000000000..88dc008c1 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_118_16.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_42_1.png b/doc/src/LectureNotes/_build/latex/chapter2_42_1.png new file mode 100644 index 000000000..ba2a50ee0 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_42_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_54_2.png b/doc/src/LectureNotes/_build/latex/chapter2_54_2.png new file mode 100644 index 000000000..a98599b80 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_54_2.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_54_3.png b/doc/src/LectureNotes/_build/latex/chapter2_54_3.png new file mode 100644 index 000000000..8e152c96c Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_54_3.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_60_0.png b/doc/src/LectureNotes/_build/latex/chapter2_60_0.png new file mode 100644 index 000000000..df48d7b60 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_60_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_68_0.png b/doc/src/LectureNotes/_build/latex/chapter2_68_0.png new file mode 100644 index 000000000..ad7dca499 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_68_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_70_1.png b/doc/src/LectureNotes/_build/latex/chapter2_70_1.png new file mode 100644 index 000000000..96f30fb74 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_70_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter2_84_0.png b/doc/src/LectureNotes/_build/latex/chapter2_84_0.png new file mode 100644 index 000000000..965a1bc22 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter2_84_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter3_178_0.png b/doc/src/LectureNotes/_build/latex/chapter3_178_0.png new file mode 100644 index 000000000..e0dacc37f Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter3_178_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter3_184_1.png b/doc/src/LectureNotes/_build/latex/chapter3_184_1.png new file mode 100644 index 000000000..06bf49bb5 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter3_184_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter3_29_0.png b/doc/src/LectureNotes/_build/latex/chapter3_29_0.png new file mode 100644 index 000000000..aa693ddeb Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter3_29_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_117_1.png b/doc/src/LectureNotes/_build/latex/chapter4_117_1.png new file mode 100644 index 000000000..fbc5ca4b1 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_117_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_129_0.png b/doc/src/LectureNotes/_build/latex/chapter4_129_0.png new file mode 100644 index 000000000..d1c0337c8 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_129_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_131_1.png b/doc/src/LectureNotes/_build/latex/chapter4_131_1.png new file mode 100644 index 000000000..69d9a2d8e Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_131_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_133_0.png b/doc/src/LectureNotes/_build/latex/chapter4_133_0.png new file mode 100644 index 000000000..9ba9365fa Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_133_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_140_0.png b/doc/src/LectureNotes/_build/latex/chapter4_140_0.png new file mode 100644 index 000000000..cd1b11227 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_140_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_278_2.png b/doc/src/LectureNotes/_build/latex/chapter4_278_2.png new file mode 100644 index 000000000..75ce0a5ee Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_278_2.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_300_1.png b/doc/src/LectureNotes/_build/latex/chapter4_300_1.png new file mode 100644 index 000000000..518353f55 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_300_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter4_70_0.png b/doc/src/LectureNotes/_build/latex/chapter4_70_0.png new file mode 100644 index 000000000..d26dc0e80 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter4_70_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter5_42_0.png b/doc/src/LectureNotes/_build/latex/chapter5_42_0.png new file mode 100644 index 000000000..d4c378f37 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter5_42_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter5_7_0.png b/doc/src/LectureNotes/_build/latex/chapter5_7_0.png new file mode 100644 index 000000000..c60e649ee Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter5_7_0.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter5_7_1.png b/doc/src/LectureNotes/_build/latex/chapter5_7_1.png new file mode 100644 index 000000000..51bf89ea3 Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter5_7_1.png differ diff --git a/doc/src/LectureNotes/_build/latex/chapter5_7_2.png b/doc/src/LectureNotes/_build/latex/chapter5_7_2.png new file mode 100644 index 000000000..6515604ad Binary files /dev/null and b/doc/src/LectureNotes/_build/latex/chapter5_7_2.png differ diff --git a/doc/src/LectureNotes/_build/latex/footnotehyper-sphinx.sty b/doc/src/LectureNotes/_build/latex/footnotehyper-sphinx.sty new file mode 100644 index 000000000..b6692cfb8 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/footnotehyper-sphinx.sty @@ -0,0 +1,269 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{footnotehyper-sphinx}% + [2017/10/27 v1.7 hyperref aware footnote.sty for sphinx (JFB)] +%% +%% Package: footnotehyper-sphinx +%% Version: based on footnotehyper.sty 2017/03/07 v1.0 +%% as available at https://www.ctan.org/pkg/footnotehyper +%% License: the one applying to Sphinx +%% +%% Refer to the PDF documentation at https://www.ctan.org/pkg/footnotehyper for +%% the code comments. +%% +%% Differences: +%% 1. a partial tabulary compatibility layer added (enough for Sphinx mark-up), +%% 2. use of \spx@opt@BeforeFootnote from sphinx.sty, +%% 3. use of \sphinxunactivateextrasandspace from sphinx.sty, +%% 4. macro definition \sphinxfootnotemark, +%% 5. macro definition \sphinxlongtablepatch +%% 6. replaced an \undefined by \@undefined +\DeclareOption*{\PackageWarning{footnotehyper-sphinx}{Option `\CurrentOption' is unknown}}% +\ProcessOptions\relax +\newbox\FNH@notes +\newdimen\FNH@width +\let\FNH@colwidth\columnwidth +\newif\ifFNH@savingnotes +\AtBeginDocument {% + \let\FNH@latex@footnote \footnote + \let\FNH@latex@footnotetext\footnotetext + \let\FNH@H@@footnotetext \@footnotetext + \newenvironment{savenotes} + {\FNH@savenotes\ignorespaces}{\FNH@spewnotes\ignorespacesafterend}% + \let\spewnotes \FNH@spewnotes + \let\footnote \FNH@footnote + \let\footnotetext \FNH@footnotetext + \let\endfootnote \FNH@endfntext + \let\endfootnotetext\FNH@endfntext + \@ifpackageloaded{hyperref} + {\ifHy@hyperfootnotes + \let\FNH@H@@footnotetext\H@@footnotetext + \else + \let\FNH@hyper@fntext\FNH@nohyp@fntext + \fi}% + {\let\FNH@hyper@fntext\FNH@nohyp@fntext}% +}% +\def\FNH@hyper@fntext{\FNH@fntext\FNH@hyper@fntext@i}% +\def\FNH@nohyp@fntext{\FNH@fntext\FNH@nohyp@fntext@i}% +\def\FNH@fntext #1{% + \ifx\ifmeasuring@\@undefined + \expandafter\@secondoftwo\else\expandafter\@firstofone\fi +% these two lines modified for Sphinx (tabulary compatibility): + {\ifmeasuring@\expandafter\@gobbletwo\else\expandafter\@firstofone\fi}% + {\ifx\equation$\expandafter\@gobbletwo\fi #1}%$ +}% +\long\def\FNH@hyper@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext + {\rule\z@\footnotesep\ignorespaces + \ifHy@nesting\expandafter\ltx@firstoftwo + \else\expandafter\ltx@secondoftwo + \fi + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}{#1}}% + {\Hy@raisedlink + {\expandafter\hyper@@anchor\expandafter{\Hy@footnote@currentHref}% + {\relax}}% + \let\@currentHref\Hy@footnote@currentHref + \let\@currentlabelname\@empty + #1}% + \@finalstrut\strutbox + }% + \FNH@endnote + }% +}% +\long\def\FNH@nohyp@fntext@i#1{% + \global\setbox\FNH@notes\vbox + {\unvbox\FNH@notes + \FNH@startnote + \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \FNH@endnote + }% +}% +\def\FNH@startnote{% + \hsize\FNH@colwidth + \interlinepenalty\interfootnotelinepenalty + \reset@font\footnotesize + \floatingpenalty\@MM + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup +}% +\def\FNH@endnote{\color@endgroup}% +\def\FNH@savenotes{% + \begingroup + \ifFNH@savingnotes\else + \FNH@savingnotestrue + \let\@footnotetext \FNH@hyper@fntext + \let\@mpfootnotetext \FNH@hyper@fntext + \let\H@@mpfootnotetext\FNH@nohyp@fntext + \FNH@width\columnwidth + \let\FNH@colwidth\FNH@width + \global\setbox\FNH@notes\box\voidb@x + \let\FNH@thempfn\thempfn + \let\FNH@mpfn\@mpfn + \ifx\@minipagerestore\relax\let\@minipagerestore\@empty\fi + \expandafter\def\expandafter\@minipagerestore\expandafter{% + \@minipagerestore + \let\thempfn\FNH@thempfn + \let\@mpfn\FNH@mpfn + }% + \fi +}% +\def\FNH@spewnotes {% + \endgroup + \ifFNH@savingnotes\else + \ifvoid\FNH@notes\else + \begingroup + \let\@makefntext\@empty + \let\@finalstrut\@gobble + \let\rule\@gobbletwo + \FNH@H@@footnotetext{\unvbox\FNH@notes}% + \endgroup + \fi + \fi +}% +\def\FNH@footnote@envname {footnote}% +\def\FNH@footnotetext@envname{footnotetext}% +\def\FNH@footnote{% +% this line added for Sphinx: + \spx@opt@BeforeFootnote + \ifx\@currenvir\FNH@footnote@envname + \expandafter\FNH@footnoteenv + \else + \expandafter\FNH@latex@footnote + \fi +}% +\def\FNH@footnoteenv{% +% this line added for Sphinx (footnotes in parsed literal blocks): + \catcode13=5 \sphinxunactivateextrasandspace + \@ifnextchar[% + \FNH@footnoteenv@i %] + {\stepcounter\@mpfn + \protected@xdef\@thefnmark{\thempfn}% + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnoteenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \@footnotemark + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext +}% +\def\FNH@footnotetext{% + \ifx\@currenvir\FNH@footnotetext@envname + \expandafter\FNH@footnotetextenv + \else + \expandafter\FNH@latex@footnotetext + \fi +}% +\def\FNH@footnotetextenv{% + \@ifnextchar[% + \FNH@footnotetextenv@i %] + {\protected@xdef\@thefnmark{\thempfn}% + \def\FNH@endfntext@fntext{\@footnotetext}% + \FNH@startfntext}% +}% +\def\FNH@footnotetextenv@i[#1]{% + \begingroup + \csname c@\@mpfn\endcsname #1\relax + \unrestored@protected@xdef\@thefnmark{\thempfn}% + \endgroup + \ifFNH@savingnotes + \def\FNH@endfntext@fntext{\FNH@nohyp@fntext}% + \else + \def\FNH@endfntext@fntext{\FNH@H@@footnotetext}% + \fi + \FNH@startfntext +}% +\def\FNH@startfntext{% + \setbox\z@\vbox\bgroup + \FNH@startnote + \FNH@prefntext + \rule\z@\footnotesep\ignorespaces +}% +\def\FNH@endfntext {% + \@finalstrut\strutbox + \FNH@postfntext + \FNH@endnote + \egroup + \begingroup + \let\@makefntext\@empty\let\@finalstrut\@gobble\let\rule\@gobbletwo + \FNH@endfntext@fntext {\unvbox\z@}% + \endgroup +}% +\AtBeginDocument{% + \let\FNH@@makefntext\@makefntext + \ifx\@makefntextFB\@undefined + \expandafter\@gobble\else\expandafter\@firstofone\fi + {\ifFBFrenchFootnotes \let\FNH@@makefntext\@makefntextFB \else + \let\FNH@@makefntext\@makefntextORI\fi}% + \expandafter\FNH@check@a\FNH@@makefntext{1.2!3?4,}% + \FNH@@@1.2!3?4,\FNH@@@\relax +}% +\long\def\FNH@check@a #11.2!3?4,#2\FNH@@@#3{% + \ifx\relax#3\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi + \FNH@bad@makefntext@alert + {\def\FNH@prefntext{#1}\def\FNH@postfntext{#2}\FNH@check@b}% +}% +\def\FNH@check@b #1\relax{% + \expandafter\expandafter\expandafter\FNH@check@c + \expandafter\meaning\expandafter\FNH@prefntext + \meaning\FNH@postfntext1.2!3?4,\FNH@check@c\relax +}% +\def\FNH@check@c #11.2!3?4,#2#3\relax{% + \ifx\FNH@check@c#2\expandafter\@gobble\fi\FNH@bad@makefntext@alert +}% +% slight reformulation for Sphinx +\def\FNH@bad@makefntext@alert{% + \PackageWarningNoLine{footnotehyper-sphinx}% + {Footnotes will be sub-optimal, sorry. This is due to the document class or^^J + some package modifying macro \string\@makefntext.^^J + You can try to report this incompatibility at^^J + https://github.com/sphinx-doc/sphinx with this info:}% + \typeout{\meaning\@makefntext}% + \let\FNH@prefntext\@empty\let\FNH@postfntext\@empty +}% +% this macro from original footnote.sty is not used anymore by Sphinx +% but for simplicity sake let's just keep it as is +\def\makesavenoteenv{\@ifnextchar[\FNH@msne@ii\FNH@msne@i}%] +\def\FNH@msne@i #1{% + \expandafter\let\csname FNH$#1\expandafter\endcsname %$ + \csname #1\endcsname + \expandafter\let\csname endFNH$#1\expandafter\endcsname %$ + \csname end#1\endcsname + \FNH@msne@ii[#1]{FNH$#1}%$ +}% +\def\FNH@msne@ii[#1]#2{% + \expandafter\edef\csname#1\endcsname{% + \noexpand\savenotes + \expandafter\noexpand\csname#2\endcsname + }% + \expandafter\edef\csname end#1\endcsname{% + \expandafter\noexpand\csname end#2\endcsname + \noexpand\expandafter + \noexpand\spewnotes + \noexpand\if@endpe\noexpand\@endpetrue\noexpand\fi + }% +}% +% end of footnotehyper 2017/02/16 v0.99 +% some extras for Sphinx : +% \sphinxfootnotemark: usable in section titles and silently removed from TOCs. +\def\sphinxfootnotemark [#1]% + {\ifx\thepage\relax\else\protect\spx@opt@BeforeFootnote + \protect\footnotemark[#1]\fi}% +\AtBeginDocument{% + % let hyperref less complain + \pdfstringdefDisableCommands{\def\sphinxfootnotemark [#1]{}}% + % to obtain hyperlinked footnotes in longtable environment we must replace + % hyperref's patch of longtable's patch of \@footnotetext by our own + \let\LT@p@ftntext\FNH@hyper@fntext + % this *requires* longtable to be used always wrapped in savenotes environment +}% +\endinput +%% +%% End of file `footnotehyper-sphinx.sty'. diff --git a/doc/src/LectureNotes/_build/latex/index.html b/doc/src/LectureNotes/_build/latex/index.html new file mode 100644 index 000000000..14448b092 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/index.html @@ -0,0 +1,2 @@ + + diff --git a/doc/src/LectureNotes/_build/latex/latexmkjarc b/doc/src/LectureNotes/_build/latex/latexmkjarc new file mode 100644 index 000000000..6e36b195b --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/latexmkjarc @@ -0,0 +1,22 @@ +$latex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' -kanji=utf8 %O %S'; +$dvipdf = 'dvipdfmx %O -o %D %S'; +$makeindex = 'internal mendex %S %B %D'; +sub mendex { + my ($source, $basename, $destination) = @_; + my $dictfile = $basename . ".dic"; + unlink($destination); + system("mendex", "-U", "-f", "-d", $dictfile, "-s", "python.ist", $source); + if ($? > 0) { + print("mendex exited with error code $? (ignored)\n"); + } + if (!-e $destination) { + # create an empty .ind file if nothing + open(FH, ">" . $destination); + close(FH); + } + return 0; +} +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "mendex -J -f -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/latex/latexmkrc b/doc/src/LectureNotes/_build/latex/latexmkrc new file mode 100644 index 000000000..bba17fa6b --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/latexmkrc @@ -0,0 +1,9 @@ +$latex = 'latex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$pdflatex = 'pdflatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$lualatex = 'lualatex ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$xelatex = 'xelatex --no-pdf ' . $ENV{'LATEXOPTS'} . ' %O %S'; +$makeindex = 'makeindex -s python.ist %O -o %D %S'; +add_cus_dep( "glo", "gls", 0, "makeglo" ); +sub makeglo { + return system( "makeindex -s gglo.ist -o '$_[0].gls' '$_[0].glo'" ); +} \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/latex/make.bat b/doc/src/LectureNotes/_build/latex/make.bat new file mode 100644 index 000000000..94bda2139 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/make.bat @@ -0,0 +1,31 @@ +@ECHO OFF + +REM Command file for Sphinx documentation + +pushd %~dp0 + +set PDFLATEX=latexmk -pdf -dvi- -ps- + +set "LATEXOPTS= " + +if "%1" == "" goto all-pdf + +if "%1" == "all-pdf" ( + :all-pdf + for %%i in (*.tex) do ( + %PDFLATEX% %LATEXMKOPTS% %%i + ) + goto end +) + +if "%1" == "all-pdf-ja" ( + goto all-pdf +) + +if "%1" == "clean" ( + del /q /s *.dvi *.log *.ind *.aux *.toc *.syn *.idx *.out *.ilg *.pla *.ps *.tar *.tar.gz *.tar.bz2 *.tar.xz *.fls *.fdb_latexmk + goto end +) + +:end +popd \ No newline at end of file diff --git a/doc/src/LectureNotes/_build/latex/python.aux b/doc/src/LectureNotes/_build/latex/python.aux new file mode 100644 index 000000000..7610afd4f --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/python.aux @@ -0,0 +1,507 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\select@language{english} +\@writefile{toc}{\select@language{english}} +\@writefile{lof}{\select@language{english}} +\@writefile{lot}{\select@language{english}} +\newlabel{chapter1::doc}{{}{1}{}{section*.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {1}Introduction}{3}{chapter.1}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:introduction}{{1}{3}{Introduction}{chapter.1}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {2}Learning outcomes}{5}{chapter.2}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:learning-outcomes}{{2}{5}{Learning outcomes}{chapter.2}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {3}Machine Learning, a small (and probably biased) introduction}{7}{chapter.3}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:machine-learning-a-small-and-probably-biased-introduction}{{3}{7}{Machine Learning, a small (and probably biased) introduction}{chapter.3}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {4}Machine Learning, an extremely rich field}{9}{chapter.4}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:machine-learning-an-extremely-rich-field}{{4}{9}{Machine Learning, an extremely rich field}{chapter.4}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {5}A multidisciplinary approach}{11}{chapter.5}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:a-multidisciplinary-approach}{{5}{11}{A multidisciplinary approach}{chapter.5}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {6}Types of Machine Learning}{13}{chapter.6}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:types-of-machine-learning}{{6}{13}{Types of Machine Learning}{chapter.6}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {7}Essential elements of ML}{15}{chapter.7}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:essential-elements-of-ml}{{7}{15}{Essential elements of ML}{chapter.7}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {8}An optimization/minimization problem}{17}{chapter.8}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:an-optimization-minimization-problem}{{8}{17}{An optimization/minimization problem}{chapter.8}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {9}A Frequentist approach to data analysis}{19}{chapter.9}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:a-frequentist-approach-to-data-analysis}{{9}{19}{A Frequentist approach to data analysis}{chapter.9}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {10}What is a good model?}{21}{chapter.10}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:what-is-a-good-model}{{10}{21}{What is a good model?}{chapter.10}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {11}What is a good model? Can we define it?}{23}{chapter.11}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:what-is-a-good-model-can-we-define-it}{{11}{23}{What is a good model? Can we define it?}{chapter.11}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {12}Choice of Programming Language}{25}{chapter.12}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:choice-of-programming-language}{{12}{25}{Choice of Programming Language}{chapter.12}{}} +\@writefile{toc}{\contentsline {chapter}{\numberline {13}Data handling, machine learning and ethical aspects}{27}{chapter.13}} +\@writefile{lof}{\addvspace {10\p@ }} +\@writefile{lot}{\addvspace {10\p@ }} +\newlabel{chapter1:data-handling-machine-learning-and-ethical-aspects}{{13}{27}{Data handling, machine learning and ethical aspects}{chapter.13}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.1}Data Analysis and Machine Learning: Getting started, our first data and Machine Learning encounters}{28}{section.13.1}} +\newlabel{chapter2:data-analysis-and-machine-learning-getting-started-our-first-data-and-machine-learning-encounters}{{13.1}{28}{Data Analysis and Machine Learning: Getting started, our first data and Machine Learning encounters}{section.13.1}{}} +\newlabel{chapter2::doc}{{13.1}{28}{Data Analysis and Machine Learning: Getting started, our first data and Machine Learning encounters}{section.13.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.1}Introduction}{28}{subsection.13.1.1}} +\newlabel{chapter2:introduction}{{13.1.1}{28}{Introduction}{subsection.13.1.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.2}What is Machine Learning?}{28}{subsection.13.1.2}} +\newlabel{chapter2:what-is-machine-learning}{{13.1.2}{28}{What is Machine Learning?}{subsection.13.1.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.3}Types of Machine Learning}{29}{subsection.13.1.3}} +\newlabel{chapter2:types-of-machine-learning}{{13.1.3}{29}{Types of Machine Learning}{subsection.13.1.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.4}Software and needed installations}{30}{subsection.13.1.4}} +\newlabel{chapter2:software-and-needed-installations}{{13.1.4}{30}{Software and needed installations}{subsection.13.1.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.5}Python installers}{30}{subsection.13.1.5}} +\newlabel{chapter2:python-installers}{{13.1.5}{30}{Python installers}{subsection.13.1.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.6}Useful Python libraries}{31}{subsection.13.1.6}} +\newlabel{chapter2:useful-python-libraries}{{13.1.6}{31}{Useful Python libraries}{subsection.13.1.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.7}Installing R, C++, cython or Julia}{31}{subsection.13.1.7}} +\newlabel{chapter2:installing-r-c-cython-or-julia}{{13.1.7}{31}{Installing R, C++, cython or Julia}{subsection.13.1.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.8}Installing R, C++, cython, Numba etc}{31}{subsection.13.1.8}} +\newlabel{chapter2:installing-r-c-cython-numba-etc}{{13.1.8}{31}{Installing R, C++, cython, Numba etc}{subsection.13.1.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.9}Numpy examples and Important Matrix and vector handling packages}{32}{subsection.13.1.9}} +\newlabel{chapter2:numpy-examples-and-important-matrix-and-vector-handling-packages}{{13.1.9}{32}{Numpy examples and Important Matrix and vector handling packages}{subsection.13.1.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.10}Basic Matrix Features}{32}{subsection.13.1.10}} +\newlabel{chapter2:basic-matrix-features}{{13.1.10}{32}{Basic Matrix Features}{subsection.13.1.10}{}} +\@writefile{toc}{\contentsline {subsubsection}{Some famous Matrices}{32}{subsubsection*.3}} +\newlabel{chapter2:some-famous-matrices}{{13.1.10}{32}{Some famous Matrices}{subsubsection*.3}{}} +\@writefile{toc}{\contentsline {subsubsection}{More Basic Matrix Features}{33}{subsubsection*.4}} +\newlabel{chapter2:more-basic-matrix-features}{{13.1.10}{33}{More Basic Matrix Features}{subsubsection*.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.11}Numpy and arrays}{33}{subsection.13.1.11}} +\newlabel{chapter2:numpy-and-arrays}{{13.1.11}{33}{Numpy and arrays}{subsection.13.1.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.12}Matrices in Python}{34}{subsection.13.1.12}} +\newlabel{chapter2:matrices-in-python}{{13.1.12}{34}{Matrices in Python}{subsection.13.1.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.13}Meet the Pandas}{38}{subsection.13.1.13}} +\newlabel{chapter2:meet-the-pandas}{{13.1.13}{38}{Meet the Pandas}{subsection.13.1.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.14}Reading Data and fitting}{43}{subsection.13.1.14}} +\newlabel{chapter2:reading-data-and-fitting}{{13.1.14}{43}{Reading Data and fitting}{subsection.13.1.14}{}} +\@writefile{toc}{\contentsline {subsubsection}{Simple linear regression model using \sphinxstylestrong {scikit\sphinxhyphen {}learn}}{43}{subsubsection*.5}} +\newlabel{chapter2:simple-linear-regression-model-using-scikit-learn}{{13.1.14}{43}{Simple linear regression model using \sphinxstylestrong {scikit\sphinxhyphen {}learn}}{subsubsection*.5}{}} +\@writefile{toc}{\contentsline {subsubsection}{To our real data: nuclear binding energies. Brief reminder on masses and binding energies}{51}{subsubsection*.6}} +\newlabel{chapter2:to-our-real-data-nuclear-binding-energies-brief-reminder-on-masses-and-binding-energies}{{13.1.14}{51}{To our real data: nuclear binding energies. Brief reminder on masses and binding energies}{subsubsection*.6}{}} +\@writefile{toc}{\contentsline {subsubsection}{Organizing our data}{52}{subsubsection*.7}} +\newlabel{chapter2:organizing-our-data}{{13.1.14}{52}{Organizing our data}{subsubsection*.7}{}} +\@writefile{toc}{\contentsline {subsubsection}{Seeing the wood for the trees}{56}{subsubsection*.8}} +\newlabel{chapter2:seeing-the-wood-for-the-trees}{{13.1.14}{56}{Seeing the wood for the trees}{subsubsection*.8}{}} +\@writefile{toc}{\contentsline {subsubsection}{And what about using neural networks?}{58}{subsubsection*.9}} +\newlabel{chapter2:and-what-about-using-neural-networks}{{13.1.14}{58}{And what about using neural networks?}{subsubsection*.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.1.15}A first summary}{62}{subsection.13.1.15}} +\newlabel{chapter2:a-first-summary}{{13.1.15}{62}{A first summary}{subsection.13.1.15}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.2}Data Analysis and Machine Learning: Elements of Probability Theory and Statistical Data Analysis}{63}{section.13.2}} +\newlabel{chapter3:data-analysis-and-machine-learning-elements-of-probability-theory-and-statistical-data-analysis}{{13.2}{63}{Data Analysis and Machine Learning: Elements of Probability Theory and Statistical Data Analysis}{section.13.2}{}} +\newlabel{chapter3::doc}{{13.2}{63}{Data Analysis and Machine Learning: Elements of Probability Theory and Statistical Data Analysis}{section.13.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.1}To do list}{63}{subsection.13.2.1}} +\newlabel{chapter3:to-do-list}{{13.2.1}{63}{To do list}{subsection.13.2.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.2}Domains and probabilities}{63}{subsection.13.2.2}} +\newlabel{chapter3:domains-and-probabilities}{{13.2.2}{63}{Domains and probabilities}{subsection.13.2.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.3}Tossing the dice}{63}{subsection.13.2.3}} +\newlabel{chapter3:tossing-the-dice}{{13.2.3}{63}{Tossing the dice}{subsection.13.2.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.4}Stochastic variables}{63}{subsection.13.2.4}} +\newlabel{chapter3:stochastic-variables}{{13.2.4}{63}{Stochastic variables}{subsection.13.2.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.5}Stochastic variables and the main concepts, the discrete case}{64}{subsection.13.2.5}} +\newlabel{chapter3:stochastic-variables-and-the-main-concepts-the-discrete-case}{{13.2.5}{64}{Stochastic variables and the main concepts, the discrete case}{subsection.13.2.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.6}Stochastic variables and the main concepts, the continuous case}{64}{subsection.13.2.6}} +\newlabel{chapter3:stochastic-variables-and-the-main-concepts-the-continuous-case}{{13.2.6}{64}{Stochastic variables and the main concepts, the continuous case}{subsection.13.2.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.7}The cumulative probability}{64}{subsection.13.2.7}} +\newlabel{chapter3:the-cumulative-probability}{{13.2.7}{64}{The cumulative probability}{subsection.13.2.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.8}Properties of PDFs}{64}{subsection.13.2.8}} +\newlabel{chapter3:properties-of-pdfs}{{13.2.8}{64}{Properties of PDFs}{subsection.13.2.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.9}Important distributions, the uniform distribution}{65}{subsection.13.2.9}} +\newlabel{chapter3:important-distributions-the-uniform-distribution}{{13.2.9}{65}{Important distributions, the uniform distribution}{subsection.13.2.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.10}Gaussian distribution}{65}{subsection.13.2.10}} +\newlabel{chapter3:gaussian-distribution}{{13.2.10}{65}{Gaussian distribution}{subsection.13.2.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.11}Exponential distribution}{67}{subsection.13.2.11}} +\newlabel{chapter3:exponential-distribution}{{13.2.11}{67}{Exponential distribution}{subsection.13.2.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.12}Expectation values}{67}{subsection.13.2.12}} +\newlabel{chapter3:expectation-values}{{13.2.12}{67}{Expectation values}{subsection.13.2.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.13}Stochastic variables and the main concepts, mean values}{67}{subsection.13.2.13}} +\newlabel{chapter3:stochastic-variables-and-the-main-concepts-mean-values}{{13.2.13}{67}{Stochastic variables and the main concepts, mean values}{subsection.13.2.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.14}Stochastic variables and the main concepts, central moments, the variance}{67}{subsection.13.2.14}} +\newlabel{chapter3:stochastic-variables-and-the-main-concepts-central-moments-the-variance}{{13.2.14}{67}{Stochastic variables and the main concepts, central moments, the variance}{subsection.13.2.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.15}Probability Distribution Functions}{68}{subsection.13.2.15}} +\newlabel{chapter3:probability-distribution-functions}{{13.2.15}{68}{Probability Distribution Functions}{subsection.13.2.15}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.16}Probability Distribution Functions}{68}{subsection.13.2.16}} +\newlabel{chapter3:id1}{{13.2.16}{68}{Probability Distribution Functions}{subsection.13.2.16}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.17}The three famous Probability Distribution Functions}{68}{subsection.13.2.17}} +\newlabel{chapter3:the-three-famous-probability-distribution-functions}{{13.2.17}{68}{The three famous Probability Distribution Functions}{subsection.13.2.17}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.18}Probability Distribution Functions, the normal distribution}{69}{subsection.13.2.18}} +\newlabel{chapter3:probability-distribution-functions-the-normal-distribution}{{13.2.18}{69}{Probability Distribution Functions, the normal distribution}{subsection.13.2.18}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.19}Probability Distribution Functions, the normal distribution}{69}{subsection.13.2.19}} +\newlabel{chapter3:id2}{{13.2.19}{69}{Probability Distribution Functions, the normal distribution}{subsection.13.2.19}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.20}Probability Distribution Functions, the cumulative distribution}{69}{subsection.13.2.20}} +\newlabel{chapter3:probability-distribution-functions-the-cumulative-distribution}{{13.2.20}{69}{Probability Distribution Functions, the cumulative distribution}{subsection.13.2.20}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.21}Probability Distribution Functions, other important distribution}{70}{subsection.13.2.21}} +\newlabel{chapter3:probability-distribution-functions-other-important-distribution}{{13.2.21}{70}{Probability Distribution Functions, other important distribution}{subsection.13.2.21}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.22}Probability Distribution Functions, the binomial distribution}{70}{subsection.13.2.22}} +\newlabel{chapter3:probability-distribution-functions-the-binomial-distribution}{{13.2.22}{70}{Probability Distribution Functions, the binomial distribution}{subsection.13.2.22}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.23}Probability Distribution Functions, Poisson\IeC {\textquoteright }s distribution}{70}{subsection.13.2.23}} +\newlabel{chapter3:probability-distribution-functions-poisson-s-distribution}{{13.2.23}{70}{Probability Distribution Functions, Poisson’s distribution}{subsection.13.2.23}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.24}Probability Distribution Functions, Poisson\IeC {\textquoteright }s distribution}{71}{subsection.13.2.24}} +\newlabel{chapter3:id3}{{13.2.24}{71}{Probability Distribution Functions, Poisson’s distribution}{subsection.13.2.24}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.25}Meet the covariance!}{71}{subsection.13.2.25}} +\newlabel{chapter3:meet-the-covariance}{{13.2.25}{71}{Meet the covariance!}{subsection.13.2.25}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.26}Meet the covariance in matrix disguise}{71}{subsection.13.2.26}} +\newlabel{chapter3:meet-the-covariance-in-matrix-disguise}{{13.2.26}{71}{Meet the covariance in matrix disguise}{subsection.13.2.26}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.27}Covariance}{72}{subsection.13.2.27}} +\newlabel{chapter3:covariance}{{13.2.27}{72}{Covariance}{subsection.13.2.27}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.28}Meet the covariance, uncorrelated events}{73}{subsection.13.2.28}} +\newlabel{chapter3:meet-the-covariance-uncorrelated-events}{{13.2.28}{73}{Meet the covariance, uncorrelated events}{subsection.13.2.28}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.29}Numerical experiments and the covariance}{73}{subsection.13.2.29}} +\newlabel{chapter3:numerical-experiments-and-the-covariance}{{13.2.29}{73}{Numerical experiments and the covariance}{subsection.13.2.29}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.30}Numerical experiments and the covariance}{73}{subsection.13.2.30}} +\newlabel{chapter3:id4}{{13.2.30}{73}{Numerical experiments and the covariance}{subsection.13.2.30}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.31}Numerical experiments and the covariance, actual situations}{73}{subsection.13.2.31}} +\newlabel{chapter3:numerical-experiments-and-the-covariance-actual-situations}{{13.2.31}{73}{Numerical experiments and the covariance, actual situations}{subsection.13.2.31}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.32}Numerical experiments and the covariance, our observables}{74}{subsection.13.2.32}} +\newlabel{chapter3:numerical-experiments-and-the-covariance-our-observables}{{13.2.32}{74}{Numerical experiments and the covariance, our observables}{subsection.13.2.32}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.33}Numerical experiments and the covariance, the sample variance}{74}{subsection.13.2.33}} +\newlabel{chapter3:numerical-experiments-and-the-covariance-the-sample-variance}{{13.2.33}{74}{Numerical experiments and the covariance, the sample variance}{subsection.13.2.33}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.34}Numerical experiments and the covariance, central limit theorem}{75}{subsection.13.2.34}} +\newlabel{chapter3:numerical-experiments-and-the-covariance-central-limit-theorem}{{13.2.34}{75}{Numerical experiments and the covariance, central limit theorem}{subsection.13.2.34}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.35}Definition of Correlation Functions and Standard Deviation}{75}{subsection.13.2.35}} +\newlabel{chapter3:definition-of-correlation-functions-and-standard-deviation}{{13.2.35}{75}{Definition of Correlation Functions and Standard Deviation}{subsection.13.2.35}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.36}Definition of Correlation Functions and Standard Deviation}{75}{subsection.13.2.36}} +\newlabel{chapter3:id5}{{13.2.36}{75}{Definition of Correlation Functions and Standard Deviation}{subsection.13.2.36}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.37}Definition of Correlation Functions and Standard Deviation}{75}{subsection.13.2.37}} +\newlabel{chapter3:id6}{{13.2.37}{75}{Definition of Correlation Functions and Standard Deviation}{subsection.13.2.37}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.38}Definition of Correlation Functions and Standard Deviation}{76}{subsection.13.2.38}} +\newlabel{chapter3:id7}{{13.2.38}{76}{Definition of Correlation Functions and Standard Deviation}{subsection.13.2.38}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.39}Definition of Correlation Functions and Standard Deviation, sample variance}{76}{subsection.13.2.39}} +\newlabel{chapter3:definition-of-correlation-functions-and-standard-deviation-sample-variance}{{13.2.39}{76}{Definition of Correlation Functions and Standard Deviation, sample variance}{subsection.13.2.39}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.40}Definition of Correlation Functions and Standard Deviation}{76}{subsection.13.2.40}} +\newlabel{chapter3:id8}{{13.2.40}{76}{Definition of Correlation Functions and Standard Deviation}{subsection.13.2.40}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.2.41}Code to compute the Covariance matrix and the Covariance}{77}{subsection.13.2.41}} +\newlabel{chapter3:code-to-compute-the-covariance-matrix-and-the-covariance}{{13.2.41}{77}{Code to compute the Covariance matrix and the Covariance}{subsection.13.2.41}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.3}Random Numbers}{78}{section.13.3}} +\newlabel{chapter3:random-numbers}{{13.3}{78}{Random Numbers}{section.13.3}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.4}Random Numbers, better name: pseudo random numbers}{78}{section.13.4}} +\newlabel{chapter3:random-numbers-better-name-pseudo-random-numbers}{{13.4}{78}{Random Numbers, better name: pseudo random numbers}{section.13.4}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.5}Random number generator RNG}{78}{section.13.5}} +\newlabel{chapter3:random-number-generator-rng}{{13.5}{78}{Random number generator RNG}{section.13.5}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.6}Random number generator RNG and periodic outputs}{78}{section.13.6}} +\newlabel{chapter3:random-number-generator-rng-and-periodic-outputs}{{13.6}{78}{Random number generator RNG and periodic outputs}{section.13.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.7}Random number generator RNG and its period}{79}{section.13.7}} +\newlabel{chapter3:random-number-generator-rng-and-its-period}{{13.7}{79}{Random number generator RNG and its period}{section.13.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.8}Random number generator RNG, other examples}{79}{section.13.8}} +\newlabel{chapter3:random-number-generator-rng-other-examples}{{13.8}{79}{Random number generator RNG, other examples}{section.13.8}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.9}Random number generator RNG, other examples}{79}{section.13.9}} +\newlabel{chapter3:id9}{{13.9}{79}{Random number generator RNG, other examples}{section.13.9}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.10}Random number generator RNG, RAN0}{80}{section.13.10}} +\newlabel{chapter3:random-number-generator-rng-ran0}{{13.10}{80}{Random number generator RNG, RAN0}{section.13.10}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.11}Random number generator RNG, RAN0}{80}{section.13.11}} +\newlabel{chapter3:id10}{{13.11}{80}{Random number generator RNG, RAN0}{section.13.11}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.12}Random number generator RNG, RAN0}{80}{section.13.12}} +\newlabel{chapter3:id11}{{13.12}{80}{Random number generator RNG, RAN0}{section.13.12}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.13}Random number generator RNG, RAN0}{81}{section.13.13}} +\newlabel{chapter3:id12}{{13.13}{81}{Random number generator RNG, RAN0}{section.13.13}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.14}Random number generator RNG, RAN0 code}{81}{section.13.14}} +\newlabel{chapter3:random-number-generator-rng-ran0-code}{{13.14}{81}{Random number generator RNG, RAN0 code}{section.13.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.1}Properties of Selected Random Number Generators}{82}{subsection.13.14.1}} +\newlabel{chapter3:properties-of-selected-random-number-generators}{{13.14.1}{82}{Properties of Selected Random Number Generators}{subsection.13.14.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.2}Properties of Selected Random Number Generators}{82}{subsection.13.14.2}} +\newlabel{chapter3:id13}{{13.14.2}{82}{Properties of Selected Random Number Generators}{subsection.13.14.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.3}Properties of Selected Random Number Generators}{82}{subsection.13.14.3}} +\newlabel{chapter3:id14}{{13.14.3}{82}{Properties of Selected Random Number Generators}{subsection.13.14.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.4}Simple demonstration of RNGs using python}{82}{subsection.13.14.4}} +\newlabel{chapter3:simple-demonstration-of-rngs-using-python}{{13.14.4}{82}{Simple demonstration of RNGs using python}{subsection.13.14.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.5}Properties of Selected Random Number Generators}{83}{subsection.13.14.5}} +\newlabel{chapter3:id15}{{13.14.5}{83}{Properties of Selected Random Number Generators}{subsection.13.14.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.6}Autocorrelation function}{83}{subsection.13.14.6}} +\newlabel{chapter3:autocorrelation-function}{{13.14.6}{83}{Autocorrelation function}{subsection.13.14.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.14.7}Correlation function and which random number generators should I use}{85}{subsection.13.14.7}} +\newlabel{chapter3:correlation-function-and-which-random-number-generators-should-i-use}{{13.14.7}{85}{Correlation function and which random number generators should I use}{subsection.13.14.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.15}Which RNG should I use?}{86}{section.13.15}} +\newlabel{chapter3:which-rng-should-i-use}{{13.15}{86}{Which RNG should I use?}{section.13.15}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.1}How to use the Mersenne generator}{86}{subsection.13.15.1}} +\newlabel{chapter3:how-to-use-the-mersenne-generator}{{13.15.1}{86}{How to use the Mersenne generator}{subsection.13.15.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.2}Why blocking?}{86}{subsection.13.15.2}} +\newlabel{chapter3:why-blocking}{{13.15.2}{86}{Why blocking?}{subsection.13.15.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.3}Why blocking?}{87}{subsection.13.15.3}} +\newlabel{chapter3:id16}{{13.15.3}{87}{Why blocking?}{subsection.13.15.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.4}Code to demonstrate the calculation of the autocorrelation function}{87}{subsection.13.15.4}} +\newlabel{chapter3:code-to-demonstrate-the-calculation-of-the-autocorrelation-function}{{13.15.4}{87}{Code to demonstrate the calculation of the autocorrelation function}{subsection.13.15.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.5}What is blocking?}{89}{subsection.13.15.5}} +\newlabel{chapter3:what-is-blocking}{{13.15.5}{89}{What is blocking?}{subsection.13.15.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.6}What is blocking?}{89}{subsection.13.15.6}} +\newlabel{chapter3:id17}{{13.15.6}{89}{What is blocking?}{subsection.13.15.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.7}What is blocking?}{89}{subsection.13.15.7}} +\newlabel{chapter3:id18}{{13.15.7}{89}{What is blocking?}{subsection.13.15.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.8}Implementation}{90}{subsection.13.15.8}} +\newlabel{chapter3:implementation}{{13.15.8}{90}{Implementation}{subsection.13.15.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.9}Actual implementation with code, main function}{90}{subsection.13.15.9}} +\newlabel{chapter3:actual-implementation-with-code-main-function}{{13.15.9}{90}{Actual implementation with code, main function}{subsection.13.15.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.10}The Bootstrap method}{91}{subsection.13.15.10}} +\newlabel{chapter3:the-bootstrap-method}{{13.15.10}{91}{The Bootstrap method}{subsection.13.15.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.11}Bootstrapping}{91}{subsection.13.15.11}} +\newlabel{chapter3:bootstrapping}{{13.15.11}{91}{Bootstrapping}{subsection.13.15.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.12}Bootstrapping, recipe}{91}{subsection.13.15.12}} +\newlabel{chapter3:bootstrapping-recipe}{{13.15.12}{91}{Bootstrapping, recipe}{subsection.13.15.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.13}Bootstrapping, code}{92}{subsection.13.15.13}} +\newlabel{chapter3:bootstrapping-code}{{13.15.13}{92}{Bootstrapping, code}{subsection.13.15.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.15.14}Jackknife, code}{92}{subsection.13.15.14}} +\newlabel{chapter3:jackknife-code}{{13.15.14}{92}{Jackknife, code}{subsection.13.15.14}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.16}Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis}{92}{section.13.16}} +\newlabel{chapter4:data-analysis-and-machine-learning-linear-regression-and-more-advanced-regression-analysis}{{13.16}{92}{Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis}{section.13.16}{}} +\newlabel{chapter4::doc}{{13.16}{92}{Data Analysis and Machine Learning: Linear Regression and more Advanced Regression Analysis}{section.13.16}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.1}Why Linear Regression (aka Ordinary Least Squares and family)}{92}{subsection.13.16.1}} +\newlabel{chapter4:why-linear-regression-aka-ordinary-least-squares-and-family}{{13.16.1}{92}{Why Linear Regression (aka Ordinary Least Squares and family)}{subsection.13.16.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.2}Regression analysis, overarching aims}{93}{subsection.13.16.2}} +\newlabel{chapter4:regression-analysis-overarching-aims}{{13.16.2}{93}{Regression analysis, overarching aims}{subsection.13.16.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.3}Regression analysis, overarching aims II}{93}{subsection.13.16.3}} +\newlabel{chapter4:regression-analysis-overarching-aims-ii}{{13.16.3}{93}{Regression analysis, overarching aims II}{subsection.13.16.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.4}Examples}{93}{subsection.13.16.4}} +\newlabel{chapter4:examples}{{13.16.4}{93}{Examples}{subsection.13.16.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.5}General linear models}{94}{subsection.13.16.5}} +\newlabel{chapter4:general-linear-models}{{13.16.5}{94}{General linear models}{subsection.13.16.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.6}Rewriting the fitting procedure as a linear algebra problem}{94}{subsection.13.16.6}} +\newlabel{chapter4:rewriting-the-fitting-procedure-as-a-linear-algebra-problem}{{13.16.6}{94}{Rewriting the fitting procedure as a linear algebra problem}{subsection.13.16.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.7}Rewriting the fitting procedure as a linear algebra problem, more details}{94}{subsection.13.16.7}} +\newlabel{chapter4:rewriting-the-fitting-procedure-as-a-linear-algebra-problem-more-details}{{13.16.7}{94}{Rewriting the fitting procedure as a linear algebra problem, more details}{subsection.13.16.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.8}Generalizing the fitting procedure as a linear algebra problem}{95}{subsection.13.16.8}} +\newlabel{chapter4:generalizing-the-fitting-procedure-as-a-linear-algebra-problem}{{13.16.8}{95}{Generalizing the fitting procedure as a linear algebra problem}{subsection.13.16.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.9}Generalizing the fitting procedure as a linear algebra problem}{95}{subsection.13.16.9}} +\newlabel{chapter4:id1}{{13.16.9}{95}{Generalizing the fitting procedure as a linear algebra problem}{subsection.13.16.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.10}Optimizing our parameters}{95}{subsection.13.16.10}} +\newlabel{chapter4:optimizing-our-parameters}{{13.16.10}{95}{Optimizing our parameters}{subsection.13.16.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.11}Our model for the nuclear binding energies}{96}{subsection.13.16.11}} +\newlabel{chapter4:our-model-for-the-nuclear-binding-energies}{{13.16.11}{96}{Our model for the nuclear binding energies}{subsection.13.16.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.12}Optimizing our parameters, more details}{98}{subsection.13.16.12}} +\newlabel{chapter4:optimizing-our-parameters-more-details}{{13.16.12}{98}{Optimizing our parameters, more details}{subsection.13.16.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.13}Interpretations and optimizing our parameters}{98}{subsection.13.16.13}} +\newlabel{chapter4:interpretations-and-optimizing-our-parameters}{{13.16.13}{98}{Interpretations and optimizing our parameters}{subsection.13.16.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.14}Interpretations and optimizing our parameters}{99}{subsection.13.16.14}} +\newlabel{chapter4:id2}{{13.16.14}{99}{Interpretations and optimizing our parameters}{subsection.13.16.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.15}Some useful matrix and vector expressions}{99}{subsection.13.16.15}} +\newlabel{chapter4:some-useful-matrix-and-vector-expressions}{{13.16.15}{99}{Some useful matrix and vector expressions}{subsection.13.16.15}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.16}Interpretations and optimizing our parameters}{99}{subsection.13.16.16}} +\newlabel{chapter4:id3}{{13.16.16}{99}{Interpretations and optimizing our parameters}{subsection.13.16.16}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.17}Own code for Ordinary Least Squares}{100}{subsection.13.16.17}} +\newlabel{chapter4:own-code-for-ordinary-least-squares}{{13.16.17}{100}{Own code for Ordinary Least Squares}{subsection.13.16.17}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.18}Adding error analysis and training set up}{101}{subsection.13.16.18}} +\newlabel{chapter4:adding-error-analysis-and-training-set-up}{{13.16.18}{101}{Adding error analysis and training set up}{subsection.13.16.18}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.19}The \(\chi ^2\) function}{101}{subsection.13.16.19}} +\newlabel{chapter4:the-chi-2-function}{{13.16.19}{101}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.19}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.20}The \(\chi ^2\) function}{102}{subsection.13.16.20}} +\newlabel{chapter4:id4}{{13.16.20}{102}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.20}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.21}The \(\chi ^2\) function}{102}{subsection.13.16.21}} +\newlabel{chapter4:id5}{{13.16.21}{102}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.21}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.22}The \(\chi ^2\) function}{102}{subsection.13.16.22}} +\newlabel{chapter4:id6}{{13.16.22}{102}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.22}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.23}The \(\chi ^2\) function}{103}{subsection.13.16.23}} +\newlabel{chapter4:id7}{{13.16.23}{103}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.23}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.24}The \(\chi ^2\) function}{103}{subsection.13.16.24}} +\newlabel{chapter4:id8}{{13.16.24}{103}{The \protect \(\chi ^2\protect \) function}{subsection.13.16.24}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.25}Fitting an Equation of State for Dense Nuclear Matter}{104}{subsection.13.16.25}} +\newlabel{chapter4:fitting-an-equation-of-state-for-dense-nuclear-matter}{{13.16.25}{104}{Fitting an Equation of State for Dense Nuclear Matter}{subsection.13.16.25}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.26}The code}{104}{subsection.13.16.26}} +\newlabel{chapter4:the-code}{{13.16.26}{104}{The code}{subsection.13.16.26}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.27}Splitting our Data in Training and Test data}{106}{subsection.13.16.27}} +\newlabel{chapter4:splitting-our-data-in-training-and-test-data}{{13.16.27}{106}{Splitting our Data in Training and Test data}{subsection.13.16.27}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.28}The Boston housing data example}{108}{subsection.13.16.28}} +\newlabel{chapter4:the-boston-housing-data-example}{{13.16.28}{108}{The Boston housing data example}{subsection.13.16.28}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.29}Housing data, the code}{108}{subsection.13.16.29}} +\newlabel{chapter4:housing-data-the-code}{{13.16.29}{108}{Housing data, the code}{subsection.13.16.29}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.30}Reducing the number of degrees of freedom, overarching view}{114}{subsection.13.16.30}} +\newlabel{chapter4:reducing-the-number-of-degrees-of-freedom-overarching-view}{{13.16.30}{114}{Reducing the number of degrees of freedom, overarching view}{subsection.13.16.30}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.31}Preprocessing our data}{114}{subsection.13.16.31}} +\newlabel{chapter4:preprocessing-our-data}{{13.16.31}{114}{Preprocessing our data}{subsection.13.16.31}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.32}More preprocessing}{115}{subsection.13.16.32}} +\newlabel{chapter4:more-preprocessing}{{13.16.32}{115}{More preprocessing}{subsection.13.16.32}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.33}Simple preprocessing examples, Franke function and regression}{115}{subsection.13.16.33}} +\newlabel{chapter4:simple-preprocessing-examples-franke-function-and-regression}{{13.16.33}{115}{Simple preprocessing examples, Franke function and regression}{subsection.13.16.33}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.34}The singular value decomposition}{117}{subsection.13.16.34}} +\newlabel{chapter4:the-singular-value-decomposition}{{13.16.34}{117}{The singular value decomposition}{subsection.13.16.34}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.35}Linear Regression Problems}{117}{subsection.13.16.35}} +\newlabel{chapter4:linear-regression-problems}{{13.16.35}{117}{Linear Regression Problems}{subsection.13.16.35}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.36}Fixing the singularity}{118}{subsection.13.16.36}} +\newlabel{chapter4:fixing-the-singularity}{{13.16.36}{118}{Fixing the singularity}{subsection.13.16.36}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.37}Basic math of the SVD}{118}{subsection.13.16.37}} +\newlabel{chapter4:basic-math-of-the-svd}{{13.16.37}{118}{Basic math of the SVD}{subsection.13.16.37}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.38}The SVD, a Fantastic Algorithm}{119}{subsection.13.16.38}} +\newlabel{chapter4:the-svd-a-fantastic-algorithm}{{13.16.38}{119}{The SVD, a Fantastic Algorithm}{subsection.13.16.38}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.39}Economy\sphinxhyphen {}size SVD}{119}{subsection.13.16.39}} +\newlabel{chapter4:economy-size-svd}{{13.16.39}{119}{Economy\sphinxhyphen {}size SVD}{subsection.13.16.39}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.40}Codes for the SVD}{120}{subsection.13.16.40}} +\newlabel{chapter4:codes-for-the-svd}{{13.16.40}{120}{Codes for the SVD}{subsection.13.16.40}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.41}Mathematical Properties}{121}{subsection.13.16.41}} +\newlabel{chapter4:mathematical-properties}{{13.16.41}{121}{Mathematical Properties}{subsection.13.16.41}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.42}Ridge and LASSO Regression}{121}{subsection.13.16.42}} +\newlabel{chapter4:ridge-and-lasso-regression}{{13.16.42}{121}{Ridge and LASSO Regression}{subsection.13.16.42}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.43}More on Ridge Regression}{122}{subsection.13.16.43}} +\newlabel{chapter4:more-on-ridge-regression}{{13.16.43}{122}{More on Ridge Regression}{subsection.13.16.43}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.44}Interpreting the Ridge results}{123}{subsection.13.16.44}} +\newlabel{chapter4:interpreting-the-ridge-results}{{13.16.44}{123}{Interpreting the Ridge results}{subsection.13.16.44}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.45}More interpretations}{123}{subsection.13.16.45}} +\newlabel{chapter4:more-interpretations}{{13.16.45}{123}{More interpretations}{subsection.13.16.45}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.46}A better understanding of regularization}{123}{subsection.13.16.46}} +\newlabel{chapter4:a-better-understanding-of-regularization}{{13.16.46}{123}{A better understanding of regularization}{subsection.13.16.46}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.47}Decomposing the OLS and Ridge expressions}{124}{subsection.13.16.47}} +\newlabel{chapter4:decomposing-the-ols-and-ridge-expressions}{{13.16.47}{124}{Decomposing the OLS and Ridge expressions}{subsection.13.16.47}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.48}Introducing the Covariance and Correlation functions}{124}{subsection.13.16.48}} +\newlabel{chapter4:introducing-the-covariance-and-correlation-functions}{{13.16.48}{124}{Introducing the Covariance and Correlation functions}{subsection.13.16.48}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.49}Correlation Function and Design/Feature Matrix}{125}{subsection.13.16.49}} +\newlabel{chapter4:correlation-function-and-design-feature-matrix}{{13.16.49}{125}{Correlation Function and Design/Feature Matrix}{subsection.13.16.49}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.50}Covariance Matrix Examples}{125}{subsection.13.16.50}} +\newlabel{chapter4:covariance-matrix-examples}{{13.16.50}{125}{Covariance Matrix Examples}{subsection.13.16.50}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.51}Correlation Matrix}{126}{subsection.13.16.51}} +\newlabel{chapter4:correlation-matrix}{{13.16.51}{126}{Correlation Matrix}{subsection.13.16.51}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.52}Correlation Matrix with Pandas}{127}{subsection.13.16.52}} +\newlabel{chapter4:correlation-matrix-with-pandas}{{13.16.52}{127}{Correlation Matrix with Pandas}{subsection.13.16.52}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.53}Correlation Matrix with Pandas and the Franke function}{128}{subsection.13.16.53}} +\newlabel{chapter4:correlation-matrix-with-pandas-and-the-franke-function}{{13.16.53}{128}{Correlation Matrix with Pandas and the Franke function}{subsection.13.16.53}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.54}Rewriting the Covariance and/or Correlation Matrix}{129}{subsection.13.16.54}} +\newlabel{chapter4:rewriting-the-covariance-and-or-correlation-matrix}{{13.16.54}{129}{Rewriting the Covariance and/or Correlation Matrix}{subsection.13.16.54}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.55}Linking with SVD}{130}{subsection.13.16.55}} +\newlabel{chapter4:linking-with-svd}{{13.16.55}{130}{Linking with SVD}{subsection.13.16.55}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.56}Where are we going?}{130}{subsection.13.16.56}} +\newlabel{chapter4:where-are-we-going}{{13.16.56}{130}{Where are we going?}{subsection.13.16.56}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.57}Resampling methods}{130}{subsection.13.16.57}} +\newlabel{chapter4:resampling-methods}{{13.16.57}{130}{Resampling methods}{subsection.13.16.57}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.58}Resampling approaches can be computationally expensive}{130}{subsection.13.16.58}} +\newlabel{chapter4:resampling-approaches-can-be-computationally-expensive}{{13.16.58}{130}{Resampling approaches can be computationally expensive}{subsection.13.16.58}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.59}Why resampling methods ?}{131}{subsection.13.16.59}} +\newlabel{chapter4:why-resampling-methods}{{13.16.59}{131}{Why resampling methods ?}{subsection.13.16.59}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.60}Statistical analysis}{131}{subsection.13.16.60}} +\newlabel{chapter4:statistical-analysis}{{13.16.60}{131}{Statistical analysis}{subsection.13.16.60}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.61}Linking the regression analysis with a statistical interpretation}{131}{subsection.13.16.61}} +\newlabel{chapter4:linking-the-regression-analysis-with-a-statistical-interpretation}{{13.16.61}{131}{Linking the regression analysis with a statistical interpretation}{subsection.13.16.61}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.62}Assumptions made}{131}{subsection.13.16.62}} +\newlabel{chapter4:assumptions-made}{{13.16.62}{131}{Assumptions made}{subsection.13.16.62}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.63}Expectation value and variance}{132}{subsection.13.16.63}} +\newlabel{chapter4:expectation-value-and-variance}{{13.16.63}{132}{Expectation value and variance}{subsection.13.16.63}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.64}Expectation value and variance for \(\boldsymbol {\beta }\)}{132}{subsection.13.16.64}} +\newlabel{chapter4:expectation-value-and-variance-for-boldsymbol-beta}{{13.16.64}{132}{Expectation value and variance for \protect \(\boldsymbol {\beta }\protect \)}{subsection.13.16.64}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.65}Resampling methods}{133}{subsection.13.16.65}} +\newlabel{chapter4:id9}{{13.16.65}{133}{Resampling methods}{subsection.13.16.65}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.66}Resampling methods: Jackknife and Bootstrap}{134}{subsection.13.16.66}} +\newlabel{chapter4:resampling-methods-jackknife-and-bootstrap}{{13.16.66}{134}{Resampling methods: Jackknife and Bootstrap}{subsection.13.16.66}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.67}Resampling methods: Jackknife}{134}{subsection.13.16.67}} +\newlabel{chapter4:resampling-methods-jackknife}{{13.16.67}{134}{Resampling methods: Jackknife}{subsection.13.16.67}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.68}Jackknife code example}{134}{subsection.13.16.68}} +\newlabel{chapter4:jackknife-code-example}{{13.16.68}{134}{Jackknife code example}{subsection.13.16.68}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.69}Resampling methods: Bootstrap}{135}{subsection.13.16.69}} +\newlabel{chapter4:resampling-methods-bootstrap}{{13.16.69}{135}{Resampling methods: Bootstrap}{subsection.13.16.69}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.70}Resampling methods: Bootstrap background}{135}{subsection.13.16.70}} +\newlabel{chapter4:resampling-methods-bootstrap-background}{{13.16.70}{135}{Resampling methods: Bootstrap background}{subsection.13.16.70}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.71}Resampling methods: More Bootstrap background}{135}{subsection.13.16.71}} +\newlabel{chapter4:resampling-methods-more-bootstrap-background}{{13.16.71}{135}{Resampling methods: More Bootstrap background}{subsection.13.16.71}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.72}Resampling methods: Bootstrap approach}{136}{subsection.13.16.72}} +\newlabel{chapter4:resampling-methods-bootstrap-approach}{{13.16.72}{136}{Resampling methods: Bootstrap approach}{subsection.13.16.72}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.73}Resampling methods: Bootstrap steps}{136}{subsection.13.16.73}} +\newlabel{chapter4:resampling-methods-bootstrap-steps}{{13.16.73}{136}{Resampling methods: Bootstrap steps}{subsection.13.16.73}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.74}Code example for the Bootstrap method}{136}{subsection.13.16.74}} +\newlabel{chapter4:code-example-for-the-bootstrap-method}{{13.16.74}{136}{Code example for the Bootstrap method}{subsection.13.16.74}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.75}Various steps in cross\sphinxhyphen {}validation}{139}{subsection.13.16.75}} +\newlabel{chapter4:various-steps-in-cross-validation}{{13.16.75}{139}{Various steps in cross\sphinxhyphen {}validation}{subsection.13.16.75}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.76}How to set up the cross\sphinxhyphen {}validation for Ridge and/or Lasso}{139}{subsection.13.16.76}} +\newlabel{chapter4:how-to-set-up-the-cross-validation-for-ridge-and-or-lasso}{{13.16.76}{139}{How to set up the cross\sphinxhyphen {}validation for Ridge and/or Lasso}{subsection.13.16.76}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.77}Cross\sphinxhyphen {}validation in brief}{140}{subsection.13.16.77}} +\newlabel{chapter4:cross-validation-in-brief}{{13.16.77}{140}{Cross\sphinxhyphen {}validation in brief}{subsection.13.16.77}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.78}Code Example for Cross\sphinxhyphen {}validation and \(k\)\sphinxhyphen {}fold Cross\sphinxhyphen {}validation}{140}{subsection.13.16.78}} +\newlabel{chapter4:code-example-for-cross-validation-and-k-fold-cross-validation}{{13.16.78}{140}{Code Example for Cross\sphinxhyphen {}validation and \protect \(k\protect \)\sphinxhyphen {}fold Cross\sphinxhyphen {}validation}{subsection.13.16.78}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.79}The bias\sphinxhyphen {}variance tradeoff}{142}{subsection.13.16.79}} +\newlabel{chapter4:the-bias-variance-tradeoff}{{13.16.79}{142}{The bias\sphinxhyphen {}variance tradeoff}{subsection.13.16.79}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.80}Example code for Bias\sphinxhyphen {}Variance tradeoff}{143}{subsection.13.16.80}} +\newlabel{chapter4:example-code-for-bias-variance-tradeoff}{{13.16.80}{143}{Example code for Bias\sphinxhyphen {}Variance tradeoff}{subsection.13.16.80}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.81}Understanding what happens}{144}{subsection.13.16.81}} +\newlabel{chapter4:understanding-what-happens}{{13.16.81}{144}{Understanding what happens}{subsection.13.16.81}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.82}Summing up}{148}{subsection.13.16.82}} +\newlabel{chapter4:summing-up}{{13.16.82}{148}{Summing up}{subsection.13.16.82}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.83}Another Example from Scikit\sphinxhyphen {}Learn\IeC {\textquoteright }s Repository}{149}{subsection.13.16.83}} +\newlabel{chapter4:another-example-from-scikit-learn-s-repository}{{13.16.83}{149}{Another Example from Scikit\sphinxhyphen {}Learn’s Repository}{subsection.13.16.83}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.84}More examples on bootstrap and cross\sphinxhyphen {}validation and errors}{150}{subsection.13.16.84}} +\newlabel{chapter4:more-examples-on-bootstrap-and-cross-validation-and-errors}{{13.16.84}{150}{More examples on bootstrap and cross\sphinxhyphen {}validation and errors}{subsection.13.16.84}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.85}The same example but now with cross\sphinxhyphen {}validation}{151}{subsection.13.16.85}} +\newlabel{chapter4:the-same-example-but-now-with-cross-validation}{{13.16.85}{151}{The same example but now with cross\sphinxhyphen {}validation}{subsection.13.16.85}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.86}Cross\sphinxhyphen {}validation with Ridge}{153}{subsection.13.16.86}} +\newlabel{chapter4:cross-validation-with-ridge}{{13.16.86}{153}{Cross\sphinxhyphen {}validation with Ridge}{subsection.13.16.86}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.87}The Ising model}{154}{subsection.13.16.87}} +\newlabel{chapter4:the-ising-model}{{13.16.87}{154}{The Ising model}{subsection.13.16.87}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.88}Reformulating the problem to suit regression}{154}{subsection.13.16.88}} +\newlabel{chapter4:reformulating-the-problem-to-suit-regression}{{13.16.88}{154}{Reformulating the problem to suit regression}{subsection.13.16.88}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.89}Linear regression}{155}{subsection.13.16.89}} +\newlabel{chapter4:linear-regression}{{13.16.89}{155}{Linear regression}{subsection.13.16.89}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.90}Singular Value decomposition}{156}{subsection.13.16.90}} +\newlabel{chapter4:singular-value-decomposition}{{13.16.90}{156}{Singular Value decomposition}{subsection.13.16.90}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.91}The one\sphinxhyphen {}dimensional Ising model}{157}{subsection.13.16.91}} +\newlabel{chapter4:the-one-dimensional-ising-model}{{13.16.91}{157}{The one\sphinxhyphen {}dimensional Ising model}{subsection.13.16.91}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.92}Ridge regression}{159}{subsection.13.16.92}} +\newlabel{chapter4:ridge-regression}{{13.16.92}{159}{Ridge regression}{subsection.13.16.92}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.93}LASSO regression}{159}{subsection.13.16.93}} +\newlabel{chapter4:lasso-regression}{{13.16.93}{159}{LASSO regression}{subsection.13.16.93}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.94}Performance as function of the regularization parameter}{160}{subsection.13.16.94}} +\newlabel{chapter4:performance-as-function-of-the-regularization-parameter}{{13.16.94}{160}{Performance as function of the regularization parameter}{subsection.13.16.94}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.16.95}Finding the optimal value of \(\lambda \)}{161}{subsection.13.16.95}} +\newlabel{chapter4:finding-the-optimal-value-of-lambda}{{13.16.95}{161}{Finding the optimal value of \protect \(\lambda \protect \)}{subsection.13.16.95}{}} +\@writefile{toc}{\contentsline {section}{\numberline {13.17}Data Analysis and Machine Learning: Logistic Regression}{161}{section.13.17}} +\newlabel{chapter5:data-analysis-and-machine-learning-logistic-regression}{{13.17}{161}{Data Analysis and Machine Learning: Logistic Regression}{section.13.17}{}} +\newlabel{chapter5::doc}{{13.17}{161}{Data Analysis and Machine Learning: Logistic Regression}{section.13.17}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.1}Logistic Regression}{162}{subsection.13.17.1}} +\newlabel{chapter5:logistic-regression}{{13.17.1}{162}{Logistic Regression}{subsection.13.17.1}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.2}Optimization and Deep learning}{162}{subsection.13.17.2}} +\newlabel{chapter5:optimization-and-deep-learning}{{13.17.2}{162}{Optimization and Deep learning}{subsection.13.17.2}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.3}Basics}{162}{subsection.13.17.3}} +\newlabel{chapter5:basics}{{13.17.3}{162}{Basics}{subsection.13.17.3}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.4}Linear classifier}{163}{subsection.13.17.4}} +\newlabel{chapter5:linear-classifier}{{13.17.4}{163}{Linear classifier}{subsection.13.17.4}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.5}Some selected properties}{163}{subsection.13.17.5}} +\newlabel{chapter5:some-selected-properties}{{13.17.5}{163}{Some selected properties}{subsection.13.17.5}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.6}The logistic function}{163}{subsection.13.17.6}} +\newlabel{chapter5:the-logistic-function}{{13.17.6}{163}{The logistic function}{subsection.13.17.6}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.7}Examples of likelihood functions used in logistic regression and nueral networks}{164}{subsection.13.17.7}} +\newlabel{chapter5:examples-of-likelihood-functions-used-in-logistic-regression-and-nueral-networks}{{13.17.7}{164}{Examples of likelihood functions used in logistic regression and nueral networks}{subsection.13.17.7}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.8}Two parameters}{166}{subsection.13.17.8}} +\newlabel{chapter5:two-parameters}{{13.17.8}{166}{Two parameters}{subsection.13.17.8}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.9}Maximum likelihood}{166}{subsection.13.17.9}} +\newlabel{chapter5:maximum-likelihood}{{13.17.9}{166}{Maximum likelihood}{subsection.13.17.9}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.10}The cost function rewritten}{167}{subsection.13.17.10}} +\newlabel{chapter5:the-cost-function-rewritten}{{13.17.10}{167}{The cost function rewritten}{subsection.13.17.10}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.11}Minimizing the cross entropy}{167}{subsection.13.17.11}} +\newlabel{chapter5:minimizing-the-cross-entropy}{{13.17.11}{167}{Minimizing the cross entropy}{subsection.13.17.11}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.12}A more compact expression}{167}{subsection.13.17.12}} +\newlabel{chapter5:a-more-compact-expression}{{13.17.12}{167}{A more compact expression}{subsection.13.17.12}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.13}Extending to more predictors}{168}{subsection.13.17.13}} +\newlabel{chapter5:extending-to-more-predictors}{{13.17.13}{168}{Extending to more predictors}{subsection.13.17.13}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.14}Including more classes}{168}{subsection.13.17.14}} +\newlabel{chapter5:including-more-classes}{{13.17.14}{168}{Including more classes}{subsection.13.17.14}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.15}More classes}{168}{subsection.13.17.15}} +\newlabel{chapter5:more-classes}{{13.17.15}{168}{More classes}{subsection.13.17.15}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.16}A simple classification problem}{169}{subsection.13.17.16}} +\newlabel{chapter5:a-simple-classification-problem}{{13.17.16}{169}{A simple classification problem}{subsection.13.17.16}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.17}The Credit Card example}{170}{subsection.13.17.17}} +\newlabel{chapter5:the-credit-card-example}{{13.17.17}{170}{The Credit Card example}{subsection.13.17.17}{}} +\@writefile{toc}{\contentsline {subsection}{\numberline {13.17.18}How to read the Credit Card data}{170}{subsection.13.17.18}} +\newlabel{chapter5:how-to-read-the-credit-card-data}{{13.17.18}{170}{How to read the Credit Card data}{subsection.13.17.18}{}} diff --git a/doc/src/LectureNotes/_build/latex/python.fdb_latexmk b/doc/src/LectureNotes/_build/latex/python.fdb_latexmk new file mode 100644 index 000000000..e93ca1a5d --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/python.fdb_latexmk @@ -0,0 +1,260 @@ +# Fdb version 3 +["makeindex python.idx"] 0 "python.idx" "python.ind" "python" 0 + "python.idx" 1600635575 0 d41d8cd98f00b204e9800998ecf8427e "" + (generated) + "python.ind" +["pdflatex"] 1600635574 "python.tex" "python.pdf" "python" 1600635574 + "./chapter2_114_1.png" 1600635540 15591 8d0da3384f7960fc97183775b78acecf "" + "./chapter2_116_0.png" 1600635540 19228 4ebf60c613f8741f4cd59cb1aa00c1ca "" + "./chapter2_118_16.png" 1600635540 25763 57376c74c65e7770bd6031163307c9c9 "" + "./chapter2_42_1.png" 1600635540 21611 a6cc4760dd43bbf283547e1277f6d277 "" + "./chapter2_54_2.png" 1600635540 44501 3e2b87a0a0c9fd679cf4226969978628 "" + "./chapter2_54_3.png" 1600635540 10773 49f6d983b28690b12e9c1e85312624cd "" + "./chapter2_60_0.png" 1600635540 10671 65acbf25db081d2600c3f726c04aefdf "" + "./chapter2_68_0.png" 1600635540 9516 3ba77c08f1e5972ab5895841ad824280 "" + "./chapter2_70_1.png" 1600635540 13869 3b4a21a5862ad30ea8ce8916c896f1ea "" + "./chapter2_84_0.png" 1600635540 19796 e8a617f9ed482234ac9cbe1603c734d2 "" + "./chapter3_178_0.png" 1600635556 5197 29581201c97247bd0f3a27d0e95126b7 "" + "./chapter3_184_1.png" 1600635556 10033 aef078fd07a94b786dd0ca957db41c6f "" + "./chapter3_29_0.png" 1600635556 18850 f5949321ef7bd78557eab8badeebae4f "" + "./chapter4_117_1.png" 1600635568 15626 79cd0d9c9822bb8640d0382a07198922 "" + "./chapter4_129_0.png" 1600635568 24783 07c86e7a04952ab8dfc72aa1ded48d83 "" + "./chapter4_131_1.png" 1600635568 97512 4f3f39beb419c377afdd7c720e19aee5 "" + "./chapter4_133_0.png" 1600635568 34379 b2804a3b49967c239276dc825191ff2f "" + "./chapter4_140_0.png" 1600635568 10372 a6e8162ccdbaa8a68d14864270da40fd "" + "./chapter4_278_2.png" 1600635568 9750 5ef5c1c5616f1a6474202de19e78e3cc "" + "./chapter4_300_1.png" 1600635568 25861 33d9f2b6aadfc2cf41e97e7b738016d8 "" + "./chapter4_70_0.png" 1600635568 11373 8496b40e2cbef905fb43e2848f2e306f "" + "./chapter5_42_0.png" 1600635572 23100 3c7dcd60771be0f0aca7699d74d98645 "" + "./chapter5_7_0.png" 1600635572 9911 508f70803ad07a00cc222260ac8141df "" + "./chapter5_7_1.png" 1600635572 6754 cb0f6b6f1a12924be69587790b4f24c1 "" + "./chapter5_7_2.png" 1600635572 10184 de31382dd7bf2f9a0101650be20e8c14 "" + "./python.out" 1600635580 8114 be2b67e3ee487e03109aab241c66b4e2 "" + "/usr/local/texlive/2015/texmf-dist/fonts/enc/dvips/base/8r.enc" 1165713224 4850 80dc9bab7f31fb78a000ccfed0e27cab "" + "/usr/local/texlive/2015/texmf-dist/fonts/map/fontname/texfonts.map" 1272929888 3287 e6b82fe08f5336d4d5ebc73fb1152e87 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm" 1136768653 1292 3059476c50a24578715759f22652f3d0 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm" 1136768653 1384 87406e4336af44af883a035f17f319d9 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm" 1136768653 1268 8bd405dc5751cfed76cb6fb2db78cb50 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm" 1136768653 1292 bd42be2f344128bff6d35d98474adfe3 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm" 1136768653 1384 4632f5e54900a7dadbb83f555bc61e56 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm" 1136768653 1344 dab2eee300fafcab19064bcc62d66daa "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm" 1136768653 1544 4fb84cf2931ec523c2c6a08d939088ba "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm" 1136768653 1596 04a657f277f0401ba37d66e716627ac4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm" 1136768653 4484 b828043cbd581d289d955903c1339981 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm" 1136768653 6628 34c39492c0adc454c1c199922bba8363 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm" 1136768653 6880 fe6c7967f27585f6fa9876f3af14edd2 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm" 1136768653 7040 b2bd27e2bfe6f6948cbc3239cae7444f "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm" 1136768653 4524 6bce29db5bc272ba5f332261583fee9c "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm" 1136768653 6880 f19b8995b61c334d78fc734065f6b4d4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm" 1136768653 1352 fa28a7e6d323c65ce7d13d5342ff6be2 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm" 1136768653 4408 25b74d011a4c66b7f212c0cc3c90061b "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm" 1136768653 6672 e3ab9e37e925f3045c9005e6d1473d56 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm" 1136768653 4640 532ca3305aad10cc01d769f3f91f1029 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm" 1136768653 6944 94c55ad86e6ea2826f78ba2240d50df9 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm" 1136768653 3584 adb004a0c8e7c46ee66cad73671f37b4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy5.tfm" 1246382020 1120 1e8878807317373affa7f7bba4cf2f6a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy6.tfm" 1246382020 1124 14ccf5552bc7f77ca02a8a402bea8bfb "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy7.tfm" 1246382020 1120 7f9f170e8aa57527ad6c49feafd45d54 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy8.tfm" 1246382020 1120 200be8b775682cdf80acad4be5ef57e4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm" 1246382020 1496 c79f6914c6d39ffb3759967363d1be79 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib6.tfm" 1246382020 1516 a3bf6a5e7ec4401b1f52092dfaaed242 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib7.tfm" 1246382020 1508 6e807ff901c35a5f1fde0ca275533df8 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib8.tfm" 1246382020 1528 dab402b9d3774ca98baa037071cee7ae "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbsy10.tfm" 1136768653 1116 4e6ba9d7914baa6482fd69f67d126380 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm" 1136768653 1324 c910af8c371558dc20f2d7822f66fe64 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx5.tfm" 1136768653 1332 f817c21a1ba54560425663374f1b651a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx6.tfm" 1136768653 1344 8a0be4fe4d376203000810ad4dc81558 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx7.tfm" 1136768653 1336 3125ccb448c1a09074e3aa4a9832f130 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx8.tfm" 1136768653 1332 1fde11373e221473104d6cc5993f046e "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm" 1136768653 992 662f679a0b3d2d53c1b94050fdaa3f50 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm" 1136768653 1524 4414a8315f39513458b80dfc63bff03a "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmib10.tfm" 1136768653 1524 554068197b70979a55370e6c6495f441 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr12.tfm" 1136768653 1288 655e228510b4c2a1abe905c368440826 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr17.tfm" 1136768653 1292 296a67155bdbfc32aa9c636f21e91433 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm" 1136768653 1124 6c73e740cf17375f03eec0ee63599741 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 "" + "/usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx7.pfb" 1248133631 32007 e8fa0078355f39467039935974716569 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb" 1248133631 30251 6afa5cb1d0204815a708a080681d4674 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb" 1248133631 36741 fa121aac0049305630cf160b86157ee4 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1248133631 37912 77d683123f92148345f3fc36a38d9ab1 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmib10.pfb" 1248133631 36912 b448ef9ad9d7228ec3c6e71005136d55 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb" 1248133631 31809 8670ca339bf94e56da1fc21c80635e2a "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1248133631 32762 224316ccc9ad3ca0423a14971cfa7fc1 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb" 1248133631 32915 7bf7720c61a5b3a7ff25b0964421c9b6 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1248133631 32716 08e384dc442464e7285e891af9f45947 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib7.pfb" 1248133631 39386 0bb525d495ceab21fe797301a586e0d7 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb" 1248133631 31764 459c573c03a4949a528c2cc7f557e217 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb" 1248133631 34694 ad62b13721ee8eda1dcc8993c8bd7041 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm7.pfb" 1248133631 35309 940e81a5b9e04201a07e8b33a3ae6e64 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb" 1136849748 50493 4ed1f7e9eba8f1f3e1ec25195460190d "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb" 1136849748 45758 19968a0990191524e34e1994d4a31cb6 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb" 1136849748 44404 ea3d9c0311883914133975dd62a9185c "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb" 1136849748 35941 f27169cc74234d5bd5e4cca5abafaabb "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmb8a.pfb" 1136849748 44729 811d6c62865936705a31c797a1d5dada "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmr8a.pfb" 1136849748 46026 6dab18b61c907687b520c72847215a68 "" + "/usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmri8a.pfb" 1136849748 45458 a3faba884469519614ca56ba5f6b1de1 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf" 1136768653 2184 5d20c8b00cd914e50251116c274e2d0b "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf" 1136768653 3552 6a7911d0b338a7c32cbfc3a9e985ccca "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf" 1136768653 2184 8475af1b9cfa983db5f46f5ed4b8f9f7 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf" 1136768653 3560 a297982f0907d62e9886d9e2666bf30b "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf" 1136768653 2280 d7cd083c724c9449e1d12731253966f7 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf" 1136768653 2340 0efed6a948c3c37d870e4e7ddb85c7c3 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf" 1136768653 2340 df9c920cc5688ebbf16a93f45ce7bdd3 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf" 1136768653 3556 8a9a6dcbcd146ef985683f677f4758a6 "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf" 1136768653 2348 91706c542228501c410c266421fbe30c "" + "/usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf" 1136768653 2328 6cd7df782b09b29cfc4d93e55b6b9a59 "" + "/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii" 1337017135 71627 94eb9990bed73c364d7f53f960cc8c5b "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf" 1367878877 6963 2e0cb3d93aa64508bdb0db58ae900d97 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.def" 1411763270 49725 b40154b767b0073ee42b35911042b793 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty" 1411763270 13212 dc56c11a26f3ea97bcf005eeda274583 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty" 1284331290 1458 43ab4710dc82f3edeabecd0d099626b2 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty" 1335995445 7612 c47308d923ec19888707b0f1792b326a "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty" 1303254447 8237 52810bdb4db2270e717422560a104aea "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty" 1338332114 189108 8b3553a56c83ff61acecb36b75d817e2 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty" 1338332114 70752 45fa392800e07da61fa13446ad46b34d "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty" 1303254447 7324 11d14f318d865f420e692d4e6c9c18c3 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty" 1303254447 7140 ece2cc23d9f20e1f53975ac167f42d3e "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty" 1335995445 6797 68c89f65e01894df882dd523d3fc0a8f "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty" 1335995445 8253 3bdedc8409aa5d290a2339be6f09af03 "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty" 1335995445 14040 8de9f47fabc4ca3bd69b6d795e32751c "" + "/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty" 1335995445 18425 775b341047ce304520cc7c11ca41392e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1362954379 2412 2d98314dc5be38f455f8890deeb2d091 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty" 1362954379 4357 ad30ad08920902fc9b38caf35a3b0496 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty" 1362954379 79178 b2e326c351e876df0e5e23df2e02441b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty" 1362954379 4082 502152465aedb8f6a3c4b0b7c0fa8ae5 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty" 1362954379 2637 846ebe982d3549c7ede7ce135456f54a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/alltt.sty" 1428932888 3140 542beed88381d34d18b1f2c2d9b23c35 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty" 1428932888 4572 f29f75cfae3acaf4667f1979db655af9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty" 1428932888 5619 3f48adceb9004b3fefe24c2d2df7d98e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/makeidx.sty" 1428932888 1940 d6de0410d9ab8e197c80422e5314e9da "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu" 1428932888 2005 572b09e94d01e22ed7d4000c92b6e220 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu" 1428932888 2757 273e079c3d3a9830c5b4fa2a4ce69c51 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/report.cls" 1428932888 23767 74c5551841f58a4efbb8c5d892190037 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo" 1428932888 9179 632e23fed01c842f2eaef1dd9953a446 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.def" 1428932888 9327 bf6addf718ff386725227c5b52941e7e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu" 1428932888 7617 8f111f916836ef9e09db7ecbcd4e01d6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/textcomp.sty" 1428932888 16155 258f35a63ef332879c6629fd0fc875da "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd" 1428932888 2217 88eb40cf4b1efa71ba8daf8030a0113f "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.def" 1428932888 7767 7f8f29a2f77fdabc077bc233a27c01d3 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.dfu" 1428932888 4920 919d74324d79f3b4140842b12ac97e85 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def" 1428932888 6484 2098550b79b15e713b69d9c8845f4437 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/capt-of/capt-of.sty" 1264379041 1311 063f8536a047a2d9cb1803321f793f37 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/carlisle/remreset.sty" 1137109962 1096 6a75275ca00e32428c6f059d2f618ea7 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty" 1215522782 2883 427a7f7cb58418a0394dbd85c80668f6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap" 1177721415 1207 4e0d96772f0d338847cbfb4eca683c81 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t1.cmap" 1215522782 1938 beaa4a8467aa0074076e0e19f2992e29 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty" 1160175134 20521 e5d13d98d57bd53d4fed3aa61bd29c86 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty" 1274829816 45360 a0833d32f1b541964596b02870342d5a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty" 1137110151 6749 16d2656a1984957e674b149555f1ea1d "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/fncychap/fncychap.sty" 1292029257 19488 fdd52eb173b3197d748e1ec25acb042f "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/framed/framed.sty" 1338588508 22449 7ec15c16d0d66790f28e90343c5434a3 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty" 1284422013 40502 e003406220954b0716679d7928aedd8a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty" 1428932888 14285 20d80486c4ae98139889d8789596c967 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty" 1428932888 8125 557ab9f1bfa80d369fb45a914aa8a3b4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty" 1428932888 2594 d18d5e19aa8239cf867fa670c556d2e9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty" 1428932888 3439 44bd4a1da7f27787173f2e99116b0a7f "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def" 1352416072 51837 247bd8424b3835ef78c236dc1e0b4aef "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty" 1352416072 231792 5fc9dc7dd667e773a766ecc63bba7f4b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty" 1351899753 12847 25b617d63258c4f72870c883493a3cf8 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def" 1352416072 14005 155ac8fad2e5dd7c2cdd130fabd96633 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def" 1352416072 122263 ec12fdd2044f1507e5ae92ee7a5bbfae "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg" 1254097189 802 7b8c8d72c24d795ed7720e4dfd29bff3 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg" 1278958963 3563 d35e897cae3b8c6848f6677b73370b54 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg" 1254097189 235 6031e5765137be07eed51a510b2b8fb7 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap" 1215649417 1866 c1c12138091b4a8edd4a24a940e6f792 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap" 1215649417 2370 3b1f71b14b974f07cef532db09ae9ee0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap" 1215649417 3001 252c8ca42b06a22cb1a11c0e47790c6e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/needspace/needspace.sty" 1364856750 852 0e34dbb72efc69fa07602405ad95585e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty" 1303254447 3834 707ef09f31d7d2ea47ba89974755dfe0 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty" 1303254447 12029 04d7fdf76e0464c23b5aa3a727952d7c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty" 1335995445 7075 bd0c34fbf1ae8fd1debd2a554e41b2d5 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/hypcap.sty" 1335995445 3720 f909bdc3fac6af505c1f55366aa4d44c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty" 1335995445 22417 c74ff4af6a1aa2b65d1924020edbbe11 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty" 1303254447 9581 1158efc648bc09d5064db5703c882159 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/parskip/parskip.sty" 1285887441 2763 02a40cc5a32805c41d919cfbdba7e99a "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def" 1306616590 55368 3c8a0d99822330f2dfabc0dfb09ce897 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1pcr.fd" 1137110629 798 d5895e9edc628f2be019beb2c0ec66df "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1phv.fd" 1137110629 1488 9a55ac1cde6b4798a7f56844bb75a553 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1ptm.fd" 1137110629 774 61d7da1e9f9e74989b196d147e623736 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/times.sty" 1156702453 857 6c716f26c5eadfb81029fcd6ce2d45e6 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1pcr.fd" 1137110629 643 92c451bb86386a4e36a174603ddb5a13 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1ptm.fd" 1137110629 619 96f56dc5d1ef1fe1121f1cfeec70ee0c "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tabulary/tabulary.sty" 1403566480 13791 8c83287d79183c3bf58fd70871e8a70b "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty" 1324083561 37083 54a2e11f0f208916a9976d9e4837d144 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty" 1428932888 13285 001a28447062ce32b9b4a62965626fc4 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/tools/longtable.sty" 1428932888 12083 b47235b9e530708f74984b3dda65e60d "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/upquote/upquote.sty" 1334873510 1048 517e01cde97c1c0baf72e69d43aa5a2e "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty" 1388531844 12796 8edb7d69a20b857904dd0ea757c14ec9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/varwidth/varwidth.sty" 1238697683 10894 d359a13923460b2a73d4312d613554c8 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/wrapfig/wrapfig.sty" 1137111090 26220 3701aebf80ccdef248c0c20dd062fea9 "" + "/usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty" 1169481954 55224 a43bab84e0ac5e6efcaf9a98bde73a94 "" + "/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf" 1428852030 31983 18aeec08f48baa3cf3508d538dd5f459 "" + "/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1432479641 1764542 91654ba72bdb667e84ea24f076ae16d8 "" + "/usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt" 1432479681 3849859 39a7d258195bde2394e244961601fbc5 "" + "/usr/local/texlive/2015/texmf.cnf" 1432479636 577 0d611272082f3cdb8e80e09a3c69cf07 "" + "chapter2_114_1.png" 1600635540 15591 8d0da3384f7960fc97183775b78acecf "" + "chapter2_116_0.png" 1600635540 19228 4ebf60c613f8741f4cd59cb1aa00c1ca "" + "chapter2_118_16.png" 1600635540 25763 57376c74c65e7770bd6031163307c9c9 "" + "chapter2_42_1.png" 1600635540 21611 a6cc4760dd43bbf283547e1277f6d277 "" + "chapter2_54_2.png" 1600635540 44501 3e2b87a0a0c9fd679cf4226969978628 "" + "chapter2_54_3.png" 1600635540 10773 49f6d983b28690b12e9c1e85312624cd "" + "chapter2_60_0.png" 1600635540 10671 65acbf25db081d2600c3f726c04aefdf "" + "chapter2_68_0.png" 1600635540 9516 3ba77c08f1e5972ab5895841ad824280 "" + "chapter2_70_1.png" 1600635540 13869 3b4a21a5862ad30ea8ce8916c896f1ea "" + "chapter2_84_0.png" 1600635540 19796 e8a617f9ed482234ac9cbe1603c734d2 "" + "chapter3_178_0.png" 1600635556 5197 29581201c97247bd0f3a27d0e95126b7 "" + "chapter3_184_1.png" 1600635556 10033 aef078fd07a94b786dd0ca957db41c6f "" + "chapter3_29_0.png" 1600635556 18850 f5949321ef7bd78557eab8badeebae4f "" + "chapter4_117_1.png" 1600635568 15626 79cd0d9c9822bb8640d0382a07198922 "" + "chapter4_129_0.png" 1600635568 24783 07c86e7a04952ab8dfc72aa1ded48d83 "" + "chapter4_131_1.png" 1600635568 97512 4f3f39beb419c377afdd7c720e19aee5 "" + "chapter4_133_0.png" 1600635568 34379 b2804a3b49967c239276dc825191ff2f "" + "chapter4_140_0.png" 1600635568 10372 a6e8162ccdbaa8a68d14864270da40fd "" + "chapter4_278_2.png" 1600635568 9750 5ef5c1c5616f1a6474202de19e78e3cc "" + "chapter4_300_1.png" 1600635568 25861 33d9f2b6aadfc2cf41e97e7b738016d8 "" + "chapter4_70_0.png" 1600635568 11373 8496b40e2cbef905fb43e2848f2e306f "" + "chapter5_42_0.png" 1600635572 23100 3c7dcd60771be0f0aca7699d74d98645 "" + "chapter5_7_0.png" 1600635572 9911 508f70803ad07a00cc222260ac8141df "" + "chapter5_7_1.png" 1600635572 6754 cb0f6b6f1a12924be69587790b4f24c1 "" + "chapter5_7_2.png" 1600635572 10184 de31382dd7bf2f9a0101650be20e8c14 "" + "footnotehyper-sphinx.sty" 1594223451 8888 1bbd7bdeae8c8bed1d10d551bddb1cc9 "" + "python.aux" 1600635574 8 a94a2480d3289e625eea47cd1b285758 "" + "python.ind" 0 -1 0 "makeindex python.idx" + "python.tex" 1600635574 577671 865e6a9fc6aa2920764cf52e4c7212a9 "" + "sphinx.sty" 1594223451 82020 a38700b8aa22dfd94a8a5b905e69be73 "" + "sphinxhighlight.sty" 1600635572 8137 38a433148fcb7611515a989ff1750dd5 "" + "sphinxmanual.cls" 1594223451 4236 124cd90deb92742b5d3922bfc2cd70c0 "" + "sphinxmessages.sty" 1600635574 745 3f5fcd6cdd7964ed608767954a8ced6f "" + "sphinxmulticell.sty" 1594223451 14606 0b6edc2b1a83546ed92026d1f6a311b5 "" + (generated) + "python.out" + "python.aux" + "python.toc" + "python.idx" + "python.log" + "python.pdf" diff --git a/doc/src/LectureNotes/_build/latex/python.fls b/doc/src/LectureNotes/_build/latex/python.fls new file mode 100644 index 000000000..6e9a9c244 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/python.fls @@ -0,0 +1,471 @@ +PWD /Users/hjensen/Teaching/FYS-STK4150/doc/src/LectureNotes/_build/latex +INPUT /usr/local/texlive/2015/texmf.cnf +INPUT /usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf +INPUT /usr/local/texlive/2015/texmf-var/web2c/pdftex/pdflatex.fmt +INPUT python.tex +OUTPUT python.log +INPUT sphinxmanual.cls +INPUT sphinxmanual.cls +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/report.cls +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/report.cls +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/fonts/map/fontname/texfonts.map +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/jknappen/ec/ecrm1000.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t1.cmap +OUTPUT python.pdf +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/t1.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/times.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fncychap/fncychap.sty +INPUT sphinx.sty +INPUT sphinx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/textcomp.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.dfu +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tabulary/tabulary.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/tools/longtable.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/varwidth/varwidth.sty +INPUT sphinxmulticell.sty +INPUT sphinxmulticell.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/makeidx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/framed/framed.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +INPUT footnotehyper-sphinx.sty +INPUT footnotehyper-sphinx.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/wrapfig/wrapfig.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/parskip/parskip.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/alltt.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/upquote/upquote.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/capt-of/capt-of.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/needspace/needspace.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/carlisle/remreset.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/carlisle/remreset.sty +INPUT sphinxhighlight.sty +INPUT sphinxhighlight.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/hypcap.sty +INPUT sphinxmessages.sty +INPUT sphinxmessages.sty +OUTPUT python.idx +INPUT python.aux +INPUT python.aux +OUTPUT python.aux +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1ptm.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +INPUT /usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +OUTPUT python.out +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1phv.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvbo8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr17.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/cmap/ot1.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oml.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/oms.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/mmap/omx.cmap +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmex10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8t.tfm +OUTPUT python.toc +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/helvetic/phvb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmri8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1ptm.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8c.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmri8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmri8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmr8c.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx5.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmib10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib5.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy5.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/helvetic/phvr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1pcr.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrb8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrb8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrb8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrro8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/times/ptmr8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8r.tfm +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1pcr.fd +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8c.tfm +INPUT chapter2_42_1.png +INPUT ./chapter2_42_1.png +INPUT ./chapter2_42_1.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8t.tfm +INPUT chapter2_42_1.png +INPUT ./chapter2_42_1.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrr8c.vf +INPUT chapter2_54_2.png +INPUT ./chapter2_54_2.png +INPUT ./chapter2_54_2.png +INPUT chapter2_54_2.png +INPUT ./chapter2_54_2.png +INPUT chapter2_54_3.png +INPUT ./chapter2_54_3.png +INPUT ./chapter2_54_3.png +INPUT chapter2_54_3.png +INPUT ./chapter2_54_3.png +INPUT chapter2_60_0.png +INPUT ./chapter2_60_0.png +INPUT ./chapter2_60_0.png +INPUT chapter2_60_0.png +INPUT ./chapter2_60_0.png +INPUT chapter2_68_0.png +INPUT ./chapter2_68_0.png +INPUT ./chapter2_68_0.png +INPUT chapter2_68_0.png +INPUT ./chapter2_68_0.png +INPUT chapter2_70_1.png +INPUT ./chapter2_70_1.png +INPUT ./chapter2_70_1.png +INPUT chapter2_70_1.png +INPUT ./chapter2_70_1.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/times/ptmr8t.tfm +INPUT chapter2_84_0.png +INPUT ./chapter2_84_0.png +INPUT ./chapter2_84_0.png +INPUT chapter2_84_0.png +INPUT ./chapter2_84_0.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrro8c.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrro8c.vf +INPUT chapter2_114_1.png +INPUT ./chapter2_114_1.png +INPUT ./chapter2_114_1.png +INPUT chapter2_114_1.png +INPUT ./chapter2_114_1.png +INPUT chapter2_116_0.png +INPUT ./chapter2_116_0.png +INPUT ./chapter2_116_0.png +INPUT chapter2_116_0.png +INPUT ./chapter2_116_0.png +INPUT chapter2_118_16.png +INPUT ./chapter2_118_16.png +INPUT ./chapter2_118_16.png +INPUT chapter2_118_16.png +INPUT ./chapter2_118_16.png +INPUT chapter3_29_0.png +INPUT ./chapter3_29_0.png +INPUT ./chapter3_29_0.png +INPUT chapter3_29_0.png +INPUT ./chapter3_29_0.png +INPUT chapter3_178_0.png +INPUT ./chapter3_178_0.png +INPUT ./chapter3_178_0.png +INPUT chapter3_178_0.png +INPUT ./chapter3_178_0.png +INPUT chapter3_184_1.png +INPUT ./chapter3_184_1.png +INPUT ./chapter3_184_1.png +INPUT chapter3_184_1.png +INPUT ./chapter3_184_1.png +INPUT chapter4_70_0.png +INPUT ./chapter4_70_0.png +INPUT ./chapter4_70_0.png +INPUT chapter4_70_0.png +INPUT ./chapter4_70_0.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmr6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx12.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbx6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm +INPUT chapter4_117_1.png +INPUT ./chapter4_117_1.png +INPUT ./chapter4_117_1.png +INPUT chapter4_117_1.png +INPUT ./chapter4_117_1.png +INPUT chapter4_129_0.png +INPUT ./chapter4_129_0.png +INPUT ./chapter4_129_0.png +INPUT chapter4_129_0.png +INPUT ./chapter4_129_0.png +INPUT chapter4_131_1.png +INPUT ./chapter4_131_1.png +INPUT ./chapter4_131_1.png +INPUT chapter4_131_1.png +INPUT ./chapter4_131_1.png +INPUT chapter4_133_0.png +INPUT ./chapter4_133_0.png +INPUT ./chapter4_133_0.png +INPUT chapter4_133_0.png +INPUT ./chapter4_133_0.png +INPUT chapter4_140_0.png +INPUT ./chapter4_140_0.png +INPUT ./chapter4_140_0.png +INPUT chapter4_140_0.png +INPUT ./chapter4_140_0.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmmib10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmmib6.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/cm/cmbsy10.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy8.tfm +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmbsy6.tfm +INPUT chapter4_278_2.png +INPUT ./chapter4_278_2.png +INPUT ./chapter4_278_2.png +INPUT chapter4_278_2.png +INPUT ./chapter4_278_2.png +INPUT chapter4_300_1.png +INPUT ./chapter4_300_1.png +INPUT ./chapter4_300_1.png +INPUT chapter4_300_1.png +INPUT ./chapter4_300_1.png +INPUT /usr/local/texlive/2015/texmf-dist/fonts/vf/adobe/courier/pcrr8t.vf +INPUT /usr/local/texlive/2015/texmf-dist/fonts/tfm/adobe/courier/pcrr8r.tfm +INPUT chapter5_7_0.png +INPUT ./chapter5_7_0.png +INPUT ./chapter5_7_0.png +INPUT chapter5_7_0.png +INPUT ./chapter5_7_0.png +INPUT chapter5_7_1.png +INPUT ./chapter5_7_1.png +INPUT ./chapter5_7_1.png +INPUT chapter5_7_1.png +INPUT ./chapter5_7_1.png +INPUT chapter5_7_2.png +INPUT ./chapter5_7_2.png +INPUT ./chapter5_7_2.png +INPUT chapter5_7_2.png +INPUT ./chapter5_7_2.png +INPUT chapter5_42_0.png +INPUT ./chapter5_42_0.png +INPUT ./chapter5_42_0.png +INPUT chapter5_42_0.png +INPUT ./chapter5_42_0.png +INPUT python.aux +INPUT ./python.out +INPUT ./python.out +INPUT /usr/local/texlive/2015/texmf-dist/fonts/enc/dvips/base/8r.enc +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi12.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmmib10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cmextra/cmmib7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr5.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm10.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfonts/symbols/msbm7.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrb8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrr8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/courier/ucrro8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/helvetic/uhvb8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmb8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmr8a.pfb +INPUT /usr/local/texlive/2015/texmf-dist/fonts/type1/urw/times/utmri8a.pfb diff --git a/doc/src/LectureNotes/_build/latex/python.idx b/doc/src/LectureNotes/_build/latex/python.idx new file mode 100644 index 000000000..e69de29bb diff --git a/doc/src/LectureNotes/_build/latex/python.ist b/doc/src/LectureNotes/_build/latex/python.ist new file mode 100644 index 000000000..70536a668 --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/python.ist @@ -0,0 +1,16 @@ +line_max 100 +headings_flag 1 +heading_prefix " \\bigletter " + +preamble "\\begin{sphinxtheindex} +\\let\\bigletter\\sphinxstyleindexlettergroup +\\let\\spxpagem \\sphinxstyleindexpagemain +\\let\\spxentry \\sphinxstyleindexentry +\\let\\spxextra \\sphinxstyleindexextra + +" + +postamble "\n\n\\end{sphinxtheindex}\n" + +symhead_positive "{\\sphinxsymbolsname}" +numhead_positive "{\\sphinxnumbersname}" diff --git a/doc/src/LectureNotes/_build/latex/python.log b/doc/src/LectureNotes/_build/latex/python.log new file mode 100644 index 000000000..4d37ec26c --- /dev/null +++ b/doc/src/LectureNotes/_build/latex/python.log @@ -0,0 +1,13683 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.5.24) 20 SEP 2020 22:59 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**python.tex +(./python.tex +LaTeX2e <2015/01/01> +Babel <3.9l> and hyphenation patterns for 79 languages loaded. +(./sphinxmanual.cls +Document Class: sphinxmanual 2019/12/01 v2.3.0 Document class (Sphinx manual) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/report.cls +Document Class: report 2014/09/29 v1.4h Standard LaTeX document class +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@chapter=\count80 +\c@section=\count81 +\c@subsection=\count82 +\c@subsubsection=\count83 +\c@paragraph=\count84 +\c@subparagraph=\count85 +\c@figure=\count86 +\c@table=\count87 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +LaTeX Info: Redefining \and on input line 35. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/inputenc.sty +Package: inputenc 2015/03/17 v1.2c Input encoding file +\inpenc@prehook=\toks14 +\inpenc@posthook=\toks15 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/utf8.def +File: utf8.def 2014/09/29 v1.1m UTF-8 support for inputenc +Now handling font encoding OML ... +... no UTF-8 mapping file for font encoding OML +Now handling font encoding T1 ... +... processing UTF-8 mapping file for font encoding T1 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.dfu +File: t1enc.dfu 2014/09/29 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00AB (decimal 171) + defining Unicode char U+00BB (decimal 187) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C0 (decimal 192) + defining Unicode char U+00C1 (decimal 193) + defining Unicode char U+00C2 (decimal 194) + defining Unicode char U+00C3 (decimal 195) + defining Unicode char U+00C4 (decimal 196) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00C7 (decimal 199) + defining Unicode char U+00C8 (decimal 200) + defining Unicode char U+00C9 (decimal 201) + defining Unicode char U+00CA (decimal 202) + defining Unicode char U+00CB (decimal 203) + defining Unicode char U+00CC (decimal 204) + defining Unicode char U+00CD (decimal 205) + defining Unicode char U+00CE (decimal 206) + defining Unicode char U+00CF (decimal 207) + defining Unicode char U+00D0 (decimal 208) + defining Unicode char U+00D1 (decimal 209) + defining Unicode char U+00D2 (decimal 210) + defining Unicode char U+00D3 (decimal 211) + defining Unicode char U+00D4 (decimal 212) + defining Unicode char U+00D5 (decimal 213) + defining Unicode char U+00D6 (decimal 214) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00D9 (decimal 217) + defining Unicode char U+00DA (decimal 218) + defining Unicode char U+00DB (decimal 219) + defining Unicode char U+00DC (decimal 220) + defining Unicode char U+00DD (decimal 221) + defining Unicode char U+00DE (decimal 222) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E0 (decimal 224) + defining Unicode char U+00E1 (decimal 225) + defining Unicode char U+00E2 (decimal 226) + defining Unicode char U+00E3 (decimal 227) + defining Unicode char U+00E4 (decimal 228) + defining Unicode char U+00E5 (decimal 229) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00E7 (decimal 231) + defining Unicode char U+00E8 (decimal 232) + defining Unicode char U+00E9 (decimal 233) + defining Unicode char U+00EA (decimal 234) + defining Unicode char U+00EB (decimal 235) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F0 (decimal 240) + defining Unicode char U+00F1 (decimal 241) + defining Unicode char U+00F2 (decimal 242) + defining Unicode char U+00F3 (decimal 243) + defining Unicode char U+00F4 (decimal 244) + defining Unicode char U+00F5 (decimal 245) + defining Unicode char U+00F6 (decimal 246) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+00F9 (decimal 249) + defining Unicode char U+00FA (decimal 250) + defining Unicode char U+00FB (decimal 251) + defining Unicode char U+00FC (decimal 252) + defining Unicode char U+00FD (decimal 253) + defining Unicode char U+00FE (decimal 254) + defining Unicode char U+00FF (decimal 255) + defining Unicode char U+0102 (decimal 258) + defining Unicode char U+0103 (decimal 259) + defining Unicode char U+0104 (decimal 260) + defining Unicode char U+0105 (decimal 261) + defining Unicode char U+0106 (decimal 262) + defining Unicode char U+0107 (decimal 263) + defining Unicode char U+010C (decimal 268) + defining Unicode char U+010D (decimal 269) + defining Unicode char U+010E (decimal 270) + defining Unicode char U+010F (decimal 271) + defining Unicode char U+0110 (decimal 272) + defining Unicode char U+0111 (decimal 273) + defining Unicode char U+0118 (decimal 280) + defining Unicode char U+0119 (decimal 281) + defining Unicode char U+011A (decimal 282) + defining Unicode char U+011B (decimal 283) + defining Unicode char U+011E (decimal 286) + defining Unicode char U+011F (decimal 287) + defining Unicode char U+0130 (decimal 304) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0132 (decimal 306) + defining Unicode char U+0133 (decimal 307) + defining Unicode char U+0139 (decimal 313) + defining Unicode char U+013A (decimal 314) + defining Unicode char U+013D (decimal 317) + defining Unicode char U+013E (decimal 318) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0143 (decimal 323) + defining Unicode char U+0144 (decimal 324) + defining Unicode char U+0147 (decimal 327) + defining Unicode char U+0148 (decimal 328) + defining Unicode char U+014A (decimal 330) + defining Unicode char U+014B (decimal 331) + defining Unicode char U+0150 (decimal 336) + defining Unicode char U+0151 (decimal 337) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+0154 (decimal 340) + defining Unicode char U+0155 (decimal 341) + defining Unicode char U+0158 (decimal 344) + defining Unicode char U+0159 (decimal 345) + defining Unicode char U+015A (decimal 346) + defining Unicode char U+015B (decimal 347) + defining Unicode char U+015E (decimal 350) + defining Unicode char U+015F (decimal 351) + defining Unicode char U+0160 (decimal 352) + defining Unicode char U+0161 (decimal 353) + defining Unicode char U+0162 (decimal 354) + defining Unicode char U+0163 (decimal 355) + defining Unicode char U+0164 (decimal 356) + defining Unicode char U+0165 (decimal 357) + defining Unicode char U+016E (decimal 366) + defining Unicode char U+016F (decimal 367) + defining Unicode char U+0170 (decimal 368) + defining Unicode char U+0171 (decimal 369) + defining Unicode char U+0178 (decimal 376) + defining Unicode char U+0179 (decimal 377) + defining Unicode char U+017A (decimal 378) + defining Unicode char U+017B (decimal 379) + defining Unicode char U+017C (decimal 380) + defining Unicode char U+017D (decimal 381) + defining Unicode char U+017E (decimal 382) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201A (decimal 8218) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) + defining Unicode char U+201E (decimal 8222) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+2039 (decimal 8249) + defining Unicode char U+203A (decimal 8250) + defining Unicode char U+2423 (decimal 9251) +) +Now handling font encoding OT1 ... +... processing UTF-8 mapping file for font encoding OT1 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/ot1enc.dfu +File: ot1enc.dfu 2014/09/29 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A1 (decimal 161) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00B8 (decimal 184) + defining Unicode char U+00BF (decimal 191) + defining Unicode char U+00C5 (decimal 197) + defining Unicode char U+00C6 (decimal 198) + defining Unicode char U+00D8 (decimal 216) + defining Unicode char U+00DF (decimal 223) + defining Unicode char U+00E6 (decimal 230) + defining Unicode char U+00EC (decimal 236) + defining Unicode char U+00ED (decimal 237) + defining Unicode char U+00EE (decimal 238) + defining Unicode char U+00EF (decimal 239) + defining Unicode char U+00F8 (decimal 248) + defining Unicode char U+0131 (decimal 305) + defining Unicode char U+0141 (decimal 321) + defining Unicode char U+0142 (decimal 322) + defining Unicode char U+0152 (decimal 338) + defining Unicode char U+0153 (decimal 339) + defining Unicode char U+2013 (decimal 8211) + defining Unicode char U+2014 (decimal 8212) + defining Unicode char U+2018 (decimal 8216) + defining Unicode char U+2019 (decimal 8217) + defining Unicode char U+201C (decimal 8220) + defining Unicode char U+201D (decimal 8221) +) +Now handling font encoding OMS ... +... processing UTF-8 mapping file for font encoding OMS + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/omsenc.dfu +File: omsenc.dfu 2014/09/29 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) +) +Now handling font encoding OMX ... +... no UTF-8 mapping file for font encoding OMX +Now handling font encoding U ... +... no UTF-8 mapping file for font encoding U + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+02C6 (decimal 710) + defining Unicode char U+02DC (decimal 732) + defining Unicode char U+200C (decimal 8204) + defining Unicode char U+2026 (decimal 8230) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2423 (decimal 9251) +)) + defining Unicode char U+00A0 (decimal 160) + defining Unicode char U+2500 (decimal 9472) + defining Unicode char U+2502 (decimal 9474) + defining Unicode char U+2514 (decimal 9492) + defining Unicode char U+251C (decimal 9500) + defining Unicode char U+2572 (decimal 9586) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/cmap/cmap.sty +Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2005/09/27 v1.99g Standard LaTeX package + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/t1enc.def +File: t1enc.def 2005/09/27 v1.99g Standard LaTeX file +LaTeX Font Info: Redeclaring font encoding T1 on input line 48. +)<>) +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2013/01/14 v2.14 AMS math features +\@mathmargin=\skip43 + +For additional information on amsmath, use the `?' option. +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 +\@emptytoks=\toks16 +\ex@=\dimen103 +)) +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d +\pmbraise@=\dimen104 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 1999/12/14 v2.01 operator names +) +\inf@bad=\count88 +LaTeX Info: Redefining \frac on input line 210. +\uproot@=\count89 +\leftroot@=\count90 +LaTeX Info: Redefining \overline on input line 306. +\classnum@=\count91 +\DOTSCASE@=\count92 +LaTeX Info: Redefining \ldots on input line 378. +LaTeX Info: Redefining \dots on input line 381. +LaTeX Info: Redefining \cdots on input line 466. +\Mathstrutbox@=\box26 +\strutbox@=\box27 +\big@size=\dimen105 +LaTeX Font Info: Redeclaring font encoding OML on input line 566. +LaTeX Font Info: Redeclaring font encoding OMS on input line 567. +\macc@depth=\count93 +\c@MaxMatrixCols=\count94 +\dotsspace@=\muskip10 +\c@parentequation=\count95 +\dspbrk@lvl=\count96 +\tag@help=\toks17 +\row@=\count97 +\column@=\count98 +\maxfields@=\count99 +\andhelp@=\toks18 +\eqnshift@=\dimen106 +\alignsep@=\dimen107 +\tagshift@=\dimen108 +\tagwidth@=\dimen109 +\totwidth@=\dimen110 +\lineht@=\dimen111 +\@envbody=\toks19 +\multlinegap=\skip44 +\multlinetaggap=\skip45 +\mathdisplay@stack=\toks20 +LaTeX Info: Redefining \[ on input line 2665. +LaTeX Info: Redefining \] on input line 2666. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty +Package: amssymb 2013/01/14 v3.01 AMS font symbols + +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +)) +(/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.sty +Package: babel 2014/09/25 3.9l The Babel package + +(/usr/local/texlive/2015/texmf-dist/tex/generic/babel-english/english.ldf +Language: english 2012/08/20 v3.3p English support from the babel system + +(/usr/local/texlive/2015/texmf-dist/tex/generic/babel/babel.def +File: babel.def 2014/09/25 3.9l Babel common definitions +\babel@savecnt=\count100 +\U@D=\dimen112 +) +\l@canadian = a dialect from \language\l@american +\l@australian = a dialect from \language\l@british +\l@newzealand = a dialect from \language\l@british +)) +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/times.sty +Package: times 2005/04/12 PSNFSS-v9.2a (SPQR) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/fncychap/fncychap.sty +Package: fncychap 2007/07/30 v1.34 LaTeX package (Revised chapters) +\RW=\skip46 +\mylen=\skip47 +\myhi=\skip48 +\px=\skip49 +\py=\skip50 +\pyy=\skip51 +\pxx=\skip52 +\c@AlphaCnt=\count101 +\c@AlphaDecCnt=\count102 +) +(./sphinx.sty +Package: sphinx 2019/09/02 v2.3.0 LaTeX package (Sphinx markup) + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/10/28 v1.15 key=value parser (DPC) +\KV@toks@=\toks21 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 94. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +\Gread@gobject=\count103 +)) +\Gin@req@height=\dimen113 +\Gin@req@width=\dimen114 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +\fancy@headwidth=\skip53 +\f@ncyO@elh=\skip54 +\f@ncyO@erh=\skip55 +\f@ncyO@olh=\skip56 +\f@ncyO@orh=\skip57 +\f@ncyO@elf=\skip58 +\f@ncyO@erf=\skip59 +\f@ncyO@olf=\skip60 +\f@ncyO@orf=\skip61 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2005/09/27 v1.99g Standard LaTeX package +Package textcomp Info: Sub-encoding information: +(textcomp) 5 = only ISO-Adobe without \textcurrency +(textcomp) 4 = 5 + \texteuro +(textcomp) 3 = 4 + \textohm +(textcomp) 2 = 3 + \textestimated + \textcurrency +(textcomp) 1 = TS1 - \textcircled - \t +(textcomp) 0 = TS1 (full) +(textcomp) Font families with sub-encoding setting implement +(textcomp) only a restricted character set as indicated. +(textcomp) Family '?' is the default used for unknown fonts. +(textcomp) See the documentation for details. +Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 79. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.def +File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file +Now handling font encoding TS1 ... +... processing UTF-8 mapping file for font encoding TS1 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1enc.dfu +File: ts1enc.dfu 2014/09/29 v1.1m UTF-8 support for inputenc + defining Unicode char U+00A2 (decimal 162) + defining Unicode char U+00A3 (decimal 163) + defining Unicode char U+00A4 (decimal 164) + defining Unicode char U+00A5 (decimal 165) + defining Unicode char U+00A6 (decimal 166) + defining Unicode char U+00A7 (decimal 167) + defining Unicode char U+00A8 (decimal 168) + defining Unicode char U+00A9 (decimal 169) + defining Unicode char U+00AA (decimal 170) + defining Unicode char U+00AC (decimal 172) + defining Unicode char U+00AE (decimal 174) + defining Unicode char U+00AF (decimal 175) + defining Unicode char U+00B0 (decimal 176) + defining Unicode char U+00B1 (decimal 177) + defining Unicode char U+00B2 (decimal 178) + defining Unicode char U+00B3 (decimal 179) + defining Unicode char U+00B4 (decimal 180) + defining Unicode char U+00B5 (decimal 181) + defining Unicode char U+00B6 (decimal 182) + defining Unicode char U+00B7 (decimal 183) + defining Unicode char U+00B9 (decimal 185) + defining Unicode char U+00BA (decimal 186) + defining Unicode char U+00BC (decimal 188) + defining Unicode char U+00BD (decimal 189) + defining Unicode char U+00BE (decimal 190) + defining Unicode char U+00D7 (decimal 215) + defining Unicode char U+00F7 (decimal 247) + defining Unicode char U+0192 (decimal 402) + defining Unicode char U+02C7 (decimal 711) + defining Unicode char U+02D8 (decimal 728) + defining Unicode char U+02DD (decimal 733) + defining Unicode char U+0E3F (decimal 3647) + defining Unicode char U+2016 (decimal 8214) + defining Unicode char U+2020 (decimal 8224) + defining Unicode char U+2021 (decimal 8225) + defining Unicode char U+2022 (decimal 8226) + defining Unicode char U+2030 (decimal 8240) + defining Unicode char U+2031 (decimal 8241) + defining Unicode char U+203B (decimal 8251) + defining Unicode char U+203D (decimal 8253) + defining Unicode char U+2044 (decimal 8260) + defining Unicode char U+204E (decimal 8270) + defining Unicode char U+2052 (decimal 8274) + defining Unicode char U+20A1 (decimal 8353) + defining Unicode char U+20A4 (decimal 8356) + defining Unicode char U+20A6 (decimal 8358) + defining Unicode char U+20A9 (decimal 8361) + defining Unicode char U+20AB (decimal 8363) + defining Unicode char U+20AC (decimal 8364) + defining Unicode char U+20B1 (decimal 8369) + defining Unicode char U+2103 (decimal 8451) + defining Unicode char U+2116 (decimal 8470) + defining Unicode char U+2117 (decimal 8471) + defining Unicode char U+211E (decimal 8478) + defining Unicode char U+2120 (decimal 8480) + defining Unicode char U+2122 (decimal 8482) + defining Unicode char U+2126 (decimal 8486) + defining Unicode char U+2127 (decimal 8487) + defining Unicode char U+212E (decimal 8494) + defining Unicode char U+2190 (decimal 8592) + defining Unicode char U+2191 (decimal 8593) + defining Unicode char U+2192 (decimal 8594) + defining Unicode char U+2193 (decimal 8595) + defining Unicode char U+2329 (decimal 9001) + defining Unicode char U+232A (decimal 9002) + defining Unicode char U+2422 (decimal 9250) + defining Unicode char U+25E6 (decimal 9702) + defining Unicode char U+25EF (decimal 9711) + defining Unicode char U+266A (decimal 9834) +)) +LaTeX Info: Redefining \oldstylenums on input line 334. +Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 349. +Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 350. +Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 351. +Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 352. +Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 353. +Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 354. +Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 355. +Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 356. +Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 357. +Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 358. +Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 359. +Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 360. +Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 361. +Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 362. +Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 363. +Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 364. +Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 365. +Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 366. +Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 367. +Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 368. +Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 369. +Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 370. +Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 371. +Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 372. + +Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 373. +Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 374. +Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 375. +Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 376. +Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 377. +Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 378. +Package textcomp Info: Setting lmr sub-encoding to TS1/0 on input line 379. +Package textcomp Info: Setting lmdh sub-encoding to TS1/0 on input line 380. +Package textcomp Info: Setting lmss sub-encoding to TS1/0 on input line 381. +Package textcomp Info: Setting lmssq sub-encoding to TS1/0 on input line 382. +Package textcomp Info: Setting lmvtt sub-encoding to TS1/0 on input line 383. +Package textcomp Info: Setting lmtt sub-encoding to TS1/0 on input line 384. +Package textcomp Info: Setting qhv sub-encoding to TS1/0 on input line 385. +Package textcomp Info: Setting qag sub-encoding to TS1/0 on input line 386. +Package textcomp Info: Setting qbk sub-encoding to TS1/0 on input line 387. +Package textcomp Info: Setting qcr sub-encoding to TS1/0 on input line 388. +Package textcomp Info: Setting qcs sub-encoding to TS1/0 on input line 389. +Package textcomp Info: Setting qpl sub-encoding to TS1/0 on input line 390. +Package textcomp Info: Setting qtm sub-encoding to TS1/0 on input line 391. +Package textcomp Info: Setting qzc sub-encoding to TS1/0 on input line 392. +Package textcomp Info: Setting qhvc sub-encoding to TS1/0 on input line 393. +Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 394. +Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 395. +Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 396. +Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 397. +Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 398. +Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 399. +Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 400. +Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 401. +Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 402. +Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 403. +Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 404. +Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 405. +Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 406. +Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 407. +Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 408. +Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 409. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/titlesec/titlesec.sty +Package: titlesec 2011/12/15 v2.10.0 Sectioning titles +\ttl@box=\box28 +\beforetitleunit=\skip62 +\aftertitleunit=\skip63 +\ttl@plus=\dimen115 +\ttl@minus=\dimen116 +\ttl@toksa=\toks22 +\titlewidth=\dimen117 +\titlewidthlast=\dimen118 +\titlewidthfirst=\dimen119 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/tabulary/tabulary.sty +Package: tabulary 2014/06/11 v0.10 tabulary package (DPC) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/tools/array.sty +Package: array 2014/10/28 v2.4c Tabular extension package (FMi) +\col@sep=\dimen120 +\extrarowheight=\dimen121 +\NC@list=\toks23 +\extratabsurround=\skip64 +\backup@length=\skip65 +) +\TY@count=\count104 +\TY@linewidth=\dimen122 +\tymin=\dimen123 +\tymax=\dimen124 +\TY@tablewidth=\dimen125 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/tools/longtable.sty +Package: longtable 2014/10/28 v4.11 Multi-page Table package (DPC) +\LTleft=\skip66 +\LTright=\skip67 +\LTpre=\skip68 +\LTpost=\skip69 +\LTchunksize=\count105 +\LTcapwidth=\dimen126 +\LT@head=\box29 +\LT@firsthead=\box30 +\LT@foot=\box31 +\LT@lastfoot=\box32 +\LT@cols=\count106 +\LT@rows=\count107 +\c@LT@tables=\count108 +\c@LT@chunks=\count109 +\LT@p@ftn=\toks24 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/varwidth/varwidth.sty +Package: varwidth 2009/03/30 ver 0.92; Variable-width minipages +\@vwid@box=\box33 +\sift@deathcycles=\count110 +\@vwid@loff=\dimen127 +\@vwid@roff=\dimen128 +) +(./sphinxmulticell.sty +Package: sphinxmulticell 2017/02/23 v1.6 better span rows and columns of a tabl +e (Sphinx team) +\sphinx@TY@tablewidth=\dimen129 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/makeidx.sty +Package: makeidx 2014/09/29 v1.0m Standard LaTeX package +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/framed/framed.sty +Package: framed 2011/10/22 v 0.96: framed or shaded text with page breaks +\OuterFrameSep=\skip70 +\fb@frw=\dimen130 +\fb@frh=\dimen131 +\FrameRule=\dimen132 +\FrameSep=\dimen133 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +\FV@CodeLineNo=\count111 +\FV@InFile=\read1 +\FV@TabBox=\box34 +\c@FancyVerbLine=\count112 +\FV@StepNumber=\count113 +\FV@OutFile=\write3 +) (./footnotehyper-sphinx.sty +Package: footnotehyper-sphinx 2017/10/27 v1.7 hyperref aware footnote.sty for s +phinx (JFB) +\FNH@notes=\box35 +\FNH@width=\dimen134 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count114 +\float@exts=\toks25 +\float@box=\box36 +\@float@everytoks=\toks26 +\@floatcapt=\box37 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/wrapfig/wrapfig.sty +\wrapoverhang=\dimen135 +\WF@size=\dimen136 +\c@WF@wrappedlines=\count115 +\WF@box=\box38 +\WF@everypar=\toks27 +Package: wrapfig 2003/01/31 v 3.6 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/parskip/parskip.sty +Package: parskip 2001/04/09 non-zero parskip adjustments +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/base/alltt.sty +Package: alltt 1997/06/16 v2.0g defines alltt environment +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/capt-of/capt-of.sty +Package: capt-of 2009/12/29 v0.2 standard captions outside of floats +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/needspace/needspace.sty +Package: needspace 2010/09/12 v1.3d reserve vertical space +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/carlisle/remreset.sty) +(./sphinxhighlight.sty +Package: sphinxhighlight 2016/05/29 stylesheet for highlighting with pygments +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +))) +\sphinxverbatimsep=\dimen137 +\sphinxverbatimborder=\dimen138 +\sphinxshadowsep=\dimen139 +\sphinxshadowsize=\dimen140 +\sphinxshadowrule=\dimen141 +\spx@notice@border=\dimen142 +\spx@image@maxheight=\dimen143 +\spx@image@box=\dimen144 +\c@literalblock=\count116 +\sphinxcontinuationbox=\box39 +\sphinxvisiblespacebox=\box40 +\sphinxVerbatim@TitleBox=\box41 +\sphinxVerbatim@ContentsBox=\box42 +\py@argswidth=\skip71 +\lineblockindentation=\skip72 +\DUlineblockindent=\skip73 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count117 +\Gm@cntv=\count118 +\c@Gm@tempcnt=\count119 +\Gm@bindingoffset=\dimen145 +\Gm@wd@mp=\dimen146 +\Gm@odd@mp=\dimen147 +\Gm@even@mp=\dimen148 +\Gm@layoutwidth=\dimen149 +\Gm@layoutheight=\dimen150 +\Gm@layouthoffset=\dimen151 +\Gm@layoutvoffset=\dimen152 +\Gm@dimlist=\toks28 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2012/11/06 v6.83m Hypertext links for LaTeX + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty +Package: hobsub-hyperref 2012/05/28 v1.13 Bundle oberdiek, subset hyperref (HO) + + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty +Package: hobsub-generic 2012/05/28 v1.13 Bundle oberdiek, subset generic (HO) +Package: hobsub 2012/05/28 v1.13 Construct package bundles (HO) +Package hobsub Info: Skipping package `infwarerr' (already loaded). +Package hobsub Info: Skipping package `ltxcmds' (already loaded). +Package hobsub Info: Skipping package `ifluatex' (already loaded). +Package hobsub Info: Skipping package `ifvtex' (already loaded). +Package: intcalc 2007/09/27 v1.1 Expandable calculations with integers (HO) +Package hobsub Info: Skipping package `ifpdf' (already loaded). +Package hobsub Info: Skipping package `etexcmds' (already loaded). +Package hobsub Info: Skipping package `kvsetkeys' (already loaded). +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +Package: pdfescape 2011/11/25 v1.13 Implements pdfTeX's escape features (HO) +Package: bigintcalc 2012/04/08 v1.3 Expandable calculations on big integers (HO +) +Package: bitset 2011/01/30 v1.1 Handle bit-vector datatype (HO) +Package: uniquecounter 2011/01/30 v1.2 Provide unlimited unique counter (HO) +) +Package hobsub Info: Skipping package `hobsub' (already loaded). +Package: letltxmacro 2010/09/02 v1.4 Let assignment for LaTeX macros (HO) +Package: hopatch 2012/05/28 v1.2 Wrapper for package hooks (HO) +Package: xcolor-patch 2011/01/30 xcolor patch +Package: atveryend 2011/06/30 v1.8 Hooks at the very end of document (HO) +Package atveryend Info: \enddocument detected (standard20110627). +Package: atbegshi 2011/10/05 v1.16 At begin shipout hook (HO) +Package: refcount 2011/10/16 v3.4 Data extraction from label references (HO) +Package: hycolor 2011/01/30 v1.7 Color options for hyperref/bookmark (HO) +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/auxhook.sty +Package: auxhook 2011/03/04 v1.3 Hooks for auxiliary files (HO) +) +\@linkdim=\dimen153 +\Hy@linkcounter=\count120 +\Hy@pagecounter=\count121 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2012/11/06 v6.83m Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +\Hy@SavedSpaceFactor=\count122 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/hyperref.cfg +File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive +) +Package hyperref Info: Option `unicode' set `true' on input line 4319. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2012/11/06 v6.83m Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Option `colorlinks' set `true' on input line 4319. +Package hyperref Info: Option `breaklinks' set `true' on input line 4319. +Package hyperref Info: Hyper figures OFF on input line 4443. +Package hyperref Info: Link nesting OFF on input line 4448. +Package hyperref Info: Hyper index ON on input line 4451. +Package hyperref Info: Plain pages OFF on input line 4458. +Package hyperref Info: Backreferencing OFF on input line 4463. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4688. +\c@Hy@tempcnt=\count123 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip11 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5041. +\XeTeXLinkMargin=\dimen154 +\Fld@menulength=\count124 +\Field@Width=\dimen155 +\Fld@charsize=\dimen156 +Package hyperref Info: Hyper figures OFF on input line 6295. +Package hyperref Info: Link nesting OFF on input line 6300. +Package hyperref Info: Hyper index ON on input line 6303. +Package hyperref Info: backreferencing OFF on input line 6310. +Package hyperref Info: Link coloring ON on input line 6313. +Package hyperref Info: Link coloring with OCG OFF on input line 6320. +Package hyperref Info: PDF/A mode OFF on input line 6325. +LaTeX Info: Redefining \ref on input line 6365. +LaTeX Info: Redefining \pageref on input line 6369. +\Hy@abspage=\count125 +\c@Item=\count126 +\c@Hfootnote=\count127 +) + +Package hyperref Message: Driver (autodetected): hpdftex. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2012/11/06 v6.83m Hyperref driver for pdfTeX +\Fld@listcount=\count128 +\c@bookmark@seq@number=\count129 + +(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty +Package: rerunfilecheck 2011/04/15 v1.7 Rerun checks for auxiliary files (HO) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +82. +) +\Hy@SectionHShift=\skip74 +) +(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/hypcap.sty +Package: hypcap 2011/02/16 v1.11 Adjusting the anchors of captions (HO) +) +(./sphinxmessages.sty +Package: sphinxmessages 2019/01/04 v2.0 Localized LaTeX macros (Sphinx team) +) +\@indexfile=\write4 +\openout4 = `python.idx'. + + +Writing index file python.idx +(./python.aux) +\openout1 = `python.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 82. +LaTeX Font Info: Try loading font information for TS1+cmr on input line 82. + (/usr/local/texlive/2015/texmf-dist/tex/latex/base/ts1cmr.fd +File: ts1cmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions +) +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 82. +LaTeX Font Info: ... okay on input line 82. +LaTeX Font Info: Try loading font information for T1+ptm on input line 82. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1ptm.fd +File: t1ptm.fd 2001/06/04 font definitions for T1/ptm. +) +(/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count130 +\scratchdimen=\dimen157 +\scratchbox=\box43 +\nofMPsegments=\count131 +\nofMParguments=\count132 +\everyMPshowfont=\toks29 +\MPscratchCnt=\count133 +\MPscratchDim=\dimen158 +\MPnumerator=\count134 +\makeMPintoPDFobject=\count135 +\everyMPtoPDFconversion=\toks30 +) (/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) +) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: letterpaper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: twoside +* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=469.75502pt +* \textheight=650.43001pt +* \oddsidemargin=0.0pt +* \evensidemargin=0.0pt +* \topmargin=-37.0pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=36.135pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\AtBeginShipoutBox=\box44 +Package hyperref Info: Link coloring ON on input line 82. +(/usr/local/texlive/2015/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section + +(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/gettitlestring.sty +Package: gettitlestring 2010/12/03 v1.4 Cleanup title references (HO) +) +\c@section@level=\count136 +) +LaTeX Info: Redefining \ref on input line 82. +LaTeX Info: Redefining \pageref on input line 82. +LaTeX Info: Redefining \nameref on input line 82. +\@outlinefile=\write5 +\openout5 = `python.out'. + +Package hyperref Info: Option `pageanchor' set `false' on input line 85. +LaTeX Font Info: Try loading font information for T1+phv on input line 85. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1phv.fd +File: t1phv.fd 2001/06/04 scalable font definitions for T1/phv. +) +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <10> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <24.88> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <10> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <10> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/bx/it' in size <17.28> not available +(Font) Font shape `T1/phv/b/it' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/b/it' in size <17.28> not available +(Font) Font shape `T1/phv/b/sl' tried instead on input line 85. +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <17.28> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 85. +<><><><> +LaTeX Font Info: Try loading font information for U+msa on input line 85. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Try loading font information for U+msb on input line 85. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <12> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 85. + [1 + +{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2 + + +] +LaTeX Font Info: Font shape `T1/phv/bx/n' in size <14.4> not available +(Font) Font shape `T1/phv/b/n' tried instead on input line 87. +\tf@toc=\write6 +\openout6 = `python.toc'. + + [1 + +] [2 + +] +LaTeX Font Info: Font shape `T1/ptm/bx/n' in size <10> not available +(Font) Font shape `T1/ptm/b/n' tried instead on input line 98. + [1] +[2 + +] +Chapter 1. +[3] [4] +Chapter 2. +[5 + +] [6 + +] +Chapter 3. +[7] [8 + +] +Chapter 4. +[9] [10 + +] +Chapter 5. +[11] [12 + +] +Chapter 6. +LaTeX Font Info: Try loading font information for TS1+ptm on input line 303. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1ptm.fd +File: ts1ptm.fd 2001/06/04 font definitions for TS1/ptm. +) [13] [14 + +] +Chapter 7. +[15] [16 + +] +Chapter 8. +[17] [18 + +] +Chapter 9. +[19] [20 + +] +Chapter 10. +[21] [22 + +] +Chapter 11. +[23] [24 + +] +Chapter 12. +[25] [26 + +] +Chapter 13. +[27] [28] [29] [30] +LaTeX Font Info: Try loading font information for T1+pcr on input line 827. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/t1pcr.fd +File: t1pcr.fd 2001/06/04 font definitions for T1/pcr. +) [31] [32] +LaTeX Font Info: Font shape `T1/pcr/bx/n' in size <9> not available +(Font) Font shape `T1/pcr/b/n' tried instead on input line 949. + +[33] [34] +LaTeX Font Info: Font shape `T1/pcr/m/it' in size <9> not available +(Font) Font shape `T1/pcr/m/sl' tried instead on input line 1075. + [35] [36] +LaTeX Font Info: Try loading font information for TS1+pcr on input line 1251 +. + +(/usr/local/texlive/2015/texmf-dist/tex/latex/psnfss/ts1pcr.fd +File: ts1pcr.fd 2001/06/04 font definitions for TS1/pcr. +) + +File: chapter2_42_1.png Graphic file (type png) + +Package pdftex.def Info: chapter2_42_1.png used on input line 1266. +(pdftex.def) Requested size: 387.44655pt x 248.92938pt. + +[37] [38 <./chapter2_42_1.png>] [39] [40] + +File: chapter2_54_2.png Graphic file (type png) + +Package pdftex.def Info: chapter2_54_2.png used on input line 1501. +(pdftex.def) Requested size: 469.75908pt x 281.55002pt. + +[41] +File: chapter2_54_3.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_54_3.png used on input line 1503. +(pdftex.def) Requested size: 469.75603pt x 278.13068pt. + [42 <./chapter2_54_2.png> <./chapter2_54_3.png>] +[43] +File: chapter2_60_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_60_0.png used on input line 1637. +(pdftex.def) Requested size: 469.76872pt x 338.63754pt. + [44] [45 <./chapter2_60_0.png>] + +File: chapter2_68_0.png Graphic file (type png) + +Package pdftex.def Info: chapter2_68_0.png used on input line 1725. +(pdftex.def) Requested size: 469.77116pt x 332.62776pt. + +[46] [47 <./chapter2_68_0.png>] + +File: chapter2_70_1.png Graphic file (type png) + +Package pdftex.def Info: chapter2_70_1.png used on input line 1781. +(pdftex.def) Requested size: 469.76872pt x 338.63754pt. + +[48 <./chapter2_70_1.png>] +! Argument of \split has an extra }. + + \par +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +? s +OK, entering \scrollmode... +Runaway argument? + H_{\delta }(a)={\begin {cases}{\frac {1}{2}}{a^{2}}&{\text {for }}|a\ETC. +! Paragraph ended before \split was complete. + + \par +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +I suspect you've forgotten a `}', causing me to apply this +control sequence to too much text. How can we recover? +My plan is to forget the whole thing and hope for the best. + +! Missing $ inserted. + + $ +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing \endgroup inserted. + + \endgroup +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \endgroup inserted. + + \endgroup +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \par +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra }, or forgotten \endgroup. + } + +l.1844 ...elta ),&{\text{otherwise.}}\end{cases}}} + . +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Misplaced \crcr. +\endsplit ->\crcr + \egroup \egroup \iftagsleft@ \@xp \lendsplit@ \else \@xp \... +l.1845 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten \endgroup. +\endsplit ->\crcr \egroup + \egroup \iftagsleft@ \@xp \lendsplit@ \else \@xp \... +l.1845 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten \endgroup. +\endsplit ->\crcr \egroup \egroup + \iftagsleft@ \@xp \lendsplit@ \else \@xp \... +l.1845 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + + +! LaTeX Error: \begin{equation*} on input line 1842 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.1845 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.1845 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.1846 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.1846 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Extra \endgroup. + \endgroup + +l.1846 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[49] +File: chapter2_84_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_84_0.png used on input line 1885. +(pdftex.def) Requested size: 469.76321pt x 318.01346pt. + [50 <./chapter2_84_0.png>] [51] [52] +Underfull \vbox (badness 10000) detected at line 2059 + [] + + +Overfull \vbox (15.7258pt too high) detected at line 2059 + [] + +[53] +LaTeX Font Info: Font shape `TS1/pcr/m/it' in size <9> not available +(Font) Font shape `TS1/pcr/m/sl' tried instead on input line 2074. + + [54] +File: chapter2_114_1.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_114_1.png used on input line 2178. +(pdftex.def) Requested size: 469.77574pt x 330.08154pt. + [55] +Overfull \vbox (0.55579pt too high) detected at line 2215 + [] + +[56 <./chapter2_114_1.png>] + +File: chapter2_116_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_116_0.png used on input line 2217. +(pdftex.def) Requested size: 469.77574pt x 345.38416pt. + [57 <./chapter2_116_0.png>] +Underfull \vbox (badness 2443) detected at line 2295 + [] + + +Overfull \vbox (2.18254pt too high) detected at line 2295 + [] + +[58] +Underfull \vbox (badness 10000) detected at line 2337 + [] + +[59] +Underfull \vbox (badness 10000) detected at line 2379 + [] + +[60] +File: chapter2_118_16.png Graphic file (type png) + + +Package pdftex.def Info: chapter2_118_16.png used on input line 2388. +(pdftex.def) Requested size: 469.77148pt x 478.36523pt. + [61] [62 <./chapter2_118_16.png>] [63] +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +[64] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2568 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2568 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.2568 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 2568 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2568 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.2568 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.2568 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.2568 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.2568 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 2562 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2568 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2568 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.2568 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.2568 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.2568 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.2568 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.2568 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2568 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2568 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.2569 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.2569 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.2569 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2569 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2569 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2569 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.2569 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[65] +File: chapter3_29_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter3_29_0.png used on input line 2639. +(pdftex.def) Requested size: 388.45029pt x 290.08304pt. + [66 <./chapter3_29_0.png>] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2666 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2666 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.2666 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 2666 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2666 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.2666 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.2666 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.2666 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.2666 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 2660 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2666 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2666 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.2666 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.2666 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.2666 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.2666 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.2666 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2666 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2666 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.2667 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.2667 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.2667 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2667 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2667 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2667 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.2667 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.2720 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +[67] [68] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2838 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2838 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.2838 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 2838 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2838 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.2838 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.2838 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.2838 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.2838 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 2832 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2838 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2838 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.2838 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.2838 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.2838 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.2838 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.2838 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2838 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2838 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.2839 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.2839 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.2839 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2839 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2839 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2839 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.2839 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[69] [70] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2967 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2967 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.2967 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 2967 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2967 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.2967 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.2967 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.2967 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.2967 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 2961 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2967 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2967 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.2967 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.2967 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.2967 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.2967 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.2967 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2967 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2967 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.2968 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.2968 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.2968 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2968 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2968 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2968 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.2968 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2978 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2978 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.2978 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 2978 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2978 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.2978 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.2978 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.2978 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.2978 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 2972 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2978 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2978 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.2978 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.2978 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.2978 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.2978 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.2978 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2978 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.2978 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.2979 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.2979 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.2979 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.2979 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.2979 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.2979 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.2979 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[71] [72] +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.3070 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +[73] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3151 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3151 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3151 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3151 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3151 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3151 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3151 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3151 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3151 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3145 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3151 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3151 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3151 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3151 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3151 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3151 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3151 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3151 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3151 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3152 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3152 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3152 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3152 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3152 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3152 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3152 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3171 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3171 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3171 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3171 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3171 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3171 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3171 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3171 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3171 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3165 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3171 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3171 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3171 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3171 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3171 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3171 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3171 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3171 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3171 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3172 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3172 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3172 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3172 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3172 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3172 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3172 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3187 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3187 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3187 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3187 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3187 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3187 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3187 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3187 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3187 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3181 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3187 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3187 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3187 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3187 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3187 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3187 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3187 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3187 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3187 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3188 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3188 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3188 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3188 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3188 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3188 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3188 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[74] + +LaTeX Warning: Hyper reference `chapter3:eq:exptvariance' on page 75 undefined +on input line 3223. + +[75] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3290 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3290 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3290 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3290 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3290 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3290 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3290 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3290 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3290 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3284 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3290 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3290 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3290 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3290 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3290 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3290 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3290 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3290 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3290 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3291 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3291 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3291 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3291 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3291 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3291 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3291 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3311 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3311 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3311 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3311 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3311 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3311 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3311 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3311 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3311 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3304 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3311 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3311 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3311 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3311 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3311 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3311 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3311 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3311 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3311 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3312 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3312 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3312 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3312 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3312 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3312 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3312 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3327 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3327 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3327 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3327 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3327 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3327 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3327 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3327 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3327 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3321 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3327 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3327 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3327 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3327 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3327 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3327 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3327 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3327 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3327 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3328 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3328 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3328 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3328 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3328 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3328 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3328 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +LaTeX Warning: Hyper reference `chapter3:eq:error_estimate_corr_time' on page 7 +6 undefined on input line 3340. + +[76] [77] [78] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3536 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3536 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3536 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3536 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3536 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3536 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3536 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3536 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3536 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3530 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3536 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3536 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3536 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3536 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3536 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3536 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3536 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3536 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3536 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3537 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3537 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3537 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3537 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3537 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3537 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3537 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3549 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3549 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3549 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3549 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3549 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3549 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3549 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3549 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3549 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3543 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3549 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3549 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3549 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3549 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3549 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3549 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3549 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3549 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3549 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3550 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3550 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3550 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3550 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3550 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3550 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3550 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[79] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3621 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3621 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3621 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3621 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3621 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3621 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3621 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3621 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3621 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3615 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3621 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3621 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3621 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3621 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3621 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3621 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3621 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3621 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3621 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3622 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3622 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3622 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3622 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3622 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3622 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3622 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +LaTeX Warning: Hyper reference `chapter3:eq:rntrick1' on page 80 undefined on i +nput line 3630. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3641 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3641 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3641 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3641 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3641 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3641 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3641 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3641 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3641 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3635 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3641 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3641 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3641 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3641 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3641 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3641 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3641 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3641 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3641 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3642 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3642 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3642 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3642 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3642 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3642 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3642 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3655 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3655 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3655 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3655 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3655 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3655 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3655 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3655 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3655 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3649 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3655 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3655 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3655 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3655 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3655 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3655 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3655 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3655 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3655 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3656 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3656 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3656 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3656 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3656 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3656 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3656 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[80] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3668 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3668 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.3668 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 3668 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3668 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.3668 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.3668 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.3668 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.3668 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 3662 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3668 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3668 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.3668 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.3668 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.3668 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.3668 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.3668 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3668 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.3668 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.3669 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.3669 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.3669 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.3669 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.3669 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.3669 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.3669 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[81] +File: chapter3_178_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter3_178_0.png used on input line 3788. +(pdftex.def) Requested size: 396.48027pt x 275.02682pt. + [82] + +LaTeX Warning: Hyper reference `chapter3:eq:autocorrelformal' on page 83 undefi +ned on input line 3795. + +[83 <./chapter3_178_0.png>] + +File: chapter3_184_1.png Graphic file (type png) + + +Package pdftex.def Info: chapter3_184_1.png used on input line 3856. +(pdftex.def) Requested size: 392.46527pt x 275.02682pt. + [84 <./chapter3_184_1.png>] [85] [86] [87] [88] +[89] [90] [91] [92] [93] +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4445 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +[94] +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4508 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.4551 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +[95] [96] [97] [98] [99] +File: chapter4_70_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter4_70_0.png used on input line 4909. +(pdftex.def) Requested size: 381.42406pt x 264.98935pt. + [100 <./chapter4_70_0.png>] [101] [102] [103] [104] + +File: chapter4_117_1.png Graphic file (type png) + +Package pdftex.def Info: chapter4_117_1.png used on input line 5246. +(pdftex.def) Requested size: 396.48027pt x 269.00433pt. + +[105] [106 <./chapter4_117_1.png>] +Underfull \vbox (badness 10000) detected at line 5345 + [] + +[107] [108] +File: chapter4_129_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter4_129_0.png used on input line 5475. +(pdftex.def) Requested size: 469.76407pt x 334.48817pt. + [109] + +File: chapter4_131_1.png Graphic file (type png) + + +Package pdftex.def Info: chapter4_131_1.png used on input line 5491. +(pdftex.def) Requested size: 469.75784pt x 336.92499pt. + [110 <./chapter4_129_0.png>] + +File: chapter4_133_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter4_133_0.png used on input line 5511. +(pdftex.def) Requested size: 469.74797pt x 134.16124pt. + [111 <./chapter4_131_1.png>] +Overfull \vbox (0.88394pt too high) detected at line 5575 + [] + +[112 <./chapter4_133_0.png>] + +File: chapter4_140_0.png Graphic file (type png) + + +Package pdftex.def Info: chapter4_140_0.png used on input line 5597. +(pdftex.def) Requested size: 469.7642pt x 329.3196pt. + [113] [114 <./chapter4_140_0.png>] [115] [116] +[117] + +! LaTeX Error: Bad math environment delimiter. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.5869 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + + +! Package amsmath Error: \tag not allowed here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.5869 \end{split} + +\tag cannot be used at this point. If you don't understand why +you should consult the documentation. +But don't worry: just continue, and I'll forget what happened. + +! You can't use `\eqno' in math mode. +\endmathdisplay@a ...\df@tag \@empty \else \veqno + \alt@tag \df@tag \fi \ifx ... +l.5869 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing \endgroup inserted. + + \endgroup +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{split} on input line 5869 ended by \end{equation}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.5869 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing \cr inserted. + + \cr +l.5869 \end{split} + +I'm guessing that you meant to end an alignment here. + +! Missing { inserted. + + { +l.5869 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.5869 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing { inserted. + + { +l.5869 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing } inserted. + + } +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + + +! LaTeX Error: \begin{equation*} on input line 5863 ended by \end{split}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.5869 \end{split} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.5869 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Misplaced alignment tab character &. +\math@cr@@@ ->\ifst@rred \nonumber \fi & + \relax \make@display@tag \ifst@rred ... +l.5869 \end{split} + +I can't figure out why you would want to use a tab mark +here. If you just want an ampersand, the remedy is +simple: Just type `I\&' now. But if some right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Misplaced \cr. +\math@cr@@@ ...fi \global \advance \row@ \@ne \cr + +l.5869 \end{split} + +I can't figure out why you would want to use a tab mark +or \cr or \span just now. If something like a right brace +up above has ended a previous alignment prematurely, +you're probably due for more error messages, and you +might try typing `S' now just to see what is salvageable. + +! Extra }, or forgotten $. +\gmeasure@ ...savetaglength@ \crcr #1\math@cr@@@ } + }\restorecounters@ \if@fle... +l.5869 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Extra }, or forgotten $. +\gmeasure@ ...avetaglength@ \crcr #1\math@cr@@@ }} + \restorecounters@ \if@fleq... +l.5869 \end{split} + +I've deleted a group-closing symbol because it seems to be +spurious, as in `$x}$'. But perhaps the } is legitimate and +you forgot something else, as in `\hbox{$x}'. In such cases +the way to recover is to insert both the forgotten and the +deleted material, e.g., by typing `I$}'. + +! Missing $ inserted. + + $ +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.5869 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.5869 \end{split} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + + +! Package amsmath Error: \begin{split} won't work here. + +See the amsmath package documentation for explanation. +Type H for immediate help. + ... + +l.5869 \end{split} + +\Did you forget a preceding \begin{equation}? +If not, perhaps the `aligned' environment is what you want. + +! Missing number, treated as zero. + + \relax +l.5870 \end{equation*} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \relax +l.5870 \end{equation*} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Too many }'s. +\endmathdisplay@a ...@ \totwidth@ \egroup \egroup + +l.5870 \end{equation*} + +You've closed more groups than you opened. +Such booboos are generally harmless, so keep going. + + +! LaTeX Error: \begin{document} ended by \end{equation*}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.5870 \end{equation*} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! Missing $ inserted. + + $ +l.5870 \end{equation*} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Display math should end with $$. + + \endgroup +l.5870 \end{equation*} + +The `$' that I just saw supposedly matches a previous `$$'. +So I shall assume that you typed `$$' both times. + +! Extra \endgroup. + \endgroup + +l.5870 \end{equation*} + +Things are pretty mixed up, but I think the worst is over. + +[118] [119] [120] [121] [122] [123] [124] [125] [126] [127] [128] +Overfull \hbox (138.79266pt too wide) in paragraph at lines 6679--6681 +\T1/ptm/m/n/10 where we wrote $$[]\OT1/cmr/m/n/10 [[][]\OML/cmm/m/it/10 ; [][]\ +OT1/cmr/m/n/10 ] = [][[]]$$\OML/cmm/m/it/10 toindicatethatthisthecovarianceofth +evectors$\T1/ptm/m/n/10 \boldsymbol{x}$\OML/cmm/m/it/10 ofthedesign=featurematr +ix$\T1/ptm/m/n/10 \boldsymbol{X}$. + [] + +[129] [130] [131] +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Misplaced \omit. +\math@cr@@@ ...@ \@ne \add@amps \maxfields@ \omit + \kern -\alignsep@ \iftag@ ... +l.6873 \end{split} + +I expect to see \omit only after tab marks or the \cr of +an alignment. Proceed, and I'll ignore this case. + +! Missing \endgroup inserted. + + \endgroup +l.6914 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.6914 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! You can't use `\halign' in math mode. +\H@eqnarray ...let \\\@eqncr $$\everycr {}\halign + to\displaywidth \bgroup \h... +l.6914 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing number, treated as zero. + + \bgroup +l.6914 \end{split} + +A number should have been here; I inserted `0'. +(If you can't figure out why I needed to see a number, +look up `weird error' in the index to The TeXbook.) + +! Illegal unit of measure (pt inserted). + + \bgroup +l.6914 \end{split} + +Dimensions can be in units of em, ex, in, pt, pc, +cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! +I'll assume that you meant to say pt, for printer's points. +To recover gracefully from this error, it's best to +delete the erroneous units; e.g., type `2' to delete +two letters. (See Chapter 27 of The TeXbook.) + +! Missing } inserted. + + } +l.6914 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing $ inserted. + + $ +l.6914 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! You can't use `macro parameter character #' in math mode. +\H@eqnarray ...$\displaystyle \tabskip \z@skip {## + }$\@eqnsel &\global \@eqcn... +l.6914 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing { inserted. + + { +l.6914 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing { inserted. + + { +l.6914 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Missing $ inserted. + + $ +l.6914 \end{split} + +I've inserted a begin-math/end-math symbol since I think +you left one out. Proceed, with fingers crossed. + +! Missing } inserted. + + } +l.6914 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! Missing } inserted. + + } +l.6914 \end{split} + +I've inserted something that you may have forgotten. +(See the above.) +With luck, this will get me unwedged. But if you +really didn't forget anything, try typing `2' now; then +my insertion and my current dilemma will both disappear. + +! You can't use `macro parameter character #' in restricted horizontal mode. +\H@eqnarray ...\hskip \tw@ \arraycolsep \hfil ${## + }$\hfil &\global \@eqcnt \... +l.6914 \end{split} + +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! Missing { inserted. + + { +l.6914 \end{split} + +I've put in what seems to be necessary to fix +the current column of the current alignment. +Try to go on, since this might almost work. + +! Extra alignment tab has been changed to \cr. +