Last active
August 29, 2015 14:02
-
-
Save jrjohansson/bf7862198171b16d0ff9 to your computer and use it in GitHub Desktop.
sympy-series-expansion-issue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"metadata": { | |
"name": "", | |
"signature": "sha256:7b72856843f2744bfa70a54d9d0df124f43ed0e613dbd0e48e302b401f54ec15" | |
}, | |
"nbformat": 3, | |
"nbformat_minor": 0, | |
"worksheets": [ | |
{ | |
"cells": [ | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Sympy series expansions issue: products of symbols with positivity assumption gives traceback" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"from sympy import *\n", | |
"init_printing()" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 1 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"This works:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"omega, t = symbols(\"omega, t\")\n", | |
"x = omega * t" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 2 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"print(x.is_positive, x.is_negative)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"None None\n" | |
] | |
} | |
], | |
"prompt_number": 3 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"cos(x).series(x)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"latex": [ | |
"$$1 - \\frac{\\omega^{2} t^{2}}{2} + \\frac{\\omega^{4} t^{4}}{24} + \\mathcal{O}\\left(\\omega^{6} t^{6}; \\begin{pmatrix}\\omega, & t\\end{pmatrix}\\rightarrow\\begin{pmatrix}0, & 0\\end{pmatrix}\\right)$$" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"png": "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\n", | |
"prompt_number": 4, | |
"text": [ | |
" 2 2 4 4 \n", | |
" \u03c9 \u22c5t \u03c9 \u22c5t \u239b 6 6 \u239e\n", | |
"1 - \u2500\u2500\u2500\u2500\u2500 + \u2500\u2500\u2500\u2500\u2500 + O\u239d\u03c9 \u22c5t ; (\u03c9, t) \u2192 (0, 0)\u23a0\n", | |
" 2 24 " | |
] | |
} | |
], | |
"prompt_number": 4 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 3, | |
"metadata": {}, | |
"source": [ | |
"This does not work:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"omega, t = symbols(\"omega, t\", positive=True)\n", | |
"x = omega * t" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [], | |
"prompt_number": 5 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"print(x.is_positive, x.is_negative)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"stream": "stdout", | |
"text": [ | |
"True False\n" | |
] | |
} | |
], | |
"prompt_number": 6 | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"sin(x).series(x)" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"ename": "ValueError", | |
"evalue": "expecting a Symbol but got omega*t", | |
"output_type": "pyerr", | |
"traceback": [ | |
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", | |
"\u001b[1;32m<ipython-input-7-affeea2c611d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mseries\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", | |
"\u001b[1;32m/home/rob/py-envs/py3-devel/lib/python3.4/site-packages/sympy/core/expr.py\u001b[0m in \u001b[0;36mseries\u001b[1;34m(self, x, x0, n, dir, logx)\u001b[0m\n\u001b[0;32m 2440\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2441\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mn\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# nseries handling\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2442\u001b[1;33m \u001b[0ms1\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_eval_nseries\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mn\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mn\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlogx\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mlogx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2443\u001b[0m \u001b[0mo\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0ms1\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetO\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mS\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mZero\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2444\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mo\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/home/rob/py-envs/py3-devel/lib/python3.4/site-packages/sympy/core/function.py\u001b[0m in \u001b[0;36m_eval_nseries\u001b[1;34m(self, x, n, logx)\u001b[0m\n\u001b[0;32m 623\u001b[0m \u001b[1;31m# try to predict a number of terms needed\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 624\u001b[0m \u001b[0mnterms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mn\u001b[0m \u001b[1;33m+\u001b[0m \u001b[1;36m2\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 625\u001b[1;33m \u001b[0mcf\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mC\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mOrder\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0marg\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mas_leading_term\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgetn\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 626\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mcf\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 627\u001b[0m \u001b[0mnterms\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mnterms\u001b[0m \u001b[1;33m/\u001b[0m \u001b[0mcf\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/home/rob/py-envs/py3-devel/lib/python3.4/site-packages/sympy/core/cache.py\u001b[0m in \u001b[0;36mwrapper\u001b[1;34m(*args, **kw_args)\u001b[0m\n\u001b[0;32m 98\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[1;33m(\u001b[0m\u001b[0mKeyError\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 99\u001b[0m \u001b[1;32mpass\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 100\u001b[1;33m \u001b[0mr\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkw_args\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 101\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 102\u001b[0m \u001b[0mfunc_cache_it_cache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;32m/home/rob/py-envs/py3-devel/lib/python3.4/site-packages/sympy/core/expr.py\u001b[0m in \u001b[0;36mas_leading_term\u001b[1;34m(self, *symbols)\u001b[0m\n\u001b[0;32m 2708\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0msympify\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msymbols\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2709\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_Symbol\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 2710\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mValueError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'expecting a Symbol but got %s'\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2711\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mx\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfree_symbols\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2712\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", | |
"\u001b[1;31mValueError\u001b[0m: expecting a Symbol but got omega*t" | |
] | |
} | |
], | |
"prompt_number": 7 | |
}, | |
{ | |
"cell_type": "heading", | |
"level": 2, | |
"metadata": {}, | |
"source": [ | |
"Versions" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"collapsed": false, | |
"input": [ | |
"%reload_ext version_information\n", | |
"\n", | |
"%version_information sympy" | |
], | |
"language": "python", | |
"metadata": {}, | |
"outputs": [ | |
{ | |
"html": [ | |
"<table><tr><th>Software</th><th>Version</th></tr><tr><td>Python</td><td>3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2]</td></tr><tr><td>IPython</td><td>3.0.0-dev</td></tr><tr><td>OS</td><td>posix [linux]</td></tr><tr><td>sympy</td><td>0.7.5-git</td></tr><tr><td colspan='2'>Thu Jun 12 11:23:08 2014 JST</td></tr></table>" | |
], | |
"json": [ | |
"{\"Software versions\": [{\"version\": \"3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2]\", \"module\": \"Python\"}, {\"version\": \"3.0.0-dev\", \"module\": \"IPython\"}, {\"version\": \"posix [linux]\", \"module\": \"OS\"}, {\"version\": \"0.7.5-git\", \"module\": \"sympy\"}]}" | |
], | |
"latex": [ | |
"\\begin{tabular}{|l|l|}\\hline\n", | |
"{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n", | |
"Python & 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] \\\\ \\hline\n", | |
"IPython & 3.0.0-dev \\\\ \\hline\n", | |
"OS & posix [linux] \\\\ \\hline\n", | |
"sympy & 0.7.5-git \\\\ \\hline\n", | |
"\\hline \\multicolumn{2}{|l|}{Thu Jun 12 11:23:08 2014 JST} \\\\ \\hline\n", | |
"\\end{tabular}\n" | |
], | |
"metadata": {}, | |
"output_type": "pyout", | |
"prompt_number": 8, | |
"text": [ | |
"Software versions\n", | |
"Python 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2]\n", | |
"IPython 3.0.0-dev\n", | |
"OS posix [linux]\n", | |
"sympy 0.7.5-git\n", | |
"\n", | |
"Thu Jun 12 11:23:08 2014 JST" | |
] | |
} | |
], | |
"prompt_number": 8 | |
} | |
], | |
"metadata": {} | |
} | |
] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment