Skip to content

Instantly share code, notes, and snippets.

@macd
Last active September 5, 2016 19:55
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
  • Save macd/10562695 to your computer and use it in GitHub Desktop.
Save macd/10562695 to your computer and use it in GitHub Desktop.
Chapter 1 A Brief Tutorial. A direct translation of Chapter 1 of D.J. Higham and N.J. Higham, MATLAB Guide (2005)
{
"metadata": {
"name": "",
"signature": "sha256:0936e15ccb28902d87415df9f98f757654d0c61a7c74400c92c0553c6bbcf91d"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This [IPython](http://ipython.org/) notebook is a direct translation of Chapter 1 of\n",
"\n",
">D. J. Higham and N.J. Higham. \n",
">[MATLAB Guide](http://www.ec-securehost.com/SIAM/ot92.html), Second edition, \n",
">Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, \n",
">2005, ISBN 0-89871-578-4\n",
"\n",
"with MATLAB code converted to equivalent Python/Numpy (and IPython/Matplotlib/Scipy) code. There are a small number of additions in the text to address Python/Numpy/IPython differences and additions. You can find out more about IPython and the IPython Notebook [here](http://ipython.org/) and in reference [2]. All the errors here are, of course, mine. I hope you find it useful. \n",
"\n",
"Don MacMillen: don (sometimes) at macmillen dot net\n",
"\n",
"#Chapter 1 A Brief Tutorial#\n",
"\n",
"The best way to learn Python/Numpy is by trying it yourself, and hence we begin with a whirlwind tour. Working through the examples below will give you a feel for the way that Python/Numpy operates and an appreciation of its power and \ufb02exibility. \n",
"\n",
"The tutorial is entirely independent of the rest of the book\u2014all the Python/Numpy features introduced are discussed in greater detail in the subsequent chapters. Indeed, in order to keep this chapter brief, we have not explained all the functions used here. You can use the index in [1] to \ufb01nd out more about particular topics that interest you. \n",
"\n",
"We will be using the IPython interactive shell as well as the IPython notebook (which is what you are reading now) throughout this tutorial. You can install these by following the directions at [IPython install](http://ipython.org/install.html). This tutorial contains commands for you to type at the IPython command line. Alternatively, if you are viewing this notebook in a \"live\" mode served from a local IPython notebook server, you can directly modify any of the cells and rerun the cell. Just be aware that in some cases you may need to choose the \"Run All\" option from the cell drop down menu to satisfy intercell dependences.\n",
"\n",
"In the last part of this brief tutorial we give examples of script files and functions. These \ufb01les are short, so you can type them in quickly or cut and paste them into an IPython shell (using the %cpaste magic), or you can just modify values in place in the IPython notebook and re-evaluate the cell. You should experiment as you proceed, keeping the following points in mind. \n",
"\n",
"* Upper and lower case characters are not equivalent (Python/Numpy are case sensitive). \n",
"* Typing the name of a variable will cause IPython to display its current value. \n",
"* Python/Numpy uses parentheses, ( ), square brackets, [ ], and curly braces, { }, and these are not interchangeable. \n",
"* In the IPython shell, the up arrow and down arrow keys can be used to scroll through your previous commands. Also, an old command can be recalled by typing the first few characters followed by up arrow. You can also use ctrl-p (type p while holding the control key down) to scroll back through the command history stack.\n",
"* You can type help(topic) to access online help on the command, function, or object topic. Note that hyperlinks, indicated by underlines, are provided that will take you to related help items and the Help browser. \n",
"* If you press the tab key after partially typing a function or variable name, IPython will attempt to complete it, offering you a selection of choices if there is more than one possible completion. \n",
"* You can quit IPython by typing exit or quit or ctrl-d twice.\n",
"\n",
"Having entered the IPython command, you should work through this tutorial by typing in the text that appears after the IPython prompt, 'In [n]:' where n is a number which indicates the command's location in the command stack, in the command window. After showing you what to type, we display the output that is produced. We begin with arrays. In native Python arrays are lists denoted with the square bracket syntax. However, we want Numpy arrays, so first you import the numpy module and shorten the prefix to \"np\" (this is a common usage convention)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import numpy as np\n",
"a = np.array([1, 2, 3])\n",
"a"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 14,
"text": [
"array([1, 2, 3])"
]
}
],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you type in the three lines listed in the box 'In[1]:' above into the IPython shell, then you will see the result listed in 'Out[1]:'\n",
"\n",
"This example sets up a 3 element array, which is also called a vector. In some other languages, a distinction is made between a row vector and a column vector, but that is not the case in Numpy. If you define a new vector c"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c = np.array([4, 5, 6])\n",
"c"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 15,
"text": [
"array([4, 5, 6])"
]
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now you can multiply the arrays a and c:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a*c"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 16,
"text": [
"array([ 4, 10, 18])"
]
}
],
"prompt_number": 16
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, you performed an element by element mulitpy of the two vectors, not the scalar or dot product that some other languages would have done. Notice that in this example, the product a\\*c was not explicitly assigned to any variable. When there is no explicit assignment, IPython automatically assigns the result of the expression to the variable named '\\_' (underscore) as you can see by the following:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"_"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 17,
"text": [
"array([ 4, 10, 18])"
]
}
],
"prompt_number": 17
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you wanted to get the dot product of the two vectors, use the dot function from numpy, as in the following"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.dot(a, c)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 18,
"text": [
"32"
]
}
],
"prompt_number": 18
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Inputs to Python functions are speci\ufb01ed after the function name and within parentheses, as you just saw above with the 'dot' function from the numpy module. You may also form the outer product of the two vectors by calling another function from numpy"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"A = np.outer(c, a)\n",
"A"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 19,
"text": [
"array([[ 4, 8, 12],\n",
" [ 5, 10, 15],\n",
" [ 6, 12, 18]])"
]
}
],
"prompt_number": 19
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here the answer is a 3-by-3 array that has been assigned to A.\n",
"\n",
"The product a \\* a, since the '\\*' operation is element-wise, is equivalent to squaring a, which uses the '\\*\\*' operator"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"a * a"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 20,
"text": [
"array([1, 4, 9])"
]
}
],
"prompt_number": 20
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"b = a ** 2\n",
"b"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 21,
"text": [
"array([1, 4, 9])"
]
}
],
"prompt_number": 21
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Arithmetic operations on matrices and vectors come in two distinct forms. Array sense operations are de\ufb01ned to act elementwise and, as mentioned before, are the default behavior of Numpy.\n",
"\n",
"Matrix sense operations are based on the normal rules of linear algebra and are obtained with either matrix objects, or calling the specific matrix function from numpy. For matrix objects, the usual symbols +, -, *."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"am = np.matrix(a)\n",
"cm = np.matrix(c)\n",
"am * cm.T"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 22,
"text": [
"matrix([[32]])"
]
}
],
"prompt_number": 22
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice that you had to take the transpose of c in order to make it into a column vector. For numpy matrix objects, there is a difference between row and column vectors. Also, matrix object can only have one or two dimensions. For instance, the numpy function 'ones' takes a tuple and returns a numpy array of that dimensionality. The following will give us a 3 by 3 by 3 array of ones."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"g = np.ones( (3, 3, 3) )\n",
"g"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 23,
"text": [
"array([[[ 1., 1., 1.],\n",
" [ 1., 1., 1.],\n",
" [ 1., 1., 1.]],\n",
"\n",
" [[ 1., 1., 1.],\n",
" [ 1., 1., 1.],\n",
" [ 1., 1., 1.]],\n",
"\n",
" [[ 1., 1., 1.],\n",
" [ 1., 1., 1.],\n",
" [ 1., 1., 1.]]])"
]
}
],
"prompt_number": 23
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If you try to turn this into a matrix object, you will get an error"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#h = np.matrix(g)\n",
"print \"Error has a problem???\""
],
"language": "python",
"metadata": {},
"outputs": [
{
"ename": "SyntaxError",
"evalue": "invalid syntax (<ipython-input-24-0ea628c0e0dd>, line 2)",
"output_type": "pyerr",
"traceback": [
"\u001b[1;36m File \u001b[1;32m\"<ipython-input-24-0ea628c0e0dd>\"\u001b[1;36m, line \u001b[1;32m2\u001b[0m\n\u001b[1;33m print \"Error has a problem???\"\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
]
}
],
"prompt_number": 24
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here you see how errors are displayed in Python. You see the call stack from the top to the bottom and the error message that is finally displayed.\n",
"\n",
"Numpy has many mathematical functions that operate on arrays element wise when given an array argument. For example,"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.exp(a)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 25,
"text": [
"array([ 2.71828183, 7.3890561 , 20.08553692])"
]
}
],
"prompt_number": 25
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.log(_)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"array([ 1., 2., 3.])"
]
}
],
"prompt_number": 26
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.sqrt(a)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 27,
"text": [
"array([ 1. , 1.41421356, 1.73205081])"
]
}
],
"prompt_number": 27
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"By default, Numpy displays \ufb02oating point numbers to 8 decimal digits, but always stores numbers and computes to the equivalent of 16 decimal digits. The output format can be changed using the set_printoptions function"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.set_printoptions(precision=4)\n",
"print (np.sqrt(a))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"[ 1. 1.4142 1.7321]\n"
]
}
],
"prompt_number": 28
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can find out much more about the function set_printoptions by using IPython's help command"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"help(np.set_printoptions)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Help on function set_printoptions in module numpy.core.arrayprint:\n",
"\n",
"set_printoptions(precision=None, threshold=None, edgeitems=None, linewidth=None, suppress=None, nanstr=None, infstr=None, formatter=None)\n",
" Set printing options.\n",
" \n",
" These options determine the way floating point numbers, arrays and\n",
" other NumPy objects are displayed.\n",
" \n",
" Parameters\n",
" ----------\n",
" precision : int, optional\n",
" Number of digits of precision for floating point output (default 8).\n",
" threshold : int, optional\n",
" Total number of array elements which trigger summarization\n",
" rather than full repr (default 1000).\n",
" edgeitems : int, optional\n",
" Number of array items in summary at beginning and end of\n",
" each dimension (default 3).\n",
" linewidth : int, optional\n",
" The number of characters per line for the purpose of inserting\n",
" line breaks (default 75).\n",
" suppress : bool, optional\n",
" Whether or not suppress printing of small floating point values\n",
" using scientific notation (default False).\n",
" nanstr : str, optional\n",
" String representation of floating point not-a-number (default nan).\n",
" infstr : str, optional\n",
" String representation of floating point infinity (default inf).\n",
" formatter : dict of callables, optional\n",
" If not None, the keys should indicate the type(s) that the respective\n",
" formatting function applies to. Callables should return a string.\n",
" Types that are not specified (by their corresponding keys) are handled\n",
" by the default formatters. Individual types for which a formatter\n",
" can be set are::\n",
" \n",
" - 'bool'\n",
" - 'int'\n",
" - 'timedelta' : a `numpy.timedelta64`\n",
" - 'datetime' : a `numpy.datetime64`\n",
" - 'float'\n",
" - 'longfloat' : 128-bit floats\n",
" - 'complexfloat'\n",
" - 'longcomplexfloat' : composed of two 128-bit floats\n",
" - 'numpy_str' : types `numpy.string_` and `numpy.unicode_`\n",
" - 'str' : all other strings\n",
" \n",
" Other keys that can be used to set a group of types at once are::\n",
" \n",
" - 'all' : sets all types\n",
" - 'int_kind' : sets 'int'\n",
" - 'float_kind' : sets 'float' and 'longfloat'\n",
" - 'complex_kind' : sets 'complexfloat' and 'longcomplexfloat'\n",
" - 'str_kind' : sets 'str' and 'numpystr'\n",
" \n",
" See Also\n",
" --------\n",
" get_printoptions, set_string_function, array2string\n",
" \n",
" Notes\n",
" -----\n",
" `formatter` is always reset with a call to `set_printoptions`.\n",
" \n",
" Examples\n",
" --------\n",
" Floating point precision can be set:\n",
" \n",
" >>> np.set_printoptions(precision=4)\n",
" >>> print np.array([1.123456789])\n",
" [ 1.1235]\n",
" \n",
" Long arrays can be summarised:\n",
" \n",
" >>> np.set_printoptions(threshold=5)\n",
" >>> print np.arange(10)\n",
" [0 1 2 ..., 7 8 9]\n",
" \n",
" Small results can be suppressed:\n",
" \n",
" >>> eps = np.finfo(float).eps\n",
" >>> x = np.arange(4.)\n",
" >>> x**2 - (x + eps)**2\n",
" array([ -4.9304e-32, -4.4409e-16, 0.0000e+00, 0.0000e+00])\n",
" >>> np.set_printoptions(suppress=True)\n",
" >>> x**2 - (x + eps)**2\n",
" array([-0., -0., 0., 0.])\n",
" \n",
" A custom formatter can be used to display array elements as desired:\n",
" \n",
" >>> np.set_printoptions(formatter={'all':lambda x: 'int: '+str(-x)})\n",
" >>> x = np.arange(3)\n",
" >>> x\n",
" array([int: 0, int: -1, int: -2])\n",
" >>> np.set_printoptions() # formatter gets reset\n",
" >>> x\n",
" array([0, 1, 2])\n",
" \n",
" To put back the default options, you can use:\n",
" \n",
" >>> np.set_printoptions(edgeitems=3,infstr='inf',\n",
" ... linewidth=75, nanstr='nan', precision=8,\n",
" ... suppress=False, threshold=1000, formatter=None)\n",
"\n"
]
}
],
"prompt_number": 29
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You set precision back to 8 to get the default behavior"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.set_printoptions(precision=8)\n",
"np.sqrt(a)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 30,
"text": [
"array([ 1. , 1.41421356, 1.73205081])"
]
}
],
"prompt_number": 30
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Large or small numbers are displayed in exponential notation, with a power of 10 scale factor preceded by e:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"2 ** -24"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 31,
"text": [
"5.960464477539063e-08"
]
}
],
"prompt_number": 31
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Various data analysis functions are also available. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"b.sum()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 32,
"text": [
"14"
]
}
],
"prompt_number": 32
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"c.mean()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 33,
"text": [
"5.0"
]
}
],
"prompt_number": 33
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here you see an example of the object oriented nature of Numpy. All Numpy arrays are of type \"ndarray\" and have many methods associated with them. You can list them all by using a 'dir' command in IPython, use the following"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"dir(a)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 34,
"text": [
"['T',\n",
" '__abs__',\n",
" '__add__',\n",
" '__and__',\n",
" '__array__',\n",
" '__array_finalize__',\n",
" '__array_interface__',\n",
" '__array_prepare__',\n",
" '__array_priority__',\n",
" '__array_struct__',\n",
" '__array_wrap__',\n",
" '__bool__',\n",
" '__class__',\n",
" '__contains__',\n",
" '__copy__',\n",
" '__deepcopy__',\n",
" '__delattr__',\n",
" '__delitem__',\n",
" '__dir__',\n",
" '__divmod__',\n",
" '__doc__',\n",
" '__eq__',\n",
" '__float__',\n",
" '__floordiv__',\n",
" '__format__',\n",
" '__ge__',\n",
" '__getattribute__',\n",
" '__getitem__',\n",
" '__gt__',\n",
" '__hash__',\n",
" '__iadd__',\n",
" '__iand__',\n",
" '__ifloordiv__',\n",
" '__ilshift__',\n",
" '__imod__',\n",
" '__imul__',\n",
" '__index__',\n",
" '__init__',\n",
" '__int__',\n",
" '__invert__',\n",
" '__ior__',\n",
" '__ipow__',\n",
" '__irshift__',\n",
" '__isub__',\n",
" '__iter__',\n",
" '__itruediv__',\n",
" '__ixor__',\n",
" '__le__',\n",
" '__len__',\n",
" '__lshift__',\n",
" '__lt__',\n",
" '__mod__',\n",
" '__mul__',\n",
" '__ne__',\n",
" '__neg__',\n",
" '__new__',\n",
" '__or__',\n",
" '__pos__',\n",
" '__pow__',\n",
" '__radd__',\n",
" '__rand__',\n",
" '__rdivmod__',\n",
" '__reduce__',\n",
" '__reduce_ex__',\n",
" '__repr__',\n",
" '__rfloordiv__',\n",
" '__rlshift__',\n",
" '__rmod__',\n",
" '__rmul__',\n",
" '__ror__',\n",
" '__rpow__',\n",
" '__rrshift__',\n",
" '__rshift__',\n",
" '__rsub__',\n",
" '__rtruediv__',\n",
" '__rxor__',\n",
" '__setattr__',\n",
" '__setitem__',\n",
" '__setstate__',\n",
" '__sizeof__',\n",
" '__str__',\n",
" '__sub__',\n",
" '__subclasshook__',\n",
" '__truediv__',\n",
" '__xor__',\n",
" 'all',\n",
" 'any',\n",
" 'argmax',\n",
" 'argmin',\n",
" 'argpartition',\n",
" 'argsort',\n",
" 'astype',\n",
" 'base',\n",
" 'byteswap',\n",
" 'choose',\n",
" 'clip',\n",
" 'compress',\n",
" 'conj',\n",
" 'conjugate',\n",
" 'copy',\n",
" 'ctypes',\n",
" 'cumprod',\n",
" 'cumsum',\n",
" 'data',\n",
" 'diagonal',\n",
" 'dot',\n",
" 'dtype',\n",
" 'dump',\n",
" 'dumps',\n",
" 'fill',\n",
" 'flags',\n",
" 'flat',\n",
" 'flatten',\n",
" 'getfield',\n",
" 'imag',\n",
" 'item',\n",
" 'itemset',\n",
" 'itemsize',\n",
" 'max',\n",
" 'mean',\n",
" 'min',\n",
" 'nbytes',\n",
" 'ndim',\n",
" 'newbyteorder',\n",
" 'nonzero',\n",
" 'partition',\n",
" 'prod',\n",
" 'ptp',\n",
" 'put',\n",
" 'ravel',\n",
" 'real',\n",
" 'repeat',\n",
" 'reshape',\n",
" 'resize',\n",
" 'round',\n",
" 'searchsorted',\n",
" 'setfield',\n",
" 'setflags',\n",
" 'shape',\n",
" 'size',\n",
" 'sort',\n",
" 'squeeze',\n",
" 'std',\n",
" 'strides',\n",
" 'sum',\n",
" 'swapaxes',\n",
" 'take',\n",
" 'tofile',\n",
" 'tolist',\n",
" 'tostring',\n",
" 'trace',\n",
" 'transpose',\n",
" 'var',\n",
" 'view']"
]
}
],
"prompt_number": 34
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To find out more about any of these methods, use the help command"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"help(a.argmax)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Help on built-in function argmax:\n",
"\n",
"argmax(...) method of numpy.ndarray instance\n",
" a.argmax(axis=None, out=None)\n",
" \n",
" Return indices of the maximum values along the given axis.\n",
" \n",
" Refer to `numpy.argmax` for full documentation.\n",
" \n",
" See Also\n",
" --------\n",
" numpy.argmax : equivalent function\n",
"\n"
]
}
],
"prompt_number": 35
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.pi"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 36,
"text": [
"3.141592653589793"
]
}
],
"prompt_number": 36
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"_"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 37,
"text": [
"3.141592653589793"
]
}
],
"prompt_number": 37
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y = np.tan(np.pi/6)\n",
"y"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 38,
"text": [
"0.57735026918962573"
]
}
],
"prompt_number": 38
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Variable np.pi is a permanent Variable with value $\\pi$. The variable \"\\_\" always contains the most recent unassigned expression, as described earlier, so after the assignment to y, \"\\_\" still holds the Value $\\pi$.\n",
"\n",
"You may set up a two dimensional array by concatenating columns using the np.c_[ ] array notation"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"B = np.c_[[-3, 2, -1], [0, 5, 4], [-1, -7, 8]]\n",
"B"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 39,
"text": [
"array([[-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8]])"
]
}
],
"prompt_number": 39
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At the heart of Numpy is a powerful range of linear algebra functions. For example, recalling that c is a 3-by-1 Vector, you may wish to solve the linear system $B * x = c$. This can be done with the solve function from the numpy.linalg module"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy.linalg as nl\n",
"x = nl.solve(B, c)\n",
"x"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 40,
"text": [
"array([-1.29953917, 1.37788018, -0.10138249])"
]
}
],
"prompt_number": 40
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"nl.norm(np.dot(B,x) - c) / (nl.norm(B) * nl.norm(x))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 41,
"text": [
"7.2040771407550849e-17"
]
}
],
"prompt_number": 41
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Some times we see a 0 here, but we usually expect to see something nonzero because of rounding errors.\n",
"\n",
"The eigenvalues of B can be found using eig from the numpy.linalg module"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"np.set_printoptions(precision=5) # make it the m*lab default\n",
"w, _ = nl.eig(B)\n",
"w"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 42,
"text": [
"array([-3.13605+0.j , 6.56803+5.10454j, 6.56803-5.10454j])"
]
}
],
"prompt_number": 42
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice two things about this code snippet. First, nl.eig returns two values, w are the eigenvalues and v would be the eigenvectors. Since in this instance we did not want the eigenvectors we set it to the underscore '\\_', which is a common idiom in Python. Finally, the solution shows the j is the imaginary unit, $\\sqrt{-1}$. To get the eigenvectors you can do the calculation again"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w, v = nl.eig(B)\n",
"v"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 43,
"text": [
"array([[-0.98290+0.j , 0.03854+0.03928j, 0.03854-0.03928j],\n",
" [ 0.12656+0.j , 0.80053+0.j , 0.80053-0.j ],\n",
" [-0.13372+0.j , -0.16831-0.57254j, -0.16831+0.57254j]])"
]
}
],
"prompt_number": 43
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The columns of v are the eigenvectors of B.\n",
"\n",
"To get vectors of evenly spaced values, use the np.arange function"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"v = np.arange(6)\n",
"v"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 44,
"text": [
"array([0, 1, 2, 3, 4, 5])"
]
}
],
"prompt_number": 44
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that the default starting value is zero. Also, as noted earlier, all Numpy arrays start at index zero and end at index n - 1 for an array of size n.\n",
"\n",
"Nonunit increments can be specified by a third number, often called the 'stride'."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"w = np.arange(2, 10, 3)\n",
"w"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 45,
"text": [
"array([2, 5, 8])"
]
}
],
"prompt_number": 45
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y = np.arange(1, 0, -0.25)\n",
"y"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 46,
"text": [
"array([ 1. , 0.75, 0.5 , 0.25])"
]
}
],
"prompt_number": 46
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This last example illustrates a peculiarity of Python and numpy, that the ending value or index is actually one position short of what you might expect. In the previous example, to have the array actually increment down to zero, you have to specify an end value that is strictly *less* than 0 (but greater than -(0.25 + delta) ). Here we just use -0.001."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"y = np.arange(1, -0.001, -0.25)\n",
"y"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 47,
"text": [
"array([ 1. , 0.75, 0.5 , 0.25, 0. ])"
]
}
],
"prompt_number": 47
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You may construct big matrices out of little ones by using the numpy functions hstack and vstack and the previously mentioned c\\_[ ] and r\\_[ ] notations"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"C = np.c_[A, [8, 9, 10]]\n",
"C"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 48,
"text": [
"array([[ 4, 8, 12, 8],\n",
" [ 5, 10, 15, 9],\n",
" [ 6, 12, 18, 10]])"
]
}
],
"prompt_number": 48
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"D = np.r_[B, B, B]\n",
"D"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 49,
"text": [
"array([[-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8],\n",
" [-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8],\n",
" [-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8]])"
]
}
],
"prompt_number": 49
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"E = np.vstack((B, B, a))\n",
"E"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 50,
"text": [
"array([[-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8],\n",
" [-3, 0, -1],\n",
" [ 2, 5, -7],\n",
" [-1, 4, 8],\n",
" [ 1, 2, 3]])"
]
}
],
"prompt_number": 50
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notice well that np.vstack takes a *single* argument that is a tuple of arrays. That way you can stack as many arrays as needed with a single call to vstack or just use the r\\_[ ] notation.\n",
"\n",
"The element in row i and column j of the matrix C (where i and j always start at 0) can be accessed as c[i, j]"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"C[1, 2]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 51,
"text": [
"15"
]
}
],
"prompt_number": 51
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"More generically, C[i1:i2, j1:j2] picks out the submatrix formed by the intersection of rows i1 to i2-1 and columns j1 to j2-1. This type of operation on arrays is generally called *slicing*."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"C[1:3, 0:2]"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 52,
"text": [
"array([[ 5, 10],\n",
" [ 6, 12]])"
]
}
],
"prompt_number": 52
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can build certain types of matrices automatically. For example, identities and matrices of zeros and ones can be constructed with eye, zeros, and ones:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"I3 = np.eye(3)\n",
"I3"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 53,
"text": [
"array([[ 1., 0., 0.],\n",
" [ 0., 1., 0.],\n",
" [ 0., 0., 1.]])"
]
}
],
"prompt_number": 53
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Y = np.zeros((3,5))\n",
"Y"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 54,
"text": [
"array([[ 0., 0., 0., 0., 0.],\n",
" [ 0., 0., 0., 0., 0.],\n",
" [ 0., 0., 0., 0., 0.]])"
]
}
],
"prompt_number": 54
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"Z = np.ones((2,2))\n",
"Z"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 55,
"text": [
"array([[ 1., 1.],\n",
" [ 1., 1.]])"
]
}
],
"prompt_number": 55
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note that these functions take a single argument which is a tuple (except for np.eye, which has a different interface). The first argument of the tuple speci\ufb01es the size of the first dimension of the array and so on. \n",
"\n",
"The methods rand and randm on an object returned from numpy.random.RandomState() do not take tuples. They are convenience functions that have a similar interface to another math envirionment. These two methods generate random entries from the uniform distribution over [0,1] and the normal (0,1) (ie zero mean with unit variance) distribution, respectively.\n",
"\n",
"Note that it is always good for you to intialize a new instance of RandomState when using random numbers. This ensures that the random stream is for you alone, and you can reset the seed to make the sequence repeatable. Here we set the starting seed to 20."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"rn = np.random.RandomState() # initialize a new RandomState object\n",
"rn.seed(20)\n",
"F = rn.rand(3, 3)\n",
"F"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 56,
"text": [
"array([[ 0.58813, 0.89771, 0.89153],\n",
" [ 0.81584, 0.03589, 0.69176],\n",
" [ 0.37868, 0.51851, 0.65795]])"
]
}
],
"prompt_number": 56
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"G = rn.randn(1, 5)\n",
"G"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 57,
"text": [
"array([[-0.62064, -0.83453, 0.91636, 0.70784, 0.41968]])"
]
}
],
"prompt_number": 57
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"At this point several variables have been created in the workspace. You can obtain a list with the %who command, where the % indicates an IPython 'magic' command."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%who"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"A\t B\t C\t D\t E\t F\t G\t I3\t Y\t \n",
"Z\t a\t am\t b\t c\t cm\t count\t g\t init_n\t \n",
"n\t narray\t nl\t np\t rn\t v\t w\t x\t y\t \n",
"\n"
]
}
],
"prompt_number": 58
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The %whos magic will additionally give the types and some additional information"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%whos"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"Variable Type Data/Info\n",
"-----------------------------------\n",
"A ndarray 3x3: 9 elems, type `int32`, 36 bytes\n",
"B ndarray 3x3: 9 elems, type `int32`, 36 bytes\n",
"C ndarray 3x4: 12 elems, type `int32`, 48 bytes\n",
"D ndarray 9x3: 27 elems, type `int32`, 108 bytes\n",
"E ndarray 7x3: 21 elems, type `int32`, 84 bytes\n",
"F ndarray 3x3: 9 elems, type `float64`, 72 bytes\n",
"G ndarray 1x5: 5 elems, type `float64`, 40 bytes\n",
"I3 ndarray 3x3: 9 elems, type `float64`, 72 bytes\n",
"Y ndarray 3x5: 15 elems, type `float64`, 120 bytes\n",
"Z ndarray 2x2: 4 elems, type `float64`, 32 bytes\n",
"a ndarray 3: 3 elems, type `int32`, 12 bytes\n",
"am matrix [[1 2 3]]\n",
"b ndarray 3: 3 elems, type `int32`, 12 bytes\n",
"c ndarray 3: 3 elems, type `int32`, 12 bytes\n",
"cm matrix [[4 5 6]]\n",
"count int 111\n",
"g ndarray 3x3x3: 27 elems, type `float64`, 216 bytes\n",
"init_n int 27\n",
"n float 1.0\n",
"narray ndarray 1000: 1000 elems, type `float64`, 8000 bytes\n",
"nl module <module 'numpy.linalg' fr<...>py\\\\linalg\\\\__init__.py'>\n",
"np module <module 'numpy' from 'C:\\<...>ges\\\\numpy\\\\__init__.py'>\n",
"rn RandomState <mtrand.RandomState object at 0x00000000070546C0>\n",
"v ndarray 6: 6 elems, type `int32`, 24 bytes\n",
"w ndarray 3: 3 elems, type `int32`, 12 bytes\n",
"x ndarray 3: 3 elems, type `float64`, 24 bytes\n",
"y ndarray 5: 5 elems, type `float64`, 40 bytes\n"
]
}
],
"prompt_number": 59
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Like most languages Python has loop contructs. The following example uses a for loop to evaluate the continued fraction $\\cfrac{1}{1+\\cfrac{1}{1+\\cfrac{1}{1+\\cfrac{1}{1+\\cfrac{1}{1+\\cfrac{1}{1 + \\cfrac{1}{1 + \\cfrac{1}{1 + \\cfrac{1}{1 + \\cfrac{1}{1}}}}}}}}}}$\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"which approximates the golden ratio, (1 + $\\sqrt{5}$)/2. The evaluation is done from the bottom up:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"g = 2.\n",
"for k in range(10):\n",
" g = 1 + 1 / g\n",
"g"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 60,
"text": [
"1.6180555555555556"
]
}
],
"prompt_number": 60
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Many constants can be found in the scipy submodule constants. You can access them in the following way"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import scipy.constants as sconst\n",
"sconst.golden"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 61,
"text": [
"1.618033988749895"
]
}
],
"prompt_number": 61
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Loops involving the while statement can be found later in this tutorial.\n",
"\n",
"The plot function from the matplotlib module pylab produce two dimensional pictures. You can assess these ploting and graphics functions by importing this module. It is a common practice to rename it to plt, as in the following example."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#import mpld3\n",
"#mpld3.enable_notebook()\n",
"import matplotlib.pylab as plt\n",
"t = np.arange(0, 1.005, 0.005)\n",
"z = np.exp(10 * t * (t - 1)) * np.sin(12 * np.pi * t)\n",
"plt.plot(t, z)\n",
"plt.title(\"Figure 1.2. Basic 2D picture produced by plt.plot\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 62,
"text": [
"<matplotlib.text.Text at 0x737d860>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nBdf/AyZYSF8FgWZEAAAAAElFTkSuQmCC\n",
"text": [
"<matplotlib.figure.Figure at 0x710ba90>"
]
}
],
"prompt_number": 62
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, plt.plot(t, z) joins the points t[i], z[i] using the default solid linetype. Matplotlib opens a figure window in which the picture is displayed. In this IPython notebook, the matplotlib figures are included 'in line' since the notebook was invoked with the \"ipython notebook --pylab=inline\" (the --pylab=inline option will be deprecated in the 3.0 notebook in favor of the **%matplotlib inline** cell magic) command. When you are using IPython as a command line interpreter, after opening a plot figure window, you can close it in the normal way, ie by clicking on the x in the window title bar.\n",
"\n",
"You can produce a histogram with the function plt.hist"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"plt.hist(np.random.randn(1000))\n",
"plt.title(\"Figure 1.3. Histogram produced by plt.hist.\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 63,
"text": [
"<matplotlib.text.Text at 0x74034a8>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x7371860>"
]
}
],
"prompt_number": 63
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, hist is given 1000 points from the normal (0, 1) random number generator\n",
"\n",
"You are now ready for more challenging computations. A random Fibonacci sequency {$x_{n}$} is generated by choosing $x_{1}$ and $x_{2}$ and setting\n",
"\n",
"$$ x_{n + 1} = x_{n} \\pm x_{n -1}, \\; n \\ge 2 $$\n",
"\n",
"Here, the $\\pm$ indicates that + and - must have equal probability of being chosen. Viswanath [121] listed in [1] analyzed this recurrence and showed that, with probability 1, for large n the quantity $|x_{n}|$ increases like a multiple of $c^{n}$, where c = 1.13198824... (see also [25]). You can test Viswanath's result as follows:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%reset -f\n",
"import numpy as np\n",
"import pylab as plt\n",
"rd = np.random.RandomState()\n",
"rd.seed(100)\n",
"x = np.zeros(1000)\n",
"x[0:2] = 1, 2\n",
"for n in range(1, 999):\n",
" x[n + 1] = x[n] + np.sign(rd.rand(1) - 0.5) * x[n - 1]\n",
" \n",
"xx = np.arange(1, 1001)\n",
"plt.semilogy(xx, np.abs(x))\n",
"c = 1.13198824\n",
"plt.hold(True)\n",
"plt.semilogy(xx, c ** xx)\n",
"plt.title(\"Figure 1.4. Growth of a random Fibonacci sequence\")\n",
"plt.hold(False)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nMtUic38AAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x7102ac8>"
]
}
],
"prompt_number": 64
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here, %reset -f removed all variables and imported modules from the workspace, which is why we needed to import numpy and pylab again. The for loop stores a random Fibonacci sequence in the array x; we preallocate x to the size needed and initial to zero using the np.zeros() function. The plt.semilogy function then plots n on the x-axis against $|X|$ on the y-axis, with logarithmic scaling for the y-axis. Typing np.hold(True) tells matplotlib to superimpose the next picture on top of the current one. The second semilogy plot produces a line of slope c. The overall picture, shown in Figure 1.4, is consistent with Viswanath\u2019s theory.\n",
"\n",
"We can make the above code into a command by writing it out to a file. If you cut and paste it into a file called fib.py, you can then run it in IPython by typing \"run fib\" or \"run fib.py\" to reproduce the above graph.\n",
"\n",
"However, you can experiment directly in this IPython notebook by changing any of the values and then hitting the 'play' button above.\n",
"\n",
"Our next example involved the Collatz iteration, which, given a positive integer $x_{1}$, has the form $x_{k + 1} = f(x_{k})$, where\n",
"\n",
"$$f(x) = \\left\\{\n",
" \\begin{array}{lr}\n",
" 3x + 1 & : x \\: \\% \\: 2 == 0\\\\\n",
" x/2 & : x \\: \\% \\: 2 == 1\n",
" \\end{array}\n",
"\\right.\n",
"$$\n",
"\n",
"Here $x \\: \\% \\: y$ is the modulus function of x and y, sometimes also written as mod(x, y). It is the remainder of x when divided by y. In this case $x \\: \\% \\: 2 == 0$, if true, means that x is even and if $x \\: \\% \\: 2 == 1$ is true, then x is odd. Note that these are perfectly good Python functions"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x = 3\n",
"if x % 2 == 0:\n",
" print ('x is even')\n",
"else:\n",
" print ('x is odd')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"x is odd\n"
]
}
],
"prompt_number": 65
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"But now returning to our quest, the equation above in words means:\n",
"if $x$ is odd, replace it by $3x + 1$, and if $x$ is even, halve it. It has been conjectured that this iteration will always lead to a value of 1 (and hence thereafter cycle between 4, 2, and 1) whatever starting value $x_{1}$ is chosen. There is ample computational evidence to support this conjecture, which is variously known as the Collatz problem, the $3x + 1$ problem, the Syracuse problem, Kakutani\u2019s problem, Hasse\u2019s algorithm, and Ulam\u2019s problem. However, a rigorous proof has so far eluded mathematicians. For further details, see [63] listed in [1] or type \u201cCollatz problem\u201d into your favorite Web search engine. You can investigate the conjecture by creating the python script \ufb01le collatz.py shown below. In this file a while loop and an if statement are used to implement the iteration. You can run this in the notebook simply by changing the value of n and hitting the play button. Or, you can save this to a file named collatz.py (remembering to uncommment out the line '#n = int(raw_input...\" and commenting out the line \"n = 27\". Then, from the IPython shell prompt, type \"run collatz\". The input command prompts you for a starting value. The appropriate response is to type an integer and then hit return."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#COLLATZ Collatz iteration. \n",
"\n",
"#n = int(raw_input(\u2019Enter an integer bigger than 2: \u2019))\n",
"init_n = n = 27\n",
"narray = np.zeros(1000) # only a maximum of 1000 iterations\n",
"narray[0] = n\n",
"count = 0\n",
"while n != 1:\n",
" if n % 2 == 1: # Remainder modulo 2. \n",
" n = 3 * n + 1\n",
" else:\n",
" n = n / 2\n",
" count += 1\n",
" narray[count] = n # Store the current iterate\n",
"\n",
"# Plot with * marker and solid line style.\n",
"# Only plot the non zero entries in narray\n",
"plt.plot(narray[narray != 0], '*-')\n",
"plt.title('Figure 1.5. Collatz iteration starting at %d' % init_n)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 66,
"text": [
"<matplotlib.text.Text at 0x7375080>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x758abe0>"
]
}
],
"prompt_number": 66
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"A couple of things you should note about the code above. This first is that it will fail if the number of iterations goes beyond 1000. For most of the inputs I have tried, it 'converged' in under 200 iterations. But you should try to break it! The second thing to note is that we only want to plot the non zero values. All the zero values at the end of the array add no new information and we want to drop them. That is easily accomplished by using the narray[narray != 0] syntax which selects only the non-zero values out of narray.\n",
"\n",
"To investigate the Collatz problem further, the script collbar in the next listing plots a bar graph of the number of iterations required to reach the value 1, for starting Values 1,2,. . . ,29. The result is shown in Figure 1.6. For this picture, the function plt.grid adds grid lines that extend from the axis tick marks, while plt.title, plt.xlabel, and plt.ylabel add further information. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#COLLBAR Collatz iteration bar graph.\n",
"N = 29 # Use starting values 1,2,...,N.\n",
"niter = np.zeros(N); # Preallocate array.\n",
"for i in range(N):\n",
" count = 0\n",
" n = i + 1\n",
" while n != 1:\n",
" if n % 2 == 1:\n",
" n = 3 * n + 1\n",
" else:\n",
" n = n / 2\n",
"\n",
" count += 1\n",
" niter[i] = count\n",
"\n",
"left = np.arange(29)\n",
"plt.bar(left, niter) # Bar graph.\n",
"plt.grid() # Add horizontal and vertical grid lines.\n",
"plt.title('Figure 1.6. Col1atz iteration counts')\n",
"plt.xlabel('Starting value') # Label X-axis.\n",
"plt.ylabel('Number of iterations') #Label y-axis."
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 67,
"text": [
"<matplotlib.text.Text at 0x73951d0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\niEg5/X9CP/mzwvnhSgAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x74090f0>"
]
}
],
"prompt_number": 67
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Well-known and much studied Mandelbrot set can be approximated graphically in just a few lines of Python/Numpy. It is de\ufb01ned as the set of points c in the complex plane for which the sequence generated by the map $z \\mapsto z^{2} + c$, starting with $z = c$, remains bounded [91, Chap. 14] listed in [1]. The script mandel in the next listing produces the plot of the Mandelbrot set shown in Figure 1.7. The script contains calls to np.linspace of the form np.linspace (a, b ,n), which generate an equally spaced vector of n values between a and b. The meshgrid and complex functions are used to construct a matrix C that represents the rectangular region of interest in the complex plane. The plot itself is produced by plt.contourf, which plots a \ufb01lled contour. The expression $abs(Z)<Z\\_max$ in the call to contourf detects points that have not exceeded the threshold Z_max and that are therefore assumed to lie in the Mandelbrot set; the double function is applied in order to convert the resulting logical array to numeric form. You can experiment with mandel by changing the region that is plotted, via the linspace calls, the number of iterations it_max, and the threshold Z_max. Also note that on some runs we may see a RuntimeWarning printed becase we have an overflow on z. This can be silenced with a context manager but we will wait to introduce detailed control of errors and warnings."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#MANDEL Mandelbrot set.\n",
"\n",
"x = np.linspace(-2.1, 0.6, 301)\n",
"y = np.linspace(-1.1, 1.1, 301)\n",
"[X,Y] = np.meshgrid(x, y)\n",
"C = X + 1j * Y\n",
"\n",
"Z_max = 1e6\n",
"it_max = 50\n",
"Z = C\n",
"\n",
"for k in range(it_max):\n",
" Z = Z ** 2 + C\n",
"\n",
"plt.contourf(x, y, np.float64(np.abs(Z) < Z_max))\n",
"plt.title(\"Figure 1.7 Mandelbrot Set\")"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stderr",
"text": [
"-c:13: RuntimeWarning: overflow encountered in square\n",
"-c:13: RuntimeWarning: invalid value encountered in square\n",
"-c:15: RuntimeWarning: invalid value encountered in less\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 68,
"text": [
"<matplotlib.text.Text at 0x7553fd0>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAAAASUVORK5CYII=\n",
"text": [
"<matplotlib.figure.Figure at 0x705beb8>"
]
}
],
"prompt_number": 68
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we solve the ordinary differential equation (ODE) system\n",
"\n",
"$$ d/dt \\; y_{1}(t) = 10 (y_{2}(t) - y_{1}(t)),$$\n",
"$$ $$\n",
"$$ d/dt \\; y_{2}(t) = 28 y_{1}(t) - y_{2}(t) - y_{1}(t) y_{3}(t),$$\n",
"$$ $$\n",
"$$ d/dt \\; y_{3}(t) = y_{1}(t) y_{2}(t) - 8 y_{3}(t) / 3. $$\n",
"\n",
"This is an example from the Lorenz equations family; see [H1] listed in [1]. We take initial conditions y(0) = [0, 1, 0] and solve over $0 \\le t \\le 50$. The next listing, titled Lorentz, is an example of a Python function. Given t and y, this function returns the right-hand side of the ODE as the vector **yprime**. This is the form required by Scipy\u2019s ODE solving functions. The rest of the listing uses the scipy function odeint to solve the ODE numerically and then produces the (y1, y3) phase plane plot shown in Figure 1.8. You can try different values of the constants defining the derivatives to see what happens. For instance, change the 3 to an 8 in lorenzde and observe how the plot changes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import scipy.integrate as si\n",
"\n",
"def lorenzde(y, t):\n",
" '''LORENZDE Lorenz equations.\n",
" YPRIME = LORENZDE(Y,T)\n",
" '''\n",
" yprime = np.array([10. * (y[1] - y[0]), 28. * y[0] - y[1] - y[0] * y[2], \n",
" y[0] * y[1] - 8. * y[2] / 3.])\n",
" return yprime\n",
"\n",
"#lrun ODE solving example: Lortez.\n",
"\n",
"t = np.arange(0, 50.01, .01) # time points on which to solve\n",
"yzero = np.array([0., 1., 0.])\n",
"print (len(yzero))\n",
"y = si.odeint(lorenzde, yzero, t)\n",
"\n",
"plt.plot(y[:, 0], y[:, 2])\n",
"plt.xlabel('y_0')\n",
"plt.ylabel('y_2')\n",
"plt.title('Figure 1.8 Lorenz equations')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "stream",
"stream": "stdout",
"text": [
"3\n"
]
},
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 69,
"text": [
"<matplotlib.text.Text at 0x762fba8>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n00/zfziMgPjtN0rhvnDsGCfJ4sXe99+6RSfPSy9Zt330kZVIBwYqFRmpVLt2ZAzPPssIhx49lMqS\nxTtzeOQRpTZtorZQrx61jUcf9Zysa9ZYv/fVV573OGMGF1OPHmnvVHPgID2wfj0JYoMGdKimBVwu\nBlWY6+WppxK2CNxpuN0UAiMjlWrZMu3PP3iwUtOm8X84jID45BMSZ18YOZKT5cYNz30uF4l1ly46\nWicqyjrJFixQKjY2afcSG6vUrl1KvfIKibZ5nubNGWI6ZYpSlSpRkpk1yxoqt3Wr9TvLllnPf/Wq\nDrMbNUqpy5eTdl8OHNxJ7NlDDbZoUaVWrEibSDiXi+cy18cbb9AUk1K43dS6b96kCef8+eSFjyaE\n7dtphfDzS/tIwJYtlfrsM/6PDMwIMgHYAWBN/Gc/AOsB7AOwDkBeH99L0UP58kulmjXzvV+keW94\n+WVqA7du8fPFi3qS/fBD2rzAXbuUatLEOoGbNaMPoEMHTpShQ60SzZEjNCnJ8evWWc954oRSffsq\nlT8/NYX0DlVz4CApuHBBqWeeUSoggHk6t2+n/pxuN02u5vqZMSN5Pga3m1r0smVca3XqKJUjB8+V\nKZNS2bIplSuXUvnyKXX//aQJr73GtZtSGhAXx2vkzavUvn0pO4cvlCql1M6d/B8ZmBEMBbAEgOTc\nTgYwMv7/UQAm+vheih7Kr78qVbWq933XrvFlL13que/KFb78M2f0Z5loZ8+m6FYSxf79ZALmpH7i\nCZqZ/P2Z5/Ddd3ryHTpkPdbuNP7zT2oaxYo5OQgO7h5iYkicAwOZsJUW68ftZtKlOf9nz9ZCW2I4\nfpzmk3btlCpQgEQ+KIj3WLUqTax9+tAi0KYN1+XIkTTTrlrFRLGwMGo106albG1VrapUeLhS77+f\n/O/6gstFxiWaEDJoHkFBAO8BeBVkCG0A7AHQAEAUgGAA3wEo5eW78b8reTh0iF3IDh/23BcVBQQH\nM1StenXrvk8+Ad59V/cP8PNjfO6OHYwzTgjXrgHLlwNHjuiaRDKyZmVugYxChbynyf/9N8Ndjx7l\n5+rVgYceYq5D1qzMiejWjeUndu3iuQR//skQVcH69YyZvv9+ttasXTtJj86Bg1RBKfb/GD6c83zq\n1NSHaSoFfP4514Jg/nygd2+GcCeEc+eATz8FPv6Y3QQDAljKxeVigbbixbk2ChUCcuSwjsyZWXNo\n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\ngg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7359c18>"
]
}
],
"prompt_number": 69
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we give an example of a recursive function, that is, a function that calls itself. The Sierpinski gasket [90, Sec. 2.2] listed in [1] is based on the following process. Given a triangle with vertices $P_{a}$, $P_{b}$, and $P_{c}$, We remove the triangle with vertices at the midpoints of the edges, $(P_{a} + P_{b})/2$, $(P_{b} + P_{c}) / 2$, and $(P_{c} + P_{a}) / 2$. This removes the \u201cmiddle quarter\u201d of the triangle, as illustrated in Figure 1.9. (The code in the function 'gasket' will be explained below)"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def gasket(pa, pb, pc, level):\n",
" '''\n",
" GASKET Recursively generated Sierpinski gasket. \n",
" GASKET(PA, PB, PC, LEVEL) generates an approximation to \n",
" the Sierpinski gasket, where the 2-vectors PA, PB, and PC Z define the triangle vertices. \n",
" LEVEL is the level of recursion.\n",
" '''\n",
" if level == 0:\n",
" # Fill the triangle with vertices Pa, Pb, Pc. \n",
" plt.fill([pa[0], pb[0], pc[0]], [pa[1], pb[1], pc[1]], 'g') \n",
" plt.hold(True)\n",
" else:\n",
" # Recursive calls for the three subtriangles. \n",
" gasket(pa, (pa + pb) / 2., (pa + pc) / 2., level - 1) \n",
" gasket(pb, (pb + pa) / 2., (pb + pc) / 2., level - 1) \n",
" gasket(pc, (pc + pa) / 2., (pc + pb) / 2., level - 1)\n",
" \n",
"pa = np.array([0, 0])\n",
"pb = np.array([1, 0])\n",
"pc = np.array([0.5, np.sqrt(3)/2.])\n",
"level = 1\n",
"gasket(pa, pb, pc, level)\n",
"plt.hold(False)\n",
"plt.title(\"Figure 1.9 Gasket level = 1\")\n",
"plt.axis('equal')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 70,
"text": [
"(0.0, 1.0, 0.0, 0.90000000000000002)"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\n",
"text": [
"<matplotlib.figure.Figure at 0x76290f0>"
]
}
],
"prompt_number": 70
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Effectively, we have replaced the original triangle with three \u201csubtriangles\u201d. We can now apply the middle quarter removal process to each of these subtriangles to generate nine subsubtriangles, and so on. The Sierpinski gasket is the set of all points that are never removed by repeated application of this process. The function gasket in the listing above implements the removal process. The input arguments $P\\_{a}$, $P\\_{b}$, and $P\\_{c}$ de\ufb01ne the vertices of the triangle and level speci\ufb01es how many times the process is to be applied. If level is nonzero then gasket calls itself three times with level reduced by 1, once for each of the three subtriangles. When level \ufb01nally reaches zero, the recursion 'bottoms-out' and the appropriate triangle is drawn. The following code generates Figure 1.10."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"level = 5\n",
"gasket(pa, pb, pc, level)\n",
"plt.hold(False)\n",
"plt.title(\"Figure 1.10 Gasket level = 5\")\n",
"plt.axis('equal')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 71,
"text": [
"(0.0, 1.0, 0.0, 0.90000000000000002)"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\ngiAIgpAq/gMTc7lglEYXUwAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x758a160>"
]
}
],
"prompt_number": 71
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"(Figure 1.9 was generated in the same way with level = 1.) In the last line, the call to axis makes the units of the $x-$ and $y\u2014$axes equal and turns off the axes and their labels. You should experiment with different initial Vertices $P_{a}$, $P_{b}$, and $P_{c}$, and diiferent levels of recursion, but keep in mind that setting level bigger than 8 may overstretch either your patience or your computer\u2019s resources."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Sierpinski gasket can also be generated by playing Barnsley\u2019s \u201cchaos game\u201d [90, Sec. 1.3] listed in [1]. We choose one of the vertices of a triangle as a starting point. Then we pick one of the three vertices at random, take the midpoint of the line joining this vertex with the starting point and plot this new point. Then we take the midpoint of the line joining this point and a randomly chosen vertex as the next point, which is plotted, and the process continues. The script barnsley in Listing 1.8 implements the game. Figure 1.11 shows the result of choosing 1000 iterations: "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"#BARNSLEY Barnsley\u2019s game to compute Sierpinski gasket. \n",
"\n",
"rd = np.random.RandomState() # Initialize a new RandomState object\n",
"rd.seed(1) # and (re)set the seed\n",
"\n",
"V = np.c_[[0, 0], [1, 0], [0.5, np.sqrt(3)/2]] # Columns give triangle vertices. \n",
"point = V[:, 0] # Start at a Vertex. \n",
"\n",
"n = 1000 # Change this number to experiment\n",
"\n",
"for k in range(n):\n",
" node = int(np.ceil(3 * np.random.rand()) - 1) # node is 0, 1, or 2 with equal prob. \n",
" point = (V[:, node] + point)/2; \n",
" plt.plot(point[0], point[1], \".\", markersize=15) \n",
" plt.hold(True)\n",
"\n",
"plt.axis('equal') \n",
"plt.hold(False)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x91317b8>"
]
}
],
"prompt_number": 72
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Try experimenting with the number of points, $n$, the type and size of marker in the plot command, and the location of the starting point.\n",
"\n",
"We \ufb01nish with the listing of sweep, which generates a volume\u2014swept three\u2014dimensional (3D) object; see Figure 1.12. Here, the command surf (X,Y,Z) creates a 3D surface where the height Z[i, j] is speci\ufb01ed at the point (X[i, j] ,Y[i, j]) in the x-y plane. The script is not written in the most obvious fashion, which would use two nested for loops. Instead it is vectorized. To understand how it works you will need to be familiar with Chapter 5 and 21.4 of reference [1]. You can experiment with the script by changing the parameter N and the function that determines the variable radius: try replacing sqrt by other functions, such as log, sin, or abs."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"# SWEEP Generates a volume-swept 3D object.\n",
"import numpy as np\n",
"import matplotlib.pylab as pld\n",
"from mpl_toolkits.mplot3d import Axes3D\n",
"from matplotlib import cm\n",
"from matplotlib.ticker import LinearLocator, FormatStrFormatter\n",
"\n",
"fig = plt.figure()\n",
"ax = fig.gca(projection='3d')\n",
"\n",
"n = 10 # Number of increments - try increasing\n",
"\n",
"zz = np.linspace(-5, 5, n).reshape(n, 1)\n",
"radius = np.sqrt(1 + zz ** 2) # Try changing sqrt to cos, sin, log or abs\n",
"theta = 2 * np.pi * np.linspace(0, 1, n)\n",
"x = radius * np.cos(theta)\n",
"y = radius * np.sin(theta)\n",
"z = zz[:, n * [0]] # Tony's trick! Who is Tony? No idea.\n",
"\n",
"surf = ax.plot_surface(x, y, z, rstride=1, cstride=1, cmap=cm.coolwarm,\n",
" linewidth=.2, antialiased=True)\n",
"\n",
"fig.colorbar(surf, shrink=0.5, aspect=5)\n",
"\n",
"plt.title('Figure 1.12 3D picture produced by sweep')"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 73,
"text": [
"<matplotlib.text.Text at 0x9f6b320>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAVIAAADtCAYAAADtPv37AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsnXmYFNW9/j/V+z4bM8zGPiDDvi8CAReMCKJR3NfEJSZX\nr8ar1981GjExerOoiZrcXI2Ay40mRg0G3DUquAGCiMg27DPDMDB770ud3x9DlT093T3dPd3DDPT7\nPP1AT1Wdc6q66q3v+S7vgSyyyCKLLLLIIossssgiiyyyyCKLLLLIIossssgiiyyyyCKLLLLIIoss\nssgiiz4JKd5GIYToqYFkkUUWfRuSJMXlkxMZmuM9gCyyyCKLvo4skWaRRRZZdBNpJVK73c6+ffvS\n2WQWSeJHP/oRDzzwwPEeRo9j6dKlXHXVVT3a54oVK5gzZ07Ubfv27UOj0SDLco+OKYvjg5SIdPDg\nwVgsFux2O3a7HYfDQV1dHW1tbQwePDjNQ0wedXV1LF68mLKyMjQaDQcOHIi7/7333svYsWPR6/Xc\nf//9HbatXr2a2bNnk5eXR0lJCTfccANOpzPhsZx22mkUFRXhcDiorKzkqaeeUretWLECrVarXseh\nQ4fygx/8gF27diV3wmH4n//5H+65554u95s3bx5PP/10yv30NpzE7rksegFSIlJJkli1ahVtbW20\ntbXR2tpKcXFxusemIhQKJbW/RqPhnHPO4eWXX05o/+HDh/Ob3/yGhQsXdnogW1tb+dnPfsahQ4fY\ntm0bNTU13HnnnQmP5bHHHqOmpobW1laeeeYZbrnlFnbs2KFunzVrlnoN3333XcxmM5MnT2br1q0J\n95EKuks8yf4myUAIQTbOmUVfQlqn9hqNhj179gDQ0NDAueeeS05ODtOmTeOee+5Rp0HRpj3hFtKK\nFSuYNWsWt99+O/369eP+++/H7/dzxx13MGjQIIqLi/nRj36E1+uNOo6ioiJuuukmpkyZktC4r776\nas4++2zsdnunB/iyyy7jrLPOwmQykZubyw033MDHH3+c8DVRLF0FNpsNh8Ohflf6kySJoUOH8oc/\n/IG5c+eydOnSqO198MEHlJeX89BDD1FYWMiQIUP4y1/+om6/9tpruffee9XvK1euZMKECeTk5FBR\nUcFbb73FT3/6U9asWcPNN9+M3W7n3//93zP+myjH33LLLeTm5lJZWcn777/foa977rmHWbNmYbVa\n2bt3L5988glTp04lNzeXadOm8emnn6r77927l7lz5+JwODjrrLM4evRoh2s0YMCADv0PHjyY9957\nD2h/CTz44INUVFTgcDiYMmUK1dXVAGzfvp358+dTUFDAyJEjeemll9Q2GhoaWLx4MTk5OUyfPp3d\nu3dHPddwPP3005SVlVFaWsrDDz8MtM+YrFYrjY2N6n4bN26kqKgo6gtq3bp1TJkyhZycHIqLi7nj\njjsAuOaaa3jkkUcAqKmpQaPR8Mc//hGA3bt3U1BQoLaxatUqJkyYQF5eHrNmzWLLli3qttraWi68\n8EKKiooYOnQojz/+uLpt6dKlLFmyhEsvvRSHw8HkyZP56quvujzvkw0pE2lXFsO//du/YbfbOXz4\nMM888wzPPvtsXCtIkqQO29etW8ewYcOor6/n7rvv5q677qKqqorNmzdTVVVFTU0NP//5z1Mdfsr4\n8MMPGTNmTFLHLFq0CLPZzLx581i2bBklJSVx97/gggtYs2ZNzO2HDx+moaGB2tpannnmGW688UbV\nHRB+HdetW8c111zDww8/TEtLCx999BGDBw/ml7/8JXPmzOEPf/gDbW1tPPbYY1H7Sfdvsm7dOioq\nKmhoaOD+++/nggsuoLm5Wd3+/PPP8+c//xmn04nVamXhwoXcdtttNDY2cvvtt7Nw4UKampoAuPzy\ny5k6dSoNDQ3ce++9PPPMMwnfX4888ggvvvgib7zxBq2trSxfvhyLxYLL5WL+/PlceeWVHDlyhBdf\nfJEf//jHbNu2DWi/py0WC3V1dSxbtozly5d3adl/8MEHVFVV8fbbb/OrX/2K9957j+LiYubNm8ff\n/vY3db/nnnuOyy67DK1W26mNW2+9lZ/85Ce0tLSwZ88eLr74YqD95fPBBx8A7ffl0KFD+eijj9Tv\n3/nOdwDYtGkT1113HU899RSNjY388Ic/ZPHixQQCAWRZ5txzz2XixInU1tby3nvv8bvf/Y63335b\n7f+1117j4osvpqmpicsvv5zzzz+fYDAY97yzCIOIgUGDBgmbzSZyc3NFbm6u+N73vieEEEKSJLF7\n924RDAaFXq8XO3fuVI+55557xOzZs4UQQuzdu1dIkiRCoZC6fd68eeLpp58WQgixfPlyMXDgQHWb\nLMvCarWK3bt3q3/75JNPxJAhQ2INUQghRCAQEJIkif3798fdT8GVV14pli5dGnP722+/LfLy8sSu\nXbsSai8cwWBQvPTSSyIvL08dz/Lly9VrEo433nhD6PX6qO3861//EjqdTrjdbvVvF198sfjFL34h\nhBDi2muvFffee68QQogbb7xR3H777VHbmTdvnvjzn/+sfs/0b7J8+XJRWlra4W/Tpk0Tzz33nNrX\nfffdp2579tlnxfTp0zvsP3PmTLFixQqxf//+Ttfg8ssvF1dddZV6jcrLyzscO3jwYPHee+8JIYQY\nMWKEeO211zqN8cUXXxRz5szp8Lcbb7xR3H///eo9vWPHDnXb3XffHfX3E+Lb6xm+/3/+53+K6667\nTu1r1qxZQoj2e6O4uFisX78+alvf+c53xH333SeOHDnS4e9VVVUiLy9PyLIsbrrpJvG///u/6nlf\nffXV4tFHHxVCCHHTTTep94SCU045RXz44Yfis88+6/C7CiHEgw8+KL7//e8LIYS47777xMyZM9Vt\nsiyLkpISsWbNmk7jPN58dTyRso905cqVNDU10dTUxCuvvNJh+5EjRwgGgx2mV+Xl5Un1EX7skSNH\ncLvdTJ48mby8PPLy8liwYEGH6Vym8dlnn3HFFVfw8ssvU1FRkfTxWq2WJUuWMH36dF599dW4+9bU\n1JCfnx9ze15eHmazWf0+aNAgDh061Gm/6upqhg0bFrOdZP2k3f1NysrKOnyPHHd4+7W1tQwcOLDT\n/jU1NRw6dCjqNUj0WY51Xfbv38/nn3+unk9eXh5/+ctfOHz4MEePHu10T0eOLxoi96+trQXgvPPO\n45tvvmHfvn2888475OTkxHRFPf300+zcuZPKykqmTZvG6tWrARg2bBhWq5Uvv/ySNWvWsGjRIkpL\nS9m5cycfffQRc+fOVc/r4Ycf7nBe1dXVHDp0iP3791NbW9th20MPPUR9fb3af/izK0kS5eXlUe+3\nkxm6TDRaWFiITqfj4MGDDB8+HICDBw+q261WKwButxubzQa0+43CEf6Q9+vXD7PZzDfffNPltLi7\niEYumzZt4rzzzmPFihWcdtpp3Wo/EAio5x8Lr776qjoti4ampibcbjcWiwVof1DGjRvXab8BAwZQ\nVVUVtY3I8+yJ36SmpqbD9/3793PeeedFbb+srKzTC3r//v0sWLCAkpKSqNdAmRZbrVbcbrd6XCgU\n4siRI+p35bqMGjWqQ/sDBw5k7ty5Haa14W3odDoOHDjAKaecAtBlNoiyT/j+ysvEZDJx0UUX8fzz\nz7N9+3auvvrqmG1UVFSofvCXX36ZJUuW0NjYiNlsZu7cubz00ksEAgFKS0uZO3cuK1asoKmpiQkT\nJqjn9dOf/pS77767U9ufffYZQ4YMYefOnTH7D392ZVmmurqa0tLSLs/9ZEJGEvK1Wi0XXHABS5cu\nxePxsH37dp577jn1QSksLKSsrIznnnuOUCjEsmXL4jruNRoNN9xwA7fddpv6QNTU1ES94RV4vV41\n8BH+/2gIBoN4vV5CoRCBQACv16sGXb7++mvOPvtsnnjiCc4555ykrsOOHTt444038Hg8BAIBnn/+\neTZs2MBZZ53Vad9QKMTevXu55ZZb+Oijj7jvvvvitn3fffcRCARYs2YNq1ev5qKLLgI6Rryvu+46\nli9fzvvvv48sy9TU1KgZA/379+9wzXviN6mvr+exxx4jEAjw0ksvsX379g7XNNyiPOecc9i5cycv\nvPACwWCQv/71r2zfvp1FixYxcOBApkyZol6DtWvXsmrVKvXYESNG4PV6ef311wkEAjzwwAP4fD51\n+/XXX8+9995LVVUVQgi++uorGhsbWbRoETt37uT5558nEAgQCARYv34927dv73RPf/PNN136ZQEe\neOABPB4PW7duZcWKFVxyySXqtquvvprly5fz2muvxc2Bff7559VrnJOTgyRJaDTtj+7cuXN54okn\n1BfvvHnzeOKJJ5gzZ446thtuuIE//elPrFu3DiEELpeL1atX43Q6mTZtGna7nV//+td4PB5CoRBf\nf/01GzZsUPv/4osvePXVVwkGg/zud7/DZDIxY8aMuOedRRiiOmxER39TODQajeozO3LkiFi4cKFw\nOBxi2rRp4q677hJnnHGGuu8bb7whhgwZInJzc8V//Md/dPDHrVixopOvyuv1irvvvlsMHTpUOBwO\nUVlZKR5//PFYQxSSJAlJkoRGo1H/VXDTTTeJm266Sf1+zTXXqPsrn2eeeUYI0e5z1Gq1wmazqZ8x\nY8bE7Dcc27ZtE9OnTxd2u13k5+eLuXPnirVr16rbV6xYobZttVrFoEGDxLXXXiu2b98es03F//fL\nX/5S9OvXTwwaNEg8//zz6vZwH6kQQrz66qti3Lhxwm63i4qKCvH2228LIYT49NNPxYgRI0ReXp64\n9dZbhRCZ/U2WL18uZs2aJW6++WaRk5MjTjnlFPHOO++o28P7UrB27VoxefJkkZOTI6ZMmSI+/vhj\n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\n",
"text": [
"<matplotlib.figure.Figure at 0x7436438>"
]
}
],
"prompt_number": 73
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
">[1] D. J. Higham and N. J. Higham. \n",
">[MATLAB Guide](http://www.ec-securehost.com/SIAM/ot92.html), Second edition, \n",
">Society for Industrial and Applied Mathematics, Philadelphia, PA, USA, \n",
">2005, ISBN 0-89871-578-4 \n\n",
">[2] Fernando Pérez, Brian E. Granger, IPython: A System for Interactive Scientific \n",
">Computing, Computing in Science and Engineering, vol. 9, no. 3, pp. 21-29, May/June 2007, \n",
">doi:10.1109/MCSE.2007.53. URL: http://ipython.org"
]
}
],
"metadata": {}
}
]
}
@Carreau
Copy link

Carreau commented May 1, 2014

s/iPython/IPython/g

But nice otherwise.

@macd
Copy link
Author

macd commented Aug 17, 2014

Fixed and thanks. Also added references to IPython. (Very glaring omission. What was I thinking?)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment