{ "cells": [ { "cell_type": "markdown", "id": "e3aebf06", "metadata": {}, "source": [ "# Factorizing Polynomial with Sympy\n", "*~ example by [Rito Ghosh](https://www.linkedin.com/in/ritobrata-ghosh/)*" ] }, { "cell_type": "code", "execution_count": 1, "id": "48541d8a", "metadata": {}, "outputs": [], "source": [ "# importing required functions from package\n", "from sympy import symbols, factor" ] }, { "cell_type": "code", "execution_count": 2, "id": "c67c56a2", "metadata": {}, "outputs": [], "source": [ "# declaring symbols\n", "a, b, c = symbols('a b c')" ] }, { "cell_type": "code", "execution_count": 3, "id": "2318e26f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'(a^2*c^9+14*a^2*c^8-2*a^2*c^7-528 *a^2*c^6-639*a ^2*c^5+3706*a^2*c^4+9608*a^2*c^3+8144*a^2*c^2+2640*a^2*c+288*a^2)/(2*(c^2+4*c+3)^2*(2*c^3+12*c^2-21*c-10)^2)'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# the expression of polynomial to fatorize\n", "expr = '(a^2*c^9+14*a^2*c^8-2*a^2*c^7-528 *a^2*c^6-639*a ^2*c^5+3706*a^2*c^4+9608*a^2*c^3+8144*a^2*c^2+2640*a^2*c+288*a^2)/(2*(c^2+4*c+3)^2*(2*c^3+12*c^2-21*c-10)^2)'\n", "expr" ] }, { "cell_type": "code", "execution_count": 4, "id": "5df5f38f", "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{a^{2} \\left(c + 2\\right) \\left(c^{4} + 6 c^{3} - 31 c^{2} - 52 c - 12\\right)^{2}}{2 \\left(c + 1\\right)^{2} \\left(c + 3\\right)^{2} \\left(2 c^{3} + 12 c^{2} - 21 c - 10\\right)^{2}}$" ], "text/plain": [ "a**2*(c + 2)*(c**4 + 6*c**3 - 31*c**2 - 52*c - 12)**2/(2*(c + 1)**2*(c + 3)**2*(2*c**3 + 12*c**2 - 21*c - 10)**2)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# calling the `factor` function\n", "factor(expr)" ] }, { "cell_type": "markdown", "id": "85aea0ce", "metadata": {}, "source": [ "### Requirements (including Jupyter)" ] }, { "cell_type": "code", "execution_count": 5, "id": "7eb60d9e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "name: sptest\n", "channels:\n", " - defaults\n", "dependencies:\n", " - _libgcc_mutex=0.1=main\n", " - _openmp_mutex=5.1=1_gnu\n", " - anyio=3.5.0=py310h06a4308_0\n", " - argon2-cffi=21.3.0=pyhd3eb1b0_0\n", " - argon2-cffi-bindings=21.2.0=py310h7f8727e_0\n", " - asttokens=2.0.5=pyhd3eb1b0_0\n", " - attrs=21.4.0=pyhd3eb1b0_0\n", " - babel=2.9.1=pyhd3eb1b0_0\n", " - backcall=0.2.0=pyhd3eb1b0_0\n", " - beautifulsoup4=4.11.1=py310h06a4308_0\n", " - bleach=4.1.0=pyhd3eb1b0_0\n", " - brotlipy=0.7.0=py310h7f8727e_1002\n", " - bzip2=1.0.8=h7b6447c_0\n", " - ca-certificates=2022.07.19=h06a4308_0\n", " - certifi=2022.6.15=py310h06a4308_0\n", " - cffi=1.15.1=py310h74dc2b5_0\n", " - charset-normalizer=2.0.4=pyhd3eb1b0_0\n", " - cryptography=37.0.1=py310h9ce1e76_0\n", " - dbus=1.13.18=hb2f20db_0\n", " - debugpy=1.5.1=py310h295c915_0\n", " - decorator=5.1.1=pyhd3eb1b0_0\n", " - defusedxml=0.7.1=pyhd3eb1b0_0\n", " - entrypoints=0.4=py310h06a4308_0\n", " - executing=0.8.3=pyhd3eb1b0_0\n", " - expat=2.4.4=h295c915_0\n", " - fontconfig=2.13.1=h6c09931_0\n", " - freetype=2.11.0=h70c0345_0\n", " - giflib=5.2.1=h7b6447c_0\n", " - glib=2.69.1=h4ff587b_1\n", " - gmp=6.2.1=h295c915_3\n", " - gmpy2=2.1.2=py310heeb90bb_0\n", " - gst-plugins-base=1.14.0=h8213a91_2\n", " - gstreamer=1.14.0=h28cd5cc_2\n", " - icu=58.2=he6710b0_3\n", " - idna=3.3=pyhd3eb1b0_0\n", " - ipykernel=6.9.1=py310h06a4308_0\n", " - ipython=8.4.0=py310h06a4308_0\n", " - ipython_genutils=0.2.0=pyhd3eb1b0_1\n", " - ipywidgets=7.6.5=pyhd3eb1b0_1\n", " - jedi=0.18.1=py310h06a4308_1\n", " - jinja2=3.0.3=pyhd3eb1b0_0\n", " - jpeg=9e=h7f8727e_0\n", " - json5=0.9.6=pyhd3eb1b0_0\n", " - jsonschema=4.4.0=py310h06a4308_0\n", " - jupyter=1.0.0=py310h06a4308_8\n", " - jupyter_client=7.2.2=py310h06a4308_0\n", " - jupyter_console=6.4.3=pyhd3eb1b0_0\n", " - jupyter_core=4.10.0=py310h06a4308_0\n", " - jupyter_server=1.18.1=py310h06a4308_0\n", " - jupyterlab=3.4.4=py310h06a4308_0\n", " - jupyterlab_pygments=0.1.2=py_0\n", " - jupyterlab_server=2.12.0=py310h06a4308_0\n", " - jupyterlab_widgets=1.0.0=pyhd3eb1b0_1\n", " - krb5=1.19.2=hac12032_0\n", " - ld_impl_linux-64=2.38=h1181459_1\n", " - lerc=3.0=h295c915_0\n", " - libclang=10.0.1=default_hb85057a_2\n", " - libdeflate=1.8=h7f8727e_5\n", " - libedit=3.1.20210910=h7f8727e_0\n", " - libevent=2.1.12=h8f2d780_0\n", " - libffi=3.3=he6710b0_2\n", " - libgcc-ng=11.2.0=h1234567_1\n", " - libgomp=11.2.0=h1234567_1\n", " - libllvm10=10.0.1=hbcb73fb_5\n", " - libpng=1.6.37=hbc83047_0\n", " - libpq=12.9=h16c4e8d_3\n", " - libsodium=1.0.18=h7b6447c_0\n", " - libstdcxx-ng=11.2.0=h1234567_1\n", " - libtiff=4.4.0=hecacb30_0\n", " - libuuid=1.0.3=h7f8727e_2\n", " - libwebp=1.2.2=h55f646e_0\n", " - libwebp-base=1.2.2=h7f8727e_0\n", " - libxcb=1.15=h7f8727e_0\n", " - libxkbcommon=1.0.1=hfa300c1_0\n", " - libxml2=2.9.14=h74e7548_0\n", " - libxslt=1.1.35=h4e12654_0\n", " - lz4-c=1.9.3=h295c915_1\n", " - markupsafe=2.1.1=py310h7f8727e_0\n", " - matplotlib-inline=0.1.2=pyhd3eb1b0_2\n", " - mistune=0.8.4=py310h7f8727e_1000\n", " - mpc=1.1.0=h10f8cd9_1\n", " - mpfr=4.0.2=hb69a4c5_1\n", " - nbclassic=0.3.5=pyhd3eb1b0_0\n", " - nbclient=0.5.13=py310h06a4308_0\n", " - nbconvert=6.4.4=py310h06a4308_0\n", " - nbformat=5.3.0=py310h06a4308_0\n", " - ncurses=6.3=h5eee18b_3\n", " - nest-asyncio=1.5.5=py310h06a4308_0\n", " - notebook=6.4.12=py310h06a4308_0\n", " - nspr=4.33=h295c915_0\n", " - nss=3.74=h0370c37_0\n", " - openssl=1.1.1q=h7f8727e_0\n", " - packaging=21.3=pyhd3eb1b0_0\n", " - pandocfilters=1.5.0=pyhd3eb1b0_0\n", " - parso=0.8.3=pyhd3eb1b0_0\n", " - pcre=8.45=h295c915_0\n", " - pexpect=4.8.0=pyhd3eb1b0_3\n", " - pickleshare=0.7.5=pyhd3eb1b0_1003\n", " - pip=22.1.2=py310h06a4308_0\n", " - ply=3.11=py310h06a4308_0\n", " - prometheus_client=0.14.1=py310h06a4308_0\n", " - prompt-toolkit=3.0.20=pyhd3eb1b0_0\n", " - prompt_toolkit=3.0.20=hd3eb1b0_0\n", " - ptyprocess=0.7.0=pyhd3eb1b0_2\n", " - pure_eval=0.2.2=pyhd3eb1b0_0\n", " - pycparser=2.21=pyhd3eb1b0_0\n", " - pygments=2.11.2=pyhd3eb1b0_0\n", " - pyopenssl=22.0.0=pyhd3eb1b0_0\n", " - pyparsing=3.0.4=pyhd3eb1b0_0\n", " - pyqt=5.15.7=py310h6a678d5_1\n", " - pyrsistent=0.18.0=py310h7f8727e_0\n", " - pysocks=1.7.1=py310h06a4308_0\n", " - python=3.10.4=h12debd9_0\n", " - python-dateutil=2.8.2=pyhd3eb1b0_0\n", " - python-fastjsonschema=2.15.1=pyhd3eb1b0_0\n", " - pytz=2022.1=py310h06a4308_0\n", " - pyzmq=23.2.0=py310h6a678d5_0\n", " - qt-main=5.15.2=h327a75a_7\n", " - qt-webengine=5.15.9=hd2b0992_4\n", " - qtconsole=5.3.1=py310h06a4308_1\n", " - qtpy=2.0.1=pyhd3eb1b0_0\n", " - qtwebkit=5.212=h4eab89a_4\n", " - readline=8.1.2=h7f8727e_1\n", " - requests=2.28.1=py310h06a4308_0\n", " - send2trash=1.8.0=pyhd3eb1b0_1\n", " - setuptools=63.4.1=py310h06a4308_0\n", " - sip=6.6.2=py310h6a678d5_0\n", " - six=1.16.0=pyhd3eb1b0_1\n", " - sniffio=1.2.0=py310h06a4308_1\n", " - soupsieve=2.3.1=pyhd3eb1b0_0\n", " - sqlite=3.39.2=h5082296_0\n", " - stack_data=0.2.0=pyhd3eb1b0_0\n", " - sympy=1.10.1=py310h06a4308_0\n", " - terminado=0.13.1=py310h06a4308_0\n", " - testpath=0.6.0=py310h06a4308_0\n", " - tk=8.6.12=h1ccaba5_0\n", " - toml=0.10.2=pyhd3eb1b0_0\n", " - tornado=6.1=py310h7f8727e_0\n", " - traitlets=5.1.1=pyhd3eb1b0_0\n", " - typing-extensions=4.3.0=py310h06a4308_0\n", " - typing_extensions=4.3.0=py310h06a4308_0\n", " - tzdata=2022a=hda174b7_0\n", " - urllib3=1.26.11=py310h06a4308_0\n", " - wcwidth=0.2.5=pyhd3eb1b0_0\n", " - webencodings=0.5.1=py310h06a4308_1\n", " - websocket-client=0.58.0=py310h06a4308_4\n", " - wheel=0.37.1=pyhd3eb1b0_0\n", " - widgetsnbextension=3.5.2=py310h06a4308_0\n", " - xz=5.2.5=h7f8727e_1\n", " - zeromq=4.3.4=h2531618_0\n", " - zlib=1.2.12=h7f8727e_2\n", " - zstd=1.5.2=ha4553b6_0\n", " - pip:\n", " - mpmath==1.2.1\n", " - pyqt5-sip==12.11.0\n" ] } ], "source": [ "%%bash\n", "\n", "conda env export -n sptest > environment.yml\n", "head -n -1 environment.yml" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.4" } }, "nbformat": 4, "nbformat_minor": 5 }