{ "metadata": { "name": "", "signature": "sha256:daa6eac8936225c392c04e7bc0306c213e669afac73b2ee5b23df1a02748c721" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "from sympy import *\n", "init_printing()\n", "x, y, z = symbols('x,y,z')" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Solve\n", "\n", "Equation solving is both a common need also a common building block for more complicated symbolic algorithms. \n", "\n", "Here we introduce the `solve` function" ] }, { "cell_type": "code", "collapsed": false, "input": [ "solve(x**2 - 4, x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{bmatrix}-2, & 2\\end{bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ "[-2, 2]" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Solve takes two arguments, an equation like $x^2 - 4$ and a variable on which we want to solve, like $x$. \n", "\n", "Solve returns the values of the variable, $x$, for which the equation, $x^2 - 4$ equals 0." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "What would the following code produce? Are you sure?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "solve(x**2 - 9 == 0, x)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Symbolic use of `solve`\n", "\n", "Results of `solve` don't need to be numeric, like `[-2, 2]`. We can use solve to perform algebraic manipulations. For example if we know a simple equation for the area of a square\n", "\n", " area = height * width\n", " \n", "we can solve this equation for any of the variables. For example how would we solve this system for the `height`, given the `area` and `width`?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "height, width, area = symbols('height,width,area')\n", "solve(area - height*width, height)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\begin{bmatrix}\\frac{area}{width}\\end{bmatrix}$$" ], "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "\u23a1 area\u23a4\n", "\u23a2\u2500\u2500\u2500\u2500\u2500\u23a5\n", "\u23a3width\u23a6" ] } ], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that we would have liked to have written\n", "\n", " solve(area == height * width, height)\n", " \n", "But the `==` gotcha bites us. Instead we remember that `solve` expects an expression that is equal to zero, so we rewrite the equation\n", "\n", " area = height * width\n", " \n", "into the equation\n", "\n", " 0 = height * width - area\n", " \n", "and that is what we give to solve." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "Compute the radius of a sphere, given the volume. Reminder, the volume of a sphere of radius `r` is given by\n", "\n", "$$ V = \\frac{4}{3}\\pi r^3 $$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Solve for the radius of a sphere, given the volume\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You will probably get several solutions, this is fine. The first one is probably the one that you want." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Substitution\n", "\n", "We often want to substitute in one expression for another. For this we use the subs method" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x**2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$x^{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAABHNCSVQICAgIfAhkiAAAASRJREFU\nOI3t0z8oRWEcxvHPvRbEpZRFhDtQom4GcQcGJWVTsrBQMtsZpCRGMiqjshkNZJHRpmx3Mypl8Gd4\nz63jb87bHT116jznPed7fr/397zUWLnI70YwhhaUsYnL2CKasJ3yc3hCRyxwCK8oJr6AtwQcpZzQ\ncnW7BhJgKRb4WcfYqxVsCTvih/tBMwkQ6tENdZGwcXThTJj6hFBlJQbWi0dhEOmrwNfeh7GIF6GF\nZaygVcjZBu6z/Hkf+cQf4U44EWUhe2tZWjlAc8qf4Dq578Qu2rIAez75CrayAH5Tn7DRk7UCruIZ\njalnxR/e/VYNQuIHE3+Km9R6HodZgLNCi/Poxy2uUuvrGP0LqHpSHtAu5K2EBSEu05jCOS6yVPiv\neL0DViMs6ugPO8EAAAAASUVORK5CYII=\n", "prompt_number": 14, "text": [ " 2\n", "x " ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "# Replace x with y\n", "(x**2).subs({x: y})" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$y^{2}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAAbCAYAAACeA7ShAAAABHNCSVQICAgIfAhkiAAAAVtJREFU\nSInt1LFLHFEQx/GPZ/ACygmpJEI8tFFEIYJIVIxNiIXNIVhoaZki5F/Q5gikOkhlpYX+A3aCaNLY\nSbqkEIQUgatEEBTUFO8drKshu8ulyw+WZXbe+87svJlHG9WRc/0UptGLGWzgqEjgHtQT9jIu0V8E\nNo5bDEW7grsIza0O4TdbpRmNsJdFYGlt41M7QGv4KP8BPtBihMFTVFuOzpyg13iBPeF052N2P/Nm\nNIgLoejJp/LY4ioaMepKyvcO+3kif0YX3uNbyneM3b8BSvE9i6+4xgJ+JNZ0YwKHWbPqQ1kYjRvU\nEr43Qm1Gs8Ja+oDzCG5pHU0ZeqqUst/iAFeJb3P4ErPLBRvA94RdFuYx0zWThp3hWcKuC12eqfjp\nOgxjEyfCXfUKYzHAbRbgn1TCL2wV2bzjfrPWhL4bKQJrCuMEz3GK1TyAZM2WMIknQhM3hDH6r3+o\n38LwOEuimErTAAAAAElFTkSuQmCC\n", "prompt_number": 13, "text": [ " 2\n", "y " ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "Subsitute $x$ for $sin(x)$ in the equation $x^2 + 2\\cdot x + 1$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Replace x with sin(x)\n", "\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Subs + Solve\n", "\n", "We can use subs and solve together to plug the solution of one equation into another" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Solve for the height of a rectangle given area and width\n", "\n", "soln = solve(area - height*width, height)[0]\n", "soln" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{area}{width}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAGYAAAAZCAYAAADDq1t2AAAABHNCSVQICAgIfAhkiAAABKtJREFU\naIHt2WmoVlUUBuDHriNZGppYectUckgqoswMx0gLoyhpUAltIMkMJSozggIbtCQzS/JHSCQNZBFZ\npFJUpFmZNv6QtKiQ0pAGlSYt+7H2yeO557t6Tble+1643LPX3nutd++119rrnI8qqjhAuLSxCVRR\nF73wUmOTOBA4rLEJ/EeMwTP7UV8HrMctezH2IXyLnRi6l/oH4d005+V9IdhUsAZt9qO+4/ARztvL\n8ZPwRwmH7vgOJ5TMaYHfces+cjzo0Q9PNTKHZ7G8RD5FbH7rkr4BImL61ae4KaeysXi6kTkMxNsV\n5O8L5xQxBNtEtB9yqMGnaN6IHLqLkz+8pG8TpleYtwxL96S8bGHDMAHf4Gi8IULzjNQ/Slx2tRiN\ny9AHXTAHH+R0nYaJ+Enk1o64EVsbYK8Mw/AOdhTkvXCTyO0LRarJsAgfYgY6JZ6Pp3afxKtsXpHn\n12iPz5L9Fan/ClyNo5L+oViCxXgsjWkhUtnDuAttcYzww3jlEQauFd7uktpd0+DMw63wQHpeh1dF\n2HYQG/toTtd4fCIu1Ay34eIG2KuEBTinIKvBfLHIySKiMrTDXxiX2h2wEa+JzZqf5k8pzKvE83j8\nipUlYycoLwjYdb+syOlqLg7qNSXjwanYLqIgj824Mz2PwCVoKTbwniSvxccif8LZSVd+8/oJR3Zq\ngL0ytE62mhXkF2Fkel6C53N9I8WGnJiTjRHFw+VpXfC6utFSH88ZJfwqFQRwB/5E34L8F/VUaa/g\nR3GCMvQWCxqc2v3F6RuU5KdU0LUUP+BBzMJsXI8jG2ivDKNwf4m8Vpy+WhEdF+b6Zop3jjwG2JX2\natANf9vlpPp49kk8LyjhsRH3VuC+LP3l0VPlu0p7kS+fK8hvEGFZLPvuFiemeGqJBewQ6aESGmov\nj0Xqnrg8bld3I1eqW1pPFndShvvE/ZGvVCvxnJjkRxTkJ6u8yS1ENTatIJ8qIqZVXpiR6CFOTTFn\nDsEqkba65eRDRZm4s4RAh6Try5K+DA21l6GdyO+f16N7uCggtqd2DU4X5WsefbE2PTcXF/cTImoy\n25V4DhXl7lZ192WHeLsnHFubns/E4XiroGs0XhAH8l9dmWO2pP/5cG8jNiozMjkn719iIMPmpK+s\n4uuN6xpoL49ReLGC3Qyd8VWh3bIg6yk+vWQYIe6+BWnspCSvxHOwXe8veZ4Dxf23LdeXVY5DknxV\nbnxfcYctKOrKHLNOVCNdU7uFqLBai/DuKDacyM0tVXZMlsbOt3uqO1dccAsbaC+PK+3529hqcdIz\njBWpLauCanCz3SvInonPBpGmso0q4zlPpJ31wpmbcnpqEn8iQn7D96k9RFRj+RL/JPEqsVwcuiVZ\nR7PCoNn4IhmYK6qq8YngNLFZV4lL8yzlqYyIlpmiVN4gHLkGT+bm7K29DJ1Frq+vMCCc+ohIDVvw\npihEpot3jxrxXrE2N+dY4fDViefCXF8lnuOEc6YKxxOnfx7eEw6bJVIjkUrnFnS3FV/H16Y1z9nD\n2g5KTBGnuYqDDCtENPwv0FQ+YvbAz8rvnUMSTcUx+/sHsSr2ExaLi7KKKqqoooqmg38A2SEmPBfg\nAAEAAAAASUVORK5CYII=\n", "prompt_number": 25, "text": [ " area\n", "\u2500\u2500\u2500\u2500\u2500\n", "width" ] } ], "prompt_number": 25 }, { "cell_type": "code", "collapsed": false, "input": [ "# Define perimeter of rectangle in terms of height and width\n", "\n", "perimeter = 2*(height + width)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 26 }, { "cell_type": "code", "collapsed": false, "input": [ "# Substitute the solution for height into the expression for perimeter\n", "\n", "perimeter.subs({height: soln})" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{2 area}{width} + 2 width$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAMAAAAAZCAYAAABn7SHgAAAABHNCSVQICAgIfAhkiAAABhBJREFU\neJzt22uMXVUVwPEfToeWUKRKlQpWESqFSsAHNqXyrFE0GEEafICP4ouINTRG8RGNxmdVWnygkRDs\nGI1CQGJEQ0HRolQivlASv0BUjA8wBCISBUXxw9ond8+ZfaZnZu6deyeef3Iz96z9Wmedvfdae507\ndHR0/F9w5rAV6OgYFkfgm8NWomP0eEztei2uwXW4HZfj4PlWagCcja/3sb8DcCfe0aLudvwBj+KU\nlv2fiB+nNt+ajYJzZD7mwSBtOCv7PRs3YFm6Xoof4q84pG0nI8ovsE8f+zsYv8QLWtbfjIcLOhyG\nP+OphTbjeAjvnKWOs2W+5kE/bNhX+30Hq2qyZ4lVdEXbTkaQtfjKkHW4AjcX5FvEQ1pSKFsvbL+2\nD+MfjUUt647qPCjZsK/2e1C4mSfW5Pfj3tZqjh6fwYuHrMOf8NGC/Bu4qaHNe/F37SfudExov3uP\n6jwo2XDO9svPAL/Dgdi3VqfkuhcKYyJm/O4QdTgMByk/qONFeFHiZBHHPjIYtRoZxXnQZMM52y9f\nHeuwH+7OZAcJY+wqtN2A83AXnoAbhUs6NpVvFJNvJV6Fs7AGTxa78q1ZX8/E+WKXGcdyvFWs4Lbj\nldiAH5lqhCPwNhE7ftVk1341foatYhe8FV9M12uSXqV2dT1/L+Lo29P4u1P5K3AuHpf6PwU7cS0+\nn+qMCxf+aXxAxOFPEs9rk3D7g6LtPBiWDefVflvxn9RZzhtwj5jMhHt9CNen68X4ZPp+h4grTxAn\n/7twSdbXJvzK5CzDhTh9BuM1sQPPq8nGcKkwxgX4dVa2v7jf16XrA8REuE4Y9dLUfkutXZOeT8E/\ncEuh7nmad9Uqft2d9bVIbAivL9TfExPmdoCtz4NRsOHA7bdKxIMfqcmPwb/Frp5zL96Xvp+Kl2Fv\nMVGrPlbiNuGe4LjUVz5J14oFU8WgbcYrsSSNtVdN/lKclr7vxFVZ2WnCcE/LZGeLQ/TL033B90zd\nuabTc2tBv6aDMRG//gtH1eR/M7us0ITZL4DSPBgFGw7UfouF29peKPs27hOrueJIcdMnpet1Yic4\nMcmPbhjnepFe+xQuwsV4Mx47w/FKbMTHC/KVYjdYKXaql2RlnxAHwJz1eq5+DIfiv3oPcjo91yQ9\nS4fwu5UPxkQa8oaabHXq64UNbaZjwuwWQNM8GAUbDsx+e+Fr+FChbJmIxa6syd8i3FE9HfVBsXrr\nuzBxk48Il9jETMfLudrUHSDn3aYa+xZTU6YXiHi34mMiNs0TCE16np/k+9Xkz9D8MMbFjvuemvxd\nYgdbXGhT8WXh9eqf+/CbhrLnNPQ13TyoGJYNB2U/hKt7f0322vT32DTwllr5lXru6NBMfpNIVZVY\nkfq6cBpdZjpexf4mH7JLfN9k1z0mFtXmWr3Lsu+L8Bc9+1RjN+l5VaZHrudm4eqXputlYjelF78e\nV+vrNnyp0FcbJszcA0w3DyqGZcO+2a/+U4hzhWv6cE1+fPr7QPqbu7h99FJOxGqv5OuUM0iEZ3hA\nOU97JN44w/FyNopX+dOxAr+tXe9dk60Wr+srThVnkx2pbvWgm/Q8SS91l+t5gnggD2ZlVabq5CT/\naVb/KBEf7yj0NQj2NA8qhmXDvtkvn3wbRCy+U6Sn8jqPpu93iJP7Iel6XGR0lgiXtlzvZcn6dIO7\nlKnCnxeJWL0a4/k4R7i+h2cwXs4r8aaGcSt+bvIbz3OEO6+yBmN4e/pUrE76/FHsVJVBS3b5gnC3\nd4oHfk/Wz1jSH56Lf4pdkXiAu01O3R4uUsQ3i8W9cw/3NhfazIOKYdlwIPa7P91g6ZPvBIeLLM3F\n+CyeLlKZu4SrW57qvUa4rlL8X7EI28SJ/qLU36Zam7bjVazQ/HYwZ7mIcXeI9xJniEV7o8gff87k\nuJXey5jteHWtrEnPHyQ9H5/VPUY8pG0iBMw98U8KfS8VWZNLzG73n9A+BGo7DxieDefbfguKLcJ7\ndPSYsPB/0DgQ+vE7k1HjLJNfonVEfD3It8cdI8Iq4UI7OlpRzwItdPr9jy8dHQuKa/Vywx0dHR0d\nHR0dHR0dU/kfLywOMJQIn3wAAAAASUVORK5CYII=\n", "prompt_number": 27, "text": [ "2\u22c5area \n", "\u2500\u2500\u2500\u2500\u2500\u2500 + 2\u22c5width\n", "width " ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "In the last section you solved for the radius of a sphere given its volume" ] }, { "cell_type": "code", "collapsed": false, "input": [ "V, r = symbols('V,r', real=True)\n", "4*pi/3 * r**3" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{4 \\pi}{3} r^{3}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAcCAYAAAA5pQx5AAAABHNCSVQICAgIfAhkiAAAAytJREFU\nWIXt2FuIVlUUwPHfeKlRbIzowR7KLK0hqCyi5iWb7oViNRJ4KRUhJTEw6iHwJSjt8hJBl5egUrpa\nmlgvFYmBZEV2f5JAX4TAym42lTU9rH2a0/E733eOM9NXzPzhg33W3nvtdfZea531bUYpHe02AHMw\nHcejF8/g7Tba869xEMtS+2Ycxgkjvei4kV6gAr14JbUHMPEYdPQNmzVt4nmsqzmnG6/VXWhCi/67\nxQk8UFdxTS7EFfgZj9ScuxgvFGQ9WIVfMAmTsQGfVlE4PRlyb01DhsJKfIQpNebsES+XcQFeR2dO\n9iR+wOxM0CzG14mdGkl68DVmpOd3xelfV3H+xfhSnGzGUszFDTnZGyJhrsgEZS/eh3cqLj4UjgjD\nD6TnM/A7Pqk4f4nIC3k+Fqf7bU6WedDhZsqm4KnUHjDyrn4L7sKdeBXXVJw3Hp9pnafgYbHJ5zcb\ntB5npnajF+/Ci8K9Bkp+f+JSLMBj2CbCZhkewnPCTYfC1Xi8wrgZIpxW5oXF3ZqNn/BViZIObBTu\n9LQIiQ+xD2vxBH5Df5LfhzXYi814UCSePfgOH1QwvIzFBj2zEfNwiYj1R5uNHYdncVxOVjzxpbg+\n97xZuBxsL+i7Fjclff24P8lPFTHc28ToVnQmHVVK7gl4C7txcqMBt+PygqxZjJ+Irak9OSnO04Op\nohYfwHkVjKzKAvVqi8yGrEL8O6tPwznYUUPZEryX2t34o9C/G9+LwuQbfF5DdysWiTzRiG5Hb3L2\nleiTMnwW41c5uvTLauaFIvY3Ykuu/7b0g1OUuJHwop1ix4eDqTgNXzTo6xL5ZyLONpirskPpMBia\npZyu3NXniOSUKVkksnxnYdwk/Io7Wi1WgxW4p6SvU9QBe3FSTn6ReJf3qywwKw1e36BvG17OPV+W\nxs4rjLsyyc+tsmBF3hTldBkbxEbnE98m/CiqwlK6RKwfEEb3i1i+MTdmn38WGl3Yj/kFXbeKT9Zw\nXXhME2HTiuXij8smkdFfwlnDZENbWIvV7TaiHexSnkRr8V+4ganKTBwSV1VD5v/04o0uHEYF29W7\noBhjjDFGMX8BujKdmTfmfkUAAAAASUVORK5CYII=\n", "prompt_number": 34, "text": [ " 3\n", "4\u22c5\u03c0\u22c5r \n", "\u2500\u2500\u2500\u2500\u2500\u2500\n", " 3 " ] } ], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "solve(V - 4*pi/3 * r**3, r)[0]" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$$\\frac{\\sqrt[3]{6} \\sqrt[3]{V}}{2 \\sqrt[3]{\\pi}}$$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAG4AAAAgCAYAAADzCU3nAAAABHNCSVQICAgIfAhkiAAABONJREFU\naIHt2XmMnVMYx/HPdFrdGM1Eqb0YYi9FI5Zah1qTWmNJk1ZFbSFSO6FaSxsECUktIZYSe1GiJCjV\nRoJGhVgSuwiiEqUI5Y/nbea979zlvXfunda43+Qm55z3Oe/vfd9zzvM851yaNGmyelgHp+FUzEZr\nzn7/1OGXV3P3Oumt+vUJjsKNSflt7JKz3/MY1EuaPdHqs/QTq24glmBojj7jcHEvafZUq0+zCW5A\nZ077Z9DWS5r10OrTtOBlDK9gtzdm9JJmPbUaQa35QV1oSZXnYHwF+8dUHtx6adZDqxqOqdK+1vyg\nZvqlyjNxZlLeDF+W6TcK3+KHHurn0ayXVl62xYQq+8zDNBGrW/FJCbtpGpAR74iTcQYuqPCg94sP\nXYptxAq6B3fgJuFOsuTRLKc1G9+IF/kLi3FcEbv5WJnYLcGeZZ79GpyYaRuDJ/EClor32jhjUylW\n74SJZXQbTgfuLnN9e7Fy9krqI/AZrm6AFuwgBmROBbt3cUgOzXcwOFUfLQZ+WFJfGwvwPUZm+paL\n1bMwIId+w5gt3Ekx+uMjnJ9q21S4ufPqrLWKwWLgXi1jMx7n5tAbgwcybfPEBEqza6L5SFKvFKu3\nE16loRRzaavYWPmZPQl/6pqdjdRK8x2+KHGtDU8ojOeluBWHZdqWCw+yfqZ9GX5MyrN0xeo3sFvG\ndqaIfw1hCB7C7WVsbiryUGlewge9pJVmkYhxxVzRLSLBqUQr3hNeI81S/IEtMu3f4dekXC5Wd+Cc\nHPo10R9XYDp+UXyj2y4CdClasAKvYazYd92Cp4VrqadWljnCdW2Zad8T1+e8R6fiE2moiNNpNkr0\nXslx3+sVxsw0bcLdrlA6e1yJfSuJtOM3xePRNBxQpu96idCHmJJq318M0A511MpyXaJ9UKptAOaK\n1Z2He8VGPw834G9dCVg7ti5iN1JhvE/TIib1VThUxPPJOBjP4fCkvI98bt5dIsFIB9y1RZAuxwbi\n4/2u+wz7OnmYemllOT3Rnpxqu1R8kDwMEtuElkqGwvUt13WSs7MY9IeL2F4r3qcYExTG08d0nbg8\nm+M5ujFKfIRxqbapOLpCvwFJv/eLXFss4kQ2QNeqlaUzuc+1Sb1D7LXycqx8LnUg3sLNqbZWkYwt\nU7i32wQX5tQfhqeS8hDxvWpiga5ZPxAvyjcbv8frRdpfEx92wzpqpelI7v9QUn9UeIC8PC4SjHK0\niFh6TYnrt+uaOEQMz3sofjYuSsqjsTBnv24cL4Jih8iUTsnZ7xkR47IsFi40m7H1RCvNWiLmvClc\n0OTy5gWsK1ZRJWbgykxb+mhsGzFxB4lk5pIqnmEJ9kjKR4jwURP9RVy6TaT4eU+7TxIJRzrGteBn\nsQrqqZXlK/wk9mzVrNhJKn/kiYqvtDsz9Xli0lwtEpY8jBVudtV7nySyzJr/ML5crIQplQxT9BN7\nqqmpthPEycnIOmtlWSDiaKWTlizzsXmZ6weKjfaDmd8juicknfhYbHfyMlfhpN5PuP0jq7hHAcPx\nqepHvh33iSxpjni5rRqkleZOXFZlnxEi/pZjmdJ7rOlF7Bep7i+ozxWeobaJU6BqE7T/FefjrNX9\nEE2qZ6E4OPjPkWtH3kfpEEnTj5UM10T+zwN3suKnHU3WcJ5V+jiqSZMmTZo0abKa+BdhmUdtJ3/Y\n5QAAAABJRU5ErkJggg==\n", "prompt_number": 36, "text": [ "3 ___ 3 ___\n", "\u2572\u2571 6 \u22c5\u2572\u2571 V \n", "\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n", " 3 ___ \n", " 2\u22c5\u2572\u2571 \u03c0 " ] } ], "prompt_number": 36 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets compute the surface area of a sphere in terms of the volume. Recall that the surface area of a sphere is given by\n", "\n", "$$ 4 \\pi r^2 $$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "(?).subs(?)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "SyntaxError", "evalue": "invalid syntax (, line 1)", "output_type": "pyerr", "traceback": [ "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m1\u001b[0m\n\u001b[1;33m (?).subs(?)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Does the expression look right? How would you expect the surface area to scale with respect to the volume? What is the exponent on $V$?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Plotting\n", "\n", "SymPy can plot expressions easily using the `plot` function. By default this links against matplotlib." ] }, { "cell_type": "code", "collapsed": true, "input": [ "%matplotlib inline" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 41 }, { "cell_type": "code", "collapsed": false, "input": [ "plot(x**2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "" ] } ], "prompt_number": 42 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "In the last exercise you derived a relationship between the volume of a sphere and the surface area. Plot this relationship using `plot`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "plot(?)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Low dependencies\n", "\n", "You may know that SymPy tries to be a very low-dependency project. Our user base is very broad. Some entertaining aspects result. For example, `textplot`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "textplot(x**2, -3, 3)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " 9 | \n", " | . /\n", " | \\ / \n", " | \\ / \n", " | \\ / \n", " | \\ . \n", " | \\ \n", " | \\ .. \n", "4.50149 | --------\\--------------------------------------/-------\n", " | \\ / \n", " | \\ / \n", " | \\ / \n", " | .. .. \n", " | \\ / \n", " | .. .. \n", " | .. .. \n", " | .. .. \n", "0.00297 | .............. \n", " -3 0 3\n" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise\n", "\n", "Play with `textplot` and enjoy :)" ] } ], "metadata": {} } ] }