Skip to content

Instantly share code, notes, and snippets.

@bjodah
Created October 24, 2014 14:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bjodah/720617780e83d7c35797 to your computer and use it in GitHub Desktop.
Save bjodah/720617780e83d7c35797 to your computer and use it in GitHub Desktop.
Sympy refine
{
"metadata": {
"name": "",
"signature": "sha256:ff2051673721abee70ec74bc10add60780735c583e66f767e30c0906bd95ba38"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "code",
"collapsed": false,
"input": [
"# First let's setup our sympy powered IPython Notebook environment...\n",
"from IPython.display import display, Latex\n",
"from sympy.interactive import printing\n",
"printing.init_printing()\n",
"\n",
"import sympy\n",
"from sympy import *"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"x, k = sympy.symbols('x k')\n",
"f = sympy.Function('f')\n",
"dfdx_expr = x*sympy.exp(-k*x)\n",
"sol = dsolve(f(x).diff(x)-dfdx_expr,f(x))\n",
"sol"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$f{\\left (x \\right )} = C_{1} + \\begin{cases} \\frac{x^{2}}{2} & \\text{for}\\: k^{3} = 0 \\\\\\frac{1}{k^{3}} \\left(- k^{2} x - k\\right) e^{- k x} & \\text{otherwise} \\end{cases}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAaIAAAA/BAMAAABQqtF1AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8y\nu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAIrUlEQVRoBd1afWwUxxV/e3fe+1qfr46wQCm5\nk0hTEUg4MJAqtOk1TfsHUWWnGBolMTlAqkol4OhHUqmKfFUl1Iq2cVqi9EPBJ0iQQiLZKm2Utqg9\nJSLKRyubJKhVkdtrEyAQFVzzEZfYub73dmd2bm8xt+e7s8n8sfPm9z5mfjezs/N2D2BmJbBO+L+8\nLS3Ea7oe/JcY/kioX4jXcu0fl6Mvav+V8jUsDI/Ygw9+JOZoIG0zukGRbbRxkr76nvoHD03ZMbUG\nxLeju0g3wy0u6Awh32U7QPvnMnajGdJNMFj/blrfN2NuWbqqMFBq+n10a/0ZxSY4pj++MZyrf3Ql\nYmjdUaWlHecfTzusYCy2b1nqhDy2Y5PsYMAZj45ezV+fb/52ll8siYJ2R8oZ5hQsSDsxb22LEcAF\nb36erR17QFuWIzhQiAyBXvQcu8xBMDLGjDK87o315REfjXN72CQmda3dEJzhY95i1KX36zJsQwQH\no+3YCd5FXfnyztq6IWTtVeWK6lsWo3mf2rK8eqcaLI/8YT10dH4NfnLooXfI/STsOwx74FlzqmTA\nRBJC52WrJkGsupqcvTj1grEHWlPw6530BNQmOua/AC+v7qEQ+lkuSRS7MmBcIqz20kRGYRztJJzm\nsQYnU65jrh+jkiiu/dQD7AXaBS7BCQ7m+zDnGjSRuZZWXR+SmIJ/M5Pwyo2ujNqSEKzPzoDhN7/h\nuEtdu6wZNOdo3GKUKCSyaRFL/wWXbmyHRyBSn90bb890S1F00Yi6F6K4j01YjAYhkcu4dOMfAl/R\nBfcAyZ0hnDYaemwYBeMwxDLwUx5cL7QVMm7DfAKuL0j8NUt6TiJVCJJRNBcoO3hV4evF5EjpTbjz\nq/fCj0t/Jbe/Q2SRq3tH5wOMt69IQ2DEMmkpVNpqn1l/XyBTiYNkBDM+frhErx3a0JeFmLyxi5WB\n1uQhuCRfiUPYPHuTJpxy0c8SpE3MB1gtO7clAS18DKVladEETYrRMQlultLsC0Ea1m/kOK6XkhDO\n0fztFi1cYHI6Ev0CjSSFNAdqHYcVkkODWNYxJh8/tF60UZvRYEagu+BHQpz1OnL/40nQk3j+6+z5\n/hZ8tKBYVrqY7cdtzGb0KwEapx4+KuTZr9tSAK15gA54JrUXIFKkIW3nAy0fOnagnooxYtb2qjNn\nj9BoqTRmaedA1VXAnSoLsAl2xL+Fd0m/Y0wDqMdifEIo5BwN5lkz5y59OKJoDiAO/6GxGc4f+0+E\nolZSFYx8L7Bm7l224pCIEQDnfxWMBkgVLFiMMME6/cezZ5OIRTN4mYvlGA6KVh1lVJrY9rbygfZx\nGi8/iXzKchRzFHgyTvq5Vw7hkGhn2OkfA3xdYO4MyjAxM6SbrHLVwQJxZynbhuIoRI+ZxhrqbyZF\noyOmTm9RWscCeQBf0hEtiKn9N3A2Ku4jCFwUpva2gcgrAjXraTMNf7kttcK5SswTEqIcCZ+w2rrl\nqw+iGMs53duPfZmwSkawTNpKZeV0TZtphLqdvUFipmtZH6GYe2Tgu6XkEOSgxX0EYH8Qk0r8SRwj\nmj7T+LqjF4AfViDegG/H8uSwT3rhscG9BIcsPJQXBm1jQlIYLRKYrKd70Rl28McE31gF+oqXzExH\nxqheeHIB27amLRetaAnOKrD4YsqJxS4IxGYUoFVslYW/Y8E90zCV/qQwFvWZ7yTiy1uKPxdttf7L\nSbUlZIM2N1n238iizPgkNWkxjWBnfDajsnMhH6Ngs3sIVgbkNAuj8QJAwVw5AjLrEJ49+XlSDuOd\n6/raca1l9pTTfLq2G6NoVvHgY3skqSCKaL6I+qVEHhnFEjcOUebdlpawFNpRoodnI4sbo2HlxuB9\nFK6QaZjKio+p/pHXDdxzoFAx8H2INJHRkBjAs0LAWi/i5UqZBisB1ij2JLamXtUDY1sh48AhSP+d\ncGUU+LPTtua2nCNl21A/jsYykSUFzjSs5EvtiZUAj/KcdnSa9zNu/umWT2vrdnUqU42ZDn6YePp/\n67Nw7POrUgB3HugJvXfb9rUDTzzzYe7B33/pIhi3dRYJVjuoRZaMFOdRRU58b9PuHLet5EvRgaUc\nLiAY2gNfVHUO2fwwQS/rRvOBCxB6DHbHo59M5BMpPPHgXnYMFgL0M+zw9Np0Y2S+bDcj9b0kIlrJ\nl2hSbSm7cijfndWWEnaFEs7QMZoYHQe4TIf+aCrWD9BShN+CTmtxdxwyDF8hQrWwxUh8miiRH/ar\nnaaT+94CLHtXRLKSL1uFZ3pT2ZVFm/v33162yoSbVQ+jzSVm9A/KeYZvPvh0PtaNB7MLwc/CD4hR\neGqlCTs8vTbVOXptVYHd1Tn62ReKMiQnX7KFgqXkObqoKirlvhx9mOBVR4wG6UeIJfHyvB7NZoiR\ntr2UZBjBmRTBiBKAvwWLHEphpE1q7wcYxB2Pky+rQZVQDqex4fqIJCuz0ByNI6MU4F2Kc5RCmBkt\nvk4/miFGd0FkgmHLo9ZKMKIEIK5jaCy9fOVLZEybwFVOxUq+zAZfhZL3uucB/IrOKUaT9GHiBO7o\nzChcBC3FjIZ7jPNpYvQQwH0MO109tgUjSgCMbaaz8nxpGYFJk5FIvpT4QsnPrztAE7u3YiJFgz9M\nLBaMjMvgi4eTqEYS+PoKeX43Dm8xLH1qEwQjTgBCRQ5iPl9YbM3DPloguMSs5Isb5kUob6Gmf9FB\nRVUp0ocJaNmQPlJ64JEPumHeok2hf07hUvTn4XaAI6V7du0/kCO40tUbIhhRApCy/ngSzXmL8bY3\n8wZbC0aYAHxsyBji3nwZT53Osf+CCkaUAHzT2r0tYtXSinRXa9kUuxYzITATANHjV4RQVR0uVGXW\nLCP/OPdkJgCi0xuEUFV9oCqrphlpH3BXlADYfQaTtnxVSebOV7VskoH53YISAKXDhxX5aqIvfjWL\nJuvF1tDkbhvYnXYu18DosxLaj6+QP2LlrrnG5/9XyTi1mb6nAAAAAABJRU5ErkJggg==\n",
"prompt_number": 3,
"text": [
" \u239b\u23a7 2 \u239e\n",
" \u239c\u23aa x 3 \u239f\n",
" \u239c\u23aa \u2500\u2500 for k = 0\u239f\n",
" \u239c\u23aa 2 \u239f\n",
" \u239c\u23aa \u239f\n",
"f(x) = C\u2081 + \u239c\u23a8\u239b 2 \u239e -k\u22c5x \u239f\n",
" \u239c\u23aa\u239d- k \u22c5x - k\u23a0\u22c5\u212f \u239f\n",
" \u239c\u23aa\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 otherwise \u239f\n",
" \u239c\u23aa 3 \u239f\n",
" \u239c\u23aa k \u239f\n",
" \u239d\u23a9 \u23a0"
]
}
],
"prompt_number": 3
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"refine(sol, Q.is_true(Eq(k**3, 0)))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$f{\\left (x \\right )} = C_{1} + \\frac{x^{2}}{2}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "iVBORw0KGgoAAAANSUhEUgAAAI0AAAAvBAMAAAAspFRzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEJl2IquJVETdZu8y\nu83OyatpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACjklEQVRIDa2VPYgTQRTH38bN7t4l2VuuEEWF\nCFqIHJfz4xoRglhpkcOvQkFynAjXmCiKlSRgaWHEO8HivEVtFAtBCysvWFpomussgp2Faw6RO+Qg\nvjc7M7vZTdxi50F2/u//Zn7Z2eybAKQOY2p/agYBrsFVJZwl+FpWAfoAlaYKDkDDUcN5rAZjFNVw\nnqvBWFWrrYL05e69lM9ZO3rh/gKs9fspb2cnvCo9S8mg5fNQc24r4DjwUwGFEL/VcPLboCkg3dzR\ng5n0HGuz0NPdCOczz99E/P+k2vmZ2deh+uSRMugdbmTboQqX2smLl/Vq3I84lxp1sOWr3Y1UMT3h\ngnnYjfuDjra1C2BWeoES1r5HqKbLIgUtkNJDYfbw8l46e6QS4hfd6wOR4YJSoEPKaAFY+OFh14Xi\nY2aTxKfAHc4Zv7JcBDrS/O5lMliDqsK+Y2/gDefARAmg4ALw7h3v0oobHsV3kjWsU+Q7/jhqX5U2\nwFhddq/Z4tPFsIp1jPxBURhxPw2clGsC8O7N92hVKNaYdkB+geBM9GXQmkX8EId3b4yzSiWzzTmG\n5/346HlFMgdjHVPaF/jd6/90i08plmkme3MyiErY1zucS8+Zd6//nAnAo1JFMZ/I0bZwmjEHonsz\nRczDYf4FuOUkcqwNXISbEd1rN8MQ0pPr58hL2JfRoblLdGFxVojoOJRzauqbP++O7ZII/lsXfD9+\nNd9yz3JlUZuDWpNlK7vZUCizAbujy0V00A/9KUU9yDqQ8/EvDrCiPMckMLZmmJFrQXZ7oHCGZy8H\n3KTE3ohyklaMrI/R760gHlYVQBCxogaTYa9fetbx9AgimEU4rYKEx/8xBRz9yXV53KbB2Xiytgjw\nDwmBkhP3D84VAAAAAElFTkSuQmCC\n",
"prompt_number": 9,
"text": [
" 2\n",
" x \n",
"f(x) = C\u2081 + \u2500\u2500\n",
" 2 "
]
}
],
"prompt_number": 9
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"refine(sol, Q.is_true(Eq(k**3, 1)))"
],
"language": "python",
"metadata": {},
"outputs": [
{
"latex": [
"$$f{\\left (x \\right )} = C_{1} + \\begin{cases} \\frac{x^{2}}{2} & \\text{for}\\: k^{3} = 0 \\\\\\frac{1}{k^{3}} \\left(- k^{2} x - k\\right) e^{- k x} & \\text{otherwise} \\end{cases}$$"
],
"metadata": {},
"output_type": "pyout",
"png": "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\n",
"prompt_number": 14,
"text": [
" \u239b\u23a7 2 \u239e\n",
" \u239c\u23aa x 3 \u239f\n",
" \u239c\u23aa \u2500\u2500 for k = 0\u239f\n",
" \u239c\u23aa 2 \u239f\n",
" \u239c\u23aa \u239f\n",
"f(x) = C\u2081 + \u239c\u23a8\u239b 2 \u239e -k\u22c5x \u239f\n",
" \u239c\u23aa\u239d- k \u22c5x - k\u23a0\u22c5\u212f \u239f\n",
" \u239c\u23aa\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 otherwise \u239f\n",
" \u239c\u23aa 3 \u239f\n",
" \u239c\u23aa k \u239f\n",
" \u239d\u23a9 \u23a0"
]
}
],
"prompt_number": 14
},
{
"cell_type": "code",
"collapsed": false,
"input": [],
"language": "python",
"metadata": {},
"outputs": []
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment