{ "cells": [ { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import sympy\n", "import numpy\n", "from sympy import Eq, solve\n", "from matplotlib import pyplot\n", "from sympy.mpmath import quad\n", "from math import log\n", "\n", "%matplotlib notebook\n", "\n", "def sample_function(f, start, end, step):\n", " xs = numpy.linspace(start=start, stop=end, num=(end-start)/step)\n", " ys = [f(x) for x in xs]\n", " return xs, ys\n", "\n", "sympy.init_printing()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. kolokvij 2011/2012, rešitve" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 1. naloga" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Poišči največjo in najmanjšo vrednost, ki jo zavzame funkcija \n", "$$f(x) = x^4 + 2x^3 - 2x^2 + 1.$$*" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [], "source": [ "f = lambda x: x**4 + 2*x**3 - 2*x**2 + 1\n", "x = sympy.Symbol('x', real=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Kandadati za ekstreme so stacionarne točke in krajišči našega intervala. Stacionarne točke poiščemo z rešitvijo enačbe $f'(x)=0$.\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAK0AAAAWBAMAAABAjAHGAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMpndu3bvImbNiRBU\nq0Qb3U6NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACZklEQVQ4Ea2TS2gTURSG/ySNk86NaXCnm3Qh\n4oOutJQulFmIO2ko1IWliNCNWDHLrnRQqI8u4qMuspHxEaSIOJsULAgRBBcqdVMfi2A2rhufWG2J\n5859zEw7kwh6Frn/Od85P3fOZIBAVAfcQBaW5s594cLfZ0k7acV2P8CHWNYFJJ1MK7ZlCIVSLOwG\nklZsxyGcb8bCbmAh36FjKX75HaY4St/q1DDYCUaxbbqYtLQUwqzeURWzXyl1JjZVPML2XhWPfUA1\nwljTUrTcxh5VuaCEPlOWlkHRW2dDPE9PyupC3vgpZLYozp5+HJYw5+Q2Lv+YJVn4mAHmeWV6TtZT\npfRpIZXvSkkiYPur565OPGFcscIFmR0FvFfsKN9E9ZH0Ub5H/MGz7bafeMrstTZURLoOrNSBTIl8\naxPnjhf9LuW7umO0CTb27lPVZ1pdIt8Ixr6QL3nVMAfmZAZT1/QEpC9btTGFRVwsDvtMKVYkX83m\nKzxuEDR+AQUHcMjXdM3fWbkDPqd82y52uQ/x2H3Bq+EwQb4RzKD7km82z+/Le1SYlcrNU5XKG8q/\nAuWmSw06nuzncZ3yZ3wmxEST3MMivLE+2ogfar/0+GUb+O4TrZgj7rKZ0XtbquN1o/FjmW6e1xMk\nlO9bfl8kPgeZ1NlG4+OZomb3vOc4yCH948suF5PIuieQ9jTPfd8C7Rcv0y2Mi3r4d4sVyei7EB/p\nN/q/jWA6MKTuu9VhU7m1npZhB6CWfVYkS9XZSd5zv/3+6Vhtt637/fvi7kCeLY+PXg4wLc2R9dko\nxqoToaXqgYBvoPY/JCv9q8sfH32fXT3W9b8AAAAASUVORK5CYII=\n", "text/latex": [ "$$4 x^{3} + 6 x^{2} - 4 x = 0$$" ], "text/plain": [ " 3 2 \n", "4⋅x + 6⋅x - 4⋅x = 0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "eq = Eq(f(x).diff(), 0)\n", "eq" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHwAAAAyBAMAAABsYqKRAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhDN3SKZu6tE\ndmbQNlrcAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABwUlEQVRIDe2XO0sDQRSFT7J5P0xExdIQbGwM\nlnYRYmEXRRAJYsDCMkHBFBamU6tsG9NYWFlFUOzUf2CrheBf8JHYKOvMLsxkbjYYZgubTLGce+58\ne2fvzoQsZqx3aI6c9YaJwrImjfXCAiZ1Yc4taeLGlF1VEy+1Ol5wJEe4ZudHrdPe89Gr7l3/kTk9\nu7C3cu9lc362N1S18uKCbeQe1Dywg4069USs4PEifGmRcsRYGv4y8WSo4L4q4p8yZ6tYG4ZzukjC\nDhU81OnHU20kPtzIfpw5YVpp20TiZ2j8MUOmNjIIDP4pVhbPyENCo2H+iQd3a2wc5IGoSXHXxacs\nPthUUv2Z0mCtM4ZtnWHihNwgdo4x2k45Ra2+AjzJnK3YtomWiSdDBY/sZVvVYFdmudrHap56YoaC\nh1g/qqgVRZaLtZdrUE9MUHDHNeoiKwT1Is3LPE+64H4BSUG9EvzfA/AtSQlFvRtgfAD+KiApqDcN\n3OdZ2mXxEhqsKkVPOLvxEX9BmtWBhH0MtfFwmz+aNt7ktDaedE62bvVFROr61QMmkh7w4+zcLSuu\n++wVy/rygHOUD93WOfS/4x7/kHv7HPgFOg1vyQmYfnIAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left [ -2, \\quad 0, \\quad \\frac{1}{2}\\right ]$$" ], "text/plain": [ "[-2, 0, 1/2]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "critical_points = sympy.solve(eq)\n", "critical_points" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left [ \\left ( -2, \\quad -7\\right ), \\quad \\left ( 0, \\quad 1\\right ), \\quad \\left ( \\frac{1}{2}, \\quad \\frac{13}{16}\\right ), \\quad \\left ( -3, \\quad 10\\right ), \\quad \\left ( 1, \\quad 2\\right )\\right ]$$" ], "text/plain": [ "⎡ ⎛ 13⎞ ⎤\n", "⎢(-2, -7), (0, 1), ⎜1/2, ──⎟, (-3, 10), (1, 2)⎥\n", "⎣ ⎝ 16⎠ ⎦" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "end_points = [-3, 1]\n", "\n", "points = [(y, f(y)) for y in critical_points + end_points]\n", "points" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAO4AAAAUBAMAAAB4yRxuAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nMqvFy5UvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACt0lEQVRIDcVWMWhTURQ9P03SpPlJK6KLyxey\nFAerLiIocXEoCAF1ipQvShAKJYKukqlrOkqpkMU6toO1SAYzCOJiuzi3urkpVChYW899///89+9P\nMJsX7nv3nnv+ucn7L+8FcDwYx3iWmRnKc7yhcBo8T8honGYgHtqZO9ejUM/lpUavh68aNrmlcK53\ndSgFbuPCLiryuUXjZugB193H+24QpsbMycnJMT6kcAFEJTCnjo4XJYO5sAZk2+4DuDVi1MjUAw8Z\nlT6KK2Gspxw/6j5KLY0zF5XQJg8x7UdJNH9eOAJmgTfANjFq5CkmHlrRR+VPlKi5xAd24a4oWFJL\nYWoVO7UUZZJ9bwCdPj6xRo2znMRDyx6N7kvKa/p8xLVmS4HokHWWvsfARhvZLhnzeMZRPLY8KaNs\njoWtIcWEgruYZrCv+4t9WyjVjcZljuKxbWzGsYpKHoGqAiW1FZy399MM9nV+A3ubyNRYreIxR/HY\nluJQRzsCLGuUeVLhXTdFkb78vuxb8FlcxipHunurSXu0C+RkHRIW154KvpcoBklCAcW1FCVe5/IP\noxH2jYmJVxXDJnoo44i+EdWZwcRhlAxm9pV91Wkj7KvXuVDHqQFbBS6fBNYVKqm1ztNHo/peAS72\nMeWTv252hL0rvgBPRGmYlfmG/rmvinPI/0w9Ld93FrjLI6bGYtX8KrYYheYs9hZ89yBKk3PB9G0Q\n1AxLIeOh09J1SN98233J/SM/l4ZZNWvlsjyDfTT7rKXNeSHYbRmafRkHZing1b1rqXru+8E3uNvP\nuW+zdGqoczJQKswMFFOB4wukGNY5GTyg6gFoRjnaqKHuhYBQsng6LLUEUQzrXgj4qm6JhPcCLhET\nt+2jnag4uAc1Y2yF6B40d751a5sunuplp0EHzRhbYUJeoWg43v/4n/MXeu+YurHrsNoAAAAASUVO\nRK5CYII=\n", "text/latex": [ "$$\\left ( \\left ( -2, \\quad -7\\right ), \\quad \\left ( -3, \\quad 10\\right )\\right )$$" ], "text/plain": [ "((-2, -7), (-3, 10))" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "min(points, key=lambda point: point[1]), max(points, key=lambda point: point[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Določi tudi intervale naraščanja in padanja.*\n", "\n", "Funkcija narasca kjer je prvi odvod vecji od nic." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left(-2 < x \\wedge x < 0\\right) \\vee \\left(\\frac{1}{2} < x \\wedge x < \\infty\\right)$$" ], "text/plain": [ "(-2 < x ∧ x < 0) ∨ (1/2 < x ∧ x < ∞)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.solvers.reduce_inequalities([f(x).diff(x) > 0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Funkcija pada, kjer je prvi odvod manjsi od nic." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/latex": [ "$$\\left(-\\infty < x \\wedge x < -2\\right) \\vee \\left(0 < x \\wedge x < \\frac{1}{2}\\right)$$" ], "text/plain": [ "(-∞ < x ∧ x < -2) ∨ (0 < x ∧ x < 1/2)" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.solvers.reduce_inequalities([f(x).diff(x) < 0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2. naloga" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Odpira se kavna hisa kava. Lastniki hise zelijo mesanico kave prodajati v licnih plocevinastih skatlicah, ki imajo obliko tristrane prizme s prostornino 1. Osnovna ploskev je enakostranicni trikotnik s stranico $a$, visina prizme je $b$. Pomagaj jim poiskati optimalno velikost skatlice: koliksna naj bosta $a$ in $b$, da bodo za izdelavo porabili cim manj plocevine?*" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAACcAAAAvBAMAAACS3s5rAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABnUlEQVQoFc2SvUvDUBTFT2rTj9SUWBDHBgtu\nUhCdRf+CTILFoaODQ6lDRzMI4qTSxW5BUBfBLB0ExeoiXbQKjmI3wUEUDRW/4n0vLzGVTk5eyDv3\n/PJueH09QLiyLqswoX7+l2dWsnvASKsHLAQskxv3+1FIlUW2Wy5iyfSobCED9YtMzEBy3YPxNi5a\neCOTtBB78SB9ctWU38mknACes3d8nFRxkDBJLXpQKLEVWCuhaQP9DeqHtgyGgB1Ic680wE18k0tE\np4M9A3fcoca3njKT17BNMgBMtkhVnbVZPV0i4xoenAZO6Dc4ChurAvsaXdduZcQCop0rYniA+kGS\noqsmiIM6LUgM50ymom51vwtpij71T4oHpXt5/OvRymPsqrorrsXsbkJO0aJPAor8MGhK9AfyEvnh\nveoIKPLDndIQUOSHu7JgJH5+kNZ/IMtPptw0sIJln7L8JDZwjOjRzYQPQfmZbSOHpOuGLqNm5A3s\nBZuo4fmpQhZ59l6x/Fx3oIYmvfwMfqLPvgzN8/wc4r5IBwuK52fmbGrB9NE3iuuAhi4e29EAAAAA\nSUVORK5CYII=\n", "text/latex": [ "$$\\frac{2 \\sqrt{3}}{3 a^{2}}$$" ], "text/plain": [ " ___\n", "2⋅╲╱ 3 \n", "───────\n", " 2 \n", " 3⋅a " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "a = sympy.Symbol('a', real=True, positive=True)\n", "b = sympy.Symbol('b', real=True, positive=True)\n", "v = lambda a, b: a**2*b*sympy.sqrt(3)/2\n", "p = lambda a, b: a**2*sympy.sqrt(3) + 3*a*b\n", "b = solve(Eq(v(a,b), 1), b)[0]\n", "b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Izrazavo za $b$ vstavimo v enacbo za povrsino, jo odvajamo in poiscemo resitev enacbe $p'(a) = 0.$" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGsAAAA/BAMAAAAVjiveAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAdlTdIu8yic1Eu2ar\nEJk85eg2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAADRUlEQVRIDb1WO28TQRCee+DLJT4bfoHd0BIj\narAlQNBAIpGIAIXvHySiiQQSiXhIFEh2Q0EVaNMkEgUFRSJRgw9FUCH5RIUQCgHCG2Jm9nXr3DMp\n2GLnm2++2b293Z07AGqHWF+kc8NIZTYinIceRYLTfoTz0KuuUhxVKB+4U1LjLEqUYe3agBrAOyma\niOaVVNyWpahfF8HluCjOnJWUM8mR+U0yWfatDHqfOBpZlMxua28u+4LzGmDPX6uTtxAwbnaVmYTu\nDTg/BV2pw3kwf5M3wfW9hAROPQeYFsENgFodvpDHn877IyJxcwGg53P6OsD9rveDHGOb+jH5HOQM\nt04g03Bp2PhDet8Jj25Rn9aaAYsYbD0bc8y5Q311keHkzsWRH2DIovCZE3yMBR+dJT4E8fFmrYMx\ngzS/Wc4lplg6iGahG1crZhPgXA0FDc5MB2T7D7HDdac2I8QQqsbm0J4CWKmjBWsSO7YX5CW0I2C3\noLINFg09CERaGXfA/pUgF1QpBKMF9g48IeIyQLNFwMHDYu4QSm4n5288w0gvOE7xp2DyUzyGr9cQ\nBzopsTMY0BJmr4YUdTffd8mCi+eqwo4nc9O6kRlaWtRsPGOj4mwdHg5FooR1fMXzzA6m96KXnga3\n9UEQY0U58JdztYy0XVnQDqC6tfc03If/mNbxob+Ph1zpQn8ydW1VVoeHOybOTtv9ApVPaft7yP28\nyU5X3wBez9SjpAN8k2K2D+17q3AsSJfqkaavDhfRZgu7eJPFX0XwlFjiTBLnqMAQkMVfkW28ONpn\n6qUKDAFZ/BWJN6DyWXmwGkEdyeIvOQ+vfFZRkDpR/KVbwqplsg+BZFKsKP4iSlWrlP6dUmPI4i8I\nA8tPoT0WxV+kVegtNtWgGYAXfyEYoWP80c+Qs5Aq/kJYbSAYT3nt0WCq+AtqNkQwsS68VKOKv1Dg\n9mPFoykzmyr+QsV+LRxWX7PyVPEXIpwdv1RF9lsf1eUfm1s6VwCX+Z1Z8wtoNUk1ZE51TuMKQDGN\no13UAllwV4guFhErjSvv9VqguALACoXI2tPixuUkpdwN1x/iinIeK5QPyutKUw4VzAX6FDdz1VJg\nT0mE9rWGsyH+g1H7B5rf57o27PmcAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\left ( 1, \\quad \\frac{2 \\sqrt{3}}{3}\\right )$$" ], "text/plain": [ "⎛ ___⎞\n", "⎜ 2⋅╲╱ 3 ⎟\n", "⎜1, ───────⎟\n", "⎝ 3 ⎠" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "val_a = sympy.solve(p(a, b).diff())[0]\n", "val_b = b.subs(a, val_a)\n", "val_a, val_b" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. naloga" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Izracunaj nedolocena integrala\n", "$$\\int \\frac{(1+\\log(x))^2}{x}dx$$ \n", "in \n", "$$ \\int (x^2 -2)e^xdx .$$*" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAQIAAAAqBAMAAACq6UiMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYiibvd\nRDIcHY1cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEXElEQVRYCe1WXYgbVRT+ktkmO8lkNioIYmUr\nKj61hkUqLYILorJSafAHlhVksG6E+NAVCsFqdV6qFgXjg1JsZYO6Kyz+pBhFETH6UF0fJA/+gEg3\nSF8UcXddFaq08Zy5907u/FEXH6YPPZBzzzn3u998c+6dmQAXgF1aSVeEcdvelBUA+y8quNgDegwu\nzHNQmL11M4/owvv/6zTH9WAa929CQaE5MrcJeAQap2AGL0RwyQWraZ9Jnj3/TJwCbKoHVs88e/7r\nJCNiFRg7khfEzGQ2Yor/tXTvDQfcKPZhx6uZcmq0GYXoFcvxsqOydkSfi4vjeE8fDCLFSTymilMq\nEKN9RytQWPAysy2LIyHBYXLE8RrXBigxX+b8MVW8SQVynJjUC6NVL8urCxtz+iwQJo/n7WiL6BTM\nu5RLZooKDjmyjOMNKE6KUfgfcIqDw35tUUaXy1Enp1KUl3EB0DIerFDNUjcFYxtjEhTYj17yHk8u\ns/NsQo4JCqK8jA8o+KXubfxxSUTDIRHG9iA7GKzRtNkVGPL5nggTFER5GU4KdtfeBr5ZePoRsRyY\npWDnQ6/WHUCcNX0XjMV6D6U7p2ttCc9VacdrU9/RFhQoZNMU6ORRXgZ3YC+j6JQ28GWOc7YPibI1\netKaA54RFa0HvzbxAVYqluuIKRRdugk873xBG00r2IYKAuRRXgZ3YLVgnxvpYg+nnn1Gd1MpbGSa\nwFZR0RR8Baz294AWSLPKwOt4t3IFHRdZHCoIkAd4B2xrxNHBKjH8vWWbpmA79QD5Nl9hlX6FRuOJ\n6xuNSQqLk/Y6MNa6W1OQ7QEVPE6zsJnxzUbj80bjAOch8hAvI8g6GCeGf8xzxtWiQJ6QdBmHPSsg\nG/YgQ5+CsfZ8f6IsZgBWAPzFzlNA47AHAfIoLy8SMv806/U+p55Rt7jV7H9kpyvwelB9efEdMUGe\nd4H2kfNSl72ugBvsk0d5GdxBtorS2Yx3I1wgoxOTqexHrhJ3Eq8DVnpXCaDn+SRellvDvriTGCCP\n8jLBx7B3IN8qHfqt6fGxo0dwpfwpjlI4I4r+LrTxUx8H8f2pn8UEeXoES+vFNdMFtrTgmdqFEHmU\nl9CnB1N4aeku4KnB71Wx3Gv9jbWd0y7lT4qaVGDv/aNpzrzRQ34woF4Io9Ybt++bfZayfJ8cmVQQ\nJqct1XhfWToh0MIXy8aLJ1Vh+PY0u6KmeqAQJ7Brq6OSZRXguIxUD2SqyAO8ZhXjrr8SuJLi51Qe\n/YIYwy1iUKZNe04/YYdVAPVl2uVXvECRB3hz6xjrarib+8CwKR+pmfDXWdaNr+nVUFagopIX/jor\ngE+u85a245Y5haDRWKot9P38mIr8Jaogx92L9Qf8kv8PxZfiT4nAJw/xjrsh4DDlc802qu5OpEme\nHxq2I2JI9kFeg17wqZr51j2pXp8v/lovbQnZa1JVYDZRpO9sija2kbaCbBvWmRQ7QE+6i3EnVQX4\n9r5PUhXwL4f2OOoFaghqAAAAAElFTkSuQmCC\n", "text/latex": [ "$$\\frac{1}{3} \\log^{3}{\\left (x \\right )} + \\log^{2}{\\left (x \\right )} + \\log{\\left (x \\right )}$$" ], "text/plain": [ " 3 \n", "log (x) 2 \n", "─────── + log (x) + log(x)\n", " 3 " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = sympy.Symbol('x')\n", "f = lambda x: (1+sympy.log(x))**2/x\n", "g = lambda x: (x**2 - 2)*sympy.exp(x)\n", "sympy.integrate(f(x))" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGsAAAAcBAMAAACUtlxGAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMkS7zRCZdiKJ71Rm\nq90icBAQAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB90lEQVQ4EZ2Uz0sbQRzF366Juxs1FvFubp60\ngv9AwWtb51AED2KKP3oNhSQgLSz03njRtKfm3IotiiJ4MBc9FBVBxUKhaonak6aCVBEaZ2fmO9vd\nTQ52YPf73ud9Z3ZnNgTQwxmb0Poe4h327tGNDtX8C11uo3mZSGD0KfQThVQkVaAnEsSYRmu+1EwK\np+yD4vPXD4AXPjjzZVidaGCxvWQK9pUGTlpLIezJfr6sHDkSMPCY6396N3QkxQicS0IFErxe8yvx\nhYA5berFBdsHPlKYLJOCUTWALka+c3VRa8HmgUNaqLmP2grOkQN8JYvPtZrWQgwyf5pVomzkZXEG\nGOc2nv/WXSQcqBdMZaY4uXgx58q8n5dhbGcqgXZlzBvKjN8e6nXtaRk94WUGH9iKtMF7cocy2ztT\n+xOG1GZPuWUY0O3xp+d8VGQ6qTP7lne0zeXXVaP3NOCPcsFipT0vMvG09h2di2nyzTUjsQzbhcwM\n7xu3q41xucuvJauKLPX61UjDclUmTjLBp2VkPgWYt01Vu+y3k3r7fvYHZa0lTq1HGHJl+pAhfpDN\nbUoXuA/Wan8pk7+S3Kuy6kikAq2NTEy9HOXN/jYJ1aujLEiNUtA3cFth/j0M6vrjMH0WBvV8a2Qr\nLel6fSH2JuS5XYiiCPmv/+vIKrgDQ0h3p6+EKqcAAAAASUVORK5CYII=\n", "text/latex": [ "$$\\left(x^{2} - 2 x\\right) e^{x}$$" ], "text/plain": [ "⎛ 2 ⎞ x\n", "⎝x - 2⋅x⎠⋅ℯ " ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.integrate(g(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 4. naloga" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [ { "data": { "application/javascript": [ "/* Put everything inside the global mpl namespace */\n", "window.mpl = {};\n", "\n", "mpl.get_websocket_type = function() {\n", " if (typeof(WebSocket) !== 'undefined') {\n", " return WebSocket;\n", " } else if (typeof(MozWebSocket) !== 'undefined') {\n", " return MozWebSocket;\n", " } else {\n", " alert('Your browser does not have WebSocket support.' +\n", " 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n", " 'Firefox 4 and 5 are also supported but you ' +\n", " 'have to enable WebSockets in about:config.');\n", " };\n", "}\n", "\n", "mpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n", " this.id = figure_id;\n", "\n", " this.ws = websocket;\n", "\n", " this.supports_binary = (this.ws.binaryType != undefined);\n", "\n", " if (!this.supports_binary) {\n", " var warnings = document.getElementById(\"mpl-warnings\");\n", " if (warnings) {\n", " warnings.style.display = 'block';\n", " warnings.textContent = (\n", " \"This browser does not support binary websocket messages. \" +\n", " \"Performance may be slow.\");\n", " }\n", " }\n", "\n", " this.imageObj = new Image();\n", "\n", " this.context = undefined;\n", " this.message = undefined;\n", " this.canvas = undefined;\n", " this.rubberband_canvas = undefined;\n", " this.rubberband_context = undefined;\n", " this.format_dropdown = undefined;\n", "\n", " this.image_mode = 'full';\n", "\n", " this.root = $('
');\n", " this._root_extra_style(this.root)\n", " this.root.attr('style', 'display: inline-block');\n", "\n", " $(parent_element).append(this.root);\n", "\n", " this._init_header(this);\n", " this._init_canvas(this);\n", " this._init_toolbar(this);\n", "\n", " var fig = this;\n", "\n", " this.waiting = false;\n", "\n", " this.ws.onopen = function () {\n", " fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n", " fig.send_message(\"send_image_mode\", {});\n", " fig.send_message(\"refresh\", {});\n", " }\n", "\n", " this.imageObj.onload = function() {\n", " if (fig.image_mode == 'full') {\n", " // Full images could contain transparency (where diff images\n", " // almost always do), so we need to clear the canvas so that\n", " // there is no ghosting.\n", " fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n", " }\n", " fig.context.drawImage(fig.imageObj, 0, 0);\n", " };\n", "\n", " this.imageObj.onunload = function() {\n", " this.ws.close();\n", " }\n", "\n", " this.ws.onmessage = this._make_on_message_function(this);\n", "\n", " this.ondownload = ondownload;\n", "}\n", "\n", "mpl.figure.prototype._init_header = function() {\n", " var titlebar = $(\n", " '
');\n", " var titletext = $(\n", " '
');\n", " titlebar.append(titletext)\n", " this.root.append(titlebar);\n", " this.header = titletext[0];\n", "}\n", "\n", "\n", "\n", "mpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "\n", "mpl.figure.prototype._root_extra_style = function(canvas_div) {\n", "\n", "}\n", "\n", "mpl.figure.prototype._init_canvas = function() {\n", " var fig = this;\n", "\n", " var canvas_div = $('
');\n", "\n", " canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n", "\n", " function canvas_keyboard_event(event) {\n", " return fig.key_event(event, event['data']);\n", " }\n", "\n", " canvas_div.keydown('key_press', canvas_keyboard_event);\n", " canvas_div.keyup('key_release', canvas_keyboard_event);\n", " this.canvas_div = canvas_div\n", " this._canvas_extra_style(canvas_div)\n", " this.root.append(canvas_div);\n", "\n", " var canvas = $('');\n", " canvas.addClass('mpl-canvas');\n", " canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n", "\n", " this.canvas = canvas[0];\n", " this.context = canvas[0].getContext(\"2d\");\n", "\n", " var rubberband = $('');\n", " rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n", "\n", " var pass_mouse_events = true;\n", "\n", " canvas_div.resizable({\n", " start: function(event, ui) {\n", " pass_mouse_events = false;\n", " },\n", " resize: function(event, ui) {\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " stop: function(event, ui) {\n", " pass_mouse_events = true;\n", " fig.request_resize(ui.size.width, ui.size.height);\n", " },\n", " });\n", "\n", " function mouse_event_fn(event) {\n", " if (pass_mouse_events)\n", " return fig.mouse_event(event, event['data']);\n", " }\n", "\n", " rubberband.mousedown('button_press', mouse_event_fn);\n", " rubberband.mouseup('button_release', mouse_event_fn);\n", " // Throttle sequential mouse events to 1 every 20ms.\n", " rubberband.mousemove('motion_notify', mouse_event_fn);\n", "\n", " rubberband.mouseenter('figure_enter', mouse_event_fn);\n", " rubberband.mouseleave('figure_leave', mouse_event_fn);\n", "\n", " canvas_div.on(\"wheel\", function (event) {\n", " event = event.originalEvent;\n", " event['data'] = 'scroll'\n", " if (event.deltaY < 0) {\n", " event.step = 1;\n", " } else {\n", " event.step = -1;\n", " }\n", " mouse_event_fn(event);\n", " });\n", "\n", " canvas_div.append(canvas);\n", " canvas_div.append(rubberband);\n", "\n", " this.rubberband = rubberband;\n", " this.rubberband_canvas = rubberband[0];\n", " this.rubberband_context = rubberband[0].getContext(\"2d\");\n", " this.rubberband_context.strokeStyle = \"#000000\";\n", "\n", " this._resize_canvas = function(width, height) {\n", " // Keep the size of the canvas, canvas container, and rubber band\n", " // canvas in synch.\n", " canvas_div.css('width', width)\n", " canvas_div.css('height', height)\n", "\n", " canvas.attr('width', width);\n", " canvas.attr('height', height);\n", "\n", " rubberband.attr('width', width);\n", " rubberband.attr('height', height);\n", " }\n", "\n", " // Set the figure to an initial 600x600px, this will subsequently be updated\n", " // upon first draw.\n", " this._resize_canvas(600, 600);\n", "\n", " // Disable right mouse context menu.\n", " $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n", " return false;\n", " });\n", "\n", " function set_focus () {\n", " canvas.focus();\n", " canvas_div.focus();\n", " }\n", "\n", " window.setTimeout(set_focus, 100);\n", "}\n", "\n", "mpl.figure.prototype._init_toolbar = function() {\n", " var fig = this;\n", "\n", " var nav_element = $('
')\n", " nav_element.attr('style', 'width: 100%');\n", " this.root.append(nav_element);\n", "\n", " // Define a callback function for later on.\n", " function toolbar_event(event) {\n", " return fig.toolbar_button_onclick(event['data']);\n", " }\n", " function toolbar_mouse_event(event) {\n", " return fig.toolbar_button_onmouseover(event['data']);\n", " }\n", "\n", " for(var toolbar_ind in mpl.toolbar_items) {\n", " var name = mpl.toolbar_items[toolbar_ind][0];\n", " var tooltip = mpl.toolbar_items[toolbar_ind][1];\n", " var image = mpl.toolbar_items[toolbar_ind][2];\n", " var method_name = mpl.toolbar_items[toolbar_ind][3];\n", "\n", " if (!name) {\n", " // put a spacer in here.\n", " continue;\n", " }\n", " var button = $('