Skip to main content

Equations that can be algebraicly manipulated.

Project description

Algebraic Equations with SymPy

Introduction | Output Formatting | Installation | Try Live | Issues or Comments | Change Log | License | GIT Repository | PyPi Link

Website/Documentation (including API)

Introduction

This tool defines relations that all high school and college students would recognize as mathematical equations. They consist of a left hand side (lhs) and a right hand side (rhs) connected by the relation operator "=".

This tool applies operations to both sides of the equation simultaneously, just as students are taught to do when attempting to isolate (solve for) a variable. Thus the statement Equation/b yields a new equation Equation.lhs/b = Equation.rhs/b

The intent is to allow using the mathematical tools in SymPy to rearrange equations and perform algebra in a stepwise fashion using as close to standard mathematical notation as possible. In this way more people can successfully perform algebraic rearrangements without stumbling over missed details such as a negative sign.

A simple example as it would appear in a Jupyter notebook is shown immediately below:

screenshot of simple example

Once the algebra is complete it is possible to substitute numbers with units into the solved equation to calculate a numerical solution with proper units.

In IPython environments (IPython and Jupyter) there is also a shorthand syntax for entering equations provided through the IPython preparser. An equation can be specified as eq1 =@ a/b = c/d. If no Python name is specified for the equation (eq1 left out in the previous example), the equation will still be defined, but will not be easily accessible for further computation. The =@ symbol combination was chosen to avoid conflicts with reserved python symbols while minimizing impacts on syntax highlighting and autoformatting. A screenshot of an example in Jupyter is shown immediately below:

screenshot of short syntax

More examples of the capabilities of Algebra with Sympy are here.

Many math packages such as SageMath and Maxima have similar capabilities, but require more knowledge of command syntax, plus they cannot easily be installed in a generic python environment.

Controlling the Format of Interactive Outputs

  • In graphical environments (Jupyter) you will get rendered Latex such as $\frac{a}{b} = \frac{c}{d}$. To also see the code representation (what can be copied and pasted for additional computation) set algwsym_config.output.show_code = True. This will print the code version (e.g. Equation(a,b/c)) of the equation as well. This code version can be accessed directly by calling repr() on the equation.

  • In interactive text environments (ipython and command line) the representation (code version) is returned by default. Calling print() or str() on an equation will return the human readable version with an equals sign. To have the human readable version returned by default set algwsym_config.output.human_text = True. If combined with algwsym_config.output.show_code = True, both code and human readable versions will be shown.

  • The equation label can be turned off by setting algwsym_config.output.label = False.

Setup/Installation

  1. Use pip to install in your python environment: pip install -U Algebra-with-SymPy
  2. To use in a running python session issue the following command : from algebra_with_sympy import *. This will also import the SymPy tools.
  3. If you want to isolate this tool from the global namespace you are working with change the import statement to import algebra_with_sympy as spa, where spa stands for "SymPy Algebra". Then all calls would be made to spa.funcname().

Try in binder

Binder

Issues or Comments

Change Log

  • 0.9.3
    • Added check for new enough version of IPython to use the preparser.
    • If IPython version too old, issue warning and do not accept =@ shorthand.
  • 0.9.2
    • =@ shorthand syntax for defining equations in IPython compatible environments.
    • Fixed bug where root() override called sqrt() on bare expressions.
  • 0.9.1
    • Equations labeled with their python name, if they have one.
    • Added flags to adjust human readable output and equation labeling.
    • Accept equation as function argument in any position.
    • First pass at solve() accepting equations.
    • Added override of root() to avoid warning messages.
    • More unit tests.
    • First pass at documentation.
  • 0.9.0 functionality equivalent to extension of SymPy in PR#21333.
This software is distributed under the GNU V3 license

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

Copyright - Jonathan Gutow 2021, 2022

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

Algebra_with_SymPy-0.9.3.tar.gz (34.0 kB view hashes)

Uploaded Source

Built Distribution

Algebra_with_SymPy-0.9.3-py3-none-any.whl (36.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page