{ "metadata": { "name": "", "signature": "sha256:c1084350b7f222e7e4f184f84198ae92334c8ebd0fdd2ad2cbca02f80695cc3b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Calculus" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from sympy import *\n", "from IPython.display import display # This, with init_printing(), will let us \"print\" to MathJax\n", "init_printing()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For each exercise, fill in the function according to its docstring. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "x, y, z = symbols('x y z')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Derivatives" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compute the following\n", "\n", "$$ \\frac{d}{dx}\\sin(x)e^x$$\n", "$$ \\frac{\\partial}{\\partial x}\\sin(xy)e^x $$\n", "$$ \\frac{\\partial^2}{\\partial x\\partial y}\\sin(xy)e^x $$\n" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall l'Hopital's rule, which states that if $$\\lim_{x\\to x_0}\\frac{f(x)}{g(x)}$$ is $\\frac{0}{0}$, $\\frac{\\infty}{\\infty}$, or $-\\frac{\\infty}{\\infty}$, then it is equal to $$\\lim_{x\\to x_0} \\frac{f'(x)}{g'(x)}$$ (we will not consider other indeterminate forms here). \n", "\n", "Write a function that computes $\\lim_{x\\to x_0}\\frac{f(x)}{g(x)}$. Use the `fraction` function to get the numerator and denominator of an expression, for example" ] }, { "cell_type": "code", "collapsed": false, "input": [ "fraction(x/y)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{pmatrix}x, & y\\end{pmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAaBAMAAAAd0vJXAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARDKrEM1mIu+Zdrvd\niVTWGHL+AAABRUlEQVQoFX2RPUvDUBSGn7YxbdMP9Re04K4uurjcxalIBadu2QXp4qJo+wu0os4G\numhRWnARBAkOiltWxf/QWgRBRDxpSUksNwduzjnv857LvTfAPLrwfJBc1mEWfLKutNxyBK1qMTxD\nuhnD25BtxfCqIjMXw/M2SzGYbI9L4Qftwysn4jNePRoKc8AKGJ75lHEjvJAY0IXEJ7dQwBoUyxG+\nmHW5l7cbUpN5Ur0IBZVx+JbLf/DiE+n+RV/JLMbvmDfKqKjhHKs5mt8Cs97FUlFHjZz8t/SQNejb\nd+xh/IR3OKVky/m/uIbKzcabjXFcDxkqnQtp5f6liZgIc3gXUNhkthwYzKCQnHKNI0kzDilP8ijC\nPO/lfL1aJ+mOKThBIbnYOfG7bVkPfqGJR9F3NUxksyWf4uQAU8b9kbIzpQfCWVDo8x9x5EPeMJ02\nngAAAABJRU5ErkJggg==\n", "prompt_number": 3, "text": [ "(x, y)" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You may assume that the only indeterminate forms are the ones mentioned above, and that l'Hopital's rule will terminate after a finite number of steps. Do not use `limit` (use `subs`). Remember that after taking the derivatives, you will need to put the expression into the form $\\frac{f(x)}{g(x)}$ before applying l'Hopital's rule again (what function did we learn that does this?)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def lhopital(expr, x, x0):\n", " \"\"\"\n", " Computes limit(expr, x, x0) using l'Hopital's rule.\n", "\n", " >>> lhopital(sin(x)/x, x, 0)\n", " 1\n", " >>> lhopital(exp(x)/x**2, x, oo)\n", " oo\n", " >>> lhopital((x**2 - 4*x + 4)/(2 - x), x, 2)\n", " 0\n", " >>> lhopital(cos(x), x, 0)\n", " 1\n", " >>> lhopital((x + sin(x))/x, x, 0)\n", " 2\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(sin(x)/x, x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(exp(x)/x**2, x, oo)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital((x**2 - 4*x + 4)/(2 - x), x, 2)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(cos(x), x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital((x + sin(x))/x, x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 9 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Integrals" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the mean value of a function on an interval $[a, b]$ can be computed by the formula\n", "\n", "$$\\frac{1}{b - a}\\int_{a}^{b} f{\\left (x \\right )} dx. % Why doesn't \\, work? $$\n", "\n", "Write a function that computes the mean value of an expression on a given interval." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def average_value(expr, x, a, b):\n", " \"\"\"\n", " Computes the average value of expr with respect to x on [a, b].\n", "\n", " >>> average_value(sin(x), x, 0, pi)\n", " 2/pi\n", " >>> average_value(x, x, 2, 4)\n", " 3\n", " >>> average_value(x*y, x, 2, 4)\n", " 3*y\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "average_value(sin(x), x, 0, pi)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "average_value(x, x, 2, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "average_value(x*y, x, 2, 4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function that takes a list of expressions and produces an \"integral table\", like\n", "\n", "1. $$\\int \\sin(x)dx = -\\cos(x) + C$$\n", "2. $$\\int \\cos(x)dx = \\sin(x) + C$$\n", "3. $$\\int e^xdx = e^x + C$$\n", "4. $$\\int \\log(x)dx = x(\\log(x) - 1) + C$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def int_table(exprs, x):\n", " \"\"\"\n", " Produces a nice integral table of the integrals of exprs\n", "\n", " >>> int_table([sin(x), cos(x), exp(x), log(x)], x)\n", " \u2320\n", " \u23ae sin(x) dx = C - cos(x)\n", " \u2321\n", " \u2320\n", " \u23ae cos(x) dx = C + sin(x)\n", " \u2321\n", " \u2320\n", " \u23ae x x\n", " \u23ae \u212f dx = C + \u212f\n", " \u2321\n", " \u2320\n", " \u23ae log(x) dx = C + x\u22c5log(x) - x\n", " \u2321\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "int_table([sin(x), cos(x), exp(x), log(x)], x)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 15 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now use your function to compute the integrals in this Mathematica ad. Remember that the inverse trig functions are spelled like `asin` in SymPy. \n", "\n", "The ad below probably has a typo, because one of the integrals is trivial to compute. Include what you think the integral should be, and see if SymPy can compute that as well." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.core.display import Image \n", "Image(filename='../imgs/Mathematica-ring-a.png') " ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "png": "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\nuM0wEFwX59bt7q7uk6x+DdZgTNZnBsE2hW5DIMK2iSsPLdIaxtS95sEVFsAVu1adFxKickUS4HBr\nd9nEVfaXHD9+vN+V6TxkQrvd67cvjLYMjH+cO3eJxx77CkpNcNddb1xVp2FY9KP8fvT17h6cOn2G\np58+QaNRWzF8PHfuIo895vKyN77xLbzudW9Y8bxLoGJpuFgKKh49epTrrlubATz99AlOnz7D4cMH\nueOOW/y9rW6haLwlz+dXtIxxMcz4H7pfBMH0lhr3WAOytr3hCQnreSi1w2th50OOT4yELmua1SME\nRnewasIL049frKUewQMPPNDXSSsff/RHfzTSDSllhT/+48/xuc89TLvd5YMffP8VDehLX3qExx57\nkve//728+OI8H/rQh0ZauZeGbqU003DPy7ABnTt3kY9+9FP978+du8iXvvQIv/3b/6+R9/ryl92k\nhg984L2cPv0Sv/iLH+5/bimu32q1eOCBB/pGcvbs2b4Yy7333suDDz44Ysi/+qv/PXfffeeKG+nT\nT5/gM5/5PG972xt59NEn+MxnPs8//+f/iPe85+1bukCLor0uzpsdbzdYLEpWCIKJbV/XcjBycXvr\nGc7VT4/3wevpH/J8uX5f/JjH0aNH+52Zx44d48CBA3z4wx/m3nvv5Z577uGP/uiPlhh3jb//93+S\nf/7P/9GaDuHRR5/kM5/5PL/6q7/AnXe8jn/wD/4e9913H5/+9KfHhmj33ntvX+fswIED3H///dx/\n//0jTW7nzl3kV3/1F/j4xz/Mv//3/wt3330Xp703Kh+PPTb43DvuuIUPfOBvc9997+1/7tGjR/mV\nX/mV/nm/733v45Of/CT/7t/9O/bv38+DDz7IF77wBX7lV36l/3OAz33ui6saz0c/+ik+8IGf4P3v\nfy8f//hHaDRqfO5zXwLUlhlQqfO2Ucb18IoSCFQwuekC9Vo+VZYojBPz2G5AoY6UzdGEdQPDrgaI\n3Mq7Vbk4m80m999/P/fddx+//uu/PrYz06mihn21mSs9PvOZz7Nv325OnXqRp57+Hk8++eQy77Le\nx5133k6jMfCob3ub05877TXYhj/39OkXefrpEzz11LPLPrc8v1LaqvxZqZVw77339l9z8803c+ed\nr+f06RdXPK59+3Y7YcW77wKcIs/hw4c4d+4igapvWZ1G646/n5sf5qWCJkFQ3/b1rHWHwAl5GC/w\n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\nRU5ErkJggg==\n", "prompt_number": 16, "text": [ "" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 17 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Limits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that the definition of the derivative of $f(x)$ at $x=x_0$ is $$f'(x_0) = \\lim_{x\\to x_0}\\frac{f(x) - f(x_0)}{x - x_0}.$$ Write a function that computes the derivative using the limit definition, using `limit`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def lim_deriv(expr, x, x0):\n", " \"\"\"\n", " Computes the derivative of expr with respect to x at x0 using the limit definition.\n", "\n", " >>> lim_deriv(x**2, x, 0)\n", " 0\n", " >>> lim_deriv(cos(x*y), x, pi)\n", " -y*sin(pi*y)\n", " \n", " Note that we must use this trick to take the derivative without evaluating at a point.\n", " >>> lim_deriv(exp(x**2), x, y).subs(y, x)\n", " 2*x*exp(x**2)\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "lim_deriv(x**2, x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "lim_deriv(cos(x*y), x, pi)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function you wrote above to compute limits using l'Hopital's rule is very fragile. And even if you try to make it sophisticated, it will still be unable to compute many limits. Try it on the following limits, and see what happens. Then try computing the same limits with `limit`. \n", "\n", "1. $$\\lim_{x\\to 0}\\frac{\\log(x)}{x}$$\n", "2. $$\\lim_{x\\to \\infty}\\frac{2^x}{3^x} \\textbf{Warning: Be sure to save the notebook before you test this one, and be prepared to kill the kernel!}$$\n", "3. $$\\lim_{x\\to \\infty}x\\sin{\\left(\\frac{1}{x}\\right)}$$\n", "4. $$\\lim_{x\\to 1}\\arctan\\left(\\frac{1}{1 - x}\\right)\\; \\text{Remember that $\\arctan$ is called }\\mathtt{atan}\\text{ in SymPy}$$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(log(x)/x, x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "limit(log(x)/x, x, 0)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$-\\infty$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAACMAAAALBAMAAAAHCCkxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRBC774mZMnZU\nZqvpz9EoAAAAeElEQVQIHWNggAHWABBLAMYF0qzp3xsYWKfNbECIsS3g/hQQ5MAggRDayMBwXlWL\ngYFHgEHIGARMGDYwMHB/vwBUAmRAAYiVjymU/gsojlB1Faix8XsAA68ATB8DJwPDPgb/EoaTcBEG\nxpeTLjAwvi+fgBBigLseAP1wHBzUhNGNAAAAAElFTkSuQmCC\n", "prompt_number": 22, "text": [ "-\u221e" ] } ], "prompt_number": 22 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(2**x/3**x, x, oo) XXX: Don't run. This hangs the notebook" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[0;36m File \u001b[0;32m\"\"\u001b[0;36m, line \u001b[0;32m1\u001b[0m\n\u001b[0;31m lhopital(2**x/3**x, x, oo) XXX: Don't run. This hangs the notebook\u001b[0m\n\u001b[0m ^\u001b[0m\n\u001b[0;31mSyntaxError\u001b[0m\u001b[0;31m:\u001b[0m invalid syntax\n" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "limit(2**x/3**x, x, oo)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(x**(1/x**2), x, 0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 24 }, { "cell_type": "code", "collapsed": false, "input": [ "limit(x**(1/x**.5), x, 0)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$0$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAoAAAAOBAMAAADkjZCYAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAEJl2Mt1EzasiVIlm7xEe\nOPwAAABJSURBVAgdY2AQMlZhYGAIYxB1YGAOYGAuYGBtYGB7ycCnwMDyimHeBgaWx2DyNRL5GCz7\nBqSS6yVIF3cAA0MUg6wDA4PQ5hYGAON0EpMbNABcAAAAAElFTkSuQmCC\n", "prompt_number": 25, "text": [ "0" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(x*sin(1/x), x, oo)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "limit(x*sin(1/x), x, oo)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAuxCrdpnvzWYiHG0BAAAAI0lEQVQIHWNgYBBiYGBQ\nnMTAoGwMJBhYSCVYw6ZHAPUxMAAAQGkI1Fjz0FgAAAAASUVORK5CYII=\n", "prompt_number": 27, "text": [ "1" ] } ], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "lhopital(atan(1/(1 - x)), x, 1)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "limit(atan(1/(1 - x)), x, 1)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$- \\frac{\\pi}{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAlBAMAAACno0T/AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRJmrdjJUZrsQ\nie92pBgeAAAApUlEQVQoFWNggAHW/0CQAOMxMIR3Fq4SRHBZJrALFCK4QBY3QwIKX4zBAIUfxfAB\nmc/zh+EHMp/dgOEvMp9pAcNWZP4AsYWMQcCEgR8UHP//09AVjKHaDsjGizGw/0Tm5zAw2CPz3x1g\nyEfWoH+AIR6ZD1RrfwBIIAAHSgAzMDBtQMiBWNGoXPYEVP5UBkYBJBGOAAYuZL7w3bvBSNIM9v//\nf2YAABDvJavRuLWzAAAAAElFTkSuQmCC\n", "prompt_number": 29, "text": [ "-\u03c0 \n", "\u2500\u2500\u2500\n", " 2 " ] } ], "prompt_number": 29 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Series" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Fibonicci sequence is rexcursively defined by \n", "\n", "$$F_0 = 0,$$\n", "$$F_1 = 1,$$\n", "$$F_n = F_{n - 1} + F_{n - 2}.$$\n", "\n", "The first few vales are 0, 1, 1, 2, 3, 5, 8, 13, 21, \u2026\n", "\n", "The Fibonicci sequence has a generating function given by $$s(x) = \\frac{x}{1 - x - x^2}$$ (see http://en.wikipedia.org/wiki/Fibonacci_number#Power_series for a derivation). What this means is that if we expand $s(x)$ as a power series, the coefficients are the Fibonicci numbers, $$s(x) = \\sum_{n=0}^\\infty F_nx^n$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function that uses series to compute the nth Fibonicci number. \n", "\n", "Hint: `expr.coeff(x, n)` will give the coefficient of $x^n$ in an expression. For example" ] }, { "cell_type": "code", "collapsed": false, "input": [ "(1 + 2*x - x**2).coeff(x, 0)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAuxCrdpnvzWYiHG0BAAAAI0lEQVQIHWNgYBBiYGBQ\nnMTAoGwMJBhYSCVYw6ZHAPUxMAAAQGkI1Fjz0FgAAAAASUVORK5CYII=\n", "prompt_number": 30, "text": [ "1" ] } ], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "(1 + 2*x - x**2).coeff(x, 1)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$2$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAOBAMAAAAPuiubAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpnNu0SrdlQQ3e8y\niWbzIQYJAAAAT0lEQVQIHWNgVDIJYGAQY2D/wcCQycCwnoFh9wSG/AAG+wkM+kAJoMgEIMHzF8Rk\ndgCRKiCCPQFENjEwCjDwKDDwCTBI3b2rBVT8//8vBgBR7Q/Fm5CwxAAAAABJRU5ErkJggg==\n", "prompt_number": 31, "text": [ "2" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "(1 + 2*x - x**2).coeff(x, 2)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$-1$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAPBAMAAAAMihLoAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMAIs3dRLsQq3aZ72YDTSHvAAAALklE\nQVQIHWNggIMwOIuBIfUYgpNejsRh4CCTI2QMAiYMZBsAcxDnrEOzYWwwDQBP9Q53CSxxJQAAAABJ\nRU5ErkJggg==\n", "prompt_number": 32, "text": [ "-1" ] } ], "prompt_number": 32 }, { "cell_type": "code", "collapsed": false, "input": [ "def fib(n):\n", " \"\"\"\n", " Uses series expansion and a generating function to compute the nth Fibonnicci number.\n", "\n", " >>> fib(0)\n", " 0\n", " >>> fib(4)\n", " 3\n", " >>> fib(9)\n", " 34\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 33 }, { "cell_type": "code", "collapsed": false, "input": [ "fib(0)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "fib(4)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "fib(9)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note: if you really want to compute Fibonicci numbers, there is a function in SymPy called `fibonicci` that can do this far more efficiently." ] }, { "cell_type": "code", "collapsed": false, "input": [ "[fibonacci(i) for i in range(10)]" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{bmatrix}0, & 1, & 1, & 2, & 3, & 5, & 8, & 13, & 21, & 34\\end{bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAAZBAMAAADK9+SzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAu90iEJl2MkTNq1SJ\nZu8+uZRyAAADV0lEQVRYCe1YPWhTURg9zXtJk7wmleIgODTWQSgFA1KEgvBcHKS0WVKotRoEBYva\nLA5KoQE3lyrooC4BwSGDZnFxaRRE1EAD6iz+gG4VjWK19Xnffa/p+77vDaEKkuIlP/eefOd857x7\n01eCvoEsOnbEB4aQ6Vj32vjIlghgTpws8n3osjmC7RwZntzBoO76wyqFEi+N5xTBaH2KIXC1JRde\nA2llrr7TVbionnoHIiVzD5M0+22G4GCTIUYZs8zuMOLfaFXacWoUQQ7RBoNcbcn1GkgrRg4LBaWw\nSz11gBPAaapoVu7ZFMHhCg+QtBH5RKuWqvhMkcSRJxRAqgEzQzGtLbm6QYiVnp/oVQqxN0pFBxgE\nFrJUErM2AxDjAdLvkfxOqxZFgCQtUKuesgigtSXXbyCsWF6AA1eVmg7wFZhnZ6GdAIkmoiwAxBGS\nAawfdk+BxfIuDj9+fgMRQJHdI1RbD2CsqgBcUrLEDiidCN8VJMoKDozkqZlSYOlO+9fOMMTfXc5V\nVW4DaQW4CaSyJECNaUpWWIB5TptTymR02Sbfpaizm5SohdYWXPWB20Ba6X5aBg7hLwRwJeiIfaRr\ntbrLkFcXHH5gvYsTwnUbyADAuRJqNECBdZGskB2IbmMstVy2ObZUJEgqh9f85PnagqsbSCtAumkV\nWwHgfokbpElY7JAAM4yE/eqEU6U+YKlEytI2jDWCeEdIcgHdQAQwiuhaG8VGgEFgMcskBUv+GYWV\nwz5CMx2bB3gLHKfaY4oyQWg6QAjXbyCsjDdVgAeVyq87GzeyRzCppstSj8Bwd4AWnQde0KIVYG+W\nFOWAG5SWVnluU5q+OJIL3UB/B4iV3iuIfFHOWjeySNX8gPFMwKw+Qia9qboBSJExVH+coUVnEV+l\nRcOw3lHEugarRmk6gOTqBiFWYg0s1IIBzKMzRYy5mVojv3y9YS4H9z56bGWaFkUcx8nQIis/WaVF\n3flKliK4nJ8CpWltydUNIK3gfv6WcvrMmfaPkGf7Usv9+iQeDPBHRW1p6w6yUsMhVjxD+l8Jb9rw\n3gKvqcDcn26yqC2abiErNRxixXO0hQLE/GsceCsE5t50k0Vt0XSHkEqNF7z+8jWwA/LDTkD+B/jX\nuzSCgc7+XWjwN9UKBtQPwW28AAAAAElFTkSuQmCC\n", "prompt_number": 37, "text": [ "[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]" ] } ], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "`series` is nice if you want a fixed power series, but what if you don't know ahead of time how many terms you want? For that, there is the `lseries` method, which returns a generator of series terms. This is more efficient than recomputing the whole series again if you determine you need more terms. Here is an example usage (**Warning**: since series are in general infinite, `lseries` will return an infinite generator. Here we use `zip` to limit the number of terms)." ] }, { "cell_type": "code", "collapsed": false, "input": [ "for term, _ in zip(cos(x).lseries(x, 0), range(10)):\n", " display(term)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$1$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAuxCrdpnvzWYiHG0BAAAAI0lEQVQIHWNgYBBiYGBQ\nnMTAoGwMJBhYSCVYw6ZHAPUxMAAAQGkI1Fjz0FgAAAAASUVORK5CYII=\n", "text": [ "1" ] }, { "latex": [ "$$- \\frac{x^{2}}{2}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAACcAAAAvBAMAAACS3s5rAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRIl2q1SZEGbv\nMrsbSYq4AAAA5ElEQVQoFWNgQAWs86pQBUC8WQyTMAUNGeQvYIieYFjvgCHIwNC/AIugKhYx1gIs\ngluxiLEE8GLafq+jfQGSWsawwrZpDOf//0cSY1jKsHnDYWQBEDuAIZ+hF11wAUMduhCIfwyLIONf\nBi504Y1sHxiy0AQ5fvMdYExAE+R6FhWajSY26LlCxiBgwsD/Hw4+DIyjGWfqOWDYLM7A9gNDEJiy\n7TEEzyxgqMfQr7+AYT6GIFCr/QIggQZ4v6IJgLhMD7AIzsMixoYtwXcyMAqgq+WdwMCNISgcGjoZ\nXSGD/f//n0GCAFRmOfCpSmWyAAAAAElFTkSuQmCC\n", "text": [ " 2 \n", "-x \n", "\u2500\u2500\u2500\u2500\n", " 2 " ] }, { "latex": [ "$$\\frac{x^{4}}{24}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAABYAAAAwBAMAAADnb5cjAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIol2q1SZEGbd7zK7\nzUTvhYErAAAA80lEQVQoFWNggAJeGANIxxfAOez6CDZzPYK9FYmtgGBzCCDYxQwIdlhafgbcTAZ5\nkDlCJqJmBgwc/q4MDOwKHDO4JkDkmRiYP7BugLDZGVgOQFggkssAwZbfwAAyAwg4BOwZmKHs+IZT\nDMIQYYYaoyLlBiib1tR/BKDMKrHccyADtgAxowODfQCQngPELAUMnB8YGJjXANlcyxlY/jEwSNwB\nsnm/M7AB2QogNhBwfgeGBpS9X4GhmAHKBlIKUDbbAQZg4ELETRgYihggbNYEBsEQF5dfzkBTtjEw\nNAIpkF2Mk5TUJkDZnEA/Atkq/5HiESgFAEGkQFKV6+ITAAAAAElFTkSuQmCC\n", "text": [ " 4\n", "x \n", "\u2500\u2500\n", "24" ] }, { "latex": [ "$$- \\frac{x^{6}}{720}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAADEAAAAvBAMAAAC4bj/EAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRIl2q1SZEGbv\nMrsbSYq4AAABXklEQVQ4EdWSvUrDUBTH//1Ky21Dg+LHFl/AD1BwEGneoAGJoCAERUonO7uYSXBK\nQSq62Dg4uNSuTr6AQsAHaB/AIaCVOsVzK8WkOe76H+495/87595zSYCE7ra7Ce/bWFQDnuSawuRJ\nyeF9QD+tazzrmeoKT3QDQ56UfXzwJO3gnSeFRjZ5z0xtvm7jYceb7BFmcaOUrKeyHJSg4E/Wy1wg\n36eNVclmbTJ1Hx7HitoRFJa43VfMci3oHN7++jnZhv9lTq1KraEcxhX8pWe8tCzLTF0tGRAX9dh/\n8khTN+agDJExxGZ05l0gj2OgggNgP0pMYA9PHk6MdaCqRRGyNpY9tI1PoOfESGeUVW4GROwYuZSZ\nOkhJQmf/SAQyTveTRFmQ5BojYst4rEyDIoUWOUF37Mr9vknLGVIaTe1qUVIlojZR1OilW1EAl8i0\nZZ0j44jnGJFnV8LwDaJV84EvR7hiRhgZDXAAAAAASUVORK5CYII=\n", "text": [ " 6 \n", "-x \n", "\u2500\u2500\u2500\u2500\n", "720 " ] }, { "latex": [ "$$\\frac{x^{8}}{40320}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAADQAAAAwBAMAAACsx0TOAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIol2q1SZEGbd7zK7\nzUTvhYErAAABnklEQVQ4Ed2TvUvDQBiHf2ka2/TDKoiIizEVnYRKBcWlFbuIDoLi4lIRP0CEUqGg\nCLajWxCcFBUcRHAIIq4WRNykgm4F/Q/6ITVFofUubUqOprt4Q/g973N5cy9cAGY5g8sMm2AEeyZi\n4hO8DJtgWu0yERN7v9YZNgH/fmwiJq66z2JMoQGODLzJBjGBS4NvofACe3NDzj85v4KE3M+00SGO\ng+RVc5lWJISwZK1imLUWtHrRUnE/cFjLFJ/HmKUSyp5zLmCpHA9D8ril+X/Fasv1h2a9BRLBTeBG\nfgS6t57rSE94ApxiR+WiyAW4MEJzOlLDX4NXwGdsJfgUcnnFvI5U9WQhhtFeEKhyXcJe0ZEqKQtf\nFO4SibmAV0NbxUBnRxZ9EtyfRL3SraJm4DZqqgj3cJiqe4mqIklSQwETH6Rg7ISg1jNt6NKAtrTR\nP0630e+WORWeMjCKGgILkcj3FDmtUNjXqBKi6NSRNAH0kW2KLwOxgDsgRUa2KXWFI+yq5AfPSdyh\nPKjoSNVAdQMJ/wywuPYGkdwHpYb6a9aPX900isnj4kp0AAAAAElFTkSuQmCC\n", "text": [ " 8 \n", " x \n", "\u2500\u2500\u2500\u2500\u2500\n", "40320" ] }, { "latex": [ "$$- \\frac{x^{10}}{3628800}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAvBAMAAACRacBDAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRIl2q1SZEGbv\nMrsbSYq4AAACSElEQVRIDe2UMWgTURjHf9ckR3pJmqCIOIjiIojYiAUFCcnWTQOSDII2KKnUDqZ0\nE9SDgOAgCUpTI6gH0qHS4cTJKYLiosUgKLioILhqG1JrQznfvTb0BZKrXYqD3/C/7/v+v7z73ntH\noHd8hkC23NvvcD5NQp7hjp5HUYQEUcuDUK0ixgo+U2155EUigs55EKpVxL8lemtrGwuETfV1Hrk4\nk3miMQ9CtQSd55Ta6Zpr2YmbFXYNVtBH73cl1OYMz+yXasMzT3OF256EalpcV8tN89ebEgqgrWIo\npXf6VP/JZW9kww22Bl5ouY3aOzO+n82MeyP/3e05gR3H3Bgi6vxFbM9I/85bIpnzJsxMnUOrHkmJ\nLHNvXWZHH4BRGasrw+7Bv4SWYJLd6MtQpt9ekyEe1/GljIRCj5g08KU5wFVIErIx4lL0OPp+LsIF\nhS65dM0SnbcWN1KBgqCl+Ar4FzgOpzv+EsUkh92fD1o8SgV/WYGclGiZyDK/4Yvpuu3oK7D4ccx0\ny6TFj1YeKfvSRJa0pqBzrrUeHw5iNGxOijIivH7n6Jq4dFPS6TbqPvVXhgMjFvR9hefvHVNKD5p3\nTxpQM+EhhMrUVqR0nWSvmNJeFHQOvQBhC60lxd1lS+7SFgOsheGIjdnf5Nq30GJzol2RIk4wKE+w\npJygWDYZK7lzR8qEYmFhTUgRtxOIu7dzpr2yeI7jbzKQNt6wM5O5S/AQwbQUTjAnbt405hU6WL1j\nwvR0iqTjiN0OV8VXJWU2e018VVOX6vwBf37U8ArfDb0AAAAASUVORK5CYII=\n", "text": [ " 10 \n", " -x \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "3628800" ] }, { "latex": [ "$$\\frac{x^{12}}{479001600}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAF4AAAAwBAMAAABqAtB3AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIol2q1SZEGbd7zK7\nzUTvhYErAAACYUlEQVRIDe2Wz2vTYBjHv0lM0jbdFhRBvDR0QxARgxsFD8OBBZFdclCvldrDUA9l\njoEyWP8De/DHYCK7CII7BObNgz0ooqeCF5EJRf8At86tm7LV53mSg/A20F6GB19IoJ/vJ2/e93nz\nvhTo3ZwGcOpttXeoUqdSh1W1mmqSQMw60q72OyFVMfmZwD5QgwRCPmB2ElIViz/kqUECEX8sIeyB\n2U95PYIExP43vE5IVUy+8+7aZTVQyNGJ4wVfO7vjZ7rdDSVVgO2lljJczD6bDmPDDPuUSbNxpNG/\nzWbGH8zPhaj2/0TKvQhjAL9U+4hj/XePhfOzo7UB/P/q4VagO1g73MH9G297BedxPp/HXHkamB+/\nTZv4ZoG3/Hu6ZstnYigJj/gpUlTUn9pznHTxDPdCpFv2MrBAx7O2jCuIoCSkG6vQaQNOZVfoaDDq\nMJq4AExirkh+2sNXCIwS8k+sQwf0cKQJvZOewvAmHgI/XBjkP+CtLDBK6Je3Tjd8x2IDxsHIDTjb\n2AHeBOJ/4UxglNCp7bJvN8D97+Y8OFtam3xf/P21QgCBciPzLti3AlgryG4xbYvvsW/v1bAkflsS\nMj3xF+kVn3Fd8bvAuaqosU9nK/c/SVdqfG2b6V/jsfdoyoFAudF6QHyqCDW9w7PalfnWovGT7wuM\nElwtFn9dgk0VoTbUpKqZUs9SVM8P3L/AKGFrFRgm39hErkWrotd5vU4ToPqXePwCoyT2Tfaf4BPw\nCPfpewjsl5Gf9ewXMZSE/LHuDI+Z/o/cCejTGp2mUpUnQli39meASqUVQ0m4/0HaH8rI7cFFVzeG\nAAAAAElFTkSuQmCC\n", "text": [ " 12 \n", " x \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "479001600" ] }, { "latex": [ "$$- \\frac{x^{14}}{87178291200}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAIUAAAAwBAMAAADN86TJAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRIl2q1SZEGbv\nMrsbSYq4AAACqklEQVRIDe2VTWgTQRTH/5t0t5vdrEbFLxAi3vRQI1ZUPDQnBU9B2IqnBqUWD9J4\nqgqaXHtqUFBDqxmUKoXSrhfBk3gVweBJT+bgQaTQD1v7BY3vzSRpQCOhU0/1wb7973/e/DIzL5sA\nrYRXpqpQK5VNa7yHCRobEk0LWhmwieH06DOsSX3Gp01gpPQZbkyf8Rz6jMFCcbiVFjat4d4ivtG+\n7O7bdy1tXFhOw83ebPoZfx1wUu6ZKC9CI0xYM3ZJA0BTHbSX6aYZ0bQmgKbHSxB6FDfWD0uTMRRM\nYY/eMjDRO9odaDL+T9/qJ7DzOEcnUNlozGz1I/zH+x/1H8E77fs+sE1UFXswCh1JOLcu8m/zd7r2\n3/sKjF19XE2Ny8ojErjU4EU40wJKsYe9sJZwIGe8BSZWCJlBfw6deFZSqYHhBnASpgAyzkBWQCrp\n4TbQhSngLl4MEKNdIDxjJWAdlAkNYWaYAZi05H5isJIe3gtkk3NAj4BFjOg7tM+HM2iblakBAXtR\nmGkyztJFDKmUd1SgeH6N3KRkhFYQmd+eh7ckE1fWY3q1l7RTpiQZrJRHexG8jkAyaDy8Ek/B+ykT\nPa5HpHKMHiI5SpLBSnnwFjBCwHSN8SXF0xdkovL1eP2xkgMm2ZAMVspDqIyngV2sMzrwZ4abxxs6\nsct1BqmqhydkvrpOHeUzpdWVJeP3vUQFjFXgZJ1BqupZGTZrfQH6AD7OVZnkUDWN0/0BnGV+5L2w\nUh4GYcTIPQS1DjuPHdRWm3trz3J9LaJUdgNtdQYr5Xl50P9uzJivMj4DL+nrZSZkqs3nu30Edgp2\nncFKebt8/z6uiFBaMYwT/qUETmG8pFIj5FyB3i+PjgSFD4cDpaTXVan8gFn4Roc5MjeMML1TCYx1\n36F3jtOmxC8/qCMkO/cynAAAAABJRU5ErkJggg==\n", "text": [ " 14 \n", " -x \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "87178291200" ] }, { "latex": [ "$$\\frac{x^{16}}{20922789888000}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAJIAAAAvBAMAAAD6AY4WAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIol2q1SZEGbd7zK7\nzUTvhYErAAADFElEQVRIDe2XTWgTURSFv2Q6mfz0Z/wF3XRIpSIiBC0FF2Lc2EUXDgrdSUOrRbFi\nLCJUBCNCcWcURUGwdSEF3QQEwYU0axdacKFgoVm4b2utqZvG++4ku2IDE3ChD3oy99x7zrzcuWle\noImVKsP1nkITlVuUpM4V4WtqeYuyZtJ2kWjO8Zop3aJGnJL+FjXNpcWp+0y/21zxH6vEac5LSbNC\nL7OnCmuhfUCcukqstsapw2ejNU52tjNcn7b37erPRA79zDDVmw+zJ8eLP0mG20v99lGsZbsUZi8N\nrUNbuXEd9jWZCevQ0HeXCNXphk/cPY7VEqfhwnt2NGxDvd48PNGKf5Wh9vBf/I92oNaq9Y/276++\n7d2XP8g568gluDYyCBpGxhYqvB1Jpz0n3evXMxPp86CgpDPaX6oLVU0ky3GfZ0yWIi/Y6wbhTqw1\n7sl8ZGNwAc2QI1YIQMlExXmKCgOgLU9i2SpizbfPyDeJhgzANPuhjbswiWbiBZyiQkAehWOoUAGS\ns7RtJLJ0rnTNE61qyMs8pyoeHGSfcdJMNCtOCgH5EJZcFSpAR5XYRleO1NqtMtaGhizmuVKBzgzD\nA/SgGftHPppRCMifMOerUAGzEtVuj9SqufO6hoaclq+Um9Beu+Ppntb5uH6YAAwZ+S5OGRUqGI2c\n18z199gM7eaMNOcJpKQQeVZc+eUSZGK1+6BgSHUKhKqWUlhAr50vDBmnBcN1lMFZhvilxTWCzNS7\nmo+CITdzipXVaZX4kddyApRQ1rj8WfMwRbyW10w8x72qgpJXN3l3fWB6ZloUrYKEYpIVkGfCLHQX\n5Fqeap7IukJAmo4XVNhQ2zm2icZekfqOeUwIQ0RcbuVwZmSTGc3cEBxVCEiZgmEzBfZKQ/0Gbsts\nRYvWijnhmpBUjrjLUg6ey3i6mkm6cEIhIGUyD5jJFKEBiDxI9xZ5xI2S9ZhP9XBPOn1RbilOZ/Oc\nRjP2Z2xPISATvvMKFQZAQj5dRfmlNAi94349nK7Vfpk2yHCeHPODDN/GZCoUlHRG+krmJ5YIFX4D\n1xNlQbFLfTUAAAAASUVORK5CYII=\n", "text": [ " 16 \n", " x \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "20922789888000" ] }, { "latex": [ "$$- \\frac{x^{18}}{6402373705728000}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAALkAAAAwBAMAAAC/PMZ/AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRIl2q1SZEGbv\nMrsbSYq4AAADeUlEQVRYCe2X34sbVRTHP/k1+TGb3dFStYo2b1qK6YAtCEU3/8GGwmxZQQ2CW0qF\nrlBbWpAGQaQgbKiUGkrtYKlQKE18KYgPruBTkW6gFOlT90FBRDDrtksaK/HccxMzT6WFnYfC3oeT\nc+73nM+dOXNvMoHHHsUVuHbQe+y6RyoonvVxvIIsEcvI+UyGlGJhg9CzbyQW4qMnlpthfHTeW+vE\nR8/Xb/bjo38NO+OjvwSH4qMnPU5sOH3rgecO1hL77tcKZ4INP6uFqrt3wt/wax4CMzjdXFw7kQLZ\nleFCsXxM1GLBDqHbO4Rx8V3vME5s9MX2nzwT16Vz9f1Ls+3Y6JvgzQ488R14+jUzdsNg40f3ie/O\n5g08vAOFucD8JP8Cl+fPw7bTv8Kt4He4eSYIqsXgnbr1rLwz3DqME81yhUIwVx8WarWa6HpbOllf\n4jdhNxc78gp9uJ5oMFPjB9mrC9tIr1tPZZYH97Dxszg98nDOFlrZIKJw9pAsgXMDR/5clLIhqW6m\nx5TPW5Dl3Tpr1lOZHR9JtSryVjbN93DRFqpscyJ4t6/BC2VSC6RXJ66TvZtTehXeZtHQ1VOZBZOt\n8c8hJyv7DV2VsYnASS5pVC0z1aDYS/bJ35UZ6Qyk1axbT2VLV2VXyIXK4glmbaHKNkfyR2Pq1fkv\nwfXKbK9SNKSUuZuXjX7VmKS5XPGsfHT+iJlUhelwcnCtahWVRwiToqO1l1Sbb7B0eWTckVX2aQdk\nWW7pOuKZynv8Qasis0YxIRfWPKuobHOMNhytLpm+dHJMLxvlgwoUusZzfrLeqDK7NFKSK7jnd/Ue\nSvdxe/IS+n9n8iuGOSHtcUrGYzlUz9BN4zL/jpSv4DvcQajK2GjR0EyVcNcvIXTzSP6BA5DoMCme\nbANehL/a6qk86ZORh24UHDHXpWNtVcYmSpd8t/fZsWMPjkpJbpVcg6dafaW3GhQGoaGLZ4i5VXmP\nz6+iMadIPL8E+ZoqYxOl57TvoKcp43MbvpX7SQljRph/y5nx1JOTkvHlbJqzZ5RiQ3baj3LiPFXG\nJkrnN660ZeIGvM6VTmJPMOc7bWaqsCiMQ6RlZxjPyg0+92y8JQi+4JOQT62isjVRfP642cH7B+e4\nPPsxKfly8TnVfEXm7rTl/3vzdN16KnP77IdDZXowWCN9vCmyKYwYSYhz/AcfkpFQNTd5DQAAAABJ\nRU5ErkJggg==\n", "text": [ " 18 \n", " -x \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "6402373705728000" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a function that computes the number of terms of a series expansion of a given function are needed to compute the given value near the given point within the given accuracy. For example, in the expansion of cos(x) near $\\pi$, suppode we wish to compute $\\pi + 1$. Let us see if terms up to $O(x^6)$ are sufficient (remember that due to a limitation in SymPy, when computing the series away from 0 with `series`, we have to use a shift)" ] }, { "cell_type": "code", "collapsed": false, "input": [ "a = cos(x).series(x, pi, 5).removeO().subs(x, x - pi).evalf(subs={x: pi + 1})\n", "a" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$-0.541666666666667$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAALoAAAAPBAMAAAChJ8gEAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRBCZdjKrVIlm\n77sGqe+vAAACHElEQVQ4Ea2UMWhTQRjHf8nz2qZJ06Lg4BScXISCDhU7ZHFuFgeRmk5KGsVgoaWD\nEHBwtFARMkjfUuiWgChihkbBOYqLgsMDcXIpqa2gw/O7u753Z3ijH+R39/5/7v8u310CJ6XurLf1\nNP8+90aGqS3Bd/ncbL4G9arf9mBF44zZznnU7Pd7st5WUFULejYTx1oMIrh1BLkFtuFMuzDvwYgO\nmc4wjmO9Q1tr8EDP8g3ZKzyMuNGR9KDHebhKvuLBiA6Zzkso6CBbV2BpTqZWyr2LYFLShzXRSjLx\nYEXjjNmeIw0w25SVUsfwJJTRphfzkU2/KBL5D/8AIzo423PgVEuvNZX7I+n6sbCxWYW3Sfro8XrI\n7IWNVQ8Y0cHZniPHZpM1Tbp8G8o19RPVOklXhwMWqS8SDByM6ODZngirGekiPadIkh7Dfq1+QPHI\nQWnxegrPdk4NdSBRpy/pupx2RqT99l6afigHG9bnKf12UFrcTeHZzgmZrEhUUvpUB/LwTdKv9ZJ0\nRhLUmq1Q+uVgReOM2Z5DsJVEyyg3sjsn4ye4f67T2fnSMjdSXjYMy3rvDnoHw9Ah06G+4qWvwQsU\niCY/H2YieyO7uu/Tuu8OGNEh02FJktIKQvUZ6e1Zpj+KmKSXe+or/GB54MGIDpkO3ZU0W/6omptt\nliOmbnekQcWd48HEvdFdaDSqMPHsqQ8rGmfM9hxzit4L/v/0L9iNQMEYAVEuAAAAAElFTkSuQmCC\n", "prompt_number": 39, "text": [ "-0.541666666666667" ] } ], "prompt_number": 39 }, { "cell_type": "code", "collapsed": false, "input": [ "b = cos(pi + 1).evalf()\n", "b" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$-0.54030230586814$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAK8AAAAPBAMAAABgoIKoAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRBCZdjKrVIlm\n77sGqe+vAAACyklEQVQ4Ea1Uz2vUYBB9SZr9kex2V8UiXiyCYD1IxB7UCu7Fg6cuCILIuksPW60W\nFwVL0WLw4KWHriDiHkpzEm8NFqq4YKOgVxUV9GRAvejBtnZbrAtxZr40f4FzSN7MvPfyZfJ9AeIw\nR6+7DPVX2jO6ZZqQSqb93APOTFwA+ka+AdPtH1AdRTzXHqN8se1CEPCdTUidhFEyj3CSjyKfbkYI\nqfShZwMYxGlXa+KWp9Uw3FAdRawhFWCHm3UgCOc7JGZ1EteAq5zoF5/ybSqEVJY8/EbaQbo/W4ax\nbG+i4KiOEHMBTAdD0PsVOtsSY1IncRQYLlKWlYr2MoRU5tnYaKJnJf8R2TVLjKUjRJsm5uTYTBCQ\nZszqJNaBGY8yZWzrIeIKjaJQQ2ZT7yC1RgQahXSEaP0p2w39LZUFxcas3grtLxk3KMtOTJaAF3q4\nVdGb2OMjQ5OGwcsZgOoo4q/uDRT2T4wBjGJjUhNUIWT+ar1lcw1mIzb2MT0AMaYHY4Ye8LipjH0h\nIhUdQvU4jECQMma1cqVrYkx4FjYSY6Q/JMYHmT5VSrizwOvbkVddht0RpIxZDWw/zDGoXo+FwJL7\naMuYh/OlHI8iFXI330m4S26uhjedqoPcpiBlzGpmquAPEhD8SsYnfW5JZRcNL+CP1wUm6cVc9HZV\nh4mlfBlat9CP3IYgMTZFHduCN9d8kbL3wJXdrdbc5wZXdkZlMqbtZq3AqmFbtcPGwmVisUKK0V5e\nsSAxtkSdGNNxWIAJOkDYS8W8HJAFrAIninRAbAd3aLPQ4owVPiALipintdy1eMaC1ChEnRgbnvkJ\nNK0+WO+UsVRuoof2wzFUXG2oveikAwz7kI4QrX2wfPxEJVBIHRBeVhLmpUkXlRCZeotWYc+tB1Kx\n6iMe/YSePIARRZGDh/UD9NNhriKeqtMWTt2/Byg0vnpZqRPj/w3+AWrzIIzvy1iMAAAAAElFTkSu\nQmCC\n", "prompt_number": 40, "text": [ "-0.540302305868140" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "source": [ "So the expansion is accurate up to two places after the decimal point, i.e., within `0.01`. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "abs(a - b) < 0.01" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "True" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note, with `lseries`, we do not need to worry about shifts" ] }, { "cell_type": "code", "collapsed": false, "input": [ "for term, _ in zip(cos(x).lseries(x, pi), range(10)):\n", " display(term)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$-1$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAPBAMAAAAMihLoAAAAJ1BMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAilU6eAAAADHRSTlMAIs3dRLsQq3aZ72YDTSHvAAAALklE\nQVQIHWNggIMwOIuBIfUYgpNejsRh4CCTI2QMAiYMZBsAcxDnrEOzYWwwDQBP9Q53CSxxJQAAAABJ\nRU5ErkJggg==\n", "text": [ "-1" ] }, { "latex": [ "$$\\frac{1}{2} \\left(x - \\pi\\right)^{2}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAFoAAAAqBAMAAADBpFHwAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWYiRFTd\nMollB7CEAAABv0lEQVQ4Ed2TPUjDQBiG36ZNamy0gg5iB7O5+Tt1suiioNRBcfIHcVLBHxDEqZsU\nHAoi6uakgyIOgoMIziIiiKM0qF2l6CKCxO+S0MvFKpfVG+7e78lzafL1AiBiQn4orSFspac3hA1k\n/7ldamQvKPmWqqkuydtGQf+St7VT5VPeBhJvYey4BYwtruZoD1CbcZZqU80+o8/+S/f+IpAnqK6x\n/HDFXwRynOoTPHIay/D8I9F961IX3ZxrJs8/kjINzbbLnB/yWCWlAmySav0lfTYq8inbtt+Bkkix\nRnU7NnMLAleHz3bzBeBcoMAc1RayuBT4EQZjJOPApfRD7uOzQ2Ciy6E7N2xcO7khypaik/nEbGCW\nAzfpnQYLQXueQTqUClv5UHNJVnhPUuHNlPKxMvoqxAkdZvKOwoZIWY8SH5FpPSPyISQtIsEOHgNK\n09PrgChTYyMjhNY9vD3e4iSNNeq3Qf+8M/ROZE9ZEg+ke7Ey12fcGDVhlJ3414lt8/ZpM4i6rd7y\nSLUl7cH4G1TXDnbDtyt2xwuDfcvSo2hJqyQuh5HVhjB2fxg5MYI9ef+Bjp60rd++lq6kbYM+NGn7\nG0/gY7SgevO+AAAAAElFTkSuQmCC\n", "text": [ " 2\n", "(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 2 " ] }, { "latex": [ "$$- \\frac{1}{24} \\left(x - \\pi\\right)^{4}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAHcAAAArBAMAAACwWwo1AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRLsQq3aZ72ZU\nMonLrI/bAAACDklEQVRIDe2VP0gbYRjGn8ufSy5eTNpJyXJLJ5dA7VoyOjg4lNIxS6l00DhIOiqC\nFkQMnWodjBRDx4QWupVMrUshW+nUmzQuIiIRWyS+X87c3ftqNLmsfYfkfX7v85Av33dfArB6ztRg\n4mVrML/f/ao4RBjx/2H/Zt7sLYEG2TBTbu4g4blhwqtDhJPfhwiP6iJsfDjddrdwyu1uNF+I1GTY\n70oW/Ir3RgP60l3hUJ4HmLJgbm1dVBnzi7d+IftvBDTxnf2eil/I/jWBr+d1ibs6YnW7296j9duo\nywybFtZc2H/vkk6z0263z4HREsdChWg35vC5+pFxY2M/U0sDpsWwFIkcYGMTP9lgGstxyiJSdvDD\nx6omAVrQdZ3QJJUD8ljseFwLqZmYQkll6V0qDHySBq0QVuiecKJOHu0SuvJ6ZVRTSnSX7Q1YF63S\n4xs/wSqjmM+nGkRGLI6FosMw/0XL2hLnK0jZRO45qkgW+ouD43WexQSiJUKhHL2wGn/3TOlfDtxl\nMyHU48lKK2CzTuSJQ9Wz37OachLLI0zHF99zBnddSd2S4UQFsTMg88gZ0EJ6ViwtR6EWDArb12GM\nSYOnN7zW68ItjKS7YQ/31/2xMYugYcrZQcPGDMxG0PCauv8Bw2YJD34Ui3/f9LdB3PWb7hGRPU77\nU9rT46Ns0HCYfoQofNj2/q76+9SArisQh4Bog/FyCAAAAABJRU5ErkJggg==\n", "text": [ " 4 \n", "-(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 24 " ] }, { "latex": [ "$$\\frac{1}{720} \\left(x - \\pi\\right)^{6}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAG8AAAAqBAMAAABPfhiMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWYy3YlE\nVCLumKMEAAACRUlEQVRIDe2UP4jTUBzHv0mbpknzp4OjYJa7QYeLOLnooQU9B1tEETnQ43AS/DcI\nLkLmU44sLi4XEBc9IUhvytLhJkEIeIvbDYpOWu4U7rie9ffy2qYpSa/p7I+S93vf3++Tvvf7vReA\nm2D1nJyDeGI6UDxzfjoQqP8Hk00SFy8PhFzFkd216cANnJoOvD/A8vXROKzdHqB59qgc4FUfvPHw\nidP3adwc8kfcF4DRgRmOyHyq2KlyJEousA9zPjVDtlJlLj4CnsFspWbUUtWe+Bz4jI/pGcvpMldn\ngfLitdQMjVaTbUKYGZN8qlzz3Nb1ZMadbre7C1QaSXloJjugM7Xi3BvSAGlh68fqNqBnr6fUAnzU\n8SUBfsLVInHQlrhM/58wUlmtLZyO4t/fMluP/GqBDUo7mqQ9eJPujoYMW2XSGLAUUtzYh5hEJcdk\nQn+pyWA0ExxgtdjGhWRszjJdUsrZxaGC63vCkjGfBK/A9EkZ0w7Ng3jsQxB/V/gLnkJokCe3+FR5\nEwQBvt08DszUbnHtAR/Sn3TkIitTM3YNG/UQ6zjJNgHQOc62Zi9UsQC7YEFtFz0U+cbHXSuRp9Be\n6eeWllHoqDa0v9HraAGZVtiOQ5uQdyB1zAaUQ65+jYOj3kIsiFXmqzu/fCi/Y/loTwpZzprPwIOj\n0+OMuch9jNzgJQZK1QjMtdTXDLxIt4mKs8f8CU38Q4l6Az+pHTpvx2SkxsCX7D54qHiTMVGWTqDx\nLtjw8B6zbg6Q7UulA+thpnl2cu4fXiCRCxxGVLkAAAAASUVORK5CYII=\n", "text": [ " 6\n", "(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 720 " ] }, { "latex": [ "$$- \\frac{1}{40320} \\left(x - \\pi\\right)^{8}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAJUAAAArBAMAAACDTNd5AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRLsQq3aZ72Yy\niVR4peFTAAACwUlEQVRIDe2UPWgTYRjH//eRyyVN0tTBWhGMiIiTBxZcqs3o5g0iOvVAHFoQIiJZ\nhCYKNlohsYOk+EFFqQ5CU3UTIauDJiJKHII3OhRatZSUttbnvZiU95I7cjGjz3C8z//5P7+7e7+A\nduEz2qldacpYz1hKcrJnLCD7n+VpQb3PV1/mrsMbvLPSuNgz1lmIPWNdKQ72jLV3/V7PWOrRkfas\n2YUjBXvllF3YyV/T8FFo1NhR3EehhHM9UIQSg9jyeqcO0XCqkB6DoEPtmJVxQeEtcAB+t7dx3fNc\nZksmgPHqR5vomMoxxxIVfKZb1V4LlAGhcvl7ni8EtikSCOd42T1ji3QJrwpPeFv+Q/rNABCJ8bJ7\nFowDZWSxxNlkU42mSZHn6vKuYyyG0c8+t22skLE/Dhi4arUIB60WUmimkKBniFk6DsYCnrf4B6GR\n5o0VNKlF2IRio90H+6TGP9qKDqmvACyqK7jJ15U1bJLSF+Nl94xWPbLhmxNSvE3VsEWKtz0ha1DO\nfalO8yh2ns+TJMbpwQfdBUr+VhGh6mcTGJo5Q0cj86Duecxb+YzOkD0kHVJcGcEQ5BqEBLImhnGh\naNno+DpHpbV0W8cN4Dq+mfjFjr20QvOhxiyjaLT6GwpdXvYQXuo4DpyOLjNWcB7+VSkB+Yflo890\nDH+0pRQWdawDJZM2TA3iGgKr/TmEfteNe1r8TeFOc9QcLIq6QCtcStHCWF8hre0vI1RrGjofKKm/\nrDLeH7baSmXGYhvIa4TRZEF9yroPoVvWUoOVIsyCAQR0i9XFPyplYllzX9gHjNH5m6KrhuZ+g9Ae\nI5JMTj5L0Z5Y3r1tMFYkhwHaE5H6nvBIQ9Daq5/wExiN4h27GTSENa8Yy08syVReYBryFoQT1a8a\nTmKi2A0rPLleUB5OFRGZnTEh0X2tYbxyrRvUv/f8AbPRzoUQwhp7AAAAAElFTkSuQmCC\n", "text": [ " 8 \n", "-(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 40320 " ] }, { "latex": [ "$$\\frac{1}{3628800} \\left(x - \\pi\\right)^{10}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAKAAAAAqBAMAAADGyk2gAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWYyiVQi\nRN3cr+EFAAADD0lEQVRIDe1VS2gTURQ9mfymmemkiAtRxBGhgptExF2Fwbb+KG3A1k9dWKQbEaXW\nTUWE2YibogERwU0HsRSCSBYVcdWAiC5ECoIuBDOgC60fQmox2pZ434vYeZPfJOnSCzl597xzz7x5\n784MUBYbypjWiO351urd1Tv2rLMhAv8N3ZvccN7sHrZ1AKneCpdr0rDtqI2A1R4vd2zSEIoNLYkK\nLdKCYUzHl3Vd4ZSOj+tqmK1kGDz280T5VYhpNyrSjJTnCWgPK6+wWtmtahPEnywZxjI4V0Plmhp3\n5c40TAmtMJTEipOuOQ4YNaZlixtSH1J3e4yQXkMojUCdWTLQ01tLJRq8FVNXtsWVe0iHSaPe75od\nFLWni8XiIjAtsl6yCRLtwg3zgiAOHp59MZkBHgusp+Q8qSwM4Imgfoe+QIaYN2ssLblu5Ei+Sj8d\nu3nh8+8svvFxh5/9TfFxQ8AMgVF3jRrXGNWEIX8E1F+QRMugGWWE45bF+erZJpqaDOSwX5TE9GiS\nmOsi6yWjxlAKvhHVEMX9iFrENNE27wFp473UIdEPE/AliLrqoO+mqM2l6VQSz45vpV5LnfoL0mBv\nEhyYOpQhqBb06P0LNYGsgVdJv63GMZBGAkGzBNq89BkcmJg9/1UjYqxNRZYRtbGA8Jhfh5aTTUg2\nB/QDB0vA1bVeXzvX/KAwQ5l9rEJn4F+NxMmQAz4A2QwHLn/qKHIPu0Qia4RHiAnnEVxVFvWIwQFL\n1K9pDlzuPl+HR4B1jiMuIXq5h44C0PLYVjgCDupvMuxjYDi0HoZtM3HEPkEzSTtlIVj8Cg7c8AEz\ntDy4CJID87EcImwbLwLX7hTTHFowDOVjNuRlWlgH5ARu5jlww77Gb1lNwleIjkH+AXTTUetQCxz4\noZjsUEzhfuolsTwZ+vgKlQRedpJ+kANrmznWNnOZeh7CPC1OW1H4Ht6m90mIqrs4sJ5+WAKhoF4S\nMJG1sBmdprqQmraVcSgWB2hp6WwJ6nmI84+GrtBx7N0HjT4FNl4PUUdykIa76eXAoJH4A6F8EmVH\ndtj7AAAAAElFTkSuQmCC\n", "text": [ " 10\n", "(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 3628800 " ] }, { "latex": [ "$$- \\frac{1}{479001600} \\left(x - \\pi\\right)^{12}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAMcAAAArBAMAAAA+rYEMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRLsQq3aZ72Yy\niVR4peFTAAADZUlEQVRYCe1VXUgUURg96+6Mu+4vPUUSLoFQSbSRFZHEPvpUC0H01kSEJchuSG0P\nQqZQSoISmJZJG2EEha7UazQvkj01EJRBSxM9aBD5U2hlun337pTddpxtfwqCPpiPPee795y597tz\nF8gRB3PUS1E+Nl8KFWuNhvhfMIHzv4l1G8TqP7BdY4C397T42iaoqJU8bgYu45KJrEgVZYI3wDZU\nqaJkNiraZBjRcLasyBRtAkwromQ2KoHJlmxVkXFdnRsQGQHVC0gA9xminsAbE/i8gcdivkslOWby\nIG9ZcUKZImIBBQmRiUPzqAKfL+iwmsBWQCZj7ycVq2E5a7esRjQC67f2YySdthqVs+YIWg2RdKvq\nb9dcGmCbODnVL864nk6nF+hU9Yh0gagsCTThXvKmMN/VNVU5GgB8QYEuFFSEAQ3deCcI7MM5J3nA\nkVih12xnUQvQIvMJUvCHAQWnuNYPGUKRckZ5Znih2MRMgNu/ythidkaVyKRCJy3bV8hMcyVcST8D\nP2/XSjHvXxI1ftQ5g/PizKjiV4lxB0W6QESH1LcoJWyt4vx2+DViSnSEHSHIh56lLooeqIHUQ1RZ\nmJJJPIJndyqVQsNgC3Ci45qRICk0uGnwJeT+TvU7SdQNelYNulZMYwfcdIoXbMNYF0AtjqqZJB9W\nqMF1aIY9LNchQzIBy1t8wtQCziF4SS4mJVAecYbgDPIkx88Sa9ewAe1AGzjJFayuejnIh2Slymp4\nqWGqPwjvvD0GxyxPQLcCPKQHu4D9AYMkaItRWiXKA+YFrZrx9YhG4Pzo74FnmaeMyWZW+ww80Q2S\n4bUsmUeXOe0OMBM5AraSxSoNnk88ZUzmxjt12xKZtBqkuUgu9jiYiUuHKwGJ6y8xPRKm7ZI/JLGH\nm2gGmUvOvK5xkygtpgZvs0zo/+3VEbaSokx8Kjdpozdwd4wv800xdoavhHr/uujtagI3oQNE4Z1n\n7V3kyegJmbSyxicNko/LN03G41/OQCYdirIgHVQfO8K+2YzJATLR6Q2m2RFmZKExRBc0mThnURWm\nT84b4iljMk09UehjfMo+Rm+oUAuATHzMZCc2AnvRqGYS/xglTb4Duy7fNSqFujxPD1AfaPaLXp2u\nwYkWI10Z2ZQE+vrCkAcvqAZZqMkfm/cNx+U5CyYfG4QAAAAASUVORK5CYII=\n", "text": [ " 12 \n", "-(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 479001600 " ] }, { "latex": [ "$$\\frac{1}{87178291200} \\left(x - \\pi\\right)^{14}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAMoAAAArBAMAAADLUwq8AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWaJVN0i\nMkS9ILV6AAADrUlEQVRYCe1WTWgTWxT+OvnpJJm0WYm4sPfBQxEXjYobETpQRKRKIxp/kYiLtxB/\nUBBd6SwUXQgGtEhQMAtFXKUgD3y8nw74+56CBRHBjeEpCrqwtoh/0Pidm7bTVDuMSQkKnsWZ757v\n3PPNnXvuZQAfa1E+5ExRRkcTVIwlXU1QAXp/qnxjX/woXyyZ4sJa/RfX8FqS6/qpUFK+Mg2rIE4V\n40IzVMKdzVB53BSVvL9Kdu8Bx3ffgDZ72gSzTIr7Yrr+KtMW8IgHHvwCbWOEKr+iYZX9X9T2AnJM\nqHIpm9vkBetBYdtnlpnXKsB95ZMVgIr6zTe2wzr71obZtSxAKZ+UFz4cMMeXDU5uZuq/3f+tsGun\n5CqVygjQVxute3SI90fevBaV28qzyJqLd066wGUv1BDaA8QQHooP1lR5idVhiuC5F+Xi6rMh1hjl\nWhBK6Wq3/xT7R+NUSB5PNG7cUQWI2lMLWemEhGZKZacUuz8IJU/PIk67DCZ9MY+rA80Gr6lehFXt\n3E7VLjt1vDZa94i9WnJm4caUAj1ozzM0U538Cvhl1YIzzhSVQ2jJMHR4UnhBYQuSvxcKBaBFjSGj\n0FeEld1XhrH09CCTyeDmxrlsqfUrBquOUURduumMN4xnGUQck808AvkvrqIIsAnXEf6IW0VrF2uT\nsdLoLSJRNv6uOqkgF+K0FrM9ynRg9McUkNb/xRrhBLAQi4EBzAIWQTMhhcQQeoCVVadL+N388z0R\nxNKiwjPMD9OreJQFnRaV3xS6yu+AC3wFMtEdCI3iKvDa1U7XuD6p0lS4fFIgPqL00p4xxlo0otJi\nnMERhdz/bxgta6Z1GJFRvOVhK2onqbBs/fiaC8t+TljH+1XERopOqwhqqRzNS8KAkrU44/qJYesD\nVVaLs4UPbpHKX0yOFOm0ika5Ty7HyQ/YAHTY4ypP8lrlvKjot2BOQDv2qFIEOiVbqwgytx35yEdr\nCvOdeM4eV9mHelXMDE4NS+PQtIqgY+xoBawlPLqG/Tu2ylRVpY4vFuVJeA/pnbFagnbwDnQQTktw\nvMeAbg5k4x3tNBfUzWPiehicWFURJKc2YuMSLJfRg2NMPIN78jYl6eSSMMEt6gLL0TahohGPe8hN\nZuTCda1RFpNv+RA4KQfyXNUxGtzi+xHPIz6hotFlhSu4WyhsRY9qtVmMKtYfhb5+JIrG7qoLLiGZ\nT7Nb2LPcGuj/Yo3almaLGKhUPiGWlf8dYRK86/phbO7mbSnu+7PPCp1DTSYOx48AAAAASUVORK5C\nYII=\n", "text": [ " 14 \n", " (x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "87178291200" ] }, { "latex": [ "$$- \\frac{1}{20922789888000} \\left(x - \\pi\\right)^{16}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAAqBAMAAACHPjAfAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIs3dRLsQq3aZ72ZU\nMonLrI/bAAAEFUlEQVRYCe1YTWgUZxh+Zn9mZ/Z32pM/0AwFS8GCWyrtpcpCD3oQ3EMRKYUOFRE9\nmJWixUNhYqCmlHRXoSXxZ7NSkB4URuxBKdShHmoPbZaKoKeMFDQ5dE1sukYSs32/d0wna3YXJzsh\nIL6HZ/P+PO+T+eZ7v28TwI/t8lMceO3eeuAtfTTc9/mqykN5Ke/jbQVc+uIs/i1ALn/tb3mCe/o7\nnwGh6thqyeM6MIGDqyl/wZ84gpz765DmBk74+wWCe/e0+Kl53PQlr556ePp5CdvbF/4oUvT008jY\n7au6yqQK7elqlXK09Z4gY7av6ioTMjrQdcqR/FvI5DpUdZMa6ET+mZIk/ys+6FTVTe58J/IB4LVN\nQ0iUv+tU1UUuonciR+1O2QByqgNI44duDDX3Gmk0Go+AdKk5HLgXskAn6mXr+6bO6uCN9Zc0IKk3\nhYN34jnAQRG/N7XegT6F1BGpeOFX3xG2GaCFCcaot5goA4dZ5X8B8vIxEUpNcmLlwB3oH54VkAph\nEVpx+bhNKtITyELNM9XKCGfx4nvJAH+K0ta7pEziy+aevUamSpGE3hwO3KPRSs5GK5LZ3LkfGYci\nKz54kSzk3fdqz36X24hoieRDOYIltvbkh8D+gbPAvvIXALsMN8u1miPXJmzIR+/T6h2snVkM8tBX\nVTC4bNH43JLuiwJ06C41qYCijc3YU5UuYJ3Grhu7RgNZUIHTWGdL1LgE1VoE4Zy8BQzM5s7iVmlr\n460yMQPhSSULRY9WEMuzy4B7QAw/AXvwEWiYExbkrAfoB465wGzuHTL4oyXIeqtw/Dxi0+ECIlMZ\nHek6uwx0fuFv3BfyD4EHRrpA8h7gPWCnxsBs7k3L1tZiWqtUqA51OlNCaq43D2WaXQYqjpgYPYJx\n+V+gmEs+MtKmB3gMjNkMzHZ7r3E/WuFgq6CIhes9DlIz4uln2V2AvUC0ccXhp7fwyew38ECaJ/k+\nASazRaPl2ZgjGsyrFURnqMOYswC00zHyj4ZTJGtCbbwND1j+rpB32VS6TNsAlpc34jchv0G0ESBP\n0lF1dtMcPrWSIyau/tmwPQhMXs2z/AwSA7fn6PnypMyg6MBVJBoGrgwW7UQJ1+oesHxfAIt/nG5K\n2nritafp/xjkPgXa0aBvbz0WBR4YcQPSrAe89Syx9awFtiD6tmQJr5BQcoqYIR3CdQG9JcgVWgmT\nMq9DHFpDHojBGxWDN6otsKnAv90Rt1QW6awyhZ4chOsCdpb4GI1pRY3+NolrwCEPxInzlwvM9i/M\nDGlrbSKL93GgqryLN8GuG8Moyf9i4A/0GyETyTeQdDxA2JYvusDsZcqH6WTPYv843TYT39pg143R\nW6WT5+iwjfTwx9R92zANogdy+ThdOQJcth/9/wDcHM89tyP61wAAAABJRU5ErkJggg==\n", "text": [ " 16 \n", " -(x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "20922789888000" ] }, { "latex": [ "$$\\frac{1}{6402373705728000} \\left(x - \\pi\\right)^{18}$$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAP4AAAArBAMAAACqSyj+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAuxCrdpnvzWaJMiLd\nVET4aMmqAAAEhElEQVRYCe1XXWgcVRT+dnZ2Z/ZnNnlRFNRMwaYEhCxGfbBgF5JQS4WsNEsbUdr6\n4IN/yVZE8UEHURR86KoNMkXpgIgIlYzE4k8rHRGhrdoMiPiYBUVfhC7bVhObdD3n3l13V5Jh0t0l\nKJ6HO+ee75zzzZx777m7QFiJmGE9e+KnDGwqvzKyY1P5gYn/+XuyscIm/Y/VP9kPvDTuhv36bu+/\n5B4PqqvQS4SVLtff8BAxMROWvdvfD+KPnktlN5M/NV0wN5MfO1ec0PyF6aet0M7kmMmt662XCaL6\nx/zj1XWdOgXeDUjwgOTfBjwb4NUZdCggXJP8HwH3Bnh1BKm5gHC9JOqvubg9wKsjKG4GhCsHkHrr\nck6Zst0Ar46gXwOjbw5EuwFOUZLPRr8Yz7Uli9VIqOfMtll7MaGNrZT0M3GvLfnkh7tfPUmWH9us\nvZg8CSSgVgynNXnGV93dbPilaeWKdFkqlP0qfT+i/YLnk29ZzrMeAVUfmOOhp0L8QDz3T455eGzq\nPf8TTHPagcnPpuwDF6e1/k2sq9oNgO5OQDXbsipV/MmGV9qsvZjQCVu0rsfH7blVD8ts6f35+w3Y\nsmvoiNXOr1m4ji3Pt5iVWduhKd1XW8foYjqx9xYgab/u4/iUbZeElvzatm0Jay+m3pFIqlAsA0P2\nQ/VAEa1MjnMy2nqueKw9UP9tyikn6tHsS+A8bnPoF9GEjxPIXMJhOpZZoemkXRQw4rVaSSLzUFeB\nPGKWRDga6bJyTqTmK2ZdSeRaoLPQZgD1IGhx1JmoiXQFx3ys4A0gKrWECWQFDG3PUUiErq4F6BYU\nTyASvg/YKXMH3b/bWuj1qph8WkQ6i8yV+MOIXsUi89MXHJVagpqZI2B6IxKBPGJiRzmRJX6BSPgr\n4IIrEs6Lce1he4tZOyAmpSL68kiualXEuHdQ/eu/oYSGnyUs+QXygon9ZeOimciJQDHgMvUWXyRM\n5cRjrUF1Wqx9z43RDtLdIk6XkGTWNFdEy9Kwhf2ERn8UJBwdGy03ECyYGFjaJREBp+h0zeUIDy/D\nZ5C2cCskP5/OOSrvB09xBnqxuhbzBcsyIqbC5WEESfKO1b6RCPMvC34K34AMV5Co0oo2+YscrdIF\nplQaGoapmTIBG+5qIFo/8PL7NV8g18zvQV+la/Lv+scoK8m0SaehofGmZgJeHhxz6sj9tG55HK4K\nRAzXUP++GeiXhkD8vIOWgFGi+BwYsJDONjTQvpbwTcRfFghUguMmUksCkTDvP4tfMrRE+Pu/Hxn5\n/Q6iM67AyOOkUqONZWE4j7qmUF4JPw7sdxkBfkDKHaTnpEAkTO+56IbmZkdDrD8g+k/Cw3vAa/iD\neouLC8QitQzxU4MhmEzP0BmnRzIP3eU2u10gEqb+8/aG6IEbMWhRyEHgOww6qbP2rEd/CzK01RaJ\nRWoG8QuYOrPxmERO2faDMA7BKEmEo5H2lUc3yB+78x6KeLO2D1uP3I00tXoPRmGvL1dSarwvBIxk\nYYQ+mdd4oVZbAX4q0FHkQDkoU6MOuf575C9+Ztihp/kcUAAAAABJRU5ErkJggg==\n", "text": [ " 18 \n", " (x - \u03c0) \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", "6402373705728000" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hint: to get the exponent from a term like `3*(x - 1)**5`, use `as_coeff_exponent`. " ] }, { "cell_type": "code", "collapsed": false, "input": [ "(3*(x - 1)**5).as_coeff_exponent(x - 1)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{pmatrix}3, & 5\\end{pmatrix}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAADwAAAAaBAMAAAAZJyJqAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARDKrEM1mIu+Zdrvd\niVTWGHL+AAABSklEQVQoFXWSPUsDQRCGn1wuuXwn/oIErEVBFMHmGusExMJGUtgJco2F2NjZCB5o\nk8pAmiAWgq1IsBG7IFiqtZ0Jh2kkcW5zMZsLN8V8vM/M7g4ssECEdX3dWImgLPpgy47CmaaQdVh6\nfwy1JPatD3gG6xTLpew3apYajeTmFqRd8kOKHY1Jmrh8FV+1SZUozOO46s7VWVZJ+PAxTt/RVnhb\n+amL37RKkPxmTTTjLbx71jZ7EPO4VyNt6Q3Zhoz12VVqygtB+Kxg9XiR1Stkf2bxg+AS5tDHVW8O\nn8O140/Lm4s1cgNsfd6FHTm2zyZk6pS75q+OjymcycsH3Ir61djDvHA0bjRWpZS9yxMxpuOxmK9R\nrAQ8OembxkSTeDcaVx2MToCbQdTCgeThj6LhJ8mPtHo2TbpSFyaXzzKpTpRyOKcHwlUU+Nf/AKUL\nQ2ycOKYsAAAAAElFTkSuQmCC\n", "prompt_number": 43, "text": [ "(3, 5)" ] } ], "prompt_number": 43 }, { "cell_type": "code", "collapsed": false, "input": [ "def series_accuracy(func, expansion_point, evaluation_point, accuracy, x):\n", " \"\"\"\n", " Returns n such that series terms up to and including (x - expansion_point)**n \n", " (i.e., O((x - expansion_point)**(n + 1)) are needed to compute func at \n", " evaluation_point within the given accuracy.\n", "\n", " >>> series_accuracy(cos(x), pi, pi + 1, 0.01, x)\n", " 4\n", " >>> series_accuracy(exp(x), 1, 10, 1, x)\n", " 23\n", " \"\"\"\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 44 }, { "cell_type": "code", "collapsed": false, "input": [ "series_accuracy(cos(x), pi, pi + 1, 0.01, x)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 45 }, { "cell_type": "code", "collapsed": false, "input": [ "series_accuracy(exp(x), 1, 10, 1, x)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }