{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "# Lab 2: Lists, Loops and Animation\n", "\n", "One of the great things about computers is their ability to repeat tasks\n", "quickly, accurately and without getting bored. We will take advantage of this\n", "capability many times during this course. This lab will introduce loops, which\n", "perform such repetition, and use them to create animations. First, however,\n", "we’ll take a look at some of the different kinds of objects SageMath works with.\n", "\n", "### Types of Things\n", "\n", "In the previous lab, you worked with numbers and functions. You also made\n", "plots, and in the process of making them, you encountered words enclosed in\n", "quotation marks. For example, when you want to make a plot red, you have to\n", "put the word \"red\" in quotation marks. Such words are called strings, which is\n", "short for \"character strings\". Strings allow computers to handle words, phrases,\n", "and typographic symbols.\n", "Strings can include numbers, not just letters. But when numbers are treated\n", "as strings, they act quite differently from regular numbers.\n", "\n", "
\n", "Exercise 1. Enter the following code into SageMath and compare the outputs.\n", " \n", "```\n", ">>a=5\n", ">>show(a)\n", ">>b=\"5\"\n", ">>show(b)\n", "```\n", "Exercise 2. What happens when you add 1 to `a`? To `b`?\n", "
\n" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "5" ] }, "execution_count": 1, "metadata": { }, "output_type": "execute_result" } ], "source": [ "a=5\n", "show(a)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "" ], "text/plain": [ "'5'" ] }, "execution_count": 6, "metadata": { }, "output_type": "execute_result" } ], "source": [ "b=\"5\"\n", "show(b)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 3, "metadata": { }, "output_type": "execute_result" } ], "source": [ "a+1" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "collapsed": false }, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand parent(s) for +: '' and 'Integer Ring'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\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[0;32m----> 1\u001b[0;31m \u001b[0mb\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mInteger\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[0m", "\u001b[0;32m/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/rings/integer.pyx\u001b[0m in \u001b[0;36msage.rings.integer.Integer.__add__ (build/cythonized/sage/rings/integer.c:12304)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1801\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1802\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1803\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcoercion_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbin_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moperator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\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 1804\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1805\u001b[0m \u001b[0mcpdef\u001b[0m \u001b[0m_add_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\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/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx\u001b[0m in \u001b[0;36msage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:11178)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1253\u001b[0m \u001b[0;31m# We should really include the underlying error.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1254\u001b[0m \u001b[0;31m# This causes so much headache.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1255\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mbin_op_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\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 1256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1257\u001b[0m \u001b[0mcpdef\u001b[0m \u001b[0mcanonical_coercion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\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;31mTypeError\u001b[0m: unsupported operand parent(s) for +: '' and 'Integer Ring'" ] } ], "source": [ "b+1" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "#When 1 is added the value of a it changes to 6 due to adding the integer. When added to 1 is added to be there is an error due to \"b\" being a string." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "Remark. There is a little bit of vocabulary you should be aware of, as you may\n", "see it online and in the SageMath documentation. While the fundamental idea\n", "to understand is that different types of objects behave differently even though\n", "they may look alike, programmers often use the word \"type\" for simple objects\n", "like strings and numbers and \"class\" for more complex ones like graphs. Just\n", "think \"type\" when you see “class” and you’ll be fine.\n", "You can find out what the type of an object is using the type command.\n", "```\n", ">>type(a)\n", "\n", "```\n", "This output means that `a` is a SageMath integer.\n", "```\n", ">>type(b)\n", "\n", "```\n", "This output means that `b` is a character string.\n", "\n", "\n", "\n", "
\n", " Exercise 3. Find the types of the number 0.2 and the graph (plot) of $f(x) = x^2$. (Hint: Look back at the end of Lab 1 fo how to make a plot).\n", "
\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": { }, "output_type": "execute_result" } ], "source": [ "type(plot(x^2, x,-10,10))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": { }, "output_type": "execute_result" } ], "source": [ "type(0.2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "In the above exercises, the variables a and b look the same when displayed\n", "using show but act very differently when used in an arithmetical calculation.\n", "This happens because a is the integer 5 while b is the character string \"5\". We\n", "say these variables have different types, which just means they’re different kinds\n", "of things. The type of a is \"integer\", while the type of b is \"string\".\n", "This explains what you saw in Exercise 2. Adding 1 to an integer is not a\n", "problem, but adding 1 to a character string makes no sense and results in an\n", "error.
\n", "Actually, addition is defined for strings in SageMath. Here’s how it works.\n", "\n", "```\n", ">>\"5\"+\"1\"\n", "'51'\n", "```\n", "\n", "You can see that the + symbol (or \"operator\") still embodies the idea of\n", "\"putting things together\". However, \"putting things together\" means something\n", "different for integers than for character strings or for the plots in Lab 1 #33, so the exact meaning of + changes depending on the types of objects it’s acting on. (Programmers say this makes + an overloaded operator.)\n", "\n", "
\n", " Exercise 4. Give another example of a type of SageMath object for which\n", "addition is defined and explain what addition means for that type of data.\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'17'" ] }, "execution_count": 1, "metadata": { }, "output_type": "execute_result" } ], "source": [ "\"1\"+\"7\"" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "### Lists\n", "\n", "Scientific data and the outputs of model simulations often come in the form of\n", "lists of numbers. SageMath gives us many tools for working with such lists and\n", "tables.\n", "\n", "You make a list by enclosing its elements, separated by commas, in square\n", "brackets:\n", "```\n", "[\"Bacteria\", \"Protists\", \"Plants\", \"Fungi\", \"Animals\"]\n", "[2,3,5,7,11,13]\n", "```\n", "Each element of a list can be accessed by its position in the list, typically\n", "called its index. In Python, indexing starts with 0, so the first element of a list\n", "with $k$ elements has index 0 and the last element has index $k − 1$." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "**Example 1.** Enter the list of biological kingdoms into SageMath and call it\n", "kingdoms.\n", "```\n", ">>kingdoms = [\"Bacteria\", \"Protists\", \"Plants\", \"Fungi\", \"Animals\"]\n", "```\n", "To access the first element of this list, enter:\n", "```\n", ">>kingdoms[0]\n", "'Bacteria'\n", "```\n", "
\n", "Exercise 5. A bacteria population is doubling every hour. Its sizes at different\n", "times are 100, 200, 400 and 800. Make a list of these values.\n", " \n", "[100, 200, 400, 800]\n", " \n", "Exercise 6. Assign the list of bacteria population sizes to the variable\n", "`bacteria`. (You can just copy and paste the list.)\n", " \n", "Exercise 7. Find the type of the variable `bacteria` from the previous exercise.\n", " \n", "Exercise 8. What is the value of `bacteria[1]`? What about `bacteria[0]`?\n", "First, answer without entering the command into SageMath. Then, use SageMath to check your answers.\n", "
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "kingdoms = [\"Bacteria\", \"Protists\", \"Plants\", \"Fungi\", \"Animals\"]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "'Bacteria'" ] }, "execution_count": 14, "metadata": { }, "output_type": "execute_result" } ], "source": [ "kingdoms[0]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "bacteria=[100,200,400,800]" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": { }, "output_type": "execute_result" } ], "source": [ "type(bacteria)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "#bateria[1] should equal 200 and bacteria[0] should equal 100" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "200" ] }, "execution_count": 17, "metadata": { }, "output_type": "execute_result" } ], "source": [ "bacteria[1]" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "100" ] }, "execution_count": 18, "metadata": { }, "output_type": "execute_result" } ], "source": [ "bacteria[0]" ] }, { "cell_type": "raw", "metadata": { "collapsed": false }, "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "You can add an element to the end of a list using listname.append(element).\n", "(The generic names listname or list are just placeholders for the real name of\n", "your list.) For instance if you wanted to add the string “Archaea” to the list\n", "named kingdoms, the code would look something like this:\n", "```\n", ">> kingdoms.append(\"Archaea\")\n", "```\n", "Note that the above code does not output anything to the screen. This\n", "is because the `append()` function only tells the computer to save its input to\n", "specified list. To see the result, we would have to type `kingdoms` and evaluate\n", "the cell.\n", "\n", "
\n", " Exercise 9. Append the number 1600 to `bacteria` and call it to display its\n", "value. Don’t paste or retype any output.
\n", "[100, 200, 400, 800, 1600]\n", " \n", "Exercise 10. What is the next value of the population? Append it to the list.\n", " \n", "Exercise 11. What would happen in the example above if we did\n", "kingdoms.append(\"Archaea\") twice before viewing kingdoms? Try this out\n", "and explain why you got the result that you did.\n", "
" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "bacteria.append(1600)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[100, 200, 400, 800, 1600]" ] }, "execution_count": 21, "metadata": { }, "output_type": "execute_result" } ], "source": [ "bacteria" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "#the next value would be 3200" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "bacteria.append(3200)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[100, 200, 400, 800, 1600, 3200]" ] }, "execution_count": 24, "metadata": { }, "output_type": "execute_result" } ], "source": [ "bacteria" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "kingdoms.append(\"Archaea\")" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "['Bacteria', 'Protists', 'Plants', 'Fungi', 'Animals', 'Archaea']" ] }, "execution_count": 26, "metadata": { }, "output_type": "execute_result" } ], "source": [ "kingdoms" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "#archaea was appended/added on" ] }, { "attachments": { "lab2_ll_f1.png": { "image/png": "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" } }, "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "### Plotting lists\n", "\n", "To plot the entries in a list, use the `list_plot` function. If you give this function\n", "a single list of numbers as an input, it will plot each number against its position\n", "in the list. For example, the command `list_plot(bacteria)` plots the list of population\n", "sizes you just created in Example 6, producing the graph below.\n", "\n", "\n", "\n", "Notice that the $x$-coordinate of the first point is 0, not 1. This happens\n", "because SageMath starts counting at zero, so the index of the first element of a\n", "list is 0.\n", "\n", "
\n", "Exercise 12. Plot the list [3,5,7,9,11].\n", "
" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "x=[3,5,7,9,11]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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AKCAsAQAUEBYAgAoICwBABQQlgAACpQmLFlnCQAoI+ssAQAUKM3MEgBAGQlLAAAF6hKWXnjhhXz0ox/NwQcfnHe+851597vfnccff7weTQEA1NWgWv/gK6+8klNPPTVnnXVW7r333hx22GF57rnn8su//Mu1bgoAoO5qHpauu+66tLW15ZZbbundd/TRR9e6GQCAflHz23D33HNPJk2alAsuuCCHHXZY3vOe92TRokW7Pb5SqaS7u7vPBgBQFjUPS88//3xuvvnmjB8/PitWrMhll12WT37yk7n99tt3eXxHR0daW1t7t7a2tlqXBACw32q+ztLgwYMzadKkPPLII737PvnJT2bNmjX59re/vdPxlUollUql93N3d3fa2tqsswQAlELNZ5YOP/zwtLe399n3a7/2a9m0adMuj29pacmIESP6bAAAZVHzsHTqqafmmWee6bPve9/7Xo466qhaNwUAUHc1D0uf+tSn8uijj+baa6/Nhg0bcscdd2ThwoWZPXt2rZsCAKi7urwb7utf/3rmzZuXZ599NmPHjs3cuXPzR3/0R3t1rnfDAQBl4kW6AAAFvBsOAKBAacLSggUL0t7ensmTJze6FACAXm7DAQAUKM3MEgBAGQlLAAAFhCUAgALCEgBAAWEJAKCAsAQAUKA0Yck6SwBAGVlnCQCgQGlmlgAAykhYAgAoICwBABQQlgAACghLAAAFhCUAgAKlCUvWWQIAysg6SwAABUozswQAUEbCEgBAAWEJAKCAsAQAUEBYAgAoUJqwZOkAAKCMLB0AAFCgNDNLAABlJCwBABQY1OgCYHeeeipZsSIZOjT53d9NDjus0RUBMBDVfGZp/vz5aWpq6rONHj261s1wAHv99eRjH0uOPz759KeTj388aWtLFi5sdGUADER1mVmaMGFCHnjggd7Pzc3N9WiGA9TNNyf/9E99923blvzJnyQnn5xMnNiYugAYmOoSlgYNGrTXs0mVSiWVSqX3c3d3dz1K4m1k0aJd73/99eQf/zG58cb+rQeAga0uD3g/++yzGTNmTMaOHZuPfOQjef7553d7bEdHR1pbW3u3tra2epTE28jLL+/fdwBQDzUPSyeddFJuv/32rFixIosWLcrLL7+cU045Jf/zP/+zy+PnzZuXrq6u3q2zs7PWJfE2U7Qu6aRJ/VcHACT9sCjl1q1bM27cuFxx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zjsvY8aMSVNTU5YvX97okupmX/s60K6Fjo6OTJ48OcOHD89hhx2WD37wg3nmmWcaXVZd7E9fB9L1cPPNN2fixIm9KzVPmTIl9957b6PLqot97etAug52paOjI01NTZkzZ05dfr9UYenOO+/MnDlz8hd/8Rd58sknc/rpp2fGjBnZtGlTo0uruf3t6zPPPJOXXnqpdxs/fnw/Vdy/tm7dmhNOOCE33XRTo0upu/3t60C5FlavXp3Zs2fn0UcfzcqVK/Paa69l+vTp2bp1a6NLq7m30teBcD0cccQR+fznP5+1a9dm7dq1+Y3f+I2cf/75eeqppxpdWs3tb18HwnXwZmvWrMnChQszceLE+jVSLZH3ve991csuu6zPvuOOO6561VVXNaii+tnXvj744IPVJNVXXnmlP8orlSTVZcuWNbqMfrE3fR3I10K1Wq1u3ry5mqS6evXqRpdSd3vT14F+PRx00EHVr3zlK40uo18U9XWgXgc9PT3V8ePHV1euXFk944wzqpdffnld2inNzNK2bdvy+OOPZ/r06X32T58+PY888kiDqqqPt9LX97znPTn88MMzderUPPjgg/Usk5IbqNdCV1dXkmTkyJENrqT+9qWvA+162L59e5YsWZKtW7dmypQpjS6nrvalrwPtOpg9e3ZmzpyZadOm1bWd0qyP/uMf/zjbt2/PqFGj+uwfNWpUXn755QZVVR/709fDDz88CxcuzIknnphKpZKvfvWrmTp1alatWpX3v//9/VE2JTGQr4VqtZq5c+fmtNNOy/HHH9/ocupqb/s60K6H9evXZ8qUKfnZz36Wd73rXVm2bFna29sbXVZd7EtfB9p1kCRLlizJE088kTVr1tS9rdKEpTc0NTX1+VytVnfad6DYl74ee+yxOfbYY3s/T5kyJZ2dnbn++usP2P8hsGsD+Vr4xCc+ke985zt5+OGHG11K3e1tXwfa9XDsscdm3bp1efXVV7N06dLMmjUrq1evPiAD0770daBdB52dnbn88stz//33Z8iQIXVvrzS34Q455JA0NzfvNLOyefPmnWZg3u5q1deTTz45zz77bK3L421oIFwLf/qnf5p77rknDz74YI444ohGl1NXb7WvB/L1MHjw4BxzzDGZNGlSOjo6csIJJ+TGG29sdFl18Vb7eiBfB48//ng2b96cE088MYMGDcqgQYOyevXq/N3f/V0GDRqU7du317S90oSlwYMH58QTT8zKlSv77F+5cmVOOeWUBlVVH7Xq65NPPpnDDz+81uXxNnQgXwvVajWf+MQnctddd+Wb3/xmxo4d2+iS6qZWfT2Qr4c3q1arqVQqjS6jX+xrXw/k62Dq1KlZv3591q1b17tNmjQpF110UdatW5fm5uaatleq23Bz587NxRdfnEmTJmXKlClZuHBhNm3alMsuu6zRpdXcnvo6b968vPDCC7n99tuTJF/60pdy9NFHZ8KECdm2bVsWL16cpUuXZunSpY3sRt1s2bIlGzZs6P28cePGrFu3LiNHjsyRRx7ZwMpqb099HejXwuzZs3PHHXfk7rvvzvDhw3tnZFtbWzN06NAGV1dbe9PXgXw9fOYzn8mMGTPS1taWnp6eLFmyJKtWrcp9993X6NJqbk99HcjXQZIMHz58p2f5hg0bloMPPrg+zzPW5W/s3oIFCxZUjzrqqOrgwYOr733vew/oPw8u6uusWbOqZ5xxRu/n6667rjpu3LjqkCFDqgcddFD1tNNOq37jG99oQNX9440/g33zNmvWrEaXVnN76utAvxZ2NTZJqrfcckujS6u5venrQL4eLr300t5/Mw899NDq1KlTq/fff3+jy6qLPfV1IF8Hu1PPpQOaqtVqtfYRDADgwFCaZ5YAAMpIWAIAKCAsAQAUEJYAAAoISwAABYQlAIACwhIAQAFhCQCggLAEAFBAWAIAKCAsAQAU+P8LhkYqC86fTAAAAABJRU5ErkJggg==", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 30, "metadata": { }, "output_type": "execute_result" } ], "source": [ "list_plot(x, color=\"blue\", size=30)" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "attachments": { "lab2_ll_f2a.png": { "image/png": "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5XK50WNMK5NZM5/LtFWrVsXhw4fP+tmTTz4ZixYtiueffz5mzpxZtX1d1sF06tSp+Pjjjyeef/LJJzE4OBjz5s2LG264oYGTZVNqvTZu3BjHjx+PN954IyIiXn755bjxxhtj8eLFMT4+Hm+++WZs3749tm/f3qhfYVro6uqKt956K955551obm6OEydOREREPp+POXPmNHi67LmQ9Xrsscfi+uuvj2KxGBERmzZtiuXLl8fChQujVCrF5s2bY3BwMLq7uxv2e2TdCy+8EKtXr45CoRCjo6PR29sbfX19sWfPnkaPllmpNfO5vHjNzc3fOF/xyiuvjGuuuabq531e1sF08ODBuPfeeyeeb9iwISIiHn/88ejp6WnQVNmVWq/h4eEYGhqa+PPx8fF47rnn4vjx4zFnzpxYvHhx7N69Ox566KG6zz6dbNmyJSIi7rnnnrN+vm3btnjiiSfqP1DGXch6DQ0NxYwZX5+BcPLkyXjqqafixIkTkc/nY9myZTEwMBB33nlnvcaedj799NN49NFHY3h4OPL5fHR0dMSePXvigQceaPRomZVaM5/L6SVXqVQqjR4CACDLnPQNAJAgmAAAEgQTAECCYAIASBBMAAAJggkAIEEwAQAkCCYAgATBBACQIJgAABIEEwBAwv8DX7CbfT75ijQAAAAASUVORK5CYII=" }, "lab2_ll_f2b.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkwAAAGECAYAAADEN3+HAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAGuxJREFUeJzt3X+s1Xd9P/DnAeaFtdwzcRJpua3VshKoEGpvB2mDrbRutDAx+2fJ1tJmSdMWmY6ZKTUxksVcjclimXzRzgSqXWVzlJZJStJo4cYsbFC5hugkNGsGaaD6h+VcmD0Inu8fzdCblr65cO45nwuPR/L543x+vV/3zQl55v15n8+71mq1WgEA4JwmdLsAAICqE5gAAAoEJgCAAoEJAKBAYAIAKBCYAAAKBCYAgAKBCQCgQGACACgQmAAACgQmAICCcRGYWq1WGo1GLHsHAHTDuAhMw8PDqdfrGR4e7nYpAMBlaFwEJgCAbup4YBoYGEitVssnP/nJTjcNwMX47/9O/uZvkjvvTB54INmzp9sVQcdM6mRje/fuzeOPP5558+Z1slkALta//3vyR3+UnDjxm31PPJH8v/+XPPRQ9+qCDunYCNOJEyfy53/+5/nHf/zHvPOd7+xUswC0wyOPjAxLSdJqJWvWJL/4RXdqgg7qWGBatWpV7rnnntx5553Fc5vNZhqNxogNgC556aXkRz9662O//GWyY0dn64Eu6MgjuS1btuSHP/xh9u7de17nDwwMZN26dWNcFQDn5fTpizsOl4AxH2E6cuRIPvGJT+TJJ5/M5MmTz+uatWvX5vjx42e3I0eOjHGVAJzTDTckf/AHb33sd34nWbq0s/VAF9RaY/w2yGeeeSYf+9jHMnHixLP7zpw5k1qtlgkTJqTZbI449lYajUbq9XqOHz+e3t7esSwXgLeyY0fysY8lv/rVyP3r1iWf+1x3aoIOGvPANDw8nP/5n/8Zse+BBx7I7Nmz8+lPfzo33nhj8R4CE0AF7NuX/P3fJ0NDSV9f8vDDyYoV3a4KOmLM5zBNnTr1TaHoiiuuyLve9a7zCksAVMTNNydPPdXtKqArvOkbAKBgzB/JtYNHcgBANxlhAgAoEJgAAAoEJgCAAoEJAKCg0oFpw4YNmTNnTvr7+7tdCgBwGfMrOQCAgkqPMAEAVIHABABQIDABABQITAAABQITAECBwAQAUCAwAQAUCEwAAAWVDkze9A0AVIE3fQMAFFR6hAkAoAoEJgCAAoEJAKBAYAIAKBCYAAAKBCYAgAKBCQCgQGACACgQmAAACiodmCyNAgBUgaVRAAAKKj3CBABQBQITAECBwAQAUCAwAQAUCEwAAAUCEwBAgcAEAFAgMAEAFFQ6MHnTNwBQBd70DQBQUOkRJgCAKhCYAAAKBCYAgAKBCQCgQGACACgYVWDauHFj5s2bl97e3vT29mbRokV57rnnznn+5s2bU6vV3rS9/vrrF104AECnTBrNyTNnzswXv/jFXH/99UmSJ554Ih/96Eezf//+zJ079y2v6e3tzcGDB0fsmzx58gWWCwDQeaMKTMuXLx/x+Qtf+EI2btyYPXv2nDMw1Wq1vOc977nwCgEAuuyC5zCdOXMmW7ZsycmTJ7No0aJznnfixIlce+21mTlzZpYtW5b9+/cX791sNtNoNEZsAADdMurAdODAgVx55ZXp6enJQw89lG3btmXOnDlvee7s2bOzefPmbN++Pd/+9rczefLk3HrrrTl06NDbtjEwMJB6vX526+vrG22ZAABtM+qlUU6dOpXDhw/ntddey9atW/ONb3wju3fvPmdo+m2//vWvc9NNN2Xx4sVZv379Oc9rNptpNptnPzcajfT19VkaBQDoilHNYUqSd7zjHWcnfd98883Zu3dvHnvssXz9618vXjthwoT09/cXR5h6enrS09Mz2tIAAMbERb+HqdVqjRgNKp07NDSUGTNmXGyzAAAdM6oRpkcffTRLly5NX19fhoeHs2XLluzatSs7d+5Mktx33325+uqrMzAwkCRZt25dFi5cmFmzZqXRaGT9+vUZGhrKhg0b2v+XAACMkVEFpldffTX33ntvjh49mnq9nnnz5mXnzp256667kiSHDx/OhAm/GbR67bXX8uCDD+bYsWOp1+tZsGBBBgcHc8stt7T3rwAAGEOjnvTdDY1GI/V63aRvAKArrCUHAFAgMAEAFAhMAAAFlQ5MGzZsyJw5c9Lf39/tUgCAy5hJ3wAABZUeYQIAqAKBCQCgQGACACgQmAAACgQmAIACgQkAoEBgAgAoEJgAAAoEJgCAgkoHJkujAABVYGkUAICCSo8wAQBUgcAEAFAgMAEAFAhMAAAFAhMAQIHABABQIDABABQITAAABZUOTN70DQBUgTd9AwAUVHqECQCgCgQmAIACgQkAoEBgAgAoEJgAAAoEJgCAAoEJAKBAYAIAKBCYAAAKKh2YLI0CAFSBpVEAAAoqPcIEAFAFAhMAQIHABABQIDABABSMeWDauHFj5s2bl97e3vT29mbRokV57rnnxrpZAOBycPp08uSTyYoVybJlyde+lvzyl21vZsx/Jfdv//ZvmThxYq6//vokyRNPPJEvf/nL2b9/f+bOnXte9/ArOQDgTU6ffiMo7dgxcv8ttyTf+15y5ZVta6orrxWYNm1avvzlL+cv//Ivz+t8gQkAeJNvfSu57763PjYwkHzmM21rqqNzmM6cOZMtW7bk5MmTWbRo0TnPazabaTQaIzYAgBH+9V/Pfew732lrUx0JTAcOHMiVV16Znp6ePPTQQ9m2bVvmzJlzzvMHBgZSr9fPbn19fZ0oEwAYT371qws7dgE6EphuuOGGDA0NZc+ePXn44YezcuXK/OQnPznn+WvXrs3x48fPbkeOHOlEmQDAeLJs2YUduwBdmcN055135v3vf3++/vWvn9f55jABAG/yv/+bLF6cvPjiyP3ve1+yZ0/y7ne3ralJbbvTKLRarTSbzW40DQBcKn73d5MXXkjWr39jztLp08ny5clf/3Vbw1LSgcD06KOPZunSpenr68vw8HC2bNmSXbt2ZefOnWPdNABwqZs6NfnsZ9/YxtCYB6ZXX3019957b44ePZp6vZ558+Zl586dueuuu8a6aQCAtujKHKbRMocJAOgma8kBABQITAAABQITAECBwAQAUFDpwLRhw4bMmTMn/f393S4FALiM+ZUcAEBBpUeYAACqQGACACgQmAAACgQmAIACgQkAoEBgAgAoEJgAAAoEJgCAgkoHJm/6BgCqwJu+AQAKKj3CBABQBQITAECBwAQAUCAwAQAUCEwAAAUCEwBAgcAEAFAgMAEAFAhMAAAFlQ5MlkYBAKrA0igAAAWVHmECAKgCgQkAoEBgAgAoEJgAAAoEJgCAAoEJAKBAYAIAKBCYAAAKKh2YvOkbAKgCb/oGACio9AgTAEAVCEwAAAUCEwBAgcAEAFAgMAEAFIwqMA0MDKS/vz9Tp07N9OnTs2LFihw8ePBtr9m8eXNqtdqbttdff/2iCgcA6JRRBabdu3dn1apV2bNnT55//vmcPn06H/nIR3Ly5Mm3va63tzdHjx4dsU2ePPmiCgcA6JRJozl5586dIz5v2rQp06dPz4svvpjFixef87parZb3vOc9F1YhAECXXdQcpuPHjydJpk2b9rbnnThxItdee21mzpyZZcuWZf/+/W97frPZTKPRGLEBAHTLBQemVquVNWvW5LbbbsuNN954zvNmz56dzZs3Z/v27fn2t7+dyZMn59Zbb82hQ4fOec3AwEDq9frZra+v70LLBAC4aBe8NMqqVauyY8eO/OAHP8jMmTPP+7pf//rXuemmm7J48eKsX7/+Lc9pNptpNptnPzcajfT19VkaBQDoilHNYfo/q1evzvbt2zM4ODiqsJQkEyZMSH9//9uOMPX09KSnp+dCSgMAaLtRPZJrtVr5+Mc/nqeffjrf//73c9111426wVarlaGhocyYMWPU1wIAdMOoRphWrVqVp556Ks8++2ymTp2aY8eOJUnq9XqmTJmSJLnvvvty9dVXZ2BgIEmybt26LFy4MLNmzUqj0cj69eszNDSUDRs2tPlPAQAYG6MKTBs3bkyS3H777SP2b9q0Kffff3+S5PDhw5kw4TcDV6+99loefPDBHDt2LPV6PQsWLMjg4GBuueWWi6scAKBDLnjSdyc1Go3U63WTvgGArrCWHABAgcAEAFAgMAEAFFQ6MG3YsCFz5sxJf39/t0sBAC5jJn0DABRUeoQJAKAKBCYAgAKBCQCgQGACACgQmAAACgQmAIACgQkAoEBgAgAoEJgAAAoqHZgsjQIAVIGlUQAACio9wgQAUAUCEwBAgcAEAFAgMAEAFAhMAAAFAhMAQIHABABQIDABABRUOjB50zcAUAXe9A0AUFDpESYAgCoQmAAACgQmAIACgQkAoEBgAgAoEJgAAAoEJgCAAoEJAKBAYAIAKKh0YLI0CgBQBZZGAQAoqPQIEwBAFQhMAAAFAhMAQIHABABQMOaBaWBgIP39/Zk6dWqmT5+eFStW5ODBg2Pd7Pn5+c+TL3whueeeZOXKZPfublcEAFTQmP9K7o//+I/zZ3/2Z+nv78/p06fz2c9+NgcOHMhPfvKTXHHFFed1jzH5ldxLLyWLFydHj47cv25d8rnPtacNAOCS0PHXCvz85z/P9OnTs3v37ixevPi8rhmTwLRiRfLss2/eX6slhw4l739/e9oBAMa9js9hOn78eJJk2rRp5zyn2Wym0WiM2Nrql79Mvvvdtz7WaiXf+U572wMAxrWOBqZWq5U1a9bktttuy4033njO8wYGBlKv189ufX197S3kzJk3tnM5daq97QEA41pHH8mtWrUqO3bsyA9+8IPMnDnznOc1m800m82znxuNRvr6+tr7SO5DH0oGB9/62IsvJjfd1J52AIBxb1KnGlq9enW2b9+ewcHBtw1LSdLT05Oenp6xLehLX0o+/OE3Hs/9tvvuE5YAgBHG/JFcq9XKxz/+8Tz99NP5/ve/n+uuu26smzw/Cxcm//EfbwSk669/4/PjjyebNnW7MgCgYsb8kdwjjzySp556Ks8++2xuuOGGs/vr9XqmTJlyXvew+C4A0E1jHphqtdpb7t+0aVPuv//+87qHwAQAdNOYz2Hq8GueAADazlpyAAAFAhMAQIHABABQIDABABRUOjBt2LAhc+bMSX9/f7dLAQAuYx1dGuVCea0AANBNlR5hAgCoAoEJAKBAYAIAKBCYAAAKBCYAgAKBCQCgQGACACgQmAAACiodmLzpGwCoAm/6BgAoqPQIEwBAFQhMAAAFAhMAQIHABABQIDABABQITAAABQITAECBwAQAUCAwAQAUVDowWRoFAKgCS6MAABRUeoQJAKAKBCYAgAKBCQCgQGACACgQmAAACgQmAIACgQkAoEBgAgAoqHRg8qZvAKAKvOkbAKCg0iNMAABVIDABABQITAAABQITAECBwAQAUDDqwDQ4OJjly5fnqquuSq1WyzPPPPO25+/atSu1Wu1N209/+tMLLhoAoJMmjfaCkydPZv78+XnggQfyp3/6p+d93cGDB0e8EuDd7373aJsGAOiKUQempUuXZunSpaNuaPr06fm93/u9UV8HANBtHZvDtGDBgsyYMSNLlizJCy+88LbnNpvNNBqNERsAQLeMeWCaMWNGHn/88WzdujVPP/10brjhhixZsiSDg4PnvGZgYCD1ev3s1tfXN9ZlAgCc00UtjVKr1bJt27asWLFiVNctX748tVot27dvf8vjzWYzzWbz7OdGo5G+vj5LowAAXdGV1wosXLgwhw4dOufxnp6e9Pb2jtgAALqlK4Fp//79mTFjRjeaBgAYtVH/Su7EiRN56aWXzn5++eWXMzQ0lGnTpuWaa67J2rVr88orr+Sb3/xmkuQrX/lK3vve92bu3Lk5depUnnzyyWzdujVbt25t318BADCGRh2Y9u3blzvu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1vz581urV68eo8ouDc1ms3Xo0KHW3r17W5/5zGdav//7v9/68Y9/3O2yKu1i+sz3suzw4cOt6dOnt4aGhs7u80iOS8LChQtz6NChbpcxLqxevTrbt2/PCy+8kJkzZ3a7nMq7mP6aMGFC+vv7fTcL3vGOd+T666/PzTffnIGBgcyfPz+PPfZYt8uqtIvpM9/LshdffDE/+9nP8sEPfjCTJk3KpEmTsnv37qxfvz6TJk3KmTNn2taWR3J01P79+zNjxoxul1FprVYrq1evzrZt27Jr165cd9113S6p0trRX61WK0NDQ/nABz4wBhVeulqtVprNZrfLGFdG02e+l2VLlizJgQMHRux74IEHMnv27Hz605/OxIkT29bWZR2YTpw4kZdeeuns55dffjlDQ0OZNm1arrnmmi5WVk2l/lq7dm1eeeWVfPOb30ySfOUrX8l73/vezJ07N6dOncqTTz6ZrVu3ZuvWrd36E8aFVatW5amnnsqzzz6bqVOn5tixY0mSer2eKVOmdLm66jmf/rrvvvty9dVXZ2BgIEmybt26LFy4MLNmzUqj0cj69eszNDSUDRs2dO3vqLpHH300S5cuTV9fX4aHh7Nly5bs2rUrO3fu7HZplVXqM9/Lizd16tQ3zVe84oor8q53vavt8z4v68C0b9++3HHHHWc/r1mzJkmycuXKbN68uUtVVVepv44ePZrDhw+fPX7q1Kl86lOfyiuvvJIpU6Zk7ty52bFjR+6+++6O1z6ebNy4MUly++23j9i/adOm3H///Z0vqOLOp78OHz6cCRN+MwPhtddey4MPPphjx46lXq9nwYIFGRwczC233NKpssedV199Nffee2+OHj2aer2eefPmZefOnbnrrru6XVpllfrM93J8qbVarVa3iwAAqDKTvgEACgQmAIACgQkAoEBgAgAoEJgAAAoEJgCAAoEJAKBAYAIAKBCYAAAKBCYAgAKBCQCg4P8DNpruZEeniAMAAAAASUVORK5CYII=" } }, "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "Often, we will need to plot lists of points. For example, suppose we have the\n", "points (1,2), (2,1), (3,4), and (4,3), with the first number in the ordered pair\n", "an $x$-coordinate and the second a $y$-coordinate. How do we plot these points in\n", "SageMath?\n", "\n", "First, we enter the list of points:\n", "```\n", ">>g = [(1,2), (2,1), (3,4), (4,3)]\n", "```\n", "Then, we use the list_plot function to produce the figure below\n", "```\n", ">>list_plot(g)\n", "```\n", "\n", "\n", "This plot is technically correct, but the points are a little hard to see. To\n", "make them more noticeable, we might color them red and change their size.\n", "The command `list_plot(g, color=\"red\", size=30)` produces the second figure below.\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "
\n", "Exercise 13. Define your own list of pairs of values and plot it. Make sure\n", "your plot is legible.\n", "
" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "x=[(2,3), (4,1), (3,5), (5,6)]" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 32, "metadata": { }, "output_type": "execute_result" } ], "source": [ "list_plot(x, color=\"red\", size=30)" ] }, { "attachments": { "lab2_ll_f3a.png": { "image/png": "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" }, "lab2_ll_f3b.png": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk0AAAGICAYAAABcN9TCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi40LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcv7US4rQAAIABJREFUeJzs3Xt8j/X/x/HHBzOztg/DNkMiEeaQGYaik0MO+aZvB76LX6VyTPjWl046mc6KUd9OOjhU35AiUTkk5lQro6JCw2Zi+4zFNvP+/XHZh882DNuuz7bn/Xa7briu93V9Xtcn8fS+3tf77TDGGERERETkjCrYXYCIiIhIaaDQJCIiIlIICk0iIiIihaDQJCIiIlIICk0iIiIihaDQJCIiIlIICk0iIiIihaDQJCIiIlIICk0iIiIihaDQlIfD4cDhcJTY582cOROHw8HgwYNL7DNFRETk3Ck0FaO0tDQmTpzIlClT7C5FRERELpBCUzFKS0vjiSeeOGNocjqdNGnShNq1a5dgZSIiInKuHFqw11Puo7mi+Fp27txJgwYNqF+/Pjt37rzg64mIiIh91NMkIiIiUgjnHJpOHSg9e/Zs2rVrx0UXXURQUBD9+vUjISHhtOdmZGTw9NNP07JlS/z9/QkMDKR9+/bExsZy7NixfO1XrFiBw+Gga9euZGdn88QTT9C4cWOqVKlCnTp1GD58OAcPHjzjeQXZuXMnDoeDSy65pND3/ccff/Dss8/StWtX6tWrh6+vL7Vq1aJHjx4sWrQoX/vBgwfToEEDAHbt2uX+3vIOND/bQPAtW7YQHR1N3bp1qVy5MiEhIfTv35+4uLgC2w8ePBiHw8HMmTPZu3cvd955J7Vr16ZKlSo0b96c2NjYQt+ziIiInHTePU3PPfccAwcOJDExkaZNm3Ls2DE+/fRT2rVrx+rVq/O1379/P1FRUTz66KNs2bKFRo0aUbduXdavX8+IESO44YYbOHr0aIGfZYzhH//4BxMnTgSgadOmpKSkMH36dNq3b09KSsr53kahTZo0if/85z9s2rSJqlWr0rJlS3x8fPjyyy/p3bs3zz77rEf7xo0b07ZtWwB8fX3p1KmTx1YYCxcuJCIigg8++ICMjAxatWqFMYZ58+bRqVMn3njjjdOeu2vXLiIiIpgzZw5hYWHUqFGDrVu3MmLECJ555pnz/yJERETKK3OOAAMYHx8f8+KLL5qcnBxjjDEZGRlm4MCBBjD169c3f//9t8d5/fv3N4Bp3ry5+e2339z7N2zYYEJCQgxgHnzwQY9zli9fbgBTqVIlExgYaL755hv3sV27dplWrVoZwNx8880FntelS5cC72HHjh3uOk93f3ktXrzYxMXFmePHj3vsX7Vqlaldu7apWLGix32d7XNyvfPOOwYwgwYN8ti/Z88eExgYaABz//33m8zMTGOMMTk5OeaZZ55x/zf48ccfPc4bNGiQ+9jNN99sUlNT3cemT59uAFOlShWP/SIiInJ25x2a+vbtm+9YZmamCQ0NNYB5++233fu3bdtmHA6HAcz333+f77yPPvrIAMbf39+kp6e79+eGH8C89NJL+c778ccfDWAcDof5/fff851XlKHpTN58800DmGeeeabQn5PrdKHp4YcfNoBp3bp1gefdcMMNBjDR0dEe+3NDU2hoqDl8+HC+89q0aWMAM2/evMLdnIiIiBhjjDnvx3PDhw/Pt69y5crcfffdAHz55Zfu/cuWLcMYQ+fOnbniiivynde/f3/q1q1LRkYG33333Rmve6qWLVvSuXNnjDEsXbr0fG+l0Pbv388rr7zCgAEDuO666+jcuTOdO3d2Tynw448/Ftln5d7PiBEjCjx+//33e7TL6/bbb8ff3z/f/sjISMAaoyUiIiKFV+l8T2zatOkZ92/bts29L/fnzZo1K/CcChUqcPnll7N79262bdtGjx49PI7XrVuXgICA037e6tWrPT6vOCxdupRbbrkFl8t12jYFDUo/X2f7zpo3bw7Avn37SE9PJzAw0OP4pZdeWuB5wcHBABw+fLioShURESkXzrunKfcv37xCQkIAOHTokHtf7l/QpzvndOed7bPOdl5RSUtL47bbbsPlcnHHHXcQFxdHamoqOTk5GGNYtmwZANnZ2UX2mWf7znLvGwq+94J6mcAKqFA081CJiIiUJ+cdmvbv31/g/tw32U7tGbrooos8jhVk3759+c4722ed7vPONkFlRkbGaa9XkC+++ILU1FSioqKYOXMm7du3p1q1au4AkpiYeE7XK4yzfWe53xcU/J2JiIhI0Trv0PTzzz+fcX/jxo3d+3J/vnXr1gLPOX78OL/88ku+83IlJiae9nFSQZ+X28tyurD122+/Fbj/dHJn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wHN+/vlnmjVrRlxcHO3btwcgLi6OqKgofvnlF5o0acKMGTMYP348+/btw9fXF4DJkyczdepUdu/ejaMQc9br7TkREbkQhw5BkybQsSP87392VyNFyZaB4C6XC4CgPDN8zZo1i5o1a9K8eXPGjRvHoUOH3MfWrl2L0+l0ByaADh064HQ6WbNmjbtNly5d3IEJoHv37uzdu5edO3cWWEtmZibp6ekem4iIyPl6+mlIS4MXX7S7EilqJT4Q3BjDmDFj6Ny5M+Hh4e79AwcOpEGDBoSGhpKQkMD48eP58ccfWbZsGQDJyckEBwfnu15wcDDJycnuNpdcconH8ZCQEPexBg0a5Ds/JiaGJ554oqhuT0REyrFff4WXX4ZHHoH69e2uRopaiYemESNG8NNPP7F69WqP/UOGDHH/PDw8nMsuu4y2bdvy/fff06ZNG4ACH68ZYzz2522T+/TxdI/mxo8fz5gxY9y/Tk9Pp169eud4VyIiUt4ZA6NHQ9268O9/212NFIcSDU0jR45k4cKFrFq1irp1656xbZs2bfDx8WH79u20adOG0NBQ9u3bl6/d/v373b1JoaGh7l6nXCkpKcDJHqe8fH19PR7niYiInI/PPoMlS2DBAvDzs7saKQ4lMqbJGMOIESOYN28e33zzTYGPyfLasmUL2dnZ1K5dG4CoqChcLhfr1693t1m3bh0ul4uOHTu626xatYqsrCx3m6VLlxIWFpbvsZ2IiEhROXLE6mXq3h369rW7GikuJfL23LBhw5g9ezaffvopTZo0ce93Op34+fnx+++/M2vWLG644QZq1qzJ1q1bGTt2LH5+fmzYsIGKJ1Y37NmzJ3v37nVPRXDPPfdQv359PvvsM8AaYN6kSROuueYaJkyYwPbt2xk8eDCPPfYYY8eOLVStentORETO1VNPWdvmzdabc1I2lUhoOt14onfeeYfBgweTmJjIv/71LxISEjh8+DD16tWjV69ePP744x5v2B08eJBRo0axcOFCAPr27cu0adOoVq2au83mzZsZPnw469evp3r16tx333089thjhZpuABSaRETk3OzaBU2bWpNYPvec3dVIcbJlniZvptAkIiLn4p//hO++s96cCwiwuxopTlp7TkRE5Dx9/bU1geUHHygwlQfqacpDPU0iIlIY2dnQujUEBcGqVVDIUSBSiqmn6YTY2FhiY2PJ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D01uKSLe6M8/rQHfu3bBRx9B9+52VyRS/qinSUTEy61bBzfeCH5+1pIozZvbXZFI+aQxTSIiXuyjj6BrV2jY0ApPCkwi9lFoEhHxQsbA009bE1XedBN88w0EB9tdlUj5VmKhadWqVfTp04ewsDAcDgcLFizwOG6MYeLEiYSFheHn50fXrl3ZsmWLR5vU1FSio6NxOp04nU6io6NJS0vzaLN582a6dOmCn58fderU4cknn0TDtkSkNMnMhDvugEcfhSeegA8+gCpV7K5KREosNGVkZNCqVSumTZtW4PHnnnuOl156iWnTprFhwwZCQ0O5/vrrOXTokLvNgAEDiI+PZ8mSJSxZsoT4+Hiio6Pdx9PT07n++usJCwtjw4YNTJ06lRdeeIGXXnqp2O9PRKQo7N8P114LH38Mc+bAY49pDTkRr2FsAJj58+e7f338+HETGhpqJk+e7N539OhR43Q6zWuvvWaMMWbr1q0GMHFxce42a9euNYD55ZdfjDHGTJ8+3TidTnP06FF3m5iYGBMWFmaOHz9eqNpcLpcBjMvluqB7FBE5V1u3GtOwoTHBwcasWWN3NSKSl1eMadqxYwfJycl069bNvc/X15cuXbqwZs0aANauXYvT6aT9KesEdOjQAafT6dGmS5cu+Pr6utt0796dvXv3snPnzpK5GRGR87BsmbUkip+fNeA7KsruikQkL68ITcnJyQCEhIR47A8JCXEfS05OJriAUZDBwcEebQq6xqmfkVdmZibp6ekem4hISXrtNejZ0wpKa9bAJZfYXZGIFMQrQlMuR54H98YYj315jxemjTkxCLygcwFiYmLcA8udTif16tU77/pFRM5FTg488AAMHWptn32mJVFEvJlXhKbQ0FAgf29QSkqKu6coNDSUffv25Tt3//79Hm0Kugbk78XKNX78eFwul3tLTEy8sJsRESmEQ4egXz949VWYOtXaKmm6YRGv5hWhqUGDBoSGhrJs2TL3vqysLFauXEnHjh0BiIqKwuVysX79enebdevW4XK5PNqsWrWKrKwsd5ulS5cSFhbGJafp7/b19SUwMNBjExEpTomJ0LkzrFwJixbBiBF2VyQihVFioenw4cPEx8cTHx8PWIO/4+Pj+fPPP3E4HIwePZpJkyYxf/58EhISGDx4MFWrVmXAgAEANG3alB49ejBkyBDi4uKIi4tjyJAh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tWsXgwcPplq1ah7HfHx8aNKkCXXq1LGpuqKh0CQiIiLFqk6dOvzyyy92l3HB9Hguj4CAAFwuFwGaVElEREROodCUh8PhIDAwEIfmGRARETmrmTNn4nA42LVrFwANGjTA4XC4txUrVpxxIHhuO4D58+fTsWNHLrroIkJCQhg0aBDJycnutu+88w4RERH4+/sTHBzMfffdh8vlOm1tu3fvZtSoUTRu3Bg/Pz+qVavG1Vdfzf/+97/zuleFJhERETlvISEhdOrUCV9fXwDatm1Lp06d3JvT6SzUdaZOncpNN91EYmIijRo1wuVy8d5773Httddy9OhR7r//fu68807S0tJo0KABqampvP7669x4440UNHvSypUrCQ8PZ+rUqezevZvLLruMwMBAVqxYwT//+U/GjRt37jdrRERERC5Q/fr1DWB27NiR79iOHTsMYOrXr5/vGGAA4+/vb2bPnu3en5iYaBo1amQA069fP+N0Os1XX33lPv7TTz+ZoKAgA5jFixd7XHPPnj0mKCjIOBwOM2nSJHP06FH3se+++87UqVPHAOazzz47p3tUT5OIiIjY7u677+b22293/7pu3br8+9//BmDBggVMnDiRa6+91n28RYsW3HPPPQAsWbLE41ovvvgiBw8eZPTo0YwfP97dCwbQsWNHXnvtNQBefvnlc6pRoUlERERsd9ddd+Xb17p1a/fP77zzznzHr7jiCgD++OMPj/3z5s0DrCBWkB49elC5cmXWrFnDsWPHCl2jphwQERER21166aX59tWqVcv9Y0FLm+UeP3z4sHvf4cOH2blzJ4C7J+p0jh49yoEDBwgJCSlUjQpNIiIiYruqVavm25f7Vl1Bx049bk4ZCH7q23TffffdWT/3yJEjha5RoUlERETKjIsuusj986ysLHx8fIrs2hrTJCIiIhfMW+Y3dDqdhIWFAbBly5YivbZCk4iIiFwwPz8/4NwedxWXm266CbDWwytKCk0iIiJywRo2bAhYk0ra7aGHHiIoKIh3332XMWPGkJaW5nH84MGDvP322zz99NPndN1yNabJGMOhQ4fsLkNERMSrBQQEnPPjtltvvZVFixYxdOhQYmNjqVGjBmD19lSrVq04yjytunXrsnDhQvr168fLL7/MtGnTuPzyy6latSr79+9nx44dGGO49dZbz+m65So0HTp0qNDTuYuIiJRX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" } }, "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": true, "editable": true }, "source": [ "Whether you’re plotting a list of numbers using `list_plot()` or a mathematical\n", "function using `plot()`, you can label the axes of the plot using the\n", "`axes_labels` plotting option.\n", "\n", "
\n", " Example 2. Adding axes labels to our plot of bacteria population sizes.\n", " \n", "```\n", "list_plot(bacteria, axes_labels=[\"time\", \"population\"])\n", "```\n", "\n", "
\n", " \n", "Notice that axes_labels is a variable that we set equal to a list of labels.\n", "In SageMath, square brackets always mean that a list is involved.\n", "Another feature of list_plot is the ability to connect the points of the list\n", "together. This is accomplished by using the plotjoined option:\n", "
\n", "Example 3. Making the bacteria graph plot joined and adding axes labels:\n", " \n", "```\n", "list_plot(bacteria, axes_labels=[\"time\",\"population\"],plotjoined = True)\n", "```\n", "\n", "
\n", "\n", "Note that the value of `plotjoined` is either `True` or `False`. This type of data\n", "is called a boolean. You will learn more about this data type in the future.\n", "Now that we know how to label axes and join points, we should do so whenever\n", "it is reasonable to do so. We should join points whenever we want to see a\n", "curve. Labeling axes is a good way to keep track of which values correspond to\n", "which axes, especially when we plot lists against each other." ] }, { "attachments": { "lab2_ll_f4.png": { "image/png": "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vHhxlEql2LRpU4smo90GBgbi8ccfj9/+9rcxa9asosdhjJzovr7//vtx6aWXxtVXXx2rV69u4YS0w9GjR+O1116LgwcPxtDQUPz85z+PrVu3jmk0ucIEH6G/v9//8xxHvve978WmTZti8+bNYmkcOZl9nTBhQtRqNd/n48Rpp50Wn/rUp+Kyyy6LwcHBuPjii+OnP/3pmK4hmOAj7Ny5M3p7e4seg5OU53l897vfjUceeSR+85vfxJw5c4oeiTEwFvua53ns2rXL9/k4led5NJvNMX3PSWP6bqeYw4cPx8svvzz8+NVXX41du3bFWWedFeeee26Bk3EyUvu6YsWK2LdvX6xfvz4iIu67774477zzYsGCBXH06NHYsGFDDA0NxdDQUFFfAmNkYGAgHnroofjFL34RU6dOjf3790dERKVSidNPP73g6ThRI9nX2267LWbOnBmDg4MREbFq1aro7++PefPmRZZlsXr16ti1a1fU6/XCvg7Gxg9+8IP40pe+FH19fXHo0KHYuHFjbNmyJX71q1+N7UJ5F9u8eXMeEX93LFmypOjROAmpfV2yZEl+zTXXDJ9/77335nPnzs0nT56cn3nmmflVV12VP/7448UMz5j6qP8dRET+4IMPFj0aJ2Ek+3rNNdcc8+/ypUuX5ueee25+2mmn5dOnT8+vv/76/Jlnnmn/8Iy5b3zjG/ns2bOH93bRokX5U089NebruOkbACDBPUwAAAmCCQAgQTABACQIJgCABMEEAJAgmAAAEgQTAECCYAIASBBMAAAJggkAIEEwAQAk/DcsH8odEEym/AAAAABJRU5ErkJggg==" } }, "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "However, `list_plot` requires a list of points, not two lists of numbers, as\n", "input. To avoid typing long lists of points and all the required parentheses by\n", "hand, we turn to the function `zip`. This function takes two lists and turns them\n", "into a list of ordered pairs. (It can also take more than two lists and turn them\n", "into a list of $n$-tuples.) Actually, for reasons that are beyond the scope of this\n", "class, we have to next apply the `list` function to the output of `zip`. For example:\n", "```\n", ">>list(zip([1,2,3], [4,5,6]))\n", "[(1, 4), (2, 5), (3, 6)]\n", ">>list(zip([1,2,3], [4,5,6], [7,8,9]))\n", "[(1, 4, 7), (2, 5, 8), (3, 6, 9)]\n", "```\n", "This is the kind of input that `list_plot` needs. It’s common to nest the `list(zip())`\n", "command inside the list_plot command, as below.\n", "```\n", ">>list_plot(list(zip([1,2,3], [4,5,6])))\n", "```\n", "This means the same thing as:\n", "```\n", ">>pairs = list(zip([1,2,3], [4,5,6]))\n", ">>list_plot(pairs)\n", "```\n", "\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": true, "editable": true }, "source": [ "
\n", " Exercise 14. You are studying populations of hippos and crocodiles in a river\n", "in Africa. Over five years, the hippo population at your study site has been 62,\n", "81, 75, 90 and 67. In the same years, the crocodile population has been 20, 34,\n", "18, 25 and 31. Plot the system’s states in hippo-crocodile space, labeling your\n", "axes appropriately and making the points red.\n", "
" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "hippos=[62,81,75,90,67]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "crocodiles=[20,34,18,25,31]" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "hc=zip(hippos,crocodiles)" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "collapsed": false }, "outputs": [ { "ename": "TypeError", "evalue": "'zip' object is not subscriptable", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/plot/plot.py\u001b[0m in \u001b[0;36mlist_plot\u001b[0;34m(data, plotjoined, **kwargs)\u001b[0m\n\u001b[1;32m 3007\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrings\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mall\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mRDF\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3008\u001b[0;31m \u001b[0mRDF\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\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[0m\u001b[1;32m 3009\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0menumerate\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[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: 'zip' object is not subscriptable", "\nDuring handling of the above exception, another exception occurred:\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[0;32m----> 1\u001b[0;31m \u001b[0mlist_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mhc\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m30\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes_labels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"hippos\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"crocodiles\"\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[0m", "\u001b[0;32m/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/misc/decorators.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 491\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'__original_opts'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 492\u001b[0m \u001b[0moptions\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 493\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0moptions\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 494\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 495\u001b[0m \u001b[0;31m#Add the options specified by @options to the signature of the wrapped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/plot/plot.py\u001b[0m in \u001b[0;36mlist_plot\u001b[0;34m(data, plotjoined, **kwargs)\u001b[0m\n\u001b[1;32m 3016\u001b[0m \u001b[0;31m# So, the only other check we need to do is whether data[0] is an\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3017\u001b[0m \u001b[0;31m# element of the Symbolic Ring.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3018\u001b[0;31m \u001b[0;32mif\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;32min\u001b[0m \u001b[0msage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msymbolic\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mring\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSR\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 3019\u001b[0m \u001b[0mdata\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlist\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0menumerate\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[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3020\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: 'zip' object is not subscriptable" ] } ], "source": [ "list_plot(hc, size=30, axes_labels=[\"hippos\", \"crocodiles\"])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "The `zip` function is very helpful in plotting time series graphs. All you\n", "need to do is make a list of time values and `zip` it with the values of your state\n", "variable. It is usually used together with the `list` function which converts the output of `zip` into a list. \n", "
\n", "Exercise 15. The list in Exercise 10 gives the size of a population of bacteria\n", "at one-hour intervals. Since one hour is 1/24 of a day, create a list of time points\n", "for these observations with time in days. Then, plot a time series graph of the\n", "population.\n", "
" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "bacteria=[100,200,400,800,1600,3200]" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "time=[1/24, 2/24, 3/24, 4/24, 5/24, 6/24]" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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hCYAAAALCE0AAAAWEJoAAAAsIDSdweKWAACgMSxu6YbFLQEAgCeMNAEAAFhAaAIAALCA0AQAAGBBswlNqampstlsLi+Hw2HuNwxDqampCgsLU9u2bTV48GDt3r3b5Ry1tbWaMWOGOnfuLH9/fyUlJam4uLipLwUAALRAzSY0SdJtt92mkpIS87Vz505z34IFC/Tqq68qPT1dBQUFcjgcGj58uI4fP27WpKSkKCsrS5mZmcrLy1NVVZUSExNVX1/vjcsBAAAtiI+3GziXj4+Py+jSWYZhaNGiRXr++ec1duxYSdI777yjkJAQrVy5Uo899picTqfeeustvffeexo2bJgk6f3331d4eLg++eQTjRgxokmvBQAAtCzNaqRp//79CgsLU2RkpB588EF99913kqQDBw6otLRUCQkJZq2fn58GDRqkzZs3S5J27NihkydPutSEhYUpOjrarPGktrZWlZWVLi8AAAB3zSY0xcXF6d1339XHH3+sN954Q6WlpRowYICOHTum0tJSSVJISIjLMSEhIea+0tJS+fr6qmPHjuet8SQtLU12u918hYeHX+ErAwAALUGzCU2jRo3SuHHj1Lt3bw0bNkxr166VdPpruLNsNpvLMYZhNNjm7kI1c+fOldPpNF9FRUWXcRUAAKClajahyZ2/v7969+6t/fv3m/Oc3EeMysrKzNEnh8Ohuro6lZeXn7fGEz8/PwUGBrq8AAAA3DXb0FRbW6u9e/cqNDRUkZGRcjgcysnJMffX1dUpNzdXAwYMkCTFxMSodevWLjUlJSXatWuXWQMAAHCpms3Tc3PmzNHo0aN10003qaysTPPmzVNlZaUmTpwom82mlJQUzZ8/X927d1f37t01f/58tWvXThMmTJAk2e12TZ48WbNnz1anTp0UFBSkOXPmmF/3AQAAXI5mE5qKi4v10EMP6ccff1SXLl3Uv39/5efnKyIiQpL0zDPPqKamRk8++aTKy8sVFxen9evXKyAgwDzHwoUL5ePjowceeEA1NTUaOnSoli9frlatWnnrsgAAQAthMwzD8HYTzUllZaXsdrucTifzmwAAgKnZjDQBuHzvvSd9/bWUmCj17+/tbgCgZWm2E8EBXJwXXpAeeUR68UXpnnukrVu93REAtCyEJqCFWL3633+fPCmdWeoMAHCFEJrOyMjIUFRUlGJjY73dCnBJfvGLxt8DAC4PE8HdMBEc16rycmn69NNzmsaMkf7f//N2RwDQshCa3BCaAACAJ3w9BwAAYAGhCQAAwAJCEwAAgAWEJgAAAAsITQAAABYQmgAAACwgNJ3B4pYAAKAxrNPkhnWaAACAJ4w0AQAAWEBoAgAAsIDQBAAAYAGhCQAAwAJCEwAAgAWEJjSZ776TBg2SbrlF+sMfvN0NAAAXhyUH3LDkwNUzcKD02Wf/fv/hh1Jiovf6AQDgYjDSdAaLW159hw65vj940CttAABwSRhpcsNI09Uzd6700kun/+7YUdqxQ4qM9G5PAABYRWhyQ2i6uv7+d+n776X77js9twkAgGuFj7cbwPVl3DhvdwAAwKVhThMAAIAFhCYAAAALCE0AAAAWEJrOceKEtGjR6b/37vVuLwAAoHnh6blz/OY30urVlZLsCgx0aufOQN10k7e7AgAAzQEjTedYt+7ff1dWSps3e68XAADQvBCazsjIyNANN0RJOr0i+A03SL16ebcnAADQfPD13Dm+/16aPr1SH35o17JlTk2axOKWAADgNEKTG1YEBwDgyjp48KAiIyMVERGhg9fwD4/y9RwAALhsixYtUmpqqioqKrzdylXDz6gAAIDLtmjRIh06dEiTJk1Shw4dXPa1bt1aPXv21I033uil7q4MQhMAALiqbrzxRu3bt8/bbVw2vp5zExAQIKfTqYCAAG+3AgAAmhFCkxubzabAwEDZbDZvtwIAQLO3fPly2Ww2HTp0SJIUGRkpm81mvjZu3KiDBw/KZrPp5ptvbnD82TpJysrK0oABA9S+fXuFhIRo4sSJKi0tNWuXLVummJgY+fv7Kzg4WI8//ricTud5eysuLtbMmTPVo0cPtW3bVh06dNCQIUP0v//7v5d0rYQmAABwyUJCQnT33XfLz89PktSvXz/dfffd5stut1s6z2uvvaaxY8eqqKhI3bp1k9Pp1LvvvquhQ4fqxIkTeuqpp/Too4+qoqJCkZGRKi8v19KlS3XffffJ00IAubm5io6O1muvvabi4mJ1795dgYGB2rhxo/7jP/5Dc+bMufiLNQAAAC5TRESEIck4cOBAg30HDhwwJBkREREN9kkyJBn+/v7GypUrze1FRUVGt27dDEnGmDFjDLvdbnzyySfm/q+++soICgoyJBnr1q1zOecPP/xgBAUFGTabzZg/f75x4sQJc99nn31m3HjjjYYk48MPP7yoa2SkCQAAeN1vf/tbPfTQQ+b7rl276umnn5YkrV69WqmpqRo6dKi5v3fv3po6daokKTs72+Vcr7zyin766SelpKRo7ty55iiYJA0YMEB/+tOfJEkLFy68qB4JTQAAwOsmT57cYNvtt99u/v3oo4822H/HHXdIkr777juX7atWrZJ0Ooh5MnLkSPn6+mrz5s06deqU5R5ZcgAAAHjdrbfe2mBbly5dzP/09CsdZ/dXVVWZ26qqqsxVx8+ORJ3PiRMndOzYMYWEhFjqkdAEAAC8rl27dg22nX2qztO+c/cb50wEP/dpus8+++yCn1tTU2O5R0ITAABoMdq3b2/+XVdXp9atW1+xczOnCQAAXLbmsr6h3W5XWFiYJGn37t1X9NyEJgAAcNnatm0r6eK+7rpaxo4dK+n07+FdSYQmAABw2W655RZJpxeV9LZnn31WQUFBeueddzRr1ixVVFS47P/pp5/09ttva968eRd13utqTpNhGDp+/Li32wAAoFkLCAi46K/bxo8fr7Vr1+qJJ55QRkaGOnXqJOn0aE+HDh2uRpvn1bVrV61Zs0ZjxozRwoULlZ6erl/84hdq166djh49qgMHDsgwDI0fP/6izntdhabjx49bXs4dAIDrldPp9PiIf2OSk5NVXl6ut956S/v379euXbskSRUVFU0emiTp7rvv1p49e7R48WL94x//0L/+9S/V19frxhtv1MiRIzV69GjzazyrbIbh4QdbWigrI02VlZUKDw9XUVHRRf8D4y42NlYFBQVeP0dzOk9zu79X6jzNpRfu79U9D/f36p/nSt3j5nRNzakXq/f3UkaargfX1UiTzWaz/D/CwMDAy/4/xVatWjWLczTH8zSX+3ulztOcepG4v1f7PNzfq3se6fLvcXO6pubUy1lX4p/h6xETwa+iadOmNYtzNMfzXAnN6ZqaUy9XSnO6pubUy5XSnK6pOfVypTSna2pOveDyXFdfz1lRWVkpu91+Sd/n4sK4v1cX9/fq4v5efdzjq4v7e3lapaampnq7ieamVatWGjx4sHx8rqtvL5sM9/fq4v5eXdzfq497fHVxfy8dI00AAAAWMKcJAADAAkITAACABYQmAAAACwhNAAAAFhCa3CxZskSRkZFq06aNYmJi9M9//tPbLbUImzZt0ujRoxUWFiabzabVq1d7u6UWJS0tTbGxsQoICFBwcLDGjBmjr7/+2ttttRivv/66+vTpYy4IGB8fr48++sjbbbVYaWlpstlsSklJ8XYrLUJqaqpsNpvLy+FweLutaxKh6Rx//etflZKSoueff15ffPGFfvnLX2rUqFH6/vvvvd3aNa+6ulp9+/ZVenq6t1tpkXJzczVt2jTl5+crJydHp06dUkJCgqqrq73dWovQtWtXvfTSS9q+fbu2b9+ue++9V/fdd592797t7dZanIKCAv35z39Wnz59vN1Ki3LbbbeppKTEfO3cudPbLV2TWHLgHHFxcbrzzjv1+uuvm9t69eqlMWPGKC0tzYudtSw2m01ZWVkaM2aMt1tpsY4eParg4GDl5ubqnnvu8XY7LVJQUJD++7//W5MnT/Z2Ky1GVVWV7rzzTi1ZskTz5s3T7bffrkWLFnm7rWteamqqVq9ercLCQm+3cs1jpOmMuro67dixQwkJCS7bExIStHnzZi91BVwap9Mp6fS/2HFl1dfXKzMzU9XV1YqPj/d2Oy3KtGnT9Otf/1rDhg3zdistzv79+xUWFqbIyEg9+OCD+u6777zd0jWJ5UDP+PHHH1VfX6+QkBCX7SEhISotLfVSV8DFMwxDs2bN0sCBAxUdHe3tdlqMnTt3Kj4+XidOnFD79u2VlZWlqKgob7fVYmRmZurzzz9XQUGBt1tpceLi4vTuu++qR48eOnLkiObNm6cBAwZo9+7d6tSpk7fbu6YQmtzYbDaX94ZhNNgGNGfTp0/XV199pby8PG+30qL07NlThYWFqqio0N///ndNnDhRubm5BKcroKioSE899ZTWr1+vNm3aeLudFmfUqFHm371791Z8fLxuvfVWvfPOO5o1a5YXO7v2EJrO6Ny5s1q1atVgVKmsrKzB6BPQXM2YMUNr1qzRpk2b1LVrV2+306L4+vqqW7dukqR+/fqpoKBAixcv1tKlS73c2bVvx44dKisrU0xMjLmtvr5emzZtUnp6umpra9WqVSsvdtiy+Pv7q3fv3tq/f7+3W7nmMKfpDF9fX8XExCgnJ8dle05OjgYMGOClrgBrDMPQ9OnTtWrVKm3YsEGRkZHebqnFMwxDtbW13m6jRRg6dKh27typwsJC89WvXz89/PDDKiwsJDBdYbW1tdq7d69CQ0O93co1h5Gmc8yaNUvJycnq16+f4uPj9ec//1nff/+9Hn/8cW+3ds2rqqrSt99+a74/cOCACgsLFRQUpJtuusmLnbUM06ZN08qVK/XBBx8oICDAHDG12+1q27atl7u79j333HMaNWqUwsPDdfz4cWVmZmrjxo3Kzs72dmstQkBAQIP5d/7+/urUqRPz8q6AOXPmaPTo0brppptUVlamefPmqbKyUhMnTvR2a9ccQtM5xo8fr2PHjukPf/iDSkpKFB0drXXr1ikiIsLbrV3ztm/friFDhpjvz36PPnHiRC1fvtxLXbUcZ5fJGDx4sMv2ZcuWadKkSU3fUAtz5MgRJScnq6SkRHa7XX369FF2draGDx/u7daACyouLtZDDz2kH3/8UV26dFH//v2Vn5/Pv9suAes0AQAAWMCcJgAAAAsITQAAABYQmgAAACwgNAEAAFhAaAIAALCA0AQAAGABoQkAAMACQhMAAIAFhCYAAAALCE0AAAAWEJoAAAAsIDQBAABY8P8BbdKhqbTXA0MAAAAASUVORK5CYII=", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 40, "metadata": { }, "output_type": "execute_result" } ], "source": [ "list_plot(bacteria, axes_labels=[\"time\", \"population\"])" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "Having developed some basic tools, we will now use them to work with\n", "real data. Your worksheet contains lists called `wt5_time`, `wt5_heartrate` and\n", "`wt5_temp`. These lists contain heart rate and body temperature data for a wild\n", "type (control) rat, measured over 72 hours as part of a real study of circadian\n", "rhythms.\n", "
\n", "Exercise 16. Plot time series of the rat’s heart rate and body temperature,\n", "using different colors. Make sure the plot uses the given time values, not just 0,\n", "1, 2.... and that your axes are labeled.\n", " \n", "Exercise 17. Compare the plots and describe any relationships you observe.\n", " \n", "Exercise 18. Plot the data as a trajectory in temperature-heart rate space.\n", "Make sure to label your axes.\n", "
" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'wt5_heartrate' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlist_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwt5_heartrate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes_labels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"time\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rate\"\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[0m", "\u001b[0;31mNameError\u001b[0m: name 'wt5_heartrate' is not defined" ] } ], "source": [ "list_plot(wt5_heartrate, axes_labels=[\"time\", \"rate\"])" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'wt5_temp' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mlist_plot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mwt5_temp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxes_labels\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"time\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"rate\"\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[0m", "\u001b[0;31mNameError\u001b[0m: name 'wt5_temp' is not defined" ] } ], "source": [ "list_plot(wt5_temp, axes_labels=[\"time\", \"rate\"])" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "### For loops\n", "\n", "Suppose you wanted to print out a series of sentences listing your favorite foods.\n", "You might use the print command and write:\n", "```\n", "print(\"Pizza is one of my favorite foods.\")\n", "print(\"Chocolate is one of my favorite foods.\")\n", "print(\"Green curry is one of my favorite foods.\")\n", "```\n", "This works, but it’s rather tedious, especially if you like many kinds of food.\n", "A shortcut would be useful.\n", "\n", "Looking at the example, you can see that the `print` command and the string\n", "\" is one of my favorite foods.\" are the same in every line. The only thing that\n", "changes is the name of the food. It would be convenient if we could just make\n", "a list of the foods and insert them into the code one at a time.\n", "\n", "We can do this using something called a *for loop*. One way to handle the\n", "foods example with a for loop is the following:\n", "```\n", "favorites = [\"Pizza\", \"Chocolate\", \"Green curry\"]\n", "for food in favorites:\n", " print(food + \" is one of my favorite foods.\")\n", "```\n", "In this example, `food` is a variable that takes on the value \"Pizza\" the\n", "first time the computer executes the statement print food + \" is one of\n", "my favorite foods.\", \"Chocolate\" the second time and \"Green curry\" the\n", "third time.\n", "\n", "
\n", "Exercise 19. Print out sentences listing five of your favorite books, songs or\n", "movies using a for loop.\n", "
" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "favorites=[\"Night\", \"Say Sorry\", \"Say Hellow\", \"Feathersome\", \"Hello\"]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Nightis one of my favorite songs\n", "Say Sorryis one of my favorite songs\n", "Say Hellowis one of my favorite songs\n", "Feathersomeis one of my favorite songs\n", "Hellois one of my favorite songs\n" ] } ], "source": [ "for songs in favorites:\n", " print(songs + \"is one of my favorite songs\")" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": true, "editable": true }, "source": [ "More generally, a for loop in SageMath (or Python) has the form:\n", "```\n", "for var in list:\n", " loop body\n", "```\n", "The loop body must be indented. After the loop body, go back to your\n", "previous level of indentation.\n", "\n", "\n", "**Example 4.** A string is similar in most ways to a list. This loop will print\n", "each character in the word “dynamics” on a separate line.\n", "```\n", ">>for char in \"dynamics\":\n", ">> print(char)\n", "d\n", "y\n", "n\n", "a\n", "m\n", "i\n", "c\n", "s\n", "```\n", "\n", "\n", "As you can see, the variable given immediately after the word for takes on\n", "the value of each list element in turn. First char was \"d\", then it was \"y\", then\n", "\"n\", and so on. This is the key to how SageMath for loops work. The body\n", "of the loop is executed for each element in the list. The body stays the same,\n", "while the list element changes. When writing loops, think about what should\n", "stay the same and what should change.\n", "\n", "**Example 5.** The following loop computes the base-10 logarithm of 10, 100,\n", "and 1000 in SageMath:\n", "```\n", ">>for val in [10, 100, 1000]:\n", ">> print(log(val, 10))\n", "1\n", "2\n", "3\n", "```\n", "\n", "\n", "
\n", "Exercise 20.Use a for loop to print your name vertically.\n", " \n", "Exercise 21. Use a for loop to square the numbers 15, 27, 39 and 84.\n", " \n", "```\n", "225\n", "729\n", "1521\n", "7056\n", "```\n", "\n" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false, "deletable": false, "editable": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A\n", "n\n", "d\n", "r\n", "e\n", "w\n" ] } ], "source": [ "for char in \"Andrew\":\n", " print(char)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "225\n", "729\n", "1521\n", "7056\n" ] } ], "source": [ "for char in [15,27,39,84]:\n", " print(char^2)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "## Things to Do with Lists and Loops\n", "\n", "### Using loops to make lists\n", "\n", "In the previous exercises, you used loops to output values. Often, it is useful to\n", "store these values in a list.\n", "\n", "To start, you’ll need to create a list with no elements. (Think of this as\n", "tearing out a piece of paper and titling it “Groceries” when making a shopping\n", "list.) To make such an empty list, enter `listname = []`. Then, use\n", "`listname.append()` to add computed values to your list.\n", "\n", "**Example 6.** This code makes a list of the first ten multiples of 2.\n", "```\n", ">>mult2 = [] #Set up empty list\n", ">>for n in [1,2,3,4,5,6,7,8,9,10]:\n", ">> mult2.append(2*n) #Compute the n’th multiple of 2 and append to list\n", ">>mult2 #Display the list\n", "[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]\n", "```\n", "
\n", "Exercise 22. Make a list containing the first five multiples of 3.
\n", "[3, 6, 9, 12, 15]\n", " \n", "Exercise 23. Write a loop that makes a list of the squares of the numbers 0.1,\n", "0.2, $\\dots$, 0.7. Then, plot your list.\n", " \n", "[0.0100000000000000, 0.0400000000000000, 0.0900000000000000,\n", "0.160000000000000, 0.250000000000000, 0.360000000000000,\n", "0.490000000000000]\n", " \n", "Exercise 24. Create a function and apply it to the numbers 0 through 5,\n", "inclusive. Plot the list of resulting values.\n", "
" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "mult3=[]\n", "for n in [1,2,3,4,5]:\n", " mult3.append(3*n)" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[3, 6, 9, 12, 15]" ] }, "execution_count": 57, "metadata": { }, "output_type": "execute_result" } ], "source": [ "mult3" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ "sqr=[]\n", "for n in [0.1,0.2,0.3,0.4,0.5,0.6,0.7]:\n", " sqr.append(n^2)" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[0.0100000000000000,\n", " 0.0400000000000000,\n", " 0.0900000000000000,\n", " 0.160000000000000,\n", " 0.250000000000000,\n", " 0.360000000000000,\n", " 0.490000000000000]" ] }, "execution_count": 59, "metadata": { }, "output_type": "execute_result" } ], "source": [ "sqr" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAksAAAGGCAYAAABrI8X1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi41LCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvSM8oowAAHdNJREFUeJzt3X2QVmd5P/DvZnGXBMPahLAlZsEdGxNe8sYuQ5YUNRJ3Bp1M0BnFpiVpa6fSITaU2hrKTIuMdZ2qY+wI1HWmttgmwTYxTVtisk4SQqQdky3YTHxparRL6VICGjbBzmKW5/cH4/pbgSMP7HKeXT6fmTPZc3NerufAJN9cz+G+6yqVSiUAAJzQeWUXAABQy4QlAIACwhIAQAFhCQCggLAEAFBAWAIAKCAsAQAUEJYAAAoISwAABYQlAIACpxWWNm3alNbW1kyePDltbW3ZsWPHSY994oknUldXd9z27W9/+7SLBgA4W6oOS1u3bs3q1auzbt267Nq1K4sXL87SpUvT19dXeN53vvOd9Pf3D2+XX375aRcNAHC21FW7kO7ChQszf/78bN68eXhs9uzZWbZsWbq6uo47/oknnsiNN96YH/7wh3nd61535hUDAJxFVXWWjhw5kt7e3nR2do4Y7+zszM6dOwvPve666zJjxowsWbIkjz/+eOGxg4ODGRgYGLENDg5WUyoAwKioKiwdOHAgQ0NDaW5uHjHe3Nycffv2nfCcGTNmpLu7O/fff38eeOCBXHHFFVmyZEmefPLJk96nq6srTU1NI7b169enyiYYAMAZq+pruP/5n//J61//+uzcuTMdHR3D43/6p3+aL37xi6f80vbNN9+curq6PPTQQyf89cHBwRGdpIGBgbS0tOTQoUOZOnXqqZYLAHDGquosTZs2LfX19cd1kfbv339ct6nI9ddfn+eff/6kv97Y2JipU6eO2AAAylBVWGpoaEhbW1t6enpGjPf09GTRokWnfJ1du3ZlxowZ1dwaAKAUk6o9Yc2aNVmxYkXa29vT0dGR7u7u9PX1ZeXKlUmStWvXZu/evdmyZUuS5O67784b3vCGzJ07N0eOHMnf/M3f5P7778/9998/up8EADjn/Nd/JS+/nMydm9TVjc09qg5Ly5cvz8GDB7Nhw4b09/dn3rx52bZtW2bNmpUk6e/vHzHn0pEjR/KhD30oe/fuzfnnn5+5c+fmn//5n/OOd7xj9D4FAHDO+fSnk9///aRSSW65JXnggeS8MVibpOp5lsowMDCQpqYmL3gDAEmSV19NLrgg+fGPfzr21a8mS5aM/r2sDQcAjDt1dcd3kSZV/X3ZqRGWAIBxp74++exnj/0zSVasSN785rG5l6/hAIBx6wc/SA4fTlpaxu4eY9SwAgAYexdddGwbS76GAwAoICwBABQQlgAACtR0WNq4cWPmzJmTBQsWlF0KAHCO8rfhAAAK1HRnCQCgbMISAEABYQkAoICwBABQQFgCACggLAEAFBCWAAAKCEsAAAWEJQCAAsISAEABYQkAoEBNhyUL6QIAZbOQLgBAgZruLAEAlE1YAgAoICwBABQQlgAACghLAAAFhCUAgALCEgBAAWEJAKCAsAQAUEBYAgAoICwBABSo6bBkIV0AoGwW0gUAKFDTnSUAgLIJSwAABYQlAIACwhIAQAFhCQCggLAEAFBAWAIAKCAsAQAUEJYAAAoISwAABYQlAIACNR2WLKQLAJTNQroAAAVqurMEAFA2YQkAoICwBABQQFgCACggLAEAFBCWAAAKnFZY2rRpU1pbWzN58uS0tbVlx44dp3Te1772tUyaNCnXXnvt6dwWAOCsqzosbd26NatXr866deuya9euLF68OEuXLk1fX1/heYcOHcptt92WJUuWnHaxAABnW9WTUi5cuDDz58/P5s2bh8dmz56dZcuWpaur66Tnve9978vll1+e+vr6PPjgg9m9e/cp39OklABAWarqLB05ciS9vb3p7OwcMd7Z2ZmdO3ee9LwvfOEL+e53v5s/+ZM/Ob0qAQBKMqmagw8cOJChoaE0NzePGG9ubs6+fftOeM7zzz+fu+66Kzt27MikSad2u8HBwQwODg7vDwwMVFMmAMCoOa0XvOvq6kbsVyqV48aSZGhoKLfeems+8pGP5E1vetMpX7+rqytNTU3DW0tLy+mUCQBwxqp6Z+nIkSO54IIL8nd/93d517veNTx+5513Zvfu3dm+ffuI41966aX8wi/8Qurr64fHjh49mkqlkvr6+jz66KN529vedtx9TtRZamlp8c4SAHDWVfU1XENDQ9ra2tLT0zMiLPX09OSWW2457vipU6fm2WefHTG2adOmPPbYY/n7v//7tLa2nvA+jY2NaWxsrKY0AIAx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", "text/plain": [ "Graphics object consisting of 1 graphics primitive" ] }, "execution_count": 60, "metadata": { }, "output_type": "execute_result" } ], "source": [ "list_plot(sqr)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "We can use loops to process data.\n", "
\n", "Exercise 25. The time in wt5_time is measured in hours. Create another list\n", "in which it is given in minutes.\n", " \n", "Exercise 26. Convert the temperatures in wt5_temp from Celsius to Fahrenheit.\n", "(The formula is $F = (9/5) C + 32$.)\n", " \n", "\n", "Exercise 27. Plot a time series of your transformed data.\n", " \n", "Exercise 28. Plot a trajectory of the transformed temperature data and the\n", "original heart rate data.\n", "
\n" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "collapsed": false }, "outputs": [ { "ename": "NameError", "evalue": "name 'wt5_time' is not defined", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mNameError\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 1\u001b[0m \u001b[0mmin\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----> 2\u001b[0;31m \u001b[0;32mfor\u001b[0m \u001b[0mn\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mwt5_time\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 3\u001b[0m \u001b[0mmin\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mn\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m50\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;31mNameError\u001b[0m: name 'wt5_time' is not defined" ] } ], "source": [ "min=[]\n", "for n in wt5_time:\n", " min.append(n*50" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "deletable": false, "editable": false }, "source": [ "## Animations\n", "\n", "When investigating functions and models, it can be useful to animate their\n", "response to changes in parameters. Sage’s animate function allows us to easily\n", "produce such animations.\n", "\n", "Animations are created by showing a series of still images one after the other,\n", "fast enough to create the illusion of motion. The animate function takes a list\n", "of plots as input and animates it.\n", "\n", "**Example 7.** The following code shows how a change in the slope of a line\n", "affects the line’s appearance.\n", "```\n", "plots = [] #Set up empty list to hold plots\n", "slopes = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] #Make a list of slopes\n", "for m in slopes: #For each m in slope, create plot, add to list\n", " p=plot(m*x, (x,-10,10))\n", " plots.append(p)\n", "a=animate(plots) #Create the animation\n", "show(a) #Necessary to display the animation\n", "```\n", "Try this code now. The show command is necessary to view the animation;\n", "it can also be used with other graphics.\n", "\n", "Oops! The code produces an animation all right, but the animation is useless\n", "because it’s the axes, not the line, that move. To stop this from happening, we\n", "can specify maximum and minimum values for $y$, fixing the $y$-axis in place.\n", "\n", "**Example 8.** Fixing the y-axis in an animation\n", "```\n", "plots = [] #Set up empty list to hold plots\n", "slopes = [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5] #Make a list of slopes\n", "for m in slopes: #For each m in slope, create plot, add to list\n", " p=plot(m*x, (x,-10,10), ymin=-50, ymax=50)\n", " plots.append(p)\n", "a=animate(plots) #Create the animation\n", "show(a) #Necessary to display the animation\n", "```\n", "This code produces a useful animated plot.\n", "
\n", "Exercise 29. Change the animation in Example 8 to make the line green rather\n", "than blue.\n", "\n", "Exercise 30. Change the previous animation to make the slope range from -3\n", "to 3 in steps of 0.5.\n", " \n", "Exercise 31. Rewrite the animation in Exercise 29 so that the slope of the line\n", "plotted is always 1 but the $y$-intercept ranges between -5 and 5.\n", "
" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "collapsed": false, "deletable": true, "editable": true, "scrolled": true }, "outputs": [ { "ename": "TypeError", "evalue": "unsupported operand parent(s) for +: 'Integer Ring' and ''", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\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[0mslopes\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'2.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'1.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m-\u001b[0m\u001b[0mInteger\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[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'0.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'0.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'1.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mRealNumber\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'2.5'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;31m#Make a list of slopes\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mm\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mslopes\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m#For each m in slope, create plot, add to list\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mm\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mymin\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m50\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mymax\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mInteger\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m50\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[0m\u001b[1;32m 5\u001b[0m \u001b[0mplots\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mappend\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mp\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[0ma\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0manimate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mplots\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"green\"\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#Create the animation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/rings/integer.pyx\u001b[0m in \u001b[0;36msage.rings.integer.Integer.__add__ (build/cythonized/sage/rings/integer.c:12304)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1801\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1802\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1803\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mcoercion_model\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbin_op\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mleft\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moperator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd\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 1804\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1805\u001b[0m \u001b[0mcpdef\u001b[0m \u001b[0m_add_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mright\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/ext/sage/sage-9.1/local/lib/python3.7/site-packages/sage/structure/coerce.pyx\u001b[0m in \u001b[0;36msage.structure.coerce.CoercionModel.bin_op (build/cythonized/sage/structure/coerce.c:11178)\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1253\u001b[0m \u001b[0;31m# We should really include the underlying error.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1254\u001b[0m \u001b[0;31m# This causes so much headache.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1255\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mbin_op_exception\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mop\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\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 1256\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1257\u001b[0m \u001b[0mcpdef\u001b[0m \u001b[0mcanonical_coercion\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\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;31mTypeError\u001b[0m: unsupported operand parent(s) for +: 'Integer Ring' and ''" ] } ], "source": [ "plots = [] #Set up empty list to hold plots\n", "slopes = [-3, -2.5, -2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5, 3] #Make a list of slopes\n", "for m in slopes: #For each m in slope, create plot, add to list\n", " p=plot(m+x, (x,-5,5), ymin=-50, ymax=50)\n", " plots.append(p)\n", "a=animate(plots, color=\"green\") #Create the animation\n", "show(a) #Necessary to display the animation" ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] }, { "cell_type": "code", "execution_count": 0, "metadata": { "collapsed": false }, "outputs": [ ], "source": [ ] } ], "metadata": { "kernelspec": { "display_name": "SageMath 9.1", "language": "sagemath", "metadata": { "cocalc": { "description": "Open-source mathematical software system", "priority": 10, "url": "https://www.sagemath.org/" } }, "name": "sage-9.1" }, "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }