{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Plotting and coding the algorithms we learnt in the last class." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Plotting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\newcommand{\\R}{\\mathbb{R}}$\n", "### Numpy and Scipy\n", "*Look at [my webpage](http://www.iiserpune.ac.in/~vmallick/2014s1/mth103/ \"installing scipy\") for instructions to install these python packages on your laptop.*\n", "\n", "\n", "### Array/Vectors\n", "Suppose you want to plot $y = x^2$, $-1 \\leq x \\leq 1$. From our math knowledge, we know this is a curve in $\\R^2$. The way one plots such functions in matlab/mathematica, is to find a lot of points lying on the curve and then joining them. We can use a list to store those points. So a basic python code to generate such lists will be as follows" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def genxy(f, xmin, xmax, N) :\n", " \"\"\"Given a function f, an interval [xmin, xmax] in R and number of points N, This function returns a 2-tuple\n", " of two lists: First an equispaced points on x-axis, and the second one is the value of f on those points\"\"\"\n", " step = float(xmax - xmin)/N\n", " listx = [xmin + i * step for i in range(N+1)]\n", " listy = [f(x) for x in listx]\n", " return (listx, listy)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "a = genxy(lambda x : x*x, -1, 1, 10)\n", "azipped = zip(a[0], a[1])\n", "for x, y in azipped :\n", " print \"%6.3f\\t%6.3f\" % (x, y)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "-1.000\t 1.000\n", "-0.800\t 0.640\n", "-0.600\t 0.360\n", "-0.400\t 0.160\n", "-0.200\t 0.040\n", " 0.000\t 0.000\n", " 0.200\t 0.040\n", " 0.400\t 0.160\n", " 0.600\t 0.360\n", " 0.800\t 0.640\n", " 1.000\t 1.000\n" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is not too difficult, but is somewhat tedious. To make tasks simpler, one can use arrays. Arrays are **not** in-built in python. To use them, *you have to install numpy*." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# The above code becomes :\n", "from numpy import *\n", "xs = array(a[0])\n", "ys = array(a[1])\n", "type(xs)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "numpy.ndarray" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. In an array all elements must be of the same type. If they are not, they are converted to the same type as is shown below (in the examples).\n", "1. The computations are faster if the size of the array doesn't change during computation.\n", "1. You can mathematical operation on a whole array and that is faster than doing it by traversing a list." ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Array elements are all of the same type\n", "v1 = [4, 5, 100, 4, 23.4]\n", "w1 = array(v1)\n", "print w1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 4. 5. 100. 4. 23.4]\n" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "v2 = ['eggs', 4.3, 3]\n", "w2 = array(v2)\n", "print w2" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['eggs' '4.3' '3']\n" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "v3 = [3, 2, 5]\n", "w3 = array(v3)\n", "print w3" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[3 2 5]\n" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "source": [ "# " ] }, { "cell_type": "code", "collapsed": false, "input": [ "# doing operations on array\n", "def f(x) :\n", " return x + x*x\n", "\n", "v = array(range(5))\n", "print f(v)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 0 2 6 12 20]\n" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "# One dimensional arrays are like vectors\n", "v = array([1, 4, 5])\n", "w = array([5, 2, 1])\n", "print v + w\n", "print 2 * v\n", "print v * w" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[6 6 6]\n", "[ 2 8 10]\n", "[5 8 5]\n" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Back to plotting.\n", "We need two things :\n", "1. We need to generate an array of equidistant points on $x$-axis. For this we have a numpy function called **linspace**\n", "1. We need to generate another array containing their values." ] }, { "cell_type": "code", "collapsed": false, "input": [ "xlist = linspace(-1, 1, 11)\n", "print xlist" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-1. -0.8 -0.6 -0.4 -0.2 0. 0.2 0.4 0.6 0.8 1. ]\n" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "def square(x) :\n", " return x*x\n", "ylist = square(xlist)\n", "print ylist" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[ 1. 0.64 0.36 0.16 0.04 0. 0.04 0.16 0.36 0.64 1. ]\n" ] } ], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Good, it works. Let us now write it as a function." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def array_pts(f, xmin, xmax, N) :\n", " xlist = linspace(xmin, xmax, N+1)\n", " ylist = f(xlist)\n", " return (xlist, ylist) # pretty simple, isn't it" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Plotting\n", "To plot we have a bunch of functions, I like matplotlib. It has a MatLab like syntax." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "from matplotlib.pylab import *\n", "\n", "a = array_pts(lambda x : x*x, -1, 1, 10)\n", "plot(a[0], a[1])\n", "show()\n", "b = array_pts(sin, -4*pi, 4*pi, 50)\n", "plot(b[0], b[1])\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nl01SJMTjjz8uSkpKhBBCLF26VBQVFWkeFxsbK7744gs9SzONUG7II99ezx07dojJkycrqtBcdu3a\nJfbv3y+GDRum+fNA3pthW7knJSVh8ODBXo/xZZMUdd4oVlBQgMrKym6PFUzZNHFDXmj5+neX70ff\njB07Ftdff323Pw/kvan0TkxaG6A8Ho/Cioypubm54wqk6Ojobv+jRkREICsrC2lpaXj55Zf1LNHw\nfHmvdbchj7ry5fWMiIjA22+/jZSUFOTm5uLw4cN6l2kZgbw3g5qll52djc8++6zLP1+yZAkmT57c\n4+/zuvfLunstFy9e3On7iIiIbl+33bt3Y+DAgfj888+RnZ2NpKQkjB07Niz1mg035IWWL6/LyJEj\n0djYiL59+6Kmpgb33Xcfjh07pkN11uTvezOo5r5t27Zgft2nTVJ24e21jI6OxmeffYabb74Zp06d\nwne6uXPFwIEDAQADBgzAD37wA9TX17O5/0MoN+SRb6/ntdde2/Hne+65B4899hjOnDmDG264Qbc6\nrSKQ96YusUx3uduVm6RaW1tRUVGBvLw8PUoylby8PKxfvx4AsH79etx3331djvnyyy9x7tw5AMCF\nCxewdetWr2fe7caX91peXh42bNgAAF435JFvr2dzc3PH3/36+noIIdjYAxTQezM053q72rRpk3A6\nnaJPnz4iOjpaTJw4UQghhMfjEbm5uR3HVVdXi8GDB4u4uDixZMmScJVjal988YW4++67RUJCgsjO\nzhZ/+9vfhBCdX8sTJ06IlJQUkZKSIoYOHcrXUoPWe23lypVi5cqVHcfMmjVLxMXFiREjRnR7lRdJ\nPb2epaWlYujQoSIlJUVkZGSIPXv2qCzX0PLz88XAgQNFVFSUcDqdYvXq1UG/N7mJiYjIgpReLUNE\nROHB5k5EZEFs7kREFsTmTkRkQWzuREQWxOZORGRBbO5ERBbE5k5EZEH/Dwrz4vgDr58sAAAAAElF\nTkSuQmCC\n", "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nxP8DFvIZAk/GteYAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some comments on trigonometric functions\n", "Note that we have not imported math anywhere. The sin we used here is imported from numpy. Actually if we override with the sin from math, we'll get errors :" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from matplotlib.pylab import *\n", "import math as m\n", "\n", "b = array_pts(m.sin, -4*pi, 4*pi, 50)\n", "plot(b[0], b[1])\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "only length-1 arrays can be converted to Python scalars", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mTypeError\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 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmath\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0marray_pts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m4\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mpi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m50\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 5\u001b[0m \u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mb\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mb\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36marray_pts\u001b[0;34m(f, xmin, xmax, N)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0marray_pts\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mf\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxmin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mxlist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxmin\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mxmax\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mN\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mylist\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mxlist\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mxlist\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mylist\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# pretty simple, isn't it\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: only length-1 arrays can be converted to Python scalars" ] } ], "prompt_number": 48 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Accessing array elements" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Array elements can be accessed in the same way as list elements\n", "x = array(range(1, 10))\n", "print x[5]" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = array(range(1, 10))\n", "print x[5]" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "6\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, you must be careful about assignment. Assignment just reflects the same array, and does not create a new array, just like lists:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = array(range(1, 10))\n", "l = range(1, 10)\n", "x = a\n", "m = l\n", "print a[5], l[5]\n", "x[5] = -1\n", "m[5] = -1\n", "print a[5], l[5]\n", "print type(a), type(l)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "6 6\n", "-1 -1\n", " \n" ] } ], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "a before : [ 1 2 3 4 5 -1 7 8 9]\n", "y before : [ 1 2 3 4 5 -1 7 8 9]\n", " a after : [ 1 2 3 4 5 -1 7 8 9]\n", " y after : [ 1 2 -2 4 5 -1 7 8 9]\n" ] } ], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "source": [ "####Note :\n", "For vectors\n", "\n", " a += b\n", " \n", "is faster than\n", "\n", " a = a + b\n", "\n", "since the later creates a new array to store `a + b` before copying it back to `a`. `a += b` just modifies a directly. Same holds for -=, \\*= etc." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Putting two graphs in he same picture\n", "One uses the hold funciton. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "def f(x, s):\n", " return 1 / (sqrt(2 * pi) * s) * exp(- x * x / (2 * s * s))\n", "\n", "x = linspace(-5, 5, 1000)\n", "y = f(x, 1)\n", "plot(x, y)\n", "hold('on')\n", "z = f(x, 2)\n", "plot(x, z)\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Some decorations" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = linspace(-5, 5, 1000)\n", "y = f(x, 1)\n", "plot(x, y)\n", "hold('on')\n", "z = f(x, 2)\n", "plot(x, z)\n", "xlabel('x')\n", "ylabel('y')\n", "legend(['s=1', 's=2'])\n", "title('normal or Gaussian distribution')\n", "show()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 68 } ], "metadata": {} } ] }