Skip to content

Instantly share code, notes, and snippets.

@DBremen
Created February 28, 2020 09:23
Show Gist options
  • Save DBremen/98d6a92840a530cf4346b0e3f01aea26 to your computer and use it in GitHub Desktop.
Save DBremen/98d6a92840a530cf4346b0e3f01aea26 to your computer and use it in GitHub Desktop.
Solving Inequalities
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "import sympy as sym\nfrom IPython.display import display, Math",
"execution_count": 2,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "def disp(expr):\n display(Math(sym.latex(expr)))",
"execution_count": 8,
"outputs": []
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "x = sym.symbols('x')\nexpr = 4 * x > 8\ndisp(sym.solve(expr))",
"execution_count": 9,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Math object>",
"text/latex": "$\\displaystyle 2 < x \\wedge x < \\infty$"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "#infinity\nsym.oo > 99999999999999999999999",
"execution_count": 10,
"outputs": [
{
"output_type": "execute_result",
"execution_count": 10,
"data": {
"text/plain": "True",
"text/latex": "$\\displaystyle \\text{True}$"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "a,b,c = sym.symbols('a b c')\nex = a*x > b**2/c\ndisp(ex)\nsym.solve(ex)\n#not enough information to solve using only symbols need to replace those by numbers",
"execution_count": 12,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Math object>",
"text/latex": "$\\displaystyle a x > \\frac{b^{2}}{c}$"
},
"metadata": {}
},
{
"output_type": "error",
"ename": "NotImplementedError",
"evalue": "\ninequality has more than one symbol of interest.",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNotImplementedError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-12-7e62abfcae86>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[0mex\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0ma\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0mx\u001b[0m \u001b[1;33m>\u001b[0m \u001b[0mb\u001b[0m\u001b[1;33m**\u001b[0m\u001b[1;36m2\u001b[0m\u001b[1;33m/\u001b[0m\u001b[0mc\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[0mdisp\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mex\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 4\u001b[1;33m \u001b[0msym\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0msolve\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mex\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mC:\\tools\\Anaconda3\\lib\\site-packages\\sympy\\solvers\\solvers.py\u001b[0m in \u001b[0;36msolve\u001b[1;34m(f, *symbols, **flags)\u001b[0m\n\u001b[0;32m 983\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 984\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfi\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_Relational\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 985\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mreduce_inequalities\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mf\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msymbols\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0msymbols\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 986\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 987\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mPoly\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\tools\\Anaconda3\\lib\\site-packages\\sympy\\solvers\\inequalities.py\u001b[0m in \u001b[0;36mreduce_inequalities\u001b[1;34m(inequalities, symbols)\u001b[0m\n\u001b[0;32m 985\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 986\u001b[0m \u001b[1;31m# solve system\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 987\u001b[1;33m \u001b[0mrv\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_reduce_inequalities\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0minequalities\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msymbols\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 988\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 989\u001b[0m \u001b[1;31m# restore original symbols and return\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mC:\\tools\\Anaconda3\\lib\\site-packages\\sympy\\solvers\\inequalities.py\u001b[0m in \u001b[0;36m_reduce_inequalities\u001b[1;34m(inequalities, symbols)\u001b[0m\n\u001b[0;32m 905\u001b[0m raise NotImplementedError(filldedent('''\n\u001b[0;32m 906\u001b[0m \u001b[0minequality\u001b[0m \u001b[0mhas\u001b[0m \u001b[0mmore\u001b[0m \u001b[0mthan\u001b[0m \u001b[0mone\u001b[0m \u001b[0msymbol\u001b[0m \u001b[0mof\u001b[0m \u001b[0minterest\u001b[0m\u001b[1;33m.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 907\u001b[1;33m '''))\n\u001b[0m\u001b[0;32m 908\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 909\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mexpr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mis_polynomial\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgen\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mNotImplementedError\u001b[0m: \ninequality has more than one symbol of interest."
]
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "ex = 3*x/2 + (4-5*x)/3 <= 2 - 5*(2-x)/4\ndisp(ex)",
"execution_count": 14,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Math object>",
"text/latex": "$\\displaystyle \\frac{4}{3} - \\frac{x}{6} \\leq \\frac{5 x}{4} - \\frac{1}{2}$"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "disp(sym.solve(ex))",
"execution_count": 15,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<IPython.core.display.Math object>",
"text/latex": "$\\displaystyle \\frac{22}{17} \\leq x \\wedge x < \\infty$"
},
"metadata": {}
}
]
},
{
"metadata": {
"trusted": true
},
"cell_type": "code",
"source": "",
"execution_count": null,
"outputs": []
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"base_numbering": 1,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
},
"language_info": {
"name": "python",
"version": "3.7.3",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"nbconvert_exporter": "python",
"file_extension": ".py"
},
"gist": {
"id": "",
"data": {
"description": "Solving Inequalities",
"public": true
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment